机械 模具 夹具 数控 车床 工艺 液压 汽车 电机 升降台 控制 Proe CAD 建模 减速器 机械手 齿轮 故障 诊断 自动化 电气 监控 组态 电源 发电 水电 电站 单片机 PLC MATLAB 路径 盘算机 Android Linux 电子 通讯 治理系统 网站 ASP JSP PHP Java Asp.net 论坛 进销存 图书 考试 Web 购物 点餐 生意营业 平台 网络妄想 设置 C++ C# 土木 修建 施工 结构 框架 桥梁 水利 公路 隧道 造价 给水 教学楼 办公楼 水库 重力坝 化工 合成 工段 物流 仓储 包装 开题 使命书 外文 文献 翻译 答辩 名堂 课程
 首 页 机械结业设计 电子电气结业设计 盘算机结业设计 土木匠程结业设计 视觉转达结业设计 免费结业设计 牛牛棋牌下载 结业论文范文 结业设计论文流程 
垫片
您现在所在的位置:澳门牛牛平台 >>免费结业设计 >> 文章内容
垫片
   我们提供全套结业设计论文服务,联系   625110801   
图书馆治理系统-结业论文免费下载
文章泉源:mog-net.com   宣布者:学生结业作品网站   宣布时间:2008-06-26 15:16:09   阅读:54036

摘   要
图书治理系统是典型的信息治理系统(MIS),其开发主要包罗后台数据库的建设和维护以及前端应用法式的开发两个方面。对于前者要求建设起数据一致性和完整性强、数据清静性好的库。而对于后者则要求应用法式功效完整,易使用等特点。
因此本人团结开入式图书馆的要求,对MS SQL Server2000数据库治理系统、SQL语言原理、Delphi应用法式设计,Delphi数据库手艺举行了较深入的学习和应用,主要完成对图书治理系统的需求剖析、功效模块划分、数据库模式剖析,并由此设计了数据库结构和应用法式。系统运行效果证实,本文所设计的图书治理系统可以知足借阅者、图书馆事情职员和高级治理员三方面的需要。
第一章对数据库应用系统开发和图书治理系统举行了简明的先容,并剖析了开发图书治理系统所应举行的事情。
第二章对数据库的设计和SQL语言的使用举行了系统剖析,为深入明确数据库应用打下了基础。
第三章学习了详细的开发工具Delphi 6.0,对其数据库组琒QL语言在Delphi中的应用等数据库编程要害手艺举行了系统的先容。
第四章剖析了图书治理信息系统的应用需求,凭证数据库设计理论一步一步地给出了系统需求说明书、局部ER图、全局ER图、系统关系模式,子模式,使用MS SQL Server2000建设了数据库
第五章举行了详细的法式设计,详细划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,纪录的添加、删除和修改,报表的天生,实现了多数据库表的毗连操作,实现了多条件查询和模糊查询,并无邪实现了对不行更新查询效果集的更新操作,实现了主从表操作,实现了密码维护功效,最后,系统还可以导入数据库以对恣意同结构的数据库举行操作。
设计充实使用Delphi 6、MS SQL Server2000数据库手艺的强鼎力大举量,提高了编程效率和可靠性。
要害词:数据库,SQL语言,MS SQL Server,Delphi6,
数据库组件,图书治理,窗体,listview组件
 
目    录
摘  要 ……………………………………………………………………………… I
第一章  绪  论 …………………………………………………………………… 1
§1.1 数据库应用系统开发简介 ……………………………………………… 1
§1.2 图书治理系统 ……………………………………………………… 4
§1.3 本文所做的主要事情 …………………………………………………… 6
第二章  数据库理论基础 ………………………………………………………… 7
§2.1 数据库系统设计及范式剖析 …………………………………………… 7
§2.2 SQL语言先容………………………………………………………………… 11
2.2.1 SQL基础  ………………………………………………………………… 11
2.2.2 SQL语句  ………………………………………………………………… 12
第三章  应用系统开发工具………………………………………………… 16
§3.1 Delphi6.0 VCL组件的系统结构……………………………………… 16
§3.2 数据库组件先容  …………………………………………………………… 17
§3.3 SQL语言在Delphi中的应用  …………………………………………… 18
§3.4 MS SQL Server简述  ……………………………………………………  22
第四章  图书治理系统设计剖析 ………………………………………… 24
§4.1 应用需求剖析 …………………………………………………………… 24
§4.2 系统功效模块划分 ……………………………………………………… 29
§4.3 系统数据库设计 ………………………………………………………… 29
第五章  图书治理系统应用法式设计 …………………………………… 37
§5.1 系统窗体模块组成 ………………………………………………………… 37
§5.2 数据模块窗体的设置 ……………………………………………………… 37
§5.3启动画面的实现…………………………………………………………… 38
§5.4用户登录窗体的的实现……………………………………………………… 39
§5.5用户密码认证窗体的的实现………………………………………………… 39
§5.6借阅者服务模块的实现…………………………………………………… 40
5.6.1图书查询功效的实现………………………………………………… 41
5.6.2借阅者登录功效的实现………………………………………………… 42
5.6.3借阅者借阅情形功效的实现…………………………………………… 43
5.6.4借阅者小我私人资料维护功效的实现……………………………………… 47
§5.7事情职员-图书借阅/送还模块的实现……………………………………… 49
5.7.1事情职员举行图书借阅功效实现……………………………………… 50
5.7.2事情职员举行图书送还功效实现……………………………………… 53
§5.8图书馆治理员模块的实现…………………………………………… 54
5.8.1图书馆治理员图书治理功效的实现…………………………………… 55
5.8.2图书馆治理员事情职员和治理员治理功效的实现…………………… 58
5.8.3图书馆治理员修改图书种别及统记功效的实现……………………… 60
5.8.4图书馆治理员借阅者治理功效的实现………………………………… 62
5.8.5图书馆维护借阅者治理功效的实现………………………………… 62
5.8.6图书馆身份维护功效的实现……………………………………… 64
5.8.7图书馆借阅者统计功效的实现………………………………… 65
5.8.8图书馆统计借阅逾期纪录功效的实现………………………… 67
§5.9系统信息显示的实现………………………………………………… 68
第六章 竣事语 ……………………………………………………………… 69
致  谢 ………………………………………………………………………………70
参考书目 …………………………………………………………………………… 70
 

第一章  绪  论
§1.1  数据库应用系统开发简介
在数据库应用系统开发之前,对开发数据库的基本看法应当相识,对数据库的结构、开发数据库应用法式的步骤、开发系统及要领都应当有相当清晰的相识和熟悉。
数据库应用系统开发的目的是建设一个知足用户恒久需求的产物。开发的主要历程为:明确用户的需求,然后,把它们转变为有用的数据库设计。把设计转变为现实的数据库,而且这些数据库带有功效完整、高效能的应用。
数据库手艺在盘算机软件邻域研究中一直是很是主要的主题,发生于60年月,30多年来数据库手艺获得了迅速生长,并已形成较为完整的理论系统和一大批适用系统。而且,近年来,随着World Wide Web(WWW)的猛增及Internet手艺的迅速生长,使得数据库手艺之时成为最热门手艺之一。
1.1.1  数据库
如图1.1显示了数据库系统的主要组件。数据库由DBMS(数据库治理系统)处置赏罚,DBMS则由开发职员和用户通过应用法式直接或间接地使用。它主要包罗四个要素:用户数据、元数据、索引和应用元数据。

