图书馆管理系统_第1页
图书馆管理系统_第2页
图书馆管理系统_第3页
图书馆管理系统_第4页
图书馆管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图书馆管理系统摘要图书管理系统是典型的信息管理系统(IS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完好性强、数据平安性好的库。而对于后者那么5.3启动画面的实现385.4用户登录窗体的的实现395.5用户密码认证窗体的的实现395.6借阅者效劳第一章绪论1.1数据库应用系统开发简介在数据库应用系统开发之前,对开发数据库的根本概念应当理解,对数据库的构造、开发数据库应用程序的步骤、开发体系及方法都应当有相当明晰的理解和认识。数据库应用系统开发的目的是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效

2、的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速开展,并已形成较为完好的理论体系和一大批实用系统。并且,近年来,随着rldideeb()的猛增及Internet技术的迅速开展数据库管理系统处理,DBS那么由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。标准化。为了比照构造差的关系和构造好的关系之间的差异,以本文所设计的图书管理系统中的图书和图书借阅者关系为例来说明,假假设设计关系R1借书证号,姓名,性别,身份

3、编号,身份证,联络 ,图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量;这个关系的问题出在它有关于两个不同主题的数据,就是图书借阅者和图书。用这种方式构成的关系在进展修改时,会出现问题。因为一个图书借阅者可能借阅多本书,假如某个图书借阅者的某个字段如联络 出现变更,它所借阅的图书记录可能多个也就必须变化,这是不好的。因此数据用两个关系表示更好。如今假如某图书借阅者改变了它的联络 ,只有关系表user的对应行需要改变。当然,要想产生一个,显示图书名称及其借阅者联络 的报表,就需要将这两个表的行结合起来。结果说明,将关系分别存储,在生成报表的时候将它们结合起来,比把它们存储在

4、一个合成的表中更好。user借书证号,姓名,性别,身份编号,身份证,联络 ,bk图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量那么和数据库构造的其他部分改良了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据构造,如链表,但它主要还是索引。索引可以用来排序和快速访问数据。下面以本人的图书管理信息系统中的bk表为例来说明。假定数据在磁盘上是按图书编号的递增顺序排列的,用户想打印一个按图书名称排序的图书数据报表。为此,所有的数据都需要从源表中提取出来并排序,除非表很小,否那么这是一个很费时的过程。或者,可以在图书名称字段上创立一个索引,该索引的条

5、目按照图书名称排序,这样,该索引的条目可以读出来,并用来按顺序访问bk数据。索引用于快速访问数据。例如,一个用户只想访问bk表中图书类别值为01的那些学生。假如没有索引,那么必须搜索整个源表;但有了索引之后,可以找到索引条目,并使用它来挑选所有适宜部分DBS是指数据库系统中管理数据的软件系统。DBS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBS进展的。DBS总是基于某种数据模型,可以把DBS看成是某种数据模型在计算机系统上的详细实现。根据数据模型的不同,DBS可以分成层次型、网状型、关系型、面向对象型等。SSQLServer2000就是一种关系型数据库

6、管理系统。关系模型。关系模型主要是用二维表格构造表达实体集,用外键表示实体间联络。关系模型是由假设干个关系形式组成的集合。关系形式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储构造,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。如图1.1所示,DBS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBS引擎。设计子系统有一个方便数据库及其应用创立的工具集。它典型地包含产生表、窗体、查询和报表的工具。DBS产

7、品还提供编程语言和对编程语言的接口。运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互,以及答复查询和打印报表等。DBS引擎从其他两个组件承受恳求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBS引擎还涉及事务管理、锁、备份和恢复。创立那么。数据库形式是一种设计,数据库和应用正是建立在此根底上的。域是一列可能拥有的值的集合。必须为每一个表的每一列确定域。除了数据的物理格式外,还需要确定是否有些域对表来说是唯一的。数据库形式的最后一个要素是业务规那么,它是对需要反映在数据库和数据库应用程序中的业务活动的约束。业务规那么是形式的一个重要部分

8、,因为他们指定了无论什么数据变化到达DBS引擎,允许的数据值必须满足的约束。不管无效的数据变化恳求是来自窗体的用户、查询/修改恳求还是应用程序,DBS都应该回绝。遗憾的是,不同的DBS产品用不同的方法施行业务规那么。在某些情况下,DBS产品不具备施行必要业务规那么创立开展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它可以进展信息管理。使用计算机进展信息控制,不仅进步了工作效率,而且大大的进步了其平安性。尤其对于复杂的信息管理,计算机可以充分发挥它的优越性。计算机进展信息管理与信息管理系统的开发亲密相关,系统的开发是系统管理的前提。

9、本系统就是为了管理好图书馆信息而设计的。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开场使用,甚至尚未使用计算机进展信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况如借书天数、超过限定借书时间的天数的统计和核实等往往采用对借书卡的人工检查进展,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进展。数据信息处理工作量大,容易出错;由于数据繁多,容易丧失,且不易查找。总的来说,缺乏系统,标准的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲

10、置比拟突出,这就是管理信息系统的开发的根本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进展人工管理,由于信息比拟多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比拟清楚,时间一长,如再要进展查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进展更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作标准化,系统化,程序化,防止图书管理的随意性,进步信息处理的速度和准确性,可以及时、准确、有效的查询和修改

11、图书情况。1.1系统所做工作1)理解应用开发工具的现状2)DelPHi6.0编程根底3)SSQLServer根底4)设计数据库;设计界面5)开发数据库。数据库实现的一些功能有l数据和数据说明的醒目显示;l多条件的查询、多条记录的检索、模糊查询;l数据文件某种存储格式导入数据窗体,经过数据完好性校验存入数据库;l数据库平安性的设计;l数据库的设计、数据接口、界面的设计。1.3本文所作工作绪论部分对数据库应用系统的构造、开发进展了简要介绍,分析了图书管理信息系统设计的特点和任务。第二章介绍了数据库的设计和范式分析,并系统介绍了SQL语言,为设计和理解应用程序做了铺垫。第三章对系统介绍了Delphi

