小议DELPHI图书管理信息制度
时间:2022-05-11 03:30:00
导语:小议DELPHI图书管理信息制度一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
摘要:这篇论文主要讲述关于图书管理信息系统的信息。在本论文中讲述的图书管理信息系统拥有一个交互式的界面、逻辑的数据库结构。许多涉及到图书、图书借阅者的信息的功能在本系统中都有实现。例如,你可以将新书的信息插入到数据库的图书基本情况表里;还可以对已经插入的关于图书的信息进行修改;更重要的是,图书借阅者可以从图书馆里借阅书籍。
关键词:图书、图书借阅者、管理系统、delphi7.0、SQLServer2000数据库
一、前言
随着人类社会的发展,人类对知识的需求也在不断增长。虽然人们可以从互联网上获得知识,但书本阅读起来更加方便,所以,在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就理所当然的在人们的生活中占据了一定的位置,如何科学合理的管理图书不仅关系到读者求知的方便程度,也关系到图书馆的发展,面对庞大的信息量,就需要有图书管理系统来提高图书管理工作的效率。传统手工的图书管理,就是对图书的编目、查询及读者信息的管理,核心是图书的信息管理,包括图书的采购、编目、下架、遗失等。图书的管理是一个工作量大而且较为繁杂的工作,执行效率低并且易于出错。通过开发这样的系统,我们可以做到图书规范管理和快速查询,从而减少了管理方面的工作量;可以实现图书管理的系统化和自动化,提高管理效率,降低管理成本。因此,开发一套完善的图书管理系统,是必不可少的了。
本系统的开发不仅让图书合理规范的管理,同时也方便借阅者快速的查询。对图书信息进行图书入库、借阅登记、借阅查询、过期提示等这些日常业务的管理。
(一)系统开发工具
本系统的开发工具是用面向对象的Delphi进行设计的。Delphi是著名的Borland公司开发的可视化软件开发环境,是面向对象的可视化软件开发平台,它提供了大量VCL(可视化组件库)组件,具有强大的数据库开发和网络编程能力,极大地提高了应用系统的开发速度,是目前最优秀的软件开发工具之一。Delphi语言具有简单、高效和功能强大等特点,具备丰富的环境、友好的界面、高速的编译器、强大的数据库支持,提供了方便、快捷的Windows应用程序开发工具。对于广大的程序开发人员而言,使用Delphi开发应用软件,无疑会大大提高编程效率。
Delphi最显著的特点就是高效性和稳定性,主要体现在以下4个方面:
(1)可视化的开发环境的性能。
(2)编译器的速度和已编译代码的效率。
(3)编程语言的功能及复杂性。
(4)丰富的VCL。
Delphi应用程序主要是围绕着窗体和单元两个部分进行,窗体(Form)是与用户直接可见的对象,Delphi的应用程序由多个窗体(Form)组成,与之相对应的是单元,每个单元对应一个Form程序区段,包含事件处理程序、过程和函数。
(二)数据库选择
图书管理信息系统是一个小型的数据库系统。我选择MicrosoftSQLServer2000数据库进行开发。MicrosoftSQLServer是一种关系型数据库管理系统,具有使用方便、学习简单、易学易用、安全性高等特点。关系模型是当前最受欢迎的数据存储和数据检索模型。所有的数据处理都涉及存储和检索数据的操作,MicrosoftSQLServer是作为一个组织内部的全部数据的中心存储器来设计的。组织中数据的关键特征强调了这一方法的重要性。MicrosoftSQLServer在其网络组件的顶部添加了服务特有的中介组件:开放式数据库连接(OpenDatabaseConnectivity,ODBC)能使不同客户机进行相互连接,而不要求变更服务器及其他现存客户应用程序。
二、数据库应用系统开发基础
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解并分析用户的需求,然后把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。
(一)用户数据
目前,大多数主流数据库管理系统把用户数据表示为关系。现在把关系看作数据表。表的列包含域或属性,表的行包含对应业务环境中实体的记录。并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。
为了对比结构差的关系和结构好的关系之间的差别,以本图书管理信息系统中的图书和图书借阅者关系为例来说明,假若设计关系R1(借书证号,姓名,性别,身份编号,身份证,联系电话,图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量);这个关系的问题出在它有关于两个不同主题的数据,就是图书借阅者和图书。用这种方式构成的关系在进行修改时会出现问题。因为一个图书借阅者可能借阅多本书,如果某个图书借阅者的某个字段(如联系电话)出现变更,它所借阅的图书记录(可能多个)也就必须变化,这是不好的。因此数据用两个关系表示更好。现在如果某图书借阅者改变了它的联系电话,只有关系(表)user的对应行需要改变。当然要想产生一个显示图书名称及其借阅者联系电话的报表,就需要将这两个表的行结合起来。结果表明将关系分别存储,在生成报表的时候将它们结合起来,比把它们存储在一个合成的表中更好。User和book表结构如下:
user(借书证号,姓名,性别,身份编号,身份证,联系电话,)
book(图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量)
(二)元数据
数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据。因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。
在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。
(三)索引
第三种类型的数据改进了数据库的性能和可访问性,尽管有时也采用其他类型的数据结构,如链表,但主要还是索引。索引可以用来排序和快速访问数据。下面以我所设计的图书管理信息系统中的book表为例来说明。
假定数据在磁盘上是按“图书编号”的递增顺序排列的,用户想打印一个按“图书名称”排序的图书数据报表。为此,所有的数据都需要从源表中提取出来并排序,除非表很小,否则这是一个很费时的过程。或者可以在“图书名称”字段上创建一个索引,该索引的条目按照“图书名称”排序,这样该索引的条目可以读出来,并用来按顺序访问book数据。
索引用于快速访问数据。例如一个用户只想访问book表中‘图书类别’值为“01”的那些图书,如果没有索引,则必须搜索整个源表;但有了索引之后,可以找到索引条目,并使用它来挑选所有合适的行。索引对排序和查找是有帮助的,但要付出代价。book表中的行每次改变时,索引也必须改变,这意味着索引并非随意的,应该在真正需要时保存。
(四)应用元数据
存储在数据库中的第四种数据是应用元数据,它用来存储用户窗体、报表、查询和其他形式的查询组件。并非所有的DBMS都支持应用组件,支持组件的DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。然而大多数现代的DBMS产品存储这种数据作为数据库的一部分。一般来说,数据库开发人员和用户都不直接访问应用元数据,想反,他们通过DBMS中的工具来处理这些数据。
我所选用的MSSQLServer2000中就支持窗体、存储过程等应用元数据。
三、图书系统设计分析
(一)需求分析
图书管理信息系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护并生成催还图书报表。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息,但是不能查询和维护其他借阅者的借书情况和个人信息,这不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或还书记录,并打印生成相应的报表给用户查看和确认。
图书馆管理人员的功能信息量大,数据安全性和保密性要求高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。并且还应具有生成催还图书报表,具有打印输出的功能。
(二)系统数据库的概念设计
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
1、设计局部ER模式
实体和属性的定义:
图书(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,)
借阅者(借书证号,姓名,性别,身份证,联系电话,密码)
身份(身份编号,身份描述,最大借阅数)
图书类别(图书类别编号,类别描述)
ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。分析如下:
1)一个借阅者(用户)只能具有一种身份,而一种身份可被多个借阅者所具有;
2)一本图书只能属于一种图书类别(类别),而一种图书类别可以包含多本图书;
3)一个用户可以借阅多本不同的书,而一本书也可以被多个不同的用户所借阅。
2、设计全局ER模式
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1)确定公共实体类型
为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
2)局部ER模式的合并
合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
3)消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突使之成为能够被所有用户共同理解和接受的同一概念模型。
3、全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
(三)系统数据库的逻辑设计
由于概念设计的结果是ER图,DBMS一般采用关系型(MSSQLServer就是关系型的DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。
1、导出初始关系模式
book(图书编号#,图书名称,图书类别#,作者,出版社,出版日期,备注,价格,数量)class(图书类别#,类别名)user(借书证号#,姓名,性别,身份编号#,身份证,联系电话,密码)ID(身份编号#,身份描述,最大借阅数)Owner(借书证号#,图书编号#,借书日期)
2、产生子模式
子模式是用户所用到的那部分数据的描述。除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。
借书子模式(借书证号#,姓名,图书编号#,图书名称,借书日期)
3、特别的两个关系模式:
ownertemp:用于工作人员在处理借书、还书工作时临时存储借书、还书信息以便打印报表时使用。
keyer:用于存储工作人员和图书馆管理员的用户名和密码及权限,以便工作人员或图书馆管理员进入相应的功能模块时进行验证用户的身份。
(四)系统数据库的物理实现
我选用MicrosoftSQLServer2000数据库来进行数据库的物理实现。
四、图书系统应用程序设计
程序的结构设计如图所示,该程序由11个窗体组成,它们是数据模块窗体,用户登录窗口的窗体,图书馆管理系统界面窗体,修改图书记录的窗体,修改供阅者记录的窗体,修改密码设置的窗体,生成预约图书报表的窗体,生成催还图书报表的窗体,图书馆服务系统界面窗体,查询、借阅、预约图书的窗体以及查询个人借阅信息和归还已借阅图书的窗体。
(一)系统窗体模块
(二)数据模块窗体的设置
在编写数据库应用程序时,经常要遇到这样的情况,即好多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工作,而且要保证这些数据源的确是相同的也需花一番功夫。那么能不能将这些数据源集中管理,最好是做成一个统一的模块,需要时就将该模块引入而不必直接操作数据源本身呢?数据模块(DataModule)是解决这个问题最好的答案。简单说来,数据模块是用来集中管理数据源的一个窗体,该窗体可被需要的地方随时引入。
但在开发这个系统时,在开始使用数据模块过程中却碰到了一些问题。并且考虑这个系统使用到的TADOQuery控件比较多,如果使用数据控件可能会带来管理上的麻烦,如弄混各个数据控件的作用。还考虑到使用动态生成ADOQuery可能会更节省资源。所以在本系统中,开始做的第一个模块“借阅者个人模块”中还使用了数据模块。但在后面做的两个模块中大多都是用动态生成ADOQuery来实现的。并且由于SQL语句是动态加入的所以datamodule中的控件也不会多。
(三)启动画面的实现
启动画面是为了给用户一个良好的印像,加深软件的亲和力,在Form1窗体中加入了Image和Time组件。
(四)用户登录窗体的实现
本窗体是为三种不同的用户(图书借阅者、图书馆工作人员和图书馆管理人员)提供选择以进入不同的模块,满足不同用户的需求。
(五)用户密码论证窗体的实现
本窗体是为了让工作人员或图书馆管理员按照用户名和密码进行登录,并且跟据用户名检查Keyer表中的“权限”字段,以分辩进入图书馆管理人员模块还是进入工作人员模块。
以下为不同用户功能模块的实现。
(六)供阅者服务模块的实现
借阅者服务窗体的功能主要是图书的查询,个人借阅情况查看及个人部分信息的修改。
1、图书查询功能的实现
在系统中任何人都有权限使用查询功能,不做任何限制。由于实现的查询功能有多种,如按图书编号、图书名称等字段进行完全体配查找和部分体配的模糊查找,还有按多个条件进行逻辑与或是逻辑或的多条件查找。
2、供阅者登录功能的实现
这个功能的实现与工作人员和管理人员登录功能实现的方法大致一样,是从User表中查到到借阅证号与密码,看与用户输入的是否一致。如果一致用户就可查看自已的借阅情况并维护自己的部分信息。
3、借阅者借阅情况功能的实现
当借阅者正确登录到系统后,用户能查看到自已的借阅情况。在此系统中,信息的显示一般用ListView来实现,只在较少的情况下用到了DBgrid,因为ListView更好实现,并能使信息数据对用户的完全分离。
借阅者对借阅情况的查询有多种方式,但主要是根椐借阅天数来查询。
4、供阅者个人资料维护功能的实现
此功能实现当前借阅者部份资料的修改,但借书证号和身份类别这样的信息不允许修改,这是图书馆管理员模块的功能。在此界面中点击修改按钮将出现“修改”窗体(Form),点击修改密码按钮将出现groupbox8进行密码修改。
(七)工作人员――图书借阅/归还模块的实现
1、工作人员进行图书借阅功能的实现
在此功能中,工作人员输入借阅者的借阅证号和所要借阅图书的图书编号,然后点击借阅按钮就可进行图书借阅。考虑到实际中可能会出现只知图书名而不知图书编号的情况,在此界面下方加入了一个搜索转换功能,可以把图书名称转换成图书编号,再进行图书借阅。
在借阅完成后会生借阅报表以便借阅者检查和确认,实现过程比较简单。
2、工作人员图书归还功能的实现
在此功能中,工作人员根据借阅者的借书证号和归还的图书编号进行图书的归还工作。并且根据现实中可能会出现的只知图书名不知图书编号的归还情况,所以加入了按书籍名称进行归还的功能。这个功能是图书借阅功能中把图书名称搜索转换成图书编号的一种改进方法。归还完成后,同样会打印出归还报表以便用户检查和确认。
(八)图书馆管理员模块和管理员图书管理功能的实现
在这个功能模块中可以在(图书编号)中输入图书编号,点查找按钮后就会在各个相应的组件中显示出信息,或按图书名称模糊查找到所要的记录,在各个相应的组件中显示第一条记录的信息,也可在下端的ListView组件中点击某一条记录,在各个相应的组件中也会显示所选记录的信息。在入库功能中只要不是相同的图书编号并且带*号提示的字段不为空就可插入新的图书记录。删除则删除那些Book表中的图书记录,如果借出还可依用户要求连带删除owner表中的记录。因为图书修改与图书入库的功能与工作人员记录修改和工作人员记录添加的实现过程一样。
1、图书馆管理员管理功能的实现
在此功能中可以加入工作人员或是管理员,或是修改他们的密码、权限。
如果选中ListView中的记录,则在右边相应的组件中显示出信息,并且管理员还可对这些记录进行修改或加入新的记录。也可以点删除按钮删除选中的一条或多条记录。删除功能与图书记录的删除一般。
2、图书馆管理员修改图书类别及统计功能的实现
在此窗体中能对图书的类别进行删除,添加和修改,此模块功能的实现过程与图书记录的删除,添加和修改一样的,但是这个窗体还能跟据图书类别进行统计,还可根据Book表和owner表统计出图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目。
3、图书馆管理员借阅者管理功能的实现
查询借阅者可根据借阅者的借书证号或姓名或身份编号查找到借阅者的信息,也可以实行模糊查找,这个功能的实现与前面图书查找的实现过程一样。
4、图书馆维护借阅者管理功能的实现
此功能能对借阅者信息进行查看添加、删除、修改。
5、图书馆身份维护功能的实现
这一部分是对借阅者身份进行管理,能对身份进行添加、删除、修改。并且同样的在listview中选中某条或多条记录时会在相应的右边的组件中显示出信息。
6、图书馆借阅者统计功能的实现
此功能按借阅者身份进行统计,得出具有某种身份的借阅者总数。
7、图书馆统计借阅过期记录功能的实现
此报表能显示按借书证号升序排列的借阅信息超过限定时限的信息。
五、结论
通过本次毕业设计我学到了不少新的东西。在开发的过程中,很多看起来简单的问题实际动手起来却不是那么回事,往往有这样或那样的错误,需要我一步一步地去解决,我查阅了大量的资料,向老师请教,学到了不少课本上学不到的知识,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。
最后,向在此次毕业设计写作过程中给与我帮助的指导教师表示感谢,也感谢她给予我的这次机会,谢谢!
参考文献:
[1]李炎清编著,毕业论文写作与范例[M],厦门大学出版社,2007
[2]韩强编著,SQLSERVER2000程序员手册,机械工业出版社,2000
[3]蔡宏编著,开发技术原理与实践教程,电子工业出版社,2007
[4]萨师煊、王珊编著,数据库系统概论,高等教育出版社,2000
[5]杨长春主编,DELPHI程序设计教程,清华大学出版社,2008
[6]李之明,高玉编著,Delphi7.0组件经典解析,中国铁道出版社,2003
- 上一篇:深究公益广告的创作
- 下一篇:探究玉米优质栽培技术