1、图书管理系统设计与实现原文图书管理系统设计与实现摘要:图书管理系统是一个学校不可缺少的部分,它的功能对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。本文在详细调查了图书管理业务流程的基础上,对学校图书管理系统的功能结构和数据库进行了设计,并采用Visual Basic和Access技术实现了系统主要功能。关键词:图书管理,Visual Basic,Access,ADO1. 项目开发的背景、意义及来源1.1系统开发的背景和意义随着信息技术的发展,在图书馆的管理中运用传统的手工操作方式在现在这个数字化的时代已显得极不适
2、应,因此,工作人员和读者对于运用计算机来辅助协调和管理自身工作的需求正在逐步提高。随着我国现代化技术的不断提高和普及,学校也在不断的提高它的各个部门的管理质量,而图书馆管理就是对图书的编目、查询及读者信息的管理,重要的是图书的信息管理,包括图书的采购、编目、下架、遗失等。因此,图书的管理是一个工作量比较大而且较为繁杂的工作,至今还有很多学校仍然采用人工管理的方式,由两三个工作人员管理图书档案,对于借书还书都是用手工来进行操作,而一旦借阅者较多时就容易因忙碌导致错误的产生,这样的情况在今天这样一个科技高速发展、工作节奏加快的年代真是感觉太原始了。自从管理信息系统这一新兴的管理方法引入我国,在我国
3、企业管理中已有20多年的时间。现在,管理信息系统已经广泛应用于各行各业。因此在这样的前提下,我选择了“图书馆管理信息系统”这样一个较为普遍,同时又较为典型的课题。在当今这样一个科技高速发展的社会里,仅有理论知识是显然不行的,所以,我希望通过开发这个系统,能更好地把理论与实际结合起来,充分将自己所学的专业知识应用于实践之中,并在实践中不断充实自己,提高自己的专业技能水平,以获取更多的教益.1.2系统来源本课题由学院和辅导老师提出,基于Delphi 7.0及SQL Server 2000数据库平台开发图书馆管理信息系统,用于解决图书在馆内的信息变更、查询,以及读者借阅图书等问题。2. 系统研究的内
4、容及须解决的问题2.1国内外发展现状目前,国际上大多数发达国家的图书馆基本上实现了电脑管理,尤其是那些较大型的图书馆还采用了大型数据库开发的软件,部分大型图书馆也使用Foxpro、SQL Server等。而基于Access数据库的多数是中小型图书馆。但在大多数不发达国家,基于SQL Server数据库的图书馆管理信息系统应用得很广泛。而在中国,许多中小型图书馆用的还是手工图书管理,大多数图书馆对计算机管理信息还没有一定的认识,而SQL Server数据库具有使用方便、学习简单、易学易用的特点,所以基于SQL Server数据库在非发达国家有着很广阔的发展前景。2.2课题研究的内容课题研究的内容
5、是关于图书馆管理信息系统的流通部子系统,是图书馆运用计算机管理和实际运用的具体体现,可以让大量的图书信息得到合理的安排。该系统使用的是Delphi 7.0,以SQL Server 2000数据库平台进行开发。2.3需要解决的关键问题用户需求分析系统整体规划方案及设定功能模块的划分及设定利用SQL select 实现数据的连接实现最终系统代码的设计3. 图书管理系统解决方案3.1方案内容我们可以用两层体系结构作为图书馆管理信息系统软件解决方案的核心,它的基本思想是将读者操作的界面同工作人员的操作界面分离,把信息系统按功能划分为管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上
6、。之后从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。系统划分了子系统后,下一步的工作是继续划分子系统的小模块。先考虑在进入子系统时应该做什么,进入系统之后又应该做什么,提供哪些服务等。例如,对于图书信息服务子系统,在工作人员进入时首先得调用相关数据库表,找出该工作人员的基本信息;进入系统后,子系统得提供图书查询,图书借阅和还书的功能。3.2方案论证3.2.1方案选择两层客户机/服务器技术在结构、开发环境、应用平台的开发方式上已经非常成熟。请求另一计算机为之服务的计算机称为客户机(Client).而处理数据库的计算机称为服务器(Ser
7、ver)。客户机/服务器是将处理工作分散到工作站和服务器上去处理,服务器不仅负责存取数据,还要对数据作一定的处理工作,这样在数据发送给工作站之前即取得查询结果集,从而在大部分情况下可大大减少网络传输的开销,因此,也减轻了工作处理负担,用户只需关心界面的处理工作即可。客户机/服务器系统的成功与否在很大程度上依赖于服务器。用户越多,服务器的处理负担越重,相应服务器硬件性能也要跟得上,否则就会导致影响时间比本地型数据库还要差的结果。客户机运行数据请求程序,并将这些请求传送到服务器。由客户机执行的计算称为前端处理。前端处理具有所有与提供、操作和显示数据相关的功能。C/S1数据库应用程序中客户端的主要功
8、能: 从用户接收数据 处理应用逻辑 生成数据库请求 向服务器发送数据库请求 从服务器接收结果并显示结果在服务器上执行的计算称为后端处理。后端处理设备是一台管理数据资源并执行数据库引擎功能(如存储、操作和保护数据)的计算机。C/S数据库应用程序中服务器端的主要功能: 从客户机接收数据库请求 处理数据库请求 传送结果给客户机 执行完整性检查 提供并行访问控制 事务处理失败后,执行事务恢复 优化查询和更新处理3.2.2方案技术实现在设计图书馆管理信息系统时,我们采用了传统的基于两层的C/S结构来构建系统。根据需求的分析结果,在此C/S 结构中,客户端有两种的操作用户:工作人员和读者。Delphi 客
9、户机/服务器结构原理:这里前端应用程序发送命令给基于服务器数据库引擎,再由后者负责从物理磁盘上读取数据并加以处理,最后返回给前端应用程序。服务器负责数据库处理工作,而工作站负责用户界面处理工作:读者查询信息及工作人员对系统的操作和维护。Delphi客户机/服务器的前端应用程序实际上不直接与数据库引擎打交道。每个客户服务器提供一个数据库通信接口,该数据库通信接口运行于前端。这些接口也称为数据库通信API等。数据库通信接口的工作流程如下: 图1 工作流程图Delphi 中的BDE提供了丰富和强壮的特性支持客户机/服务器应用的开发。它提供了支持多种数据库如:Oracle,SQL Server 以及任
10、何ODBC数据源的统一和一致的应用程序编程接口。开发者可以不用修改数据库应用程序就能直接访问不同的数据库站点和数据格式。4. 系统总体设计4.1系统总体设计对于图书馆主要负责提供的功能是指从图书的购入开始直到该图书过期下架的整个流通过程,这其中包括图书入库、借出、归还以及对参与此流通过程的读者的信息管理 。(1)新图书信息入库:建立图书信息库,以便读者进行查询和借阅。(2)修改图书信息:在建立信息库时可能因操作错误或其它情况而造成数据库里图书信息的错误,需要修改这些错误。(3)整理图书库:图书因使用过久或信息过时需做下架处理,或者在读者借阅书籍时发生遗失的情况下需做遗失处理,这些都需要修改数据
11、库关于书籍的信息。(4)读者信息管理:读者一般都是在校的学生和教师。教师的信息一般在建立档案后一般不需要修改(或修改量较小),而对于学生则会有新生入学和老生毕业等情况出现,这些都需要修改数据库关于读者的信息。(5)借书:图书馆主要的功能就是提供书籍供读者借阅,在借阅图书时应按图书馆的规则进行借阅,例如不超过5本,如果已有超时借阅的图书,则在归还前不允许再借阅等等。(6)还书:对于图书遗失或超期归还的情况应根据图书馆的规则进行处罚。(7)规则管理:对于读者借阅书籍的权限(可借阅书籍数目,每人每本书可持有天数等)应该能按其类型加以分类,若有图书遗失或超期未还的情况发生,图书馆都应该规定处罚的条例。
12、另外对于操作此系统的前端工作人员的权限也应该有一定限制。这些都应该只能由系统管理员来进行操作和修改。(8)信息查询:一般读者在借阅书籍前都需查询图书馆关于所借书籍的大概信息:该图书是否在馆是否已借出在馆中的书架号;除查询书籍外读者还可查询关于自身的信息:是否有超期未还的图书,还可借阅书籍数目等。4.2系统功能结构图图书管理系统主要包括图书信息服务子系统、图书管理和维护子系统、信息查询子系统等三个模块,其功能结构体如图2所示。图2系统功能结构图4.3数据库设计4.3.1数据库的选择图书馆管理信息系统是一个小型的数据库系统。在这里我们选择SQL Server 数据库进行开发。Microsoft S
13、QL Server 是一种关系型数据库管理系统。关系模型是当前最受欢迎的数据存储和数据检索模型。所有的数据处理都涉及存储和检索数据的操作,Microsoft SQL Server是作为一个组织内部的全部数据的中心存储器来设计的。组织中数据的关键特征强调了这一方法的重要性。在客户机/服务器框架内,服务器数据库也要求与服务器的通信组件集成,以便和客户系统连接。Microsoft SQL Server的客户机/服务器使用Windows NT的内置网络组件。Microsoft SQL Server还在其网络组件的顶部添加了服务特有的中介组件:开放式数据库连接(Open Database Connect
14、ivity,ODBC)能使不同客户机进行相互连接,而不要求变更服务器及其他现存客户应用程序。4.3.2数据库设计(1)书籍表结构设计(Book)书籍表主要用于存储关于书籍的信息,主键BookID,外键TypeID引用表BookType,其表结构如表1所示。表1 书籍表结构编号字段名称字段类型字段说明1BookID文本(15)图书编号2BookName文本(50)书名3BookWriter文本(50)作者4BookPublic文本(50)出版社5BookBorrowed是/否是否借出6BookPosition文本(30)读书位置7TypeID文本(6)图书类别8Publicdate日期/时间出版
15、日期9BookPrice货币价格10BookIntime日期/时间入库日期11Note备注备注(2)读者表结构(Reader)读者表主要存储关于读者的信息,主键ReaderID,外键:DepartmentID引用表Department,JobID引用表Job,ClassID引用表Class,其表结构如表2所示。表2 读者表结构编号字段名称字段类型字段说明1ReaderID文本(15)读者编号2ReaderName 文本(20)姓名3ReaderSex 文本(2)性别4DepartmentID文本(5)部门编号5JobID文本(5)职位编号6ClassID文本(10)班级编号(3)读者类别表结构
16、(Class)读者类别表主要存储关于读者等级的信息,主键ClassID,其表结构如表3所示。表3 读者类别表结构编号字段名称字段类型字段说明1ClassID文本(2)读者类别编号2ClassName 文本(20)类别名称3BorrowSum数字(整型)可借书量4Deadline数字(整型)可借天书(4)读者借阅表结构(BorrowRecorder)读者借阅表主要存储关于书籍借阅的信息,主键BookID-ReaderID,外键:BookID引用表Book, ReaderID引用表Reader,其表结构如表4所示。表4 读者借阅表结构编号字段名称字段类型字段说明1BookID文本(15)图书编号2
17、ReaderID文本(15)书名3BookDate文本(50)作者4Deadline文本(50)截至时间5BookReturn是/否是否归还6PastTime数字(整型)超期7Penalty货币罚款8Note备注备注4.3.3数据库关系图图书管理系统各表之间的关系如图3所示。图3 数据库关系图5. 图书管理系统的实现5.1系统结构我们用两层体系结构作为图书馆管理信息系统软件解决方案的核心,把信息系统按功能划分为管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上,并将系统的操作人员划分为三类:读者,工作人员,系统管理员。图书管理系统的操作流程如图4所示。图4 操作界面示意图5
18、.2登录系统界面的设计(1)从列表框里选择用户,此列表框内的用户直接与数据库里工作人员的表相关联。(2)输入密码。判断该密码与工作人员表中定义的密码是否相符。(3)如果不正确,提示输入正确的信息。(4)如果正确,用户登录,并根据工作人员表中的用户权限设定其可操作界面。(5)对于用户的权限规定:权限为1的用户(系统管理员)拥有全部的权限。权限为2的用户:除不能修改图书馆的规则管理以外,拥有其他的全部管理权限 ,相当于底层的工作人员:系统初始化、新书的入库、图书整理、修改图书信息、规则维护、用户信息管理、查询图书借阅、图书借出、图书归还。权限为3的用户为前台的工作人员;他只能负责前台的工作:图书借
19、出、图书归还。系统登录界面如图5所示。 图5 系统的登录窗体5.3信息服务子系统的设计5.3.1图书借阅子模块设计对于读者借书是应考虑的情况有:(1)该图书是否在馆;(2)该读者是否有借阅此图书的权限;(3)该读者所借图书数目是否已满其可借图书数目或该读者是否有超期未还的图书。图书借阅子模块的界面如图6所示。图6 图书借阅子模块界面5.3.2还书子模块设计对于读者归还图书时应考虑的情况主要是该图书是否超期,若有则应根据规则予以处罚。还书子模块的界面如图7所示。图7还书子模块界面6. 开发过程遇到的问题及解决方法(1)关于字段为datetime型时产生的问题在修改图书信息时:其中关于书籍的入库时
20、间在数据库里定义为datetime型。当对书籍的信息进行修改后,若图书的入库时间为空时,则在插入数据时将产生错误。解决方法:当此字段为空时,将该书的入库时间默认为当前时间。(2) 对于有外键约束的表,在界面端用SQL语句向表中插入记录时,该外键属性值必不能为空,且必须将插入记录的所有属性都在语句中列出。如在图书遗失情况下,首先应向LostBook表中添加该图书的记录,但此处因有外键约束:BookID,ReaderID,则不能用语句:insert into LostBook values(:sno,:sreaderid,:sname,:swriter,:spublic,:sprice,:slos
21、tdate,:srepay)。(3)图书遗失的表单中:首先需根据其读者编号查询该读者和书籍的信息。因此表单中的Query的SQL查询语句是预先已经定义好的,只是在运行时对其参数进行一次赋值(读者编号)操作。但在几次的操作之后发现:当打开该表单后只能查询一次读者的信息,即使对其参数赋不同的值,但显示的结果都是第一次所赋读者编号的所有信息。解决方法:在表单里对Query的SQL语句先清空,然后重新写SQL语句。(4)关于图书整理表单的统计页的问题在此我定义了统计所有未按时归还的图书总数,其代码是:qrydel.SQL.Add(select count(BookID) from BorrowReco
22、rder where PastTime=:stime);qrydel.ParamByName(stime).AsString :=是;但此处的PastTime :=是存在某些疑惑,因为在此系统里对于图书借阅表中是否超期的字段都是在还书时根据借书时间和可借期限进行统计然后再赋值的,所以若某些图书虽未归还但根据其借书期限已经超期了,但因该图书尚未归还则在图书借阅表中该超期字段并不是是。这种情况下的统计出来的结果则会发生错误!解决方法:在数据库段建立过程,只要图书已经超期则修改图书借阅表中是否超期字段7. 心得体会在Delphi 中出现的错误大体有以下几种:(1)编译错误:这种错误出现一般都是代码的
23、语法问题。因为编译而导致Delphi 停运行;(2)运行错误:这个错误是发生在你准备运行Delphi 时的,例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围;(3)逻辑错误:逻辑错误是最难发现的,这种错误经常是一种结构错误。这就需要我们彻头彻尾地检查我们的代码;(4)如何处理错误:发生错误后,我一般都是设置断点,对语句进行一条一条的调试。8. 致谢经过一段时间的开发设计和调试,我基本实现了在系统设计时所设计的所有功能,设计出了一个功能比较完善的图书馆管理信息系统。在开发的过程中,我查阅了大量的资料,与同学特别是本小组的成员进行交流,向老师请教,学到了不少课本上学不到的知识。通过这次
24、开发,我充分感受到了开发的艰辛,很多看起来简单的问题实际动手起来却不是那么回事,往往有这样或那样的错误,需要我一步一步地去解决,虽然在出现问题是感觉很头痛,特别是查找不出问题的原因时,然而更多的是实现功能后所享受到的喜悦。最后,向在此次设计过程中给与我帮助的同学表示感谢,同时更加感谢指导老师给予的这次机会,谢谢!参考文献1 梅绍租. 电子商务基础M. 第2版.北京:清华大学出版社,2005:120-125.2 林红,陈宇岳,任煜, 等. 经等离子体处理的蚕丝纤维结构与性能J. 纺织学报, 2004, 25(3): 9-11.3 周仪. 电子商务法律及案例M. 中国国际广播出版社.4 杨恩科.
25、棉织物酶精练工艺探讨EB/OL. 2003-10-04.5 宋玲. 电子商务21世纪的机遇与挑战M. 电子工业出版社.Study on Application Fields of Geotextile TubeAbstract: Geotextile tube has much recordation in foreign application. By introduction on working principle of geotextile tube technology, the paper deals with application of the technology in environment protection, agriculture, dike engineer. The paper thinks the technology has very good economic value and development value.Keywords: geotextile tube, application fields, environment protection, agriculture, dike engineer附录(1)*源代码(2)*源代码
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1