1.1.1.1 用户数据
现在,大多数主流数据库治理系统把用户数据体现为关系。现在把关系看作数据表。表的列包罗域或属性,表的行包罗对应营业情形中的实体的纪录。并非所有的关系都同样切合要求,有些关系比其它关系更结构化一些。第二章形貌了一个用以发生优异结构关系的历程,称作规范化。
为了对比结构差的关系和结构好的关系之间的差异,以本文所设计的图书治理系统中的图书和图书借阅者关系为例来说明,倘使设计关系R1(借书证号,姓名,性别,身份编号,身份证,联系电话,图书编号,图书名称,图书种别,作者,出书社,出书日期,备注,价钱,数目);这个关系的问题出在它有关于两个差异主题的数据,就是图书借阅者和图书。用这种方式组成的关系在举行修改时,会泛起问题。由于一个图书借阅者可能借阅多本书,若是某个图书借阅者的某个字段(如联系电话)泛起变换,它所借阅的图书纪录(可能多个)也就必须转变,这是欠好的。因此数据用两个关系体现更好。现在若是某图书借阅者改变了它的联系电话,只有关系(表)user的对应行需要改变。虽然,要想发生一个,显示图书名称及其借阅者联系电话的报表,就需要将这两个表的行团结起来。效果批注,将关系划分存储,在天生报表的时间将它们团结起来,比把它们存储在一个合成的表中更好。
user(借书证号,姓名,性别,身份编号,身份证,联系电话,)
book(图书编号,图书名称,图书种别,作者,出书社,出书日期,备注,价钱,数目)
1.1.1.2  元数据
数据库是自形貌的,这就意味着它自身包罗了它的结构的形貌,这种结构的形貌称作元数据。由于DBMS产物是用来存储和使用表的,以是大多数产物把元数据以表的形式存储,有时称作系统表。这些系统表存储了数据库中表的情形,指出每一个表中有几多列,那一列是主要害字,每一列的数据类型的形貌,它也存储索引、要害字、规则和数据库结构的其他部门。
在表中存储元数据不仅对DBMS是有用的,对用户也是利便的,由于他们可以使用与查询用户数据同样的查询工具来查询元数据。本文第二章所先容的SQL语言可以同时用于元数据和用户数据。
1.1.1.3  索引
第三种类型的数据刷新了数据库的性能和可会见性,这种数据经常称作开销数据,只管有时也接纳其他类型的数据结构,如链表,但它主要照旧索引。索引可以用来排序和快速会见数据。下面以本人的图书治理信息系统中的book表为例来说明。
假定数据在磁盘上是按’图书编号’的递增顺序排列的,用户想打印一个按’图书名称’排序的图书数据报表。为此,所有的数据都需要从源表中提取出来并排序,除非表很小,否则这是一个很费时的历程。或者,可以在‘图书名称’字段上建设一个索引,该索引的条目凭证‘图书名称’排序,这样,该索引的条目可以读出来,并用来按顺序会见book数据。
索引用于快速会见数据。例如,一个用户只想会见book表中‘图书种别’值为‘01’的那些学生。若是没有索引,则必须搜索整个源表;但有了索引之后,可以找到索引条目,并使用它来挑选所有合适的行。
索引对排序和查找是有资助的,但要支付价钱。book表中的行每次改变时,索引也必须改变,这意味着索引并非随意的,应该在真正需要时生涯。
1.1.1.4  应用元数据
存储在数据库中的第四种数据是应用元数据,它用来存储用户窗体、报表、查询和其他形式的查询组件。并非所有的DBMS都支持应用组件,支持组件的DBMS也纷歧定把所有组件的结构作为应用元数据存储在数据库中。然而,大多数现代的DBMS产物存储这种数据作为数据库的一部门。一样平常来说,数据库开发职员和用户都不直接会见应用元数据,想反,他们通过DBMS中的工具来处置赏罚这些数据。
MS SQL Server2000中就支持窗体、存储历程等应用元数据。
1.1.2  数据库治理系统
数据库治理系统(DBMS)是指数据库系统中治理数据的软件系统。DBMS是数据库系统的焦点组成部门。对数据库的一切操作,包罗界说、更新及种种控制,都是通过DBMS举行的。DBMS总是基于某种数据模子,可以把DBMS看成是某种数据模子在盘算机系统上的详细实现。凭证数据模子的差异,DBMS可以分成条理型、网状型、关系型、面向工具型等。MS SQL Server2000就是一种关系型数据库治理系统。
关系模子。关系模子主要是用二维表格结构表达实体集,用外键体现实体间联系。关系模子是由若干个关系模式组成的荟萃。关系模式相当于前面提到的纪录类型,它的实例称为关系,每个关系现实上是一张二维表格。
关系模子和条理、网状模子的最大判别是用要害码而不是用指针导航数据,表格简朴用户易懂,编程时并不涉及存储结构,会见手艺等细节。关系模子是数学化模子。SQL语言是关系数据库的尺度化语言,已获得了普遍的应用。
如图1.1所示,DBMS的特点和功效可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。
设计子系统有一个利便数据库及其应用建设的工具集。它典型地包罗发生表、窗体、查询和报表的工具。DBMS产物还提供编程语言和对编程语言的接口。
运行子系统处置赏罚用设计子系统开发的应用组件。它所包罗的运行处置赏罚器用来处置赏罚窗体和数据库的数据交互,以及回覆查询和打印报表等。
DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的下令,以便读写物理介质上的数据。DBMS引擎还涉及事务治理、锁、备份和恢复。
1.1.3  建设数据库
1.1.3.1  数据库模式
数据库模式界说了数据库的结构、表、关系、域和营业规则。数据库模式是一种设计,数据库和应用正是建设在此基础上的。
域是一列可能拥有的值的荟萃。必须为每一个表的每一列确定域。除了数据的物理名堂外,还需要确定是否有些域对表来说是唯一的。
数据库模式的最后一个要素是营业规则,它是对需要反映在数据库和数据库应用法式中的营业运动的约束。营业规则是模式的一个主要部门,由于他们指定了无论什么数据转变到达DBMS引擎,允许的数据值必须知足的约束。不管无效的数据转变请求是来自窗体的用户、查询/修改请求照旧应用法式,DBMS都应该拒绝。
遗憾的是,差异的DBMS产物用差异的要领实验营业规则。在某些情形下,DBMS产物不具备实验须要营业规则的能力,必须以代码形式把它们编入应用法式。
1.1.3.2  建设表
1.1.3.3  界说联系
1.1.4  应用组件
数据库应用包罗窗体、查询、报表、菜单和应用法式。
§1.2  图书治理系统
当今时代是飞速生长的信息时代。在各行各业中离不开信息处置赏罚,这正是盘算机被普遍应用于信息治理系统的情形。盘算机的最大利益在于使用它能够举行信息治理。使用盘算机举行信息控制,不仅提高了事情效率,而且大大的提高了其清静性。
尤其对于重大的信息治理,盘算性能够充实验展它的优越性。盘算机举行信息治理与信息治理系统的开发亲近相关,系统的开发是系统治理的条件。本系统就是为了治理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包罗许多的信息数据的治理,现今,有许多的图书馆都是起源最先使用,甚至尚未使用盘算机举行信息治理。凭证视察得知,他们以前对信息治理的主要方式是基于文本、表格等纸介质的手工处置赏罚,对于图书借阅情形(如借书天数、凌驾限制借书时间的天数)的统计和核实等往往接纳对借书卡的人工检查举行,对借阅者的借阅权限、以及借阅天数等用人工盘算、手抄举行。数据信息处置赏罚事情量大,容易堕落;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息治理手段。只管有的图书馆有盘算机,可是尚未用于信息治理,没有施展它的效力,资源闲置较量突出,这就是治理信息系统的开发的基本情形。
数据处置赏罚手工操作,事情量大,堕落率高,堕落伍不易更改。图书馆接纳手工方式对图书借阅情形举行人工治理,由于信息较量多,图书借阅信息的治理事情杂乱而又重大;一样平常借阅情形是纪录在借书证上,图书的数目和内容纪录在文件中,图书馆的事情职员和治理员也只是其时对它较量清晰,时间一长,如再要举行查询,就得在众多的资料中翻阅、查找了,造成查询费时、艰辛。如要对很长时间以前的图书举行更改就越发难题了。
基于这此问题,我以为有须要建设一个图书治理系统,使图书治理事情规范化,系统化,法式化,阻止图书治理的随意性,提高信息处置赏罚的速率和准确性,能够实时、准确、有用的查询和修改图书情形。
§1.1 系统所做事情
1) 相识应用开发工具的现状
2) DelPHi6.0编程基础
3) MS SQL Server基础
4) 设计数据库;设计界面
5) 开发数据库。数据库实现的一些功效有
l 数据和数听说明的醒目显示;
l 多条件的查询、多条纪录的检索、模糊查询;
l 数据文件某种存储名堂导入数据窗体,经由数据完整性校验存入数据库;
l 数据库清静性的设计;
l 数据库的设计、数据接口、界面的设计。