12、6.0的数据库编程技术、SQL语言在Delphi6.0中的应用、SSQLServer基矗第四章分析了图书管理系统的应用需求,设计了系统的数据库构造,并根据需求对系统功能进展了划分和细化。第五章根据第四章的设计结果利用SSQLServer2000和Delphi6.0进展了详细的应用程序设计。总结部分介绍了设计体会和编程体会,并指出了系统设计中的缺乏和改良的方向。第二章数据库理论根底一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。信息管理系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。1数据库需求分析的任务是将业

13、务管理单证流化为数据流,划分主题之间的边界,绘制出DFD图,并完成相应的数据字典。2概念设计的任务是从DFD出发,绘制出本主题的实体关系图,并列出各个实体与关系的纲要表。3逻辑设计的任务是从E-R图与对应的纲要表出发,确定各个实体及关系的表名属性。4物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出根本表的主键,将所有的表名与字段名英文化如今很多软件能支持中文字段,如SSQLServer,我就是用的中文字段名,实现物理建库,完成数据库物理设计字典。5加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。要设计出一个好的信息管理系统数据库,

14、除满足系统所要求的功能外,还必须遵守以下原那么:根本表的个数越少越好。主键的个数越少越好。键是表间连接的工具,主键越少,表间的连接就越简单。字段的个数越少越好。所有根本表的设计均应尽量符合第三范式。数据库的设计中,如何处理多对多的关系和如何设计主键,是两个有着较大难度、需要重点考虑的问题。下面我们着重从SQL应用、数据库设计范式和查询优化等方面来分析本课题的系统关键技术和实现难点并加以解决。1数据库构造定义:目前的数据库管理系统DBS有的是支持联机事务处理LTP负责对事务数据进展采集、处理、存储的操作型DBS,有的可支持数据仓库、有联机分析处理LAP指为支持决策的制定对数据的一种加工操作功能的

15、大型DBS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBS,进展数据库构造定义。2数据表定义:数据表定义指定义数据库中数据表的构造,数据表的逻辑构造包括:属性名称、类型、表示形式、缺省值、校验规那么、是否关键字、可否为空等。关系型数据库要尽量按关系标准化要求进展数据库设计,但为使效率高,标准化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。3存储设备和存储空间组织:确定数据的存放地点、存储途径、存储设备等,备份方案,对多版本如何保证一致性和数据的完好性。4数据使用权限设置:针对用户的不同使用

