基于BS模式的图书借阅管理系统的设计和实现毕业设计论文.doc
清华大学毕业设计(论文)任务书课题名称基于B/S模式的图书借阅管理系统的设计和实现学 院 专业班级姓 名学 号毕业设计(论文)的主要内容:一、进行调研,了解、分析用户对“图书管理系统”的设计要求。二、熟练掌握一种程序设计语言,掌握其数据库开发、访问技术。三、根据课题要求,软件完成如下功能:1,对图书基本信息的增删改查等操作的实现;2,对读者借书证基本信息的管理;3,读者借阅图书信息的管理,包括图书的借出和归还,包括逾期归还图书,丢失图书等特殊情况的处理,还有根据读者的不同身份设置的借阅图书数量的限制等管理.四、要求软件设计界面友好、使用方便,程序执行安全、可靠。五、完成与设计内容有关的外文资料翻译,译文约5000字。六、撰写毕业论文并提交设计软件及清单一份。起止时间:2009年2月16日至2009年6月10日共16.5周指 导 教 师签 字系 主 任签 字院 长签 字毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 摘要 随着Internet技术的发展,互联网在中国逐步普及,人们对网络的需求也日益增长,利用计算机实现事务的管理势在必行。本系统从初步调查开始,详细介绍了需求分析、流程和数据分析,并进行了系统总体结构设计和数据库设计。 系统采用Visual Studio 2005 sp1编写C#代码,Sqlite 3建立数据库,从界面简洁、实用的要求出发,完成了图书管理工作的主要部分,包括图书和用户的信息浏览,添加,修改,删除,查询,图书的委托和预约,图书馆信息实时发布,超期统计与罚款处理,图书丢失损坏等特殊情况处理,用户自助登录系统查询与管理借阅的图书信息。系统采用正则表达式约束与检验用户的输入信息,是系统具有一定的容错能力;采用FCKeditor编辑器有效的在线实时高效编辑文章;SQLite不仅是一个轻量级的数据库,而且具有很高的效率,是中小型系统的首选。关键词:ASP.NET 2.0;Sqlite3;图书管理系统;图书借阅;Abstract Along with the Internet technology's development, Internet popularizes step-by-step in China, the people also gradually grow to the network demand, realizes business's management using the computer to be imperative. This system starts from the preliminary examination, introduced in detail the demand analysis, the flow and the data analysis, and have carried on the system gross structure design and the database design. The system uses Visual Studio 2005 sp1 to compile the C# code, the Sqlite 3 establishment databases, from the contact surface succinct, the practical request embarked, has completed the books supervisory work main part, including the books and user's information browsing, the increase, the revision, deleted, the inquiry, the books request and the appointment, the library information real-time issue, went over the time limit the statistics and fine processing, the books loss damage and so on peculiar circumstance processing, the user self-service registers the system inquiry and the management borrowing books information. the system uses the regular expression restraint and the examination user's infed information, is the system has certain fault-tolerant ability; Uses the FCKeditor editor effective online real-time highly effective edition article; SQLite is not only a lightweight database, but also has the very high efficiency, is the middle and small scale system's first choice.Key words:ASP.NET;Sqlite3,BookManageSystem;Book borrow;目录1 系统概述51.1 系统开发背景和意义51.2 开发环境52 系统需求分析62.1 任务概述62.2 数据描述(数据流图+数据字典)62.3 功能需求12.4 性能需求23 系统总体设计33.1 业务流程33.2 系统功能模块图33.3 系统流程图54 详细设计74.1 程序流程图74.2 程序输入输出描述114.2.1 系统管理模块114.2.2 读者管理模块114.2.3 图书管理模块114.2.4 借阅管理模块114.2.5 归还管理模块114.2.6 管理措施设置模块114.3 数据库的设计124.3.1 数据库的概念结构设计和ER图124.3.2 数据库的逻辑设计154.3.3 数据库的物理设计155 编码实现225.1 图书借阅模块225.2 图书续借模块255.3 图书归还模块296 测试分析报告336.1 什么是软件测试336.2软件测试的目的336.3 测试计划和要点336.3.1 读者以及读者管理模块测试要点336.3.2 图书借阅模块测试要点336.3.3 图书续借模块测试要点336.3.4 图书归还模块测试要点336.3.5 系统设置模块测试要点336.4 部分测试图346.5 测试结论40总结41参考文献42附录:部分程序代码431 系统概述1.1 系统开发背景和意义图书管理是高校内每一个系部或院部都必须切实面对的工作,但一直以来人们使用传统的人工方式管理图书资料。这种方式存在着许多缺点,如效率低、保密性差且较为繁琐。另外,随着图书资料数量的增加,其工作量也将大大增加,这必将增加图书资料管理者的工作量和劳动强度,这将给图书资料信息的查找、更新和维护都带来了很多困难。经过详细的调查,目前我国各类高等学校中有相当一部分单位图书资料管理还停留在人工管理的基础上。这样的管理机制已经不能适应时代的发展,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,这种传统的手工管理方法必然被以计算机为基础的信息管理方法所取代。图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统,将是非常必要的,也是十分及时的。 1.2 开发环境开发环境的选择会影响到数据库的设计,所以在这里给出图书管理系统开发与运行环境的选择如下:开发环境:Windows Server 2008 R2 Enterprise开发工具:Visual Studio 2005 + SharpPlus SQLite Developer+SqliteSpy数据库版本: Sqlite3数据库引擎: SQLite-1.0.60.0 2 系统需求分析 2.1 任务概述经过对我校详细调查,并多次与负责图书管理的老师进行研讨后,加深了对现行图书管理业务的深刻了解,与此同时,将整个图书管理的业务流程抽象描述如下:1.新的图书购进后,分门别类地进行归并并汇总,加以编号。2.新书编号后,上到书架以备读者借阅。3.如某读者需要借阅图书,则在其本人的借阅登记表上进行登记,记录相关借阅信息与借阅日期。4.读者借阅图书后,应及时归还图书,并在本人的借阅登记表上注明还书日期和时间。根据以上调查分析,可以给出其现行业务流程图如图2.1所示。图2.1 现行图书管理业务流程图2.2 数据描述(数据流图+数据字典)过详细的调查,我们已经清楚了解了现行的业务流程,接下来给出系统的逻辑模型。构造系统逻辑模型的工具是数据流图和数据字典。根据现行图书管理的业务流程,首先把数据流图中的源点和终点都选定为读者,因此可以得到图书管理系统的基本系统模型,如图2.2所示。图2.2 图书管理系统的基本系统模型根据基本系统模型,对其逐步细化,得到描述逻辑系统细化后的数据流图,如图2.3所示。图2.3 图书管理系统数据流图(顶层DFD图)对顶层DFD图中的一个加工“读者管理”进行展开,如图2.4。图2.4 细化后数据流图对顶层DFD图中的一个加工“图书管理”进行展开,如图2.5。图2.5 “图书管理”展开对第1层DFD图中的加工进一步进行展开,如图2.6。图2.6 图书借阅进一步细化数据流图图2.7 图书续借进一步细化数据流图图2.8 图书归还进一步细化数据流图有了系统的数据流图后,还有相当多的数据信息如图书、借阅、续借、归还等信息需要进一步描述,这就是需要定义数据字典,才能把现有的系统描述清楚。图2.7列出了系统的主要数据字典。图2.9 系统主要数据字典2.3 功能需求经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。 以下是图书管理系统必须具备的功能:1.新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。2.图书的查询修改功能:当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。3.借阅的登记,续借的操作,归还的登记功能:系统的主要功能之一,供本校读者借阅图书、归还图书,并进行登记。4.读者信息的增加、删除和修改功能:系统主要功能之一,建立读者信息,并对其进行维护。5.对读者的预约,委托信息进行维护;6.图书馆的信息增加,删除,修改:系统的主要功能之一,发布信息,并对其进行维护2.4 性能需求为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:1、系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。2、系统的开放性和系统的可扩充性图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。3、系统的易用性和易维护性图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。4、系统的标准性系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。5、系统的先进性目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。6、系统的响应速度图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。3 系统总体设计3.1 业务流程根据需求分析的得到的现行业务处理流程,在用户反复研究后,首先确定目标系统的业务流程,其处理流程如图3.1。图3.1 图书管理系统的业务流程针对业务流程,现具体描述其功能如下:1.用户登录:系统对用户合法性进行检查。2.图书入库:对新购进的图书分类进行编号,并把图书基本信息录入计算机。3.图书借阅:对已入库的图书,读者可以借阅,并进行登记。4.图书续借:对已借出的图书,读者可以延续使用期限。5.图书归还:对读者已归还的图书进行归还登记。 6.信息查询:即对所有图书的借阅情况,或读者的基本情况和借阅情况进行查询。7.管理措施:定义系统规定的借阅图书超期时间、超期处罚办法和丢失赔偿办法。3.2 系统功能模块图依据需求分析阶段得到的数据流图,采用软件工程中软件设计的概念和原理,与用户成分协商后,在保证系统基本功能要求的前提下,结合系统新的业务流程确定系统必须具备的所有功能,由此给出图书管理系统的系统功能模块图如图3.2所示。图3.2 图书管理系统功能模块图3.3 系统流程图依据软件工程的基本原理,综合以上分析给出系统流程图如图3.4所示。 图3.3 管理员管理模块系统流程图 图3.4 读者管理模块系统流程图4 详细设计4.1 程序流程图依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。具体来说就是把经过总体设计得到的各个模块详细的加以描述。本系统采用支持面向对象的Visual Studio 2005 sp1作为开发工具,Visual Studio 2005运用了NET 2.0的技术,更加的方便了程序员的工作。程序对系统配置要求较高,需要微软.Net Framework 2.0以上的.Net构架支持。在此给出软件系统的主要模块,如图4.1所示。图4.1 主程序模块图 根据以上主程序的模块图,我们可以得出下面的关于各个模块的程序流程图,如图4.2所示。 图4.2 总体流程图图4.3 公共模块流程图图4.4 读者模块流程图图4.5管理模块程序流程图4.2 程序输入输出描述4.2.1 系统管理模块1.输入项目:操作系统传递至的各种消息以及用户的输入数据。2.输出项目:用户界面显示,数据库表中信息。4.2.2 读者管理模块1.输入项目:与读者管理操作子对话框有关的用户输入及系统消息。2.输出项目:操作结果显示,提示读者信息的添加修改是否成功。4.2.3 图书管理模块1.输入项目:图书编号,名称等详细内容。2.输出项目:图书修改添加结果。4.2.4 借阅管理模块1.输入项目:读者学号、图书编号。2.输出项目:读者信息、相关借书信息。4.2.5 归还管理模块1.输入项目:图书编号。2.输出项目:相关读者信息,欠款情况。4.2.6 管理措施设置模块1.输入项目:用户的输入。2.输出项目:根据用户的输入显示相应的结果。4.3 数据库的设计4.3.1 数据库的概念结构设计和ER图在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。概念结构设计就是要找出实体和他们之间的联系,去除非本质的东西。实体是名词,在ER 图中设计中就是所说的表。比如“读者”,“图书”。 行为是动词,在ER 图中设计时一般不考虑行为,它是业务逻辑,在详细设计才有设计,是方法。比如 “借”,“还”等等。 在设计ER图时时强调的是不同实体之间关系,不是行为。比如:读者 "借阅" 图书,“借阅”是一种关系,不是行为。在某种情况下,“借阅”是一个关系表,将“读者”和“图书”联系起来。 在找出实体后,我们要根据分析来定义实体的属性,就是表的列。比如图书有ID,序列号,书名,简介等等; 读者有ID,姓名,借书证号等等。图书借阅是一个关系表,定义属性:ID,读者ID,图书ID,借出日期,归还日期,是否归还,等等。 “读者”可拥有 0-MANY 的“图书”,而图书只能属于0-1的读者。因此理论上 “图书借阅”表的全部属性可以放到“图书”表中,不需要关系表。但实际上,这并不是好的设计,非常混乱,试想,读者ID并不是“图书”的属性,怎么放到了“图书”表中?在设计类图时,“借书”,“还书” 就是 “读者”类的行为,对于图书借阅表通过SQL进行相关的操作。也可以查询。根据以上的分析给出下面的概念结构设计得E-R图如图4.3所示。图4.1 实体:读者 分ER图图4.2 实体:图书 分ER图图4.3 实体:管理员 分ER图图4.4 概念结构设计总E-R图图4.5 详细设计E-R图4.3.2 数据库的逻辑设计实体:图书(自动编号,ISBN号,条号码,索取号,财产号,馆藏地,价格, 借阅次数, 状态, 添加时间, 备注)读者(读者号码,证件号码,登录密码,读者姓名,性别, 出生日期,身份证号,读者类型,借阅等级,文化程度,工作单位,职业,职称,职位,住址,邮编,电话,E-MAIL,办证日期,生效日期,失效日期,押金,手续费,违章罚款,超期罚款,备注,允许借阅否)管理员(自动编号,用户名,用户密码,系统设置权,用户管理权,图书管 理权,图书借阅权,系统搜索权)联系:读者管理(图书管理员,读者姓名,读者密码)图书管理(图书管理员,借阅号,归还号) 查询(图书编号,借阅证号,图书管理员,读者)4.3.3 数据库的物理设计 数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的 值来解决,这样就避免了修改数据库结构。 数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。 程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库结构改动。相应的模块就一定要重新修改,否则一定会出问题。 图书借阅管理系统数据库中各个表的设计结果如下面几个表格所示。每个表格表示为数据库中的一个表。表4.1 表名:Lib_Admin 说明:管理员表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号UserNamevarchar100用户名UserPwdvarchar100用户密码SystemSetbit系统设置权ReaderManagebit用户管理权BookManagebit图书管理权BookBorrowbit图书借阅权SystemSearchbit系统搜索权表4.2 表名:Lib_Article 说明:文章表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号ArticleTitlenvarchar200文章标题ArticleAuthornvarchar100文章作者ArticleAddTimedatetime添加时间ArticleTypeint文章类型IDClickTimesint点击次数ArticleContentnvarchar5000文章类容表4.3 表名:Lib_ArticleType 说明:文章类型表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号TypeNamenvarchar100类型名称表4.4 表名:Lib_BookBase 说明:图书基本信息表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号BookIsbnNumvarchar100ISBN号BookBarCodevarchar100条号码BookRequestNumvarchar100索取号BookIdentityNumvarchar100财产号BookBaseLocationint馆藏地BookPricemoney价格BorrowSumint借阅次数BookStateint状态BookAddDatedatetime添加时间BookRecordvarchar200备注表4.5 表名:Lib_BookBorrow 说明:图书借阅表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号BookIdentityNumvarchar100财产号BookIsbnNumvarchar100ISBN号BookRequestNumvarchar100索取号BookNamevarchar100题名BorrowTimedatetime借阅时间ShouldReturnTimedatetime应还时间RealReturnTimedatetime实还时间ReaderNumbervarchar100读者号ReaderNamevarchar50姓名IsReturnbit是否归还BookRenewTimesint续借次数表4.6 表名:Lib_BookEntrust 说明:书刊委托借阅表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号ReaderNumbervarchar100读者号BookRequestNumvarchar100索取号BookIdentityNumvarchar100财产号BookSourceLocation int源馆地BookDestinationLoca int目标馆地EntrustDatedatetime委托时间BookComeDatedatetime归还时间IsBookComebit是否到书IsEntrustActivebit是否有效IsReaderGetbit是否领取ContinuousNotGetint连续未领取表4.7 表名:Lib_BookIsbnInfo 说明:图书ISBN 信息KeyColumn NameData TypeLengthUniqueNot NullDefaultNote IDinteger自动编号BookIsbnNumvarchar100ISBN号BookIssnNumvarchar100ISSN号BookRequestNumvarchar100索取号BookOrderNumvarchar100进书号BookNamevarchar100题名SubBookNamevarchar100副题名BookSeriesTitlesvarchar100丛编题名BookTypevarchar100图书类型BookPressvarchar200出版发行项BookCarriervarchar200载体信息BookAuthorvarchar100等同责任者BookClassificationvarchar100分类法类号BookTopicsvarchar100论题主题BookNoteAreavarchar500附注项IsbnAddDatedatetime添加时间BookLanguageint图书语言表4.8 表名:Lib_BookLanguage 说明:图书语言表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号LanguageNamenvarchar50语言名称表4.9 表名:Lib_BookLocation 说明:馆藏地表KeyColumn NameData TypeLengthUniqueNot NullDefaultNote BookCaseIDinteger自动编号LocationNamevarchar200馆地名称BookPunishRatevarchar10罚款比例表4.10 表名:Lib_BookPunishPay 说明:罚款记录表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号BookBorrowIDinteger借阅IDBookRequestNumvarchar100索取号ReaderNumbervarchar100读者号BookIdentityNumvarchar100财产号PunishMoneymoney应罚款额DealDatedatetime处理时间DealPersonvarchar100处理人RealPunishMoneymoney实罚款额IsDealbit是否处理PunishTypeint罚款类型RepayTypeint偿还类型表4.11 表名:Lib_BookReserve 说明:书刊预约表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteIDinteger自动编号ReaderNumbervarchar100读者号BookRequestNumvarchar100索取号ReserveDatedatetime预约时间BorrowBackDatedatetime到书时间ReserveOrderint预约顺序IsBookComebit是否到书BookIdentityNumvarchar100财产号BookBaseLocationint馆藏地IsReserveActivebit是否有效IsReaderGetbit是否领取ContinuousNotGetint连续未领取表4.12 表名:Lib_BookType 说明:图书类型表KeyColumn NameData TypeLengthUniqueNot NullDefaultNoteTypeIDinteger自动编号TypeNamevarchar50类型名称BorrowDayint