§1.3  本文所作事情
绪论部门对数据库应用系统的结构、开发举行了简要先容,剖析了图书治理信息系统设计的特点和使命。
第二章先容了数据库的设计和范式剖析,并系统先容了SQL语言,为设计和明确应用法式做了铺垫。
第三章对系统先容了Delphi 6.0的数据库编程手艺、SQL语言在Delphi 6.0中的应用、MS SQL Server基础。
第四章剖析了图书治理系统的应用需求,设计了系统的数据库结构,并凭证需求对系统功效举行了划分和细化。
第五章凭证第四章的设计效果使用MSSQL Server2000和Delphi 6.0举行了详细的应用法式设计。
总结部门先容了设计体会和编程体会,并指出了系统设计中的不足和刷新的偏向。
 
第二章   数据库理论基础
一个乐成的信息治理系统,是建设在许多条件之上的,而数据库是其中一个很是主要的条件和要害手艺。
信息治理系统所涉及的数据库设计分五个步骤:数据库需求剖析、看法设计、逻辑设计、物理设计与加载测试。
(1) 数据库需求剖析的使命是将营业治理单证流化为数据流,划分主题之间的界线,绘制出DFD图,并完成响应的数据字典。
(2) 看法设计的使命是从DFD出发,绘制出本主题的实体-关系图,并列出各个实体与关系的纲要表。
(3) 逻辑设计的使命是从E-R图与对应的纲要表出发,确定各个实体及关系的表名属性。
(4) 物理设计的使命是确定所有属性的类型、宽度与取值规模,设计出基本表的主键,将所有的表名与字段名英文化(现在许多软件能支持中文字段,如MS SQL Server,我就是用的中文字段名),实现物理建库,完成数据库物理设计字典。
(5) 加载测试事情贯串于法式测试事情的全历程,整个录入、修改、查询、处置赏罚事情均可视为对数据库的加载测试事情。
要设计出一个好的信息治理系统数据库,除知足系统所要求的功效外,还必须遵守下列原则:
² 基本表的个数越少越好。
² 主键的个数越少越好。键是表间毗连的工具,主键越少,表间的毗连就越简朴。
² 字段的个数越少越好。
² 所有基本表的设计均应只管切合第三范式。
数据库的设计中,如那里置赏罚多对多的关系和怎样设计主键,是两个有着较浩劫度、需要重点思量的问题。下面我们着重从SQL应用、数据库设计范式和查询优化等方面来剖析本课题的系统要害手艺和实现难点并加以解决。