16、要求,确定数据的用户使用权限,确保数据平安。5数据字典设计:用数据字典描绘数据库的设计,便于维护和修改。为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:标准化地重组数据构造:对数据进展标准化表达,这在后面将会详细讨论。关系数据构造的建立:在进展了数据根本构造的标准化重组后,还必须建立整体数据的关系构造。这一步设计完成后数据库和数据构造设计工作根本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系构造中,一个标准化数据库系统构造就建立起来了。建立关系数据构造涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录构造;建立整个数据库的关系构造。1链接

17、关系确实定在进展了上述数据标准化重组后,已经可以确保每一个根本数据表(我们简称为表)是标准的,但是这些单独的表并不能完好地反映事物,通常需要通过指标体系整体指标数据才能完好全面地反映问题。也就是说在这些根本表的各宇段中,所存储的是同一事物不同侧面的属性。那么计算机系统如何能知道哪些表中的哪些记录应与其它表中的哪些记录相对应,它们表示的是同一个事物呢?这就需要在设计数据构造时将这种各表之间的数据记录关系确定下来。这种表与表之间的数据关系一般都是通过主或辅关键词之间的连接来实现的。因为在每个表中只有主关键词才能唯一地标识表中的这一个记录值(因为根据第三范式的要求,表中其它数据字段函数都依赖于主关键

18、词),所以将表通过关键词连接就可以唯一地标识出某一事物不同属性在不同表中的存放位置。2确定单一的父子关系构造所谓确定单一的父系关系构造就是要在所建立的各种表中消除多对多以下用:N来表示的现象,即设法使得所有表中记录之间的关系呈树状构造(只能由一个主干发出假设干条分支,而不能有假设干条主干交织发出假设干条分支状况)。所谓的“父系就是指表的上一级关系表。消除多对多关系可以借助于E-R图的方法来解决,也可以在系统分析时予以注意,防止这种情况的发生。消除这种:N情况的方法也很简单,只需在二表之间增加一个表,那么原来:N的关系就改成了:1,1:N的关系了。确定数据资源的平安保密属性:一般DBS都提供应我

19、们自己定义数据平安保密性的功能。系统所提供的平安保密功能一般有8个等级(0-7级),4种不同方式(只读、只写、删除、修改),而且允许用户利用这8个等级的4种方式对每一个表自由地进展定义。定义平安保密性的方法一般有如下几种:a原那么上所有文件都定义为4级,个别优先级特别高的办公室(终端或微机的入网账号)可定义高于4级的级别,反之那么定义为低于4的级别。b统计文件(表)和数据录入文件一般只对本工作站定义为只写方式,对其它工作站那么定义为只读方式。财务等保密文件一般只对中工作站(如财务科等)定义为可写、可改、可删除方式,对其它工作站那么根本表,而这个指标类下面的一个个详细指标就是这个根本表中的一个字

20、段。但假如直接按照这种方式建库显然还不能算最正确。对于指标体系中数据的构造在建库前还必须进展标准化的重新组织。a.数据组织的标准化形式在数据的标准化表达中,一般将一组互相关联的数据称为一个关系(relatin),而在这个关系下的每个数据指标项那么被称为数据元素(dataeleent),这种关系落实到详细数据库上就是根本表,而数据元素就是根本表中的一个字段(field)。标准化表达还规定在每一个根本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在标准化理论中表是二维的,它有如下四个性质:l在表中的任意一列上,数据项应属于同一个属性(如图中每一列都存放着不

21、同合同记录的同一属性数据)。l表中所有行都是不一样的,不允许有重复组项出现(如图中每一行都是一个不同的合同记录)。l在表中,行的顺序无关紧要(如图中每行存的都是合同记录,至于先放哪一个合同都没关系)。l在表中,列的顺序无关紧要,但不能重复(如图中合同号和合同名谁先谁后都没关系,但二者不可重复或同名)。在对表的形式进展了标准化定义后,数据构造还有五种标准化定义,定名为标准化形式,称为范式。在这五种范式中,一般只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容的,即满足第五范式的数据构造自动满足一、二、三、四范式,满足第四范式的数据构造自动满足第一、二、三范式,依此类推。第一范式(fir

22、stnralfr,简称1stNF)就是指在同一表中没有重复项出现,假如有那么应将重复项去掉。这个去掉重复项的过程就称之为标准化处理。在本文所讨论的开发方法里,1stNF实际上是没有什么意义的。因为我们按标准化建立的指标体系和表的过程都自动保证了所有表都满足1stNF。第二范式(sendnralfr,简称2ndNF)是指每个表必须有一个(而且仅一个)数据元素为主关键字(priarykey),其它数据元素与主关键字一一对应。例如,在图l9.7中假如我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知道了一个合同记录的合同号,就可以唯一地在同一行中找到该合

23、同的任何一项详细信息。通常我们称这种关系为函数依赖(funtinaldepEndene)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。第三范式(thirdnralfr,简称3rdNF)就是指表中的所有数据元素不但要可以唯一地被主关键字所标识,而且它们之间还必须互相独立,不存在其它的函数关系。也就是说对于一个满足了2ndNF的数据构造来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系标准根底SQL(StruturedQueryLanguage,

24、构造查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI美国国家标准学会声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比方在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:rale、Sybase、irsftSQLServer、Aess、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比方Selet、Insert、Update、Delete、reate和Drp常常被用于完成绝大多数数据库的操作。SSQLServer

25、就是用的Transat-SQL。SQL语言有着非常突出的优点,主要是:n非过程化语言n统一的语言n是所有关系数据库的公共语言非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据构造上工作,而不对单个记录进展操作,可操作记录集,所有SQL语句承受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索

26、引,在哪儿使用索引适宜,而用户那么从不需要知道表是否有索引、有什么类型的索引。统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。DataanipulatinLanguage,数据操作语言:用于检索或者修改数据;DDLDataDefinitinLanguage,数据定义语言:用于定义数据的构造,比方创立、修改或者删除数据库对象;DLDatantrlLanguage,数据控制语言:用于定义数据库用户的权限。DL组可以细分为以下的几个语句:SELET:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于

27、从数据库中修改现存的数据;DELETE:用于从数据库中删除数据。DDL语句可以用于创立创立和修改数据库构造的一种语句,包括reate、Alter和Drp语句。数据操作语言DL:包括数据查询与数据更新。数据查询主要是由Selet语句完成,这一点不再赘述。而数据更新所造成的风险大大超过数据查询。数据库管理系统必须在更改期内保护所存储的数据的一致性,确保有效的数据进入数据库,数据库必须保持一致性,DBS还必须协调多用户的并行更新,以确保用户和它们的更改不至于影响其它用户的作业。用于修改数据库内容的SQL语句主要有以下三个:(1)Insert,向一个表中参加新的数据行(2)Delete,从一个表中删除

28、数据行(3)Update,更改数据库中已经存在的数据Insert标准语法:INSERTINTtable_nae(l1,l2.)VALUES(value1,value2.)下例要将借书证号为000001作为一个新的借书情况参加借书情况表NER中InsertIntner(借书证号,图书编号,借书日期)values(000001,00000001,2002-9-12)Insert语句还可以将多行数据添加到目的表中去,在这种形式的Insert语句中,新行的数据值不是在语句正文中明确地指定的,而是语句中指定的一个数据库查询。添加的值来自数据库自身的行,在某些特定的状态下,这是非常有用的。多行Insert

29、语句为拷贝数据提供了一种紧凑而高效的方法,但我在自已做的图书管理系统中没有使用这种方法,我在系统中是使用循环按照上面的用法来完成多个记录的插入。Update语句用于更新单表中选定行的一列或多列的值。要更新的目的表在语句中定义,Set子句那么指定要更新哪些列并计算它们的值。Update语句总是包含here语句,而且Update语句比拟FRlist-f-tablesGRUPBYlun-list;这个GRUPBY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。在本人的系统中在显示数据时用到了此语句来对查询所得的内容排序然后再显示。u组合条件和布尔运算符以下的SQL

30、语句中就含有组合条件:SELETlun1,SU(lun2)FRlist-f-tablesHEREnditin1ANDnditin2;下面是一个例如部分:一部分是组件类,这些组件类通常以某种方式出如今组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象非可视组件除外;另一部分是功能类,这此功能类的对象通常出如今程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。在Delphi中,每一个类的祖先都是Tbjet类,整个类的层次构造就像一棵倒挂的树,在最顶层的树根即为Tbjet类。这样,按照面向对象编程的根本思想,就使得用户可用Tbjet类这个类型代替任何

31、其它类的数据类型。实际上在Delphi的类库中,Tbjet类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,假如不自行开发组件,就不必理解整个类的体系构造,只用到类层次树的叶结点就足够了。这一小节简单介绍一下Delphi6.0中VL可视化组件库组件的体系构造。但凡做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库应用程序必须和用户界面可以是图形界面,也可以是命令接口元素相结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因此用Delphi6.0开发数据库应用程序就隐含着界面开发。Delphi6中的VL组件可用图3-1来说明。组件在Delphi程序的开发中是

32、最显眼的角色。大家知道,在编写程序时一般都开场于在组件面板上选择组件并定义组件间的互相作用。但也有一些组件不在组件面板上,例如Tfr和Tappliatin典型的非可视组件。组件是Tpnents派生出来的子类,可以流的形式存放在DF文件中,具有事件和Publish属性。窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。在实际编程中,窗口组件类的对象都有句柄,可以承受输入焦点和包含其它组件。图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的,因此不能有窗口句柄,不能承受输入焦点和包含其它组件。从图8-43中可以看出,图形组件的基类是Tgraphintrl,在实际编

33、程中,它们必须寄生于它们的宿主窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。图形控件最典型的例子是Tlabel和TspeedButtn。由此可以看出图形组件的功能很弱,图形组件的用途何在呢?其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。在一个应用程序中,假如能在不影响其功能的前提下合理大量地使用图形组件,将会大减少程序对系统资源的消耗。非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可见的除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件

34、。最后要说明一下,常说的控件实际上是一种组件。也就是说组件这个概念要大于控件,控件在内涵上包含于组件中。控件由inds系列操作系统提出并使用,而组件是Brland和其它厂商在对inds控件做了必要的扩展之后提出来的概念,它们是在不同时期由不同的厂商提出的概念。3.2数据库组件介绍用Delphi6开发数据库应用,重点是和各种数据库组件打交道,能和数据库挂钩的组件对象有5种,它们是:Sessin数据库会话、Database数据库、Dataset数据集、DataSure数据源、Datantrl数据控制组件,也叫data-ntrls即数据感知组件。其中前面4种统称为数据访问DataAess组件。这些组

35、件的互相关系如图3-2所示。AD组件Delphi6.0包含了可以用来访问irsft公司的AtiveXDatabjetsAD格式数据库的组件。AD是irsft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完好解决方法。AD的对象模型是所有数据访问接口对象模型中最简单的一种。irsft公司用来访问AD数据的应用程序界面技术是LEDB。LEDB是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。LEDB是一个由pnentbjetdel接口组成的集合,用来隐藏创立数据访问效劳过程中的细节。LEDB提供了访问任何数据资源的方法,包括互

36、相关联的数据库和互相不关联的数据库、Eail和文件系统、文本和图形以及用户定义的数据对象。Delphi的AD组件无需依靠BDE而是使用AD技术,提供了可以通过数据控制组件访问数据的新方法。唯一的要求是在使用AD组件时必须运行AD/LEDB。AD组件的使用使得DELPHI在访问数据的类型和采用的技术方面都有了很大的打破。数据模块设计窗口数据模块设计窗口是用来设计和维护数据模块的。数据模块设计窗口中包含了所有以.DTI作为文件扩展名的DataDiagra文件的信息。DTI文件在编译时不起任何作用。3.3SQL语言在Delphi中的应用在Delphi中使用SQL语言非常方便,一般来说,都是通过Tqu

37、ery或TADquery组件来使用SQL语言的。可以在Tquery或TADquery组件的SQL属性中设置SQL语句。设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以翻开StringListEditr对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQLBuilder来自动生成SQL语句,这样可以防止手工编写SQL而可能造成的语法错误。静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:Selet*FrBkhere图书编

38、号=:bkde;其中的变量bkde便是一个参数变量,它由一个冒号引导,在程序运行过程中,必需要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。为参数赋值有三种方法:根据参数在SQL语句中出现的顺序,设置TADQuery组件的paraeters属性值为参数赋值。直接根据SQL语句中各参数的名字,调用ParaByNae方法来为各参数赋值。将TADQuery组件的DataSure属性设置为另一个数据源,这样将另一个数据源中与当前TADQuery组件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。利用这种方法也能实现所谓的连接查询,创立主要明细型数据库应

39、用。在使用动态SQL语句编程时,常常用到一个很重要的方法Prepare,调用Prepare方法之后,Delphi会将带参数的SQL语句传送给与其对应的数据库引擎,对动态SQL语句进展语法分析和优化。虽然在用动态SQL语句编程时,调用Prepare方法并不是必须的,但是调用Prepare方法后,会极大地进步动态SQL语句的执行性能,特别是当要反复屡次执行同一条动态SQL语句时,其优越性会更加明显。假如在应用程序中执行一条SQL语句之前并没有显式地调用Prepare方法,每次在执行SQL语句时,Delphi会隐含地调用Prepare方法以准备这个查询。TadQuery部件还有一个Prepare属性

40、,这是一个布尔型属性,当其属性值为True时,说明该查询已被准备好了(SQL语句已被传送到数据库引擎中),当我们使用参数编辑器ParaetersEditr来为动态SQL语句中的参数赋值时,当设置完相应的参数值并退出参数编辑器时,Delphi会隐含地调用Prepare方法以准备好查询。当SQL语句执行完之后,要想准备下一个查询,首先必须调用lse方法,然后才能调用Prepare方法准备下一个查询。一般来说,在一个应用程序中应该调用一次Prepare方法,常常在窗体的nreate事件处理过程中调用Prepare方法,然后用上述介绍的方法为参数赋值,最后调用pen方法或ExeSQL方法执行SQL语句

41、,以完成查询。当然在调用Prepare方法准备好一个查询时,会消耗一些数据库资源,因此每当一个查询执行完毕之后,要养成调用UnPrepare方法以撤消查询的好习惯。在运行程序过程中,通过程序改变TQuery或TADquery部件的SQL属性值时,Delphi会自动地调用lse方法和UnPrepare方法,以撤消查询。在程序运行过程中,要想设置Tquery或TADquery部件的SQL属性,必须首先调用lse方法,关闭TQuery或TADquery部件,然后再调用lear方法去除平安的,假如TQuery或TADquery部件已经被关闭了,调用lse方法时不会产生任何影响。在应用程序中为SQL属性

42、设置新的SQL命令语句时,必需要调用lear方法以去除SQL属性中现存的SQL命令语句,假如不调用lear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面,在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。在这里要特别注意的,一般情况下TQuery或TADquery部件的SQL属性只能包含一条完好的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库效劳器也支持在TQuery或TADquery部件的SQL属性中设置多条SQL语句,只要数据库效劳器允许这样,我们在编程时可以为SQL属性设置多条SQL语句。在为TQu

43、ery或TADquery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。在设计过程中,设置完TQuery或TADquery部件的SQL属性之后将其Ative属性的值置为True,这样便可以执行SQL属性中的SQL程序,假如应用中有与TQuery或TADquery部件相连的数据阅读部件(如TDDGridTDBEdit等)那么在这些数据阅读部件中会显示SQL程序的执行结果。在应用程序运行过程中,通过程序调用TQuery或TADquery组件的pen方法或ExeSQL方法可以执行其SQL属性中的SQL程序。pen方法和ExeSQL方法是不一样的。pe

44、n方法只能用来执行SQL语言的查询语句(Selet命令),并返回一个查询结果集,而ExeSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:Query1.pen(这样会返回一个查询结果集)假如调用pen方法,而没有查询结果时,会出错。此时应该调用ExeSQL方法来代替pen方法。如:Query1.ExeSQL(没有返回结果)当然在设计应用程序时,程序设计人员是无法确定TQuery或TADquery组件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用TryExept模块来设计程序。在Try部分调用pen方法,而在Exept部分的数据这

45、种数据就跟通过TTable部件获得的数据一样,用户可以通过数据阅读部件来编辑修改这些数据,并且当调用Pst方法或当焦点分开当前的数据阅读部件时,用户对数据的修改自动地被写回到数据库中。u非活动的数据(只读数据)用户通过数据阅读部件是不能修改其中的数据。在缺省情况下,通过TQuery部件获得的查询结果数据是只读数据,要想获得“活动的数据,在应用程序中必需要设置Tquery或TADquery组件的RequestLive属性值为True,然而并不是在任何情况下(通过设置RequestLive的属值True)都可以获得“活动的数据的,要想获得“活动的数据,除了将TQuery部件的RequestLive

46、属性设置为True外,相应的SQL命令还要满足以下条件。本地SQL语句查询情况下,要得到可更新的数据集,SQL语句的限制为:n查询只能涉及到一个单独的表nSQL语句中不能包含RDERBY命令nSQL语句中不能含聚集运算符SU或AVGn在Selet后的字段列表中不能有计算字段n在Selet语句HERE部分只能包含字段值与常量的比拟运算,这些比拟运算符是:Like,=,=。各比拟运算之间可以有并和交运算:AND和R当通过SQL语句查询数据库效劳器中的数据库表:n查询只能涉及到一个单独的表nSQL语句中不能包含RDERBY命令nSQL语句中不能含聚集运算符SU或AVG运算另外,假如是查询Sybase

47、数据库中的表,那么被查询的表中只能有一个索引。假如在应用程序中要求TQuery或TADquery组件返回一个“活动的查询结果数据集,但是SQL命令语句不满足上述约束条件时,对于本地数据库的SQL查询,BDE只能返回只读的数据集。对于数据库效劳器中的SQL查询,只能返回错误的代码。当Tquery或TADquery组件返回一个“活动的查询结果数据集时,它的andIfy属性的值会被设置成True。3.4SSQLServer简述SQLServer是一个后台数据库管理系统,它功能强大操作简便,日益为广阔数据库用户所喜欢。越来越多的开发工具提供了与SQLServer的接口。SQLServer是一个关系数据

48、库管理系统,它最初是由irsft、Sybase和Ashtn-Tate三家公司共同开发的。于1988年推出了第一个S/2版本,在indsNT推出后,irsft与Sybase在SQLServer的开发上就分道扬镳了,irsft将SQLServer移植到indsNT系统上,专注于开发推广SQLServer的indsNT版本。SQLServer2000是irsft公司推出的SQLServer数据库管理系统的最新版本,该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行irsftinds98的膝上型电脑到运行i

49、rsftinds2000的大型多处理器的效劳器等多种平台使用。SSQLServer不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQLServer数据库处理的根本构造,采取关系型数据库形式,尽管如此,相信大家都可以轻易的发现,在SQLServer的数据库处理方式,那么是使用面向对象的操作方式与精神,也就是说,SQLServer的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当面向对象的一个系统构造。SQLServer企业管理器是SQLServer的主要管理工具,它提供了一个遵从标准的用户界面,使用户得以:定义SQLServer实例组。将个别

50、效劳器注册到组中。为每个已注册的效劳器配置所有SQLServer选项。在每个已注册的效劳器中创立并管理所有SQLServer数据库、对象、登录、用户和权限。在每个已注册的效劳器上定义并执行所有SQLServer管理任务。通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和脚本。唤醒调用为SQLServer定义的各种向导。第三章图书管理系统设计分析4.1应用需求分析图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进展操作,

51、同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进展管理和维护,及系统状态的查看、维护并生成催还图书报表。图书借阅者可直接查看图书馆图书情况,假如图书借阅者根据本人借书证号和密码登录系统,还可以进展本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,假设查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员

52、登陆本模块进展更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者参加借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。图书馆管理人员功能的信息量大,数据平安性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以阅读、查询、添加、删除、修改、统计图书的根本信息;阅读、查询、统计、添加、删除和修改图书借阅者的根本信息,阅读、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者根本信息记录时,应实现对该图书借阅者借阅记录的级联删除。并且还应

53、具有生成催还图书报表,并打印输出的功能。在本系统中由于没有打印机设备供试验,所以预先把报表打印改成报表预览。设计不同用户的操作权限和登陆方法对所有用户开放的图书查询借阅者维护借阅者个人部分信息借阅者查看个人借阅情况信息维护借阅者个人密码根据借阅情况对数据库进展操作并生成报表根据还书情况对数据库进展操作并生成报表查询及统计各种信息维护图书信息维护工作人员和管理员信息维护借阅者信息处理信息的完好性对借阅过期的图书生成报表图4-2图书管理系统数据库应用需求的总结根据以上所做的需求分析,并略掉一些细节如不考虑用户的登录;对记录的维护,得出以下的三层数据流图。4.2系统功能模块划分系统功能框图如图4-1

54、0所示。1设计部分ER形式实体和属性的定义:图书图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,借阅者借书证号,姓名,性别,身份证,联络 ,密码身份身份编号,身份描绘,最大借阅数图书类别图书类别编号,类别描绘ER模型的“联络用于刻画实体之间的关联。一种完好的方式是对部分构造中任意两个实体类型,根据需求分析的结果,考察部分构造中任意两个实体类型之间是否存在联络。假设有联络,进一步确定是1:N,:N,还是1:1等。还要考察一个实体类型内部是否存在联络,两个实体类型之间是否存在联络,多个实体类型之间是否存在联络,等等。联络定义如图4-5所示。解释如下:u一个借阅者用户只能具有一种身份,

55、而一种身份可被多个借阅者所具有;u一本图书只能属于一种图书类别类别,而一种图书类别可以包含多本图书;u一个用户可以借阅多本不同的书,而一本书也可以被多个不同的用户所借阅。2设计全局ER形式所有部分ER形式都设计好了后,接下来就是把它们综合成单一的全局概念构造。全局概念构造不仅要支持所有部分ER形式,而且必须合理地表示一个完好、一致的数据库概念构造。1)确定公共实体类型为了给多个部分ER形式的合并提供开场合并的根底,首先要确定各部分构造中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有一样键的实体类型作为公共实体类型的另一