§2.1  数据库系统设计及范式剖析
信息系统的主要使命是通过大量的数据获得治理所需要的信息,这就必须存储和治理大量的数据。因此建设一个优异的数据组织结构和数据库,使整个系统都可以迅速、利便、准确地挪用和治理所需的数据,是权衡信息系统开发事情优劣的主要指标之一。
2.1.1 数据库系统设计
数据库设计主要是举行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑条理组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,剖析各个数据之间的关系,凭证DBMS提供的功效和形貌工具,设计出规模适当、准确反映数据关系、数据冗余少、存取效率高、能知足多种查询要求的数据模子。
数据库设计的步骤是:
(1) 数据库结构界说:现在的数据库治理系统(DBMS)有的是支持联机事务处置赏罚CLTP(认真对事务数据举行收罗、处置赏罚、存储)的操作型DBMS,有的可支持数据客栈、有联机剖析处置赏罚CLAP(指为支持决议的制订对数据的一种加工操作)功效的大型DBMS,有的数据库是关系型的、有的可支持面向工具数据库。针对选择的DBMS,举行数据库结构界说。
(2) 数据表界说:数据表界说指界说数据库中数据表的结构,数据表的逻辑结构包罗:属性名称、类型、体现形式、缺省值、校验规则、是否要害字、能否为空等。关系型数据库要只管按关系规范化要求举行数据库设计,但为使效率高,规范化水平应凭证应用情形和条件来决议。数据表设计不仅要知足数据存储的要求,还要增添一些如反映有关信息、操作责任、中央数据的字段或暂时数据表。
(3) 存储装备和存储空间组织:确定数据的存放所在、存储路径、存储装备等,备份方案,对多版本怎样保证一致性和数据的完整性。
(4) 数据使用权限设置:针对用户的差异使用要求,确定数据的用户使用权限,确保数据清静。
(5) 数据字典设计:用数据字典形貌数据库的设计,便于维护和修改。
为了更好地组织数据和设计出现实应用数据库,应该注重如下问题:
规范化地重组数据结构:对数据举行规范化表达,这在后面将会详细讨论。
关系数据结构的建设:在举行了数据基本结构的规范化重组后,还必须建设整体数据的关系结构。这一步设计完成后数据库和数据结构设计事情基本完成,只待系统实现时将数据剖析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建设起来了。
建设关系数据结构涉及三方面内容:确定关联的要害指标项并建设关联表;确定单一的父系纪录结构;建设整个数据库的关系结构。
(1)链接关系简直定
在举行了上述数据规范化重组后,已经可以确保每一个基本数据表(我们简称为表)是规范的,可是这些单独的表并不能完整地反映事物,通常需要通过指标系统整体指标数据才气完整周全地反映问题。也就是说在这些基本表的各宇段中,所存储的是统一事物差异侧面的属性。那么盘算机系统怎样能知道哪些表中的哪些纪录应与其它表中的哪些纪录相对应,它们体现的是统一个事物呢?这就需要在设计数据结构时将这种各表之间的数据纪录关系确定下来。这种表与表之间的数据关系一样平常都是通过主或辅要害词之间的毗连来实现的。由于在每个表中只有主要害词才气唯一地标识表中的这一个纪录值(由于凭证第三范式的要求,表中其它数据字段函数都依赖于主要害词),以是将表通过要害词毗连就能够唯一地标识出某一事物差异属性在差异表中的存放位置。
(2)确定单一的父子关系结构
所谓确定单一的父系关系结构就是要在所建设的种种表中消除多对多(以下用M:N来体现)的征象,即想法使得所有表中纪录之间的关系呈树状结构(只能由一个主干发出若干条分支,而不能有若干条主干交织发出若干条分支状态)。所谓的“父系”就是指表的上一级关系表。消除多对多关系可以借助于E-R图的要领来解决,也可以在系统剖析时予以注重,阻止这种情形的发生。
消除这种M:N情形的措施也很简朴,只需在二表之间增添一个表,则原来M:N的关系就改成了M:1,1:N的关系了。
确定数据资源的清静保密属性:
一样平常DBMS都提供应我们自己界说数据清静保密性的功效。系统所提供的清静保密功效一样平常有8个品级(0-7级),4种差异方式(只读、只写、删除、修改),而且允许用户使用这8个品级的4种方式对每一个表自由地举行界说。
界说清静保密性的要领一样平常有如下几种:
a.原则上所有文件都界说为4级,个体优先级特殊高的办公室(终端或微机的入网账号)可界说高于4级的级别,反之则界说为低于4的级别。
b.统计文件(表)和数据录入文件一样平常只对本事情站界说为只写方式,对其它事情站则界说为只读方式。
c.财政等保密文件一样平常只对中事情站(如财政科等)界说为可写、可改、可删除方式,对其它事情站则界说为只读方式,而且不是每小我私人都能读,只有级别相同和高级别者才气读。
2.1.2  数据库设计范式剖析
建设起一个优异的数据指标系统,是建设数据结构和数据库的最主要的一环。一个优异的数据指标系统是建设DB的须要条件,但不是充实条件。我们完全可以以为所建指标系统中的一个指标类就是关系数据库中的一个基本表,而这个指标类下面的一个个详细指标就是这个基本表中的一个字段。但若是直接凭证这种方式建库显然还不能算最佳。对于指标系统中数据的结构在建库前还必须举行规范化的重新组织。
a.  数据组织的规范化形式
在数据的规范化表达中,一样平常将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(data element),这种关系落实到详细数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还划定在每一个基本表中必须界说一个数据元素为要害字(key),它可以唯一地标识出该表中其它相关的数据元素。在规范化理论中表是二维的,它有如下四个性子:
l 在表中的恣意一列上,数据项应属于统一个属性(如图中每一列都存放着差异条约纪录的统一属性数据)。
l 表中所有行都是不相同的,不允许有重复组项泛起(如图中每一行都是一个差异的条约纪录)。
l 在表中,行的顺序无关紧要(如图中每行存的都是条约纪录,至于先放哪一个条约都没关系)。
l 在表中,列的顺序无关紧要,但不能重复(如图中条约号和条约名谁先谁后都没关系,但二者不行重复或同名)。
在对表的形式举行了规范化界说后,数据结构尚有五种规范化界说,命名为规范化模式,称为范式。在这五种范式中,一样平常只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容”的,即知足第五范式的数据结构自动知足一、二、三、四范式,知足第四范式的数据结构自动知足第一、二、三范式,……,依此类推。
第一范式(first normal form,简称1st NF)就是指在统一表中没有重复项泛起,若是有则应将重复项去掉。这个去掉重复项的历程就称之为规范化处置赏罚。在本文所讨论的开发要领里,1st NF现实上是没有什么意义的。由于我们按规范化建设的指标系统和表的历程都自动保证了所有表都知足1st NF。
第二范式(second normal form,简称 2nd NF)是指每个表必须有一个(而且仅一个)数据元素为主要害字(primary key),其它数据元素与主要害字逐一对应。例如,在图l9.7中若是我们将条约号界说为主要害字(其它数据元素中的纪录数据都有可能重名,故不能作为主要害字),故只要知道了一个条约纪录的条约号,就可以唯一地在统一行中找到该条约的任何一项详细信息。通常我们称这种关系为函数依赖(functional depEndence)关系。即表中其它数据元素都依赖于主要害字,或称该数据元素唯一地被主要害字所标识。
第三范式(third normal form,简称 3rd NF)就是指表中的所有数据元素不光要能够唯一地被主要害字所标识,而且它们之间还必须相互自力,不存在其它的函数关系。也就是说对于一个知足了 2nd NF的数据结构来说,表中有可能存在某些数据元素依赖于其它非要害宇数据元素的征象,必须加以消除。
为防止数据库泛起更新异常、插入异常、删除异常、数据冗余太大等征象,关系型数据库要只管按关系规范化要求举行数据库设计。
§2.2  SQL语言先容
2.2.1  SQL基础
SQL(Structured Query Language,结构查询语言)是一个功效强盛的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家尺度学会)声称,SQL是关系数据库治理系统的尺度语言。SQL语句通常用于完成一些数据库的操作使命,好比在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库治理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。虽然绝大多数的数据库系统使用SQL,可是它们同样有它们自主另外的专有扩展功效用于它们的系统。可是,尺度的SQL下令,好比"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"经常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact- SQL。
SQL语言有着很是突出的优点,主要是:
n 非历程化语言
n 统一的语言
n 是所有关系数据库的公共语言
非历程化语言:SQL是一个非历程化的语言,由于它一次处置赏罚一个纪录,对数据提供自动导航。SQL允许用户在高层的数据结构上事情,而差池单个纪录举行操作,可操作纪录集,所有SQL 语句接受集相助为输入,返回集相助为输出。SQL的荟萃特征允许一条SQL语句的效果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放要领, 这种特征使用户更易集中精神于要获得的效果;所有SQL语句使用查询优化器,它是RDBMS的一部门,由它决议对指定数据存取的最快速率的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。
统一的语言:SQL可用于所有用户的DB运动模子,包罗系统治理员、数据库治理员、 应用法式员、决议支持系统职员及许多其它类型的终端用户。
SQL为许多使命提供了下令,其中包罗:
n 查询数据
n 在表中插入、修改和删除纪录
n 建设、修改和删除数据工具
n 控制对数据和数据工具的存取
n 保证数据库一致性和完整性
以前的数据库治理系统为上述种种操作提供单独的语言,而SQL 将所有使命统一在一种语言中。
所有关系数据库的公共语言:由于所有主要的关系数据库治理系统都支持SQL语言,用户可将使用SQL的手艺从一个RDBMS(关系数据库治理系统)转到另一个,所有用SQL编写的法式都是可以移植的。
2.2.2  SQL语句
SQL功效强盛,是一种完整的数据处置赏罚语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,归纳综合起来,它可以分成以下几组:
DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;
DDL(Data Definition Language,数据界说语言): 用于界说数据的结构,好比 建设、修改或者删除数据库工具;
DCL(Data Control Language,数据控制语言):用于界说数据库用户的权限。
DML组可以细分为以下的几个语句:
SELECT:用于检索数据;
INSERT:用于增添数据到数据库;
UPDATE:用于从数据库中修改现存的数据;
DELETE:用于从数据库中删除数据。
DDL语句可以用于建设用户和重修数据库工具。下面是DDL下令:
CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX
下面是一个简朴SQL语句的例子:
我们使用SQL语句来从Book中检索‘借书证号’为‘000001’的借阅者姓名:
SELECT 姓名  FROM  Book   WHERE 借书证号 = ‘000001’
2.2.2.1 DDL与DML
数据界说语言DDL:它是用来建设和修改数据库结构的一种语句,包罗 Create、Alter和Drop 语句。
数据操作语言DML:包罗数据查询与数据更新。数据查询主要是由Select语句完成,这一点不再赘述。而数据更新所造成的风险大大凌驾数据查询。数据库治理系统必须在更脱期内掩护所存储的数据的一致性,确保有用的数据进入数据库,数据库必须保持一致性,DBMS还必须协调多用户的并行更新,以确保用户和它们的更改不至于影响其它用户的作业。
用于修改数据库内容的 SQL 语句主要有以下三个:
(1)  Insert,向一个表中加入新的数据行
(2)  Delete,从一个表中删除数据行
(3)  Update,更改数据库中已经存在的数据
Insert尺度语法:
INSERT INTO  table_name (col1, col2...)  VALUES(value1, value2...)
下例要将借书证号为‘000001’作为一个新的借书情形加入借书情形表OWNER中
 Insert Into
 owner (借书证号,图书编号,借书日期)
  values (‘000001’,‘00000001’,‘2002-9-12’)
Insert 语句还可以将多行数据添加到目的表中去,在这种形式的 Insert 语句中,新行的数据值不是在语句正文中明确地指定的,而是语句中指定的一个数据库查询。添加的值来自数据库自身的行,在某些特定的状态下,这是很是有用的。多行 Insert 语句为拷贝数据提供了一种紧凑而高效的要领,但我在自已做的图书治理系统中没有使用这种要领,我在系统中是使用循环遵照上面的用法来完成多个纪录的插入。
Update语句用于更新单表中选定行的一列或多列的值。要更新的目的表在语句中界说,Set子句则指定要更新哪些列并盘算它们的值。Update语句总是包罗Where语句,而且Update语句较量危险,以是您必须明确地熟悉到Where语句的主要性,Where语句被用来指定需要更新的行。
尺度语法:
UPDATE table_name
SET columnname1 = value1
[, columname2 = value2]...
WHERE search_condition
Delete 语句尺度语法:
DELETE FROM  tablename   WHERE  condition
2.2.2.2 重大操作实现
在信息治理系统中,我们往往会遇到归类、汇总、映射、索引、子查询等重大操作,响应的支持与实现如下:
u GROUP BY要领
GROUP BY子句语法为:
SELECT column1, SUM(column2)
FROM "list-of-tables"
GROUP BY "column-list";
这个GROUP BY子句将集中所有的行在一起,它包罗了指定列的数据以及允许合计函数来盘算一个或者多个列。
在本人的系统中在显示数据时用到了此语句来对查询所得的内容排序然后再显示。
u 组合条件和布尔运算符
以下的SQL语句中就含有组合条件:
SELECT column1, SUM(column2)
FROM "list-of-tables"
WHERE "condition1" AND "condition2";
下面是一个示例:
SELECT 身份形貌
FROM ID,user
WHERE ID.身份编号=USER.身份编号 and user.借书证号=’000001’;
这条SQL语句是从user、id表中查找借阅证号为000001的借阅者的身份形貌,第三条语句中若是其中有一个条件为假,那么就什么都没有显示。
u UNION子句
有些时间,需要一起浏览多个查询的效果、组合它们的输出,我们可以使用UNION要害字。
 
第三章  应用系统开发工具
§3.1  Delphi6.0 VCL组件的系统结构
Delphi类可以简陋地分成两部门:一部门是组件类,这些组件类通常以某种方式泛起在组件面板上,当用户从组件面板上点取一个类的图标后,在法式中就自动天生了该类的工具(非可视组件除外);另一部门是功效类,这此功效类的工具通常泛起在法式代码中,起着不行取代的作用,可是这些功效类在组件面板上是找不到的。在Delphi中,每一个类的祖先都是Tobject类,整个类的条理结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。这样,凭证面向工具编程的基本头脑,就使得用户可用Tobject类这个类型取代任何其它类的数据类型。现实上在Delphi的类库中,Tobject类派生出了为数相当众多的子类,它们形成了一个重大的系统,通常情形下,若是不自行开发组件,就不必相识整个类的系统结构,只用到类条理树的叶结点就足够了。
这一小节简略先容一下Delphi 6.0中VCL(可视化组件库)组件的系统结构。通常做过法式开发的人都知道从来没有单纯的数据应用法式,也就是说,数据库应用法式必须和用户界面(可以是图形界面,也可以是下令接口)元素相团结,只讲界面或只讲数据库自己都构不成数据库应用法式,因而用Delphi 6.0开发数据库应用法式就隐含着界面开发。Delphi6中的VCL组件可用图3-1来说明。