56、类候眩2)部分ER形式的合并合并的原那么是:首先进展两两合并;先和合并那些现实世界中有联络的部分构造;合并从公共实体类型开场,最后再参加独立的部分构造。3)消除冲突冲突分为三类:属性冲突、构造冲突、命名冲突。设计全局ER形式的目的不在于把假设干部分ER形式形式上合并为一个ER形式,而在于消除冲突,使之成为可以被所有用户共同理解和承受的同一的概念模型。3)全局ER形式的优化在得到全局ER形式后,为了进步数据库系统的效率,还应进一步根据处理需求对ER形式进展优化。一个好的全局ER形式,除能准确、全面地反映用户功能需求外,还应满足以下条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实

57、体类型间联络无冗余。综上所述,“图书管理系统的全局ER形式如图4-13所示。本人所使用的SSQLServer就是关系型的DBS,因此数据库的逻辑设计过程就是把ER图转化为关系形式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库标准化理论,使设计过程形式化地进展。设计结果是一组关系形式的定义。1导出初始关系形式bk图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量lass图书类别#,类别名user借书证号,姓名,性别,身份编号,身份证,联络 ,密码ID身份编号#,身份描绘,最大借阅数ner借书证号#,图书编号#,借书日期图4-14关系形式集2产生子形式子形式是用户所用到的那部分数据的描绘。除了指出用户用到的数据外,还应指出数据与概念形式中相应数据的联络,即指出概念形式与子形式之间的对应性。借书子形式借书证号#,姓名,图书编号,图书名称,借书日期图4-15部分子形式3根据设计中出现的问题本人在写系统时还参加创立七个根本数据库表如表4-14-7所示,然后根据全局ER图,建立各个表之间的联络,如图4-8所示。表4-1借阅者根本信息表的构造(User)表4-2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论