组件在Delphi法式的开发中是最显眼的角色。各人知道,在编写法式时一样平常都最先于在组件面板上选择组件并界说组件间的相互作用。但也有一些组件不在组件面板上,例如Tform和Tapplication(典型的非可视组件)。组件是Tcomponents派生出来的子类,可以流的形式存放在DFM文件中,具有事务和Publish属性。
窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。在现实编程中,窗口组件类的工具都有句柄,可以接受输入焦点和包罗其它组件。
图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包罗其它组件。从图8-43中可以看出,图形组件的基类是TgraphicControl,在现实编程中,它们必须寄生于它们的宿主——窗口组件类的工具,由它们的拥有者认真其显示,而且它们还能触发一些和鼠标运动相关的事务。图形控件最典型的例子是Tlabel和TspeedButton。由此可以看出图形组件的功效很弱,图形组件的用处何在呢?着实使用图形组件的最大利益在于节约资源,正是由于它们的功效较弱,以是使用的系统资源就要少。在一个应用法式中,若是能在不影响其功效的条件下合理大量地使用图形组件,将会大镌汰法式对系统资源的消耗。
非可视组件是与可视组件相并列的另一类组件,非可视组件在法式运行中是不行见的(除种种对话框组件之外,事实上有人以为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。
最后要说明一下,常说的控件现实上是一种组件。也就是说组件这个看法要大于控件,控件在内在上包罗于组件中。控件由Windows系列操作系统提出并使用,而组件是Borland和其它厂商在对Windows控件做了须要的扩展之后提出来的看法,它们是在差异时期由差异的厂商提出的看法。
§3.2  数据库组件先容

用Delphi6开发数据库应用,重点是和种种数据库组件打交道,能和数据库挂钩的组件工具有5种,它们是:Session(数据库会话)、Database(数据库)、Dataset(数据集)、DataSource(数据源)、Data control(数据控制组件,也叫data-controls即数据感知组件)。其中前面4种统称为数据会见(Data Access)组件。这些组件的相互关系如图3-2所示。
ADO组件  Delphi6.0包罗了可以用来会见Microsoft公司的ActiveX Data Objects(ADO)名堂数据库的组件。ADO是Micrsoft公司关于种种类型数据的高等界面,厥后逐渐演酿成知足所有数据会见需要的完整解决措施。ADO的工具模子是所有数据会见接口工具模子中最简朴的一种。Microsoft公司用来会见ADO数据的应用法式界面手艺是OLE DB。OLE DB是一种底层编程接口,用来会见许多差异类型的数据源,其中包罗新闻、文件系统以及其他一些非传统的数据源。OLE DB是一个由Component Object Model(COM)接口组成的荟萃,用来隐藏建设数据会见服务历程中的细节。OLEDB提供了会见任何数据资源的要领,包罗相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户界说的数据工具。
Delphi的ADO组件无需依赖BDE而是使用ADO手艺,提供了可以通过数据控制组件会见数据的新要领。唯一的要求是在使用ADO组件时必须运行ADO/OLE-DB。ADO组件的使用使得DELPHI在会见数据的类型和接纳的手艺方面都有了很大的突破。
数据模块设计窗口  数据模块设计窗口是用来设计和维护数据模块的。数据模块设计窗口中包罗了所有以.DTI作为文件扩展名的Data Diagram文件的信息。DTI文件在编译时不起任何作用。
§3.3  SQL语言在Delphi中的应用
在Delphi中使用SQL语言很是利便,一样平常来说,都是通过Tquery或TADOquery组件来使用SQL语言的。可以在Tquery或TADOquery组件的SQL属性中设置SQL语句。设计法式时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开String List Editor对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQL Builder来自动天生SQL语句,这样可以阻止手工编写SQL而可能造成的语法错误。
静态SQL语句在法式设计时便已牢靠下来,它不包罗任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中央包罗着体现字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select  *  From  Book  Where 图书编号 =:bookCode; 
其中的变量bookCode即是一个参数变量,它由一个冒号指导,在法式运行历程中,必须要为该参数赋值,该条SQL语句才气准确执行,每次运行应用法式时可以为该参数变量赋予差异的值。为参数赋值有三种要领:
①凭证参数在SQL语句中泛起的顺序,设置TADOQuery组件的parameters属性值为参数赋值。
②直接凭证SQL语句中各参数的名字,挪用ParamByName要领来为各参数赋值。
③将TADOQuery组件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TADOQuery组件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。使用这种要领也能实现所谓的毗连查询,建设主要—明细型数据库应用。
在使用动态SQL语句编程时,经常用到一个很主要的要领Prepare,挪用Prepare 要领之后,Delphi会将带参数的SQL语句传送给与其对应的数据库引擎,对动态SQL语句举行语法剖析和优化。虽然在用动态SQL语句编程时,挪用Prepare要领并不是必须的,可是挪用Prepare要领后,会极大地提高动态SQL 语句的执行性能,特殊是当要重复多次执行统一条动态SQL语句时,其优越性会越发显着。 若是在应用法式中执行一条SQL语句之前并没有显式地挪用Prepare要领,每次在执行SQL 语句时,Delphi会隐含地挪用Prepare要领以准备这个查询。
TadoQuery部件尚有一个Prepare属性,这是一个布尔型属性,当其属性值为True时, 批注该查询已被准备好了( SQL 语句已被传送到数据库引擎中 ) , 当我们使用参数编辑器Parameters Editor来为动态SQL语句中的参数赋值时,当设置完响应的参数值并退出参数编辑器时,Delphi会隐含地挪用Prepare要领以准备好查询。
当SQL语句执行完之后,要想准备下一个查询,首先必须挪用Close要领,然后才气挪用Prepare要领准备下一个查询。一样平常来说,在一个应用法式中应该挪用一次Prepare要领,经常在窗体的OnCreate事务处置赏罚历程中挪用Prepare要领, 然后用上述先容的要领为参数赋值,最后挪用Open要领或ExecSQL要领执行SQL语句,以完成查询。
虽然在挪用Prepare要领准备好一个查询时,会消耗一些数据库资源, 因而每当一个查询执行完毕之后,要养成挪用UnPrepare要领以撤消查询的好习惯。在运行法式历程中,通过法式改变TQuery或TADOquery部件的SQL属性值时,Delphi会自动地挪用Close要领和UnPrepare 要领,以撤消查询。
在法式运行历程中,要想设置Tquery或TADOquery部件的SQL属性,必须首先挪用Close要领,关闭TQuery或TADOquery部件,然后再挪用Clear要领扫除SQL属性中现存的SQL下令语句, 最后再挪用Add要领为SQL属性设置新的SQL下令语句。例如: 
datamodule4.adoquery2.close;
    datamodule4.adoquery2.sql.clear;
    datamodule4.adoquery2.sql.add('SELECT 借书证号,密码 FROM [user] WHERE (借书证号 = :tt)');
    datamodule4.adoquery2.parameters[0].value:=username;
    datamodule4.adoquery2.open; 
在为TQuery或TADOquery部件设置SQL属性时挪用Close要领总是很清静的,若是TQuery或TADOquery部件已经被关闭了,挪用Close要领时不会发生任何影响。在应用法式中为SQL属性设置新的SQL 下令语句时,必须要挪用Clear要领以扫除SQL属性中现存的SQL下令语句,若是不挪用Clear要领,便挪用Add要领向SQL属性中设置SQL下令语句,那么新设置的SQL下令语句会追加在现存SQL下令语句后面, 在法式运行时经常会泛起出乎意料的查询效果甚至法式无法运行下去。
在这里要特殊注重的,一样平常情形下TQuery或TADOquery部件的SQL属性只能包罗一条完整的SQL语句,它不允许被设置成多条SQL语句。虽然有些数据库服务器也支持在TQuery或TADOquery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为 SQL 属性设置多条SQL语句。
在为TQuery或TADOquery部件设置完SQL属性的属性值之后,也即编写好适当的SQL法式之后,可以有多种方式来执行SQL法式。
在设计历程中,设置完TQuery或TADOquery部件的SQL属性之后将其Active属性的值置为True, 这样便可以执行SQL属性中的SQL法式,若是应用中有与TQuery或TADOquery部件相连的数据浏览部件( 如TDDGrid TDBEdit等)那么在这些数据浏览部件中会显示SQL法式的执行效果。
在应用法式运行历程中,通过法式挪用TQuery或TADOquery组件的Open要领或ExecSQL 要领可以执行其SQL属性中的SQL法式。Open要领和ExecSQL要领是纷歧样的。Open要领只能用来执行SQL语言的查询语句(Select下令), 并返回一个查询效果集,而ExecSQL要领还可以用来执行其它常用的SQL语句(如INSERT, UPDATE, DELETE等下令),例如:
Query1.Open (这样会返回一个查询效果集)
若是挪用Open要领,而没有查询效果时,会堕落。此时应该挪用ExecSQL 要领来取代Open要领。如:
Query1.ExecSQL (没有返回效果)
虽然在设计应用法式时,法式设计职员是无法确定TQuery或TADOquery组件中的SQL 语句是否会返回一个查询效果的。对于这种情形应当用Try…Except模块来设计法式。在 Try 部门挪用Open要领,而在Except部门挪用ExceSQL要领,这样才气保证法式的准确运行。
例如: 
Try
Query1.Open
Except
Query1.ExecSQL
End
通过Tquery或TADOquery组件可以获得两种类型的数据:
u “运动”的数据
这种数据就跟通过TTable部件获得的数据一样,用户可以通过数据浏览部件来编辑修改这些数据,而且当挪用Post要领或当焦点脱离当前的数据浏览部件时,用户对数据的修改自动地被写回到数据库中。
u 非运动的数据(只读数据)
用户通过数据浏览部件是不能修改其中的数据。在缺省情形下,通过TQuery部件获得的查询效果数据是只读数据,要想获得“运动”的数据,在应用法式中必须要设置Tquery或TADOquery组件的RequestLive属性值为True,然而并不是在任何情形下(通过设置RequestLive的属值True)都可以获得“运动”的数据的,要想获得“运动”的数据,除了将TQuery部件的RequestLive属性设置为True外,响应的SQL下令还要知足以下条件。
当地SQL语句查询情形下,要获得可更新的数据集,SQL语句的限制为:
n 查询只能涉及到一个单独的表
n SQL语句中不能包罗ORDER BY下令
n SQL语句中不能含群集运算符SUM或AVG
n 在Select后的字段列表中不能有盘算字段
n 在Select语句WHERE部门只能包罗字段值与常量的较量运算,这些较量运算符是:Like, >, <, >=, <=。各较量运算之间可以有并和走运算:AND和OR
当通过SQL语句查询数据库服务器中的数据库表:
n 查询只能涉及到一个单独的表
n SQL语句中不能包罗ORDER BY下令
n SQL语句中不能含群集运算符SUM或AVG运算
另外,若是是查询Sybase数据库中的表,那么被查询的表中只能有一个索引。
若是在应用法式中要求TQuery或TADOquery组件返回一个“运动”的查询效果数据集,可是SQL 下令语句不知足上述约束条件时,对于当地数据库的SQL查询,BDE只能返回只读的数据集。对于数据库服务器中的SQL查询,只能返回错误的代码。当Tquery或TADOquery组件返回一个“运动”的查询效果数据集时,它的CanModIfy属性的值会被设置成True。
§3.4  MS SQL Server简述
SQL Server 是一个后台数据库治理系统,它功效强盛操作轻盈,日益为宽大数据库用户所喜欢。越来越多的开发工具提供了与SQL Server的接口。SQL Server 是一个关系数据库治理系统,它最初是由Microsoft、Sybase 和Ashton-Tate三家公司配合开发的。于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。
SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库治理系统的最新版本,该版本继续了SQL Server 7.0 版本的优点,同时又比它增添了许多更先进的功效、具有使用利便、可伸缩性好与相关软件集成水平高等优点。可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处置赏罚器的服务器等多种平台使用。MSSQL Server不光可以应用于大中型数据库治理中,建设漫衍式关系数据库,而且也可以开发桌面数据库。事实上,SQL Server数据库处置赏罚的基本结构,接纳关系型数据库模式,只管云云,信托各人都可以容易的发现,在SQL Server的数据库处置赏罚方式,则是使用面向工具的操作方式与精神,也就是说,SQL Server的所有功效,都可以基于系统已经建设好的一些工具来告竣,是相当OO(面向工具)的一个系统结构。
SQL Server 企业治理器是 SQL Server 的主要治理工具,它提供了一个遵从 MMC 尺度的用户界面,使用户得以:
· 界说 SQL Server 实例组。
· 将个体服务器注册到组中。
· 为每个已注册的服务器设置所有 SQL Server 选项。
· 在每个已注册的服务器中建设并治理所有 SQL Server 数据库、工具、登录、用户和权限。
· 在每个已注册的服务器上界说并执行所有 SQL Server 治理使命。
· 通过叫醒挪用 SQL 查询剖析器,交互地设计并测试 SQL 语句、批处置赏罚和剧本。
· 叫醒挪用为 SQL Server 界说的种种向导。
 
· 
第三章 图书治理系统设计剖析

§4.1  应用需求剖析
图书治理系统需要知足来自三方面的需求,这三个方面划分是图书借阅者、图书馆事情职员和图书馆治理职员。图书借阅者的需求是查询图书馆所存的图书、小我私人借阅情形及小我私人信息的修改;图书馆事情职员对图书借阅者的借阅及还书要求举行操作,同时形成借书或还书报表给借阅者审查确认;图书馆治理职员的功效最为重大,包罗对事情职员、图书借阅者、图书举行治理和维护,及系统状态的审查、维护并天生催还图书报表。
图书借阅者可直接审查图书馆图书情形,若是图书借阅者凭证本人借书证号和密码登录系统,还可以举行本人借书情形的查询和维护部门小我私人信息。一样平常情形下,图书借阅者只应该查询和维护本人的借书情形和小我私人信息,若查询和维护其他借阅者的借书情形和小我私人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难获得的,特殊是密码,以是不光知足了图书借阅者的要求,还掩护了图书借阅者的小我私人隐私。
图书馆事情职员有修改图书借阅者借书和还书纪录的权限,以是需对事情职员上岸本模块举行更多的思量。在此模块中,图书馆事情职员可以为图书借阅者加入借书纪录或是还书纪录,并打印天生响应的报表给用户审查和确认。
图书馆治理职员功效的信息量大,数据清静性和保密性要求最高。本功效实现对图书信息、借阅者信息、总体借阅情形信息的治理和统计、事情职员和治理职员信息审查及维护。图书馆治理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部门功效应该由图书馆事情职员执行,可是,删除某条图书借阅者基本信息纪录时,应实现对该图书借阅者借阅纪录的级联删除。而且还应具有天生催还图书报表,并打印输出的功效。
在本系统中由于没有打印机装备供试验,以是预先把报表打印改成报表预览。
设计差异用户的操作权限和上岸要领
对所有用户开放的图书查询
借阅者维护借阅者小我私人部门信息
借阅者审查小我私人借阅情形信息
维护借阅者小我私人密码
凭证借阅情形对数据库举行操作并天生报表
凭证还书情形对数据库举行操作并天生报表
查询及统计种种信息
维护图书信息
维护事情职员和治理员信息
维护借阅者信息
处置赏罚信息的完整性
对借阅逾期的图书天生报表
图4-2  图书治理系统数据库应用需求的总结

凭证以上所做的需求剖析,并略掉一些细节(如不思量用户的登录;对纪录的维护),得出以下的三层数据流图。 
§4.2 系统功效模块划分
系统功效框图如图4-10所示。

§4.3  系统数据库设计
4.3.1  看法设计
在看法设计阶段中,设计职员从用户的角度看待数据及处置赏罚要求和约束,发生一个反映用户看法的看法模式。然后再把看法模式转换成逻辑模式。将看法设计从设计历程中自力开来,使各阶段的使命相对单一化,设计庞洪水平大大降低,不受特定DBMS的限制。
使用ER要领举行数据库的看法设计,可分成三步举行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式举行优化,获得最终的模式,即看法模式。
(1) 设计局部ER模式
实体和属性的界说:
图书(图书编号,图书名称,作者,出书社,出书日期,备注,价钱,数目,)
借阅者(借书证号,姓名,性别,身份证,联系电话,密码)
身份(身份编号,身份形貌,最大借阅数)
图书种别(图书种别编号,种别形貌)

ER模子的“联系”用于描绘实体之间的关联。一种完整的方式是对局部结构中恣意两个实体类型,依据需求剖析的效果,考察局部结构中恣意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,照旧1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。联系界说如图4-5所示。诠释如下:
u 一个借阅者(用户)只能具有一种身份,而一种身份可被多个借阅者所具有;
u 一本图书只能属于一种图书种别(种别),而一种图书种别可以包罗 多本图书;
u 一个用户可以借阅多本差异的书,而一本书也可以被多个差异的用户所借阅。
(2)设计全局ER模式
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局看法结构。全局看法结构不仅要支持所有局部ER模式,而且必须合理地体现一个完整、一致的数据库看法结构。
1)确定公共实体类型
为了给多个局部ER模式的合并提供最先合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅凭证实体类型名和键来认定公共实体类型。一样平常把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
2)局部ER模式的合并
合并的原则是:首先举行两两合并;先和合并那些现实天下中有联系的局部结构;合并从公共实体类型最先,最后再加入自力的局部结构。
3)消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户配合明确和接受的统一的看法模子。
3)全局ER模式的优化
在获得全局ER模式后,为了提高数据库系统的效率,还应进一步依据处置赏罚需求对ER模式举行优化。一个好的全局ER模式,除能准确、周全地反映用户功效需求外,还应知足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
综上所述,“图书治理系统”的全局ER模式如图4-13所示。

4.3.2  关系数据库的逻辑设计
由于看法设计的效果是ER图,DBMS一样平常接纳关系型(本人所使用的MS SQL Server就是关系型的DBMS),因此数据库的逻辑设计历程就是把ER图转化为关系模式的历程。由于关系模子所具有的优点,逻辑设计可以充实运用关系数据库规范化理论,使设计历程形式化地举行。设计效果是一组关系模式的界说。
(1) 导出初始关系模式
book(图书编号#,图书名称,图书种别#,作者,出书社,出书日期,备注,价钱,数目)class(图书种别#,种别名)user(借书证号#,姓名,性别,身份编号#,身份证,联系电话,密码)ID(身份编号#,身份形貌,最大借阅数)Owner(借书证号#,图书编号#,借书日期)
图4-14  关系模式集
(2) 发生子模式
子模式是用户所用到的那部门数据的形貌。除了指出用户用到的数据外,还应指出数据与看法模式中响应数据的联系,即指出看法模式与子模式之间的对应性。
借书子模式(借书证号#,姓名,图书编号#,图书名称,借书日期)
图4-15  部门子模式
(3) 凭证设计中泛起的问题本人在写系统时还加入了两个关系模式:
1、 ownertemp:用于事情职员在处置赏罚借书、还书事情时暂时存储借书、还书信息,以便打印报表时使用。
2、 keyer:用于存储事情职员和图书馆治理员的用户名和密码及权限,以便事情职员或图书馆治理员进入响应的功效模块时举行验证用户的身份。
4.3.3  数据库的实现
我选用Microsoft SQL Server2000(企业版)数据库来举行数据库的逻辑设计。首先建设七个基本数据库表如表4-1-4-7所示,然后凭证全局ER图,建设各个表之间的联系,如图4-8所示。
表4-1  借阅者基本信息表的结构(User)
 


表4-2 图书信息表的结构(Book)
 
表4-3 图书种别信息表的结构(Class)
 
表4-4 借阅者身份信息表的结构(ID)
 
表4-5 借阅情形信息表的结构(Owner)
 
表4-6 借阅情形暂时存储信息表的结构(Ownertemp)
 
注:在owner表和ownertemp表中加入了索引字段,用来唯一标识一条借书纪录,而且设置为标识,标识种子为1。
表4-7 事情职员和治理员信息表的结构(Keyer)
 

图4-8  数据库表间联系图
 
 
第五章   图书治理系统应用法式设计
§5.1  系统窗体模块组成

§5.2  数据模块窗体的设置
在编写数据库应用法式时,经常要遇到这样的情形,即许多几何组件、窗体同时会见相同的数据源,若是为每一个组件或者窗体都设置一个数据源将是十分耗时的工件,而且要保证这些数据源简直是相同的也需花一番功夫。那么,能不能将这些数据源集中治理,最好是做成一个统一的模块,需要时就将该模块引入而不必直接操作数据源自己呢?数据模块(DataModule)是解决这个问题最好的谜底。简朴说来,数据模块是用来集中治理数据源的一个窗体,该窗体可被需要的地方随时引入。
但本人在开发这个系统时,最先使用了一下数据模块,但在使用历程中却遇到了一些问题。而且思量这个系统使用到的TADOQuery控件较量多,若是使用数据控件可能会带来治理上的贫困,如弄混各个数据控件的作用。还思量到使用动态天生ADOQuery可能会更节约资源。以是在本人的系统中,最先做的第一个模块“借阅者小我私人模块”中还稍微使用了一下数据模块。但在后面做的两个模块中大多都是用动态天生ADOQuery来实现的。而且由于SQL语句是动态加入的以是datamodule中的控件也不会多。
 
§5.3  启动画面的实现
启动画面是为了给用户一个优异的印像,加深软件的亲和力,没有现实的功效,在Form1窗体中加入了Image和Time组件。启动画面的窗体略,主要的源代码如下:

 

§5.4  用户登录窗体的的实现
本窗体是为三种差异的用户(一样平常用户,事情职员,治理员)提供选择以进入差异的模块,知足差异用户的需求。源代码较量简朴,略。
 
§5.5  用户密码认证窗体的的实现
本窗体是为了让事情职员或图书馆治理员凭证用户名和密码举行登录,而且跟据用户名检查Keyer表中的“权限”字段,以分辩进入图书馆治理职员模块照旧进入事情职员模块。窗体界面、源代码如下
 
§5.6  借阅者服务模块的实现
借阅者服务窗体的功效主要是图书的查询,小我私人借阅情形审查及小我私人部门信息的修改。界面图如下:
 
5.6.1图书查询功效的实现
在本系统中,任何人都有权限使用查询功效,不做任何限制。界面如下,
 
 
由于实现的查询功效有多种,如按图书编号、图书名称等字段举行完全体配查找和部门体配的模糊查找,尚有按多个条件举行逻辑与或是逻辑或的多条件查找。其中实现的要领者差不多,以是只给出多条件查找的代码,如下:

5.6.2借阅者登录功效的实现
这个功效的实现与事情职员和治理职员登录功效实现的要领大致一样,而且还要简朴。是从User表中查到到借阅证号与密码,看与用户输入的是否一致。若是一致,那么用户就可审查自已的借阅情形并维护自己的部门信息。源代码与借阅者登录界面都略。
5.6.3借阅者借阅情形功效的实现
当借阅者准确登录到系统后,此功效将被激活,使用户能审查到自身的借阅情形。在此系统中,信息的显示一样平常用ListView来实现,只在较少的情形下用到了DBgrid,由于我以为ListView更好实现,并能使信息数据对用户的完全疏散。
 
 
在这里跟据借阅者的差异要求实现借阅情形的查询,有检查所有的借阅情部、某本书的借阅情形、和凭证已借阅天数的来查询。其中根椐借阅天数来查询更有代表性,有方式一和方式二。以下给出此功效的源代码
按借阅天数查询 方式一

按借阅天数查询 方式二


5.6.4借阅者小我私人资料维护功效的实现
 
此功效实现当前借阅者部份资料的修改,但借书证号和身份种别这样的信息不允许修改,这是图书馆治理员模块的功效。在此界面中点击修改按钮将泛起“修改”窗体(Form8),点击修改密码按钮将泛起groupbox8,在这里举行密码修改。要害源代码如下。
 
 
这里给出小我私人部门信息修改的源代码:

这里给出密码修改的源代码:

5.7事情职员-图书借阅/送还模块的实现
 

5.7.1事情职员举行图书借阅功效实现
 
在这个功效中,事情职员输入借阅者的借阅证号和所要借阅的图书的图书编号,然后点击借阅按钮就可举行图书借阅。思量到现实中可能会泛起只知图书名而不知图书编号的情形,在此界面下方加入了一个转换功效,可以把图书名称转换成图书编号,再举行图书借阅。

在借阅完成后会生借阅报表以便借阅者检查和确认,借阅报表的打印效果如下图,实现较量简朴,略去实现历程。
 
5.7.2事情职员举行图书送还功效实现
 
在此功效中,事情职员凭证借阅者的借书证号和送还的图书编号举行图书的送还事情。而且凭证现实中可能会泛起的只知图书名不知图书编号的送还情形,以是加入了按书籍名称举行送还的功效。这个功效是图书借阅功效中把图书名称转换成图书编号的一种刷新要领,这样就不用如借阅功效中一样要先转换再借阅了。送还完成后,同样会打印出送还报表以便用户检查和确认。

5.8图书馆治理员模块的实现


5.8.1图书馆治理员图书治理功效的实现
 


在这个功效中可以在(*图书编号)中输入图书编号,点查找按钮后就会在各个响应的组件中显示出信息,或按图书名称模糊查找到所要的纪录,在各个响应的组件中显示第一条纪录的信息,也可在下端的ListView组件中点击某一条纪录,在各个响应的组件中也会显示所选纪录的信息。在入库功效中只要不是相同的图书编号而且带*号提醒的字段不为空就可插入新的图书纪录。删除则删除那些Book表中的图书纪录,若是借出还可依用户要求连带删除owner表中的纪录。由于图书修改与图书入库的功效与事情职员纪录修改和事情职员纪录添加的实现历程一样,以是下面仅给出删除功效的源代码,如下

5.8.2图书馆治理员事情职员和治理员治理功效的实现
在此功效中可以加入事情职员或是治理员,或是修改他们的密码、权限。


在此功效中若是选中ListView中的纪录,则在右边响应的组件中显示出信息,而且治理员还可对这些纪录举行修改或加入新的纪录。而且也可以点删除按钮删除选中的一条或多条纪录。删除功效与图书纪录的删除一样平常,以是下面只给出添加与修改的实现历程。

5.8.3图书馆治理员修改图书种别及统记功效的实现
 
在此窗体中能对图书的种别举行删除,添加和修改,这模块的功效的实现历程与图书纪录的删除,添加和修改一样的,可是这个窗体还能跟据图书种别举行统计,还可凭证Book表和owner表统计出图书总数目,库存图书数目,借出图书数目及借阅逾期的图书数目。在这里给出统计图书总数目,库存图书数目,借出图书数目及借阅逾期的图书数目的实现历程中的几个函数和历程

5.8.4图书馆治理员借阅者治理功效的实现
 
查询借阅者可凭证借阅者的借书证号或姓名或身份编号查找到借阅者的信息,也可以实验模糊查找,这个功效的实现与前面图书查找的实现历程一样平常,就不再详细说明。

5.8.5图书馆维护借阅者治理功效的实现
 
此功效能对借阅者信息举行审查添加、删除、修改。在这里给出刷新按钮的实现历程

5.8.6图书馆身份维护功效的实现
这一部门是对借阅者身份举行治理,能对身份举行添加、删除、修改。而且同样的在listview中选中某条或多条纪录时会在响应的右边的组件中显示出信息。此功效实现历程与前面所叙有类似,略。
 
5.8.7图书馆借阅者统计功效的实现
 
此功效按借阅者身份举行统计,得出具有某种身份的借阅者总数,此种身份的并借阅图书的借阅者数和所借阅的图书数,在下面给出实现历程。

5.8.8图书馆统计借阅逾期纪录功效的实现
打印出的借阅逾期催还报表如下图所示:
 
此报表能显示按借书证号升序排列的借阅信息凌驾限制时限的信息,其中主要的SQL语句如下:

5.9系统信息显示的实现
 
显过本系统的信息,而且右边的字向上转动显示,主要实现如下:


相关性:盘算机论文、结业论文、免费结业论文、大学生结业论文、图书馆治理系统
  全套结业设计论文现成制品资料请咨询 625110801      返回澳门牛牛平台 如转载请注明泉源于mog-net.com  


打印本页 | 关闭窗口

Email:biyeshejiba@163.com 在线QQ:   625110801 学生结业作品网站  
本站结业设计结业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.若有侵占您的版权有损您的利益,请联系我们会连忙纠正或删除有关内容!