• 5.72 MB
  • 2022-04-22 13:36:33 发布

图书管理信息系统毕业设计.doc

  • 38页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'图书管理信息系统毕业设计目录第一章.绪论11.1研究背景11.2研究意义11.3研究内容21.4论文组织2第二章.系统可行性分析与需求32.1可行性分析32.1.1技术可行性32.1.2.经济可行性32.2系统需求概述32.2.1系统目标32.2.2用户类和用户特性42.3系统功能设计42.3.1总体功能描述42.3.2详细功能描述5第三章.系统数据库设计73.1数据库设计73.1.1数据库概述73.2系统数据设计73.3数据表设计83.3.1图书信息表结构设计83.3.2图书类型信息表结构设计93.3.3读者信息表结构设计93.3.4读者类型信息表结构设计103.3.5图书借阅信息表结构设计113.3.6图书归还信息表结构设计113.3.7用户信息表结构设计123.3.8图书馆信息表结构设计123.3.9办证参数信息表结构设计123.3.10书架信息表结构设计1335 3.3.11权限信息表结构设计133.3.12出版社信息表结构设计14第四章.系统总体设计与实现154.1开发平台与工具154.1.1Eclipse平台154.1.2WEB服务器和数据库154.2程序设计164.2.1程序设计概述164.2.2数据库与Web服务器的连接174.2.3登录模块设计194.2.4系统主界面设计204.2.5系统管理模块设计214.2.6读者管理模块设计224.2.7系统查询模块设计234.2.8图书管理功能模块的实现264.2.9图书借还功能模块的实现27第五章.软件测试305.1软件测试的方法与步骤305.2测试用例设计与测试用例的运行过程及测试结果分析315.2.1模块测试315.2.2集成测试325.2.3验收测试335.3评价33结论34参考文献35谢辞3635 图书管理信息系统第一章.绪论1.1研究背景在当今科技技术迅速发展的时代下,信息的流通和交换特别重要,人们也通过各种电子设备进行信息交流,图书馆是我们获得信息和学习的关键地方。但是目前单纯地依靠手工在图书管理信息遇到以下问题:1借书、还书工作量大随着借阅图书的人员增多,图书管理的难度也大大加强,大量的借书和还书登记、是否能及时对现有的图书进行更新和借出图书超期、遗失等的处理,这些用单纯地人工操作是很难办到的。导致手续繁琐、工作量大、效率低下、出错率高等等问题出现。2图书统计工作难、藏书更新不能及时完成。图书馆的藏书应根据学生的需求和教学工作的需要及时添加和更新,但是随着藏书数量和图书种类越来越多,加上人为的破坏等原因,导致图书的统计工作不能及时完成,对藏书的更新也不能及时进行,藏书的总体结构得不到良好地控制。1.2研究意义随着计算机的发展和广泛应用,越来越多的人们喜欢用计算机进行信息处理。在图书管理信息上,图书馆就是一个很鲜明的例子,图书馆在正常运行过程中总是要处理大量的读者借书和还书信息以及各种图书的信息。因此需要对读者和图书的相关信息进行管理,要是单纯地靠手工操作的话,将给管理员带来巨大的工作量,管理效率必然低下。为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的[1]。图书管理信息系统是一项非常有意义的开发工作,其发展的潜力巨大,现今最好的办法就是使用计算机操作的图书信息管理系统来实现对图书馆的管理。图书管理信息系统的出现将事图书管理员摆脱传统的手工操作,实现通过图书管理信息系统对图书进行高效率地图书管理。在现实中,图书管理员要面对大量的图书信息和读者信息。因此需要对读者信息和书籍信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的[1]。图书管理信息系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。为了更好体现这个功能的作用,本系统的核心功能是借阅管理和归还管理。另外还包括一些基本的辅助功能,它们分别是:用户管理、图书馆参数管理、图书管理、统计查询。35 图书管理信息系统1.3研究内容1.实现对所藏图书的按类别、书名等多方面的查询,使图书管理员和读者能更加方便对所需图书的查询;2.建立图书馆外借读者数据库,对读者的管理方便有效;3.建立图书馆管理员数据库,每个管理人员都有不同的管理权限,对数据库保护的力度大大加强;4.建立书籍档案以便实现对新书的入库和旧书的删除,让管理员对藏书清单有直观的了解;1.4论文组织本次毕业设计的目标是开发一个图书管理信息系统。通过本系统管理员可以快捷对数据库和图书的信息资料进行管理,通过设置不同的用户权限对读者进行规范化管理,通过统计查询功能能是读者方便的查找所需图书,使图书馆的资源得到最大的利用。本系统根据用户的权限不同,对图书的各种信息进行添加、删除、修改或查询操作。论文分为五个部分:第一章为绪论,简述了图书管理信息系统这个课题的背景情况以及开发本系统的意义。第二章为需求分析,简述了系统实现的各类功能,分析了系统的用例,并介绍所需的相关开发工具和技术的情况。第三章是数据库设计,简述了数据库设计的重要性以及本系统的数据库详细的设计情况。第四章为系统总体设计,通过展示主要功能模块的实现方法和部分关键代码,以及提供了个主要界面运行的截图,能更加清晰地了解系统是如何实现的。第五章是软件测试,通过白盒和黑盒测试对本系统进行测试,并对测试结果进行记录分析。最后为结论,总结这次毕业设计所获得的经验和收获。第二章.系统可行性分析与需求2.1可行性分析为了能够设计出简洁实用35 图书管理信息系统的图书管理信息系统,让用户有更好的体验,减轻图书管理员的工作量,实现高效率地图书管理。本次设计采用全球流行的计算机网络信息系统,本系统可行性分析如下:2.1.1技术可行性技术可行性分析是指分析技术条件能否地顺利完成本次设计,软件和硬件是否能满足需要。本系统采用JSP开发出简洁美观的人机界面,以便用户理解与操作。本系统数据库管理采用MySQL,它能够及时地处理大量数据,同时保持数据的完整性和安全性。因此本系统的开发平台是可行。硬件方面,在计算机科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需[2]。2.1.2.经济可行性鉴于计算机技术发展异常迅猛,在硬件软件配置以及开发技术均以可行的情况下开发这样一个管理系统成本不会很高,但是这个不仅可以提高图书馆的工作效率,也是图书馆管理发展的必然趋势,其必将有比较宽阔的市场,因此在经济可行性上也是可行的。2.2系统需求概述2.2.1系统目标本次毕业设计是建立一个基于B/S模式的图书管理信息系统,因此主要要实现以下目标:1.系统的界面简洁美观、方便用户操作。2.图书信息分类能清晰简单、方便管理。3.建立一个安全可靠的数据库存取数据。4.读者能直观地查询到所需图书的各类信息。5.借书和归还图书能及时更新到数据库。6.提供不同的权限设置,使不同权限的管理员明确地管理图书。7.让系统具有良好的维护性。2.2.2用户类和用户特性图书管理信息系统是一个基于B/S模式的对图书信息35 图书管理信息系统进行高效率管理的应用系统,它的用户主要是读者和图书管理员,学生通过该系统进行图书查询进而对自己需要的图书进行借阅及自己的借阅情况进行查询,图书管理员则通过本系统实现对图书及读者的高效管理,除此之外,还需要一个系统管理员对不同的用户进行权限的设置等操作[2]。用户类的具体描述如下表所示:表2-1用户类具体描述用户类描述读者读者是系统的重要的使用角色,他们通过查询自己需要的图书信息,并向管理员提出借阅图书的申请进而借阅自己所需的图书,并且通过对自己借书情况进行查询。图书管理员图书管理员是系统的另一个重要使用者,图书管理员通过系统进行图书的增加,修改,删除,分类管理等操作,实现对读者借阅归还续接图书的方便操作,实现对系统中图书,读者,读者借阅情况的查询,信息更改维护等操作,管理读者类型,对不同类型读者可借阅的图书数量进行设置等图书馆的基本操作。系统员系统管理员主要是图书管理系统中用户的管理,实现用户添加修改删除以及用户权限设置等操作,实现对图书馆基本信息的修改维护等操作,还包括对图书馆书架的设置操作,以及校外读者办证所需费用、证件有效期等参数的设置。2.3系统功能设计2.3.1总体功能描述图书管理信息系统的主要任务是实现读者迅速检索查询,方便借阅归还图书,图书管理员高效的完成系统的各项基本操作,系统管理员有管理用户设置权限等操作[3],从图2.1可以看出图书借阅管理系统要完成的功能:1.登录功能:每个用户进入本系统都必须登录,用户名和密码验证正确了才可以进入本系统,每个用户的系统使用权限是不同的,因此可以防止越权操作。2.系统设置功能:系统管理员可以设置图书馆相关的参数信息。3.用户管理功能:对系统用户进行添加,修改,删除,权限设置等操作。4.查询功能:对图书馆的馆藏图书,借阅历史,读者用户等信息进行查询。5.其他功能35 图书管理信息系统系统管理员可以修改自己的密码,并且拥有其他用户所拥有的所有功能。下面的系统功能结构图描述了整个系统功能模块的概述。图2-1系统功能结构图2.3.2详细功能描述1.读者管理功能:读者管理功能有读者类型和读者档案两个模块,读者类型可以对读者进行分类入库,读者档案则保存相关读者信息到数据库中,两个模块都包含添加、删除、修改等操作。2.图书管理功能:图书管理功能有图书类型和图书档案管理两个模块,图书类型管理可以对图书进行分类,而图书档案管理保存各类图书详细的信息。管理员可以添加、删除、修改图书的类型和档案。3.图书借阅功能:读者可以完成对借阅图书,续接和还书的操作。4.系统查询功能:35 图书管理信息系统本功能包含图书借阅查询、图书档案查询和图书借阅到期提醒。图书借阅查询可以根据图书名称、编号、出版社、图书类别等相关信息对所有图书进行查询,从而找到读者想要借的图书。图书借阅到期提醒可以根据当前的时间和归还时间相对对比,如果在过应归还的时间,系统会给出提醒。图书档案查询可以给出相应的图书信息而查询到有关图书的详细信息。5.修改密码功能:用户可以修改自己的登录密码。35 图书管理信息系统第三章.系统数据库设计3.1数据库设计3.1.1数据库概述数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,本章对数据库的设计进行专门阐述[5]。数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十年前,随着信息技术和市场的发展,数据管理不再是仅仅局限于存储和管理数据,而转变为用户所需的各种数据管理模式。数据库有很多类型,从最简单的存储各种数据的表格到能进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。数据库系统的出现使信息系统从以前单纯的手工添加加数据转变为数据可以共享的新阶段。运用数据的批处理方式可以有效的提高数据的管理效率和程序的维护性,使数据能更好的相容和利用,让决策更加可靠。数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库的数据是一切操作的基础,如果数据库设计不好,导致数据的处理性能低下,那么系统的所产生的数据将不能有良好的存储和使用,开发设计将不能顺利地完成,所以数据库的设计是至关重要的。设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库遵循第三范式。即:数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了增、删、改的速度[6]。3.2系统数据设计整个系统所包括的信息有图书信息、读者信息、留言信息、图书借阅信息、图书归还信息、系统用户信息、读者类型信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:1.图书信息(编号,图书名称,图书类型,作者,译者,ISBN号,价格,出版社,所在书架,入库时间,操作员)。2.图书类型(编号,名称,可借阅天数)。3.读者信息(编号,姓名,性别,条形码,读者类型,出生年月,有效证件,证件号码,登记日期,电话,邮箱,操作员)。4.读者类型(名称,可借阅图书本数)。35 图书管理信息系统5.图书借阅信息(图书编号,读者ID,借出时间,应还时间,是否归还,操作员)。6.图书归还信息(图书编号,读者ID,归还时间,操作员)。7.用户(编号,用户名称,密码)。8.图书馆信息(编号,名称,馆长,电话,地址,邮箱,创建日期,简介)。9.图书馆参数信息(编号,办证费用,有效期限)。注:带下划线表示主键。在这里使用E-R图描述了图书借阅管理系统的数据模型。图3.1图书管理系统E-R图描述了该系统所涉及到的实体以及他们之间的关系。具体结构如下图所示:图3-1系统E-R图3.3数据表设计3.3.1图书信息表结构设计图书信息表是用来存储图书相关信息,在图书入库时管理员对图书的相关信息进行添加和完善,读者和管理员根据此表中图书的某个属性进行查询,便能知道图书的其它相关信息,其中图书的书架属性是方便在读者借阅时能快速找到图书,如果读者不慎将图书遗失时,图书价格是赔偿的依据。图书信息表的具体结构如下:35 图书管理信息系统表3-1图书信息表tb_bookinfo字段名称数据类型字段长度是否为空说明barcodevarchar30NoKeybooknamevarchar70No书名authorvarchar30Yes作者translatorvarchar30Yes译者ISBNvarchar20No出版社pricefloat8,2No图书价格bookcasevarchar10No图书所在书架pressvarchar70No出版社intimedateNo图书入库时间operatorvarchar30No操作员pageint10Yes图书页码3.3.2图书类型信息表结构设计该表的设计主要是为对进行图书的分类从而实现对图书的快捷查询,图书管理员可以根据图书类型的不同把图书陈列在不同的书架,让读者不用花大量时间寻找想借的图书,其中可借阅天数项设置了不同类型图书的借阅期限,可根据图书的具体情况进行不同的维护管理,表的具体结构设计如下:表3-2图书类型信息表tb_booktype字段名称数据类型字段长度是否为空说明IDint10NoKeybooknamevarchar30No书名daysint10No可借阅天数3.3.3读者信息表结构设计35 图书管理信息系统读者信息表的设计是为了图书馆管理员对读者进行管理,读者在借阅图书时需要输入唯一的ID和证件号码进行身份识别,读者邮件电话等信息是为了与读者进行联系,读者类型信息决定了读者一次性可借阅的图书的数量,注册时间可用于查询计算读者身份有效的期限,操作员是为了便于对信息才操作的查询。读者信息表的具体结构设计如下:表3-3读者信息表tb_reader字段名称数据类型字段长度是否为空说明Idint10NoKeynamevarchar20No姓名sexvarchar4No性别barcodevarchar30No借阅证编号readertypevarchar11No读者类型telvarchar20Yes电话e-mailvarchar100Yes电子邮箱paperTypevarchar10No证件类型PaperNO.Varchar20No证件号码birthdaydateYes出生日期intimedateNo登记时间operatorvarchar30No操作员3.3.4读者类型信息表结构设计此表可以根据读者的身份不同而进行分类,方便管理员对读者的管理。不同类型的读者一次可借阅图书数量是有限的。读者类型信息表的具体结构设计如下:表3-4读者类型信息表tb_readertype字段名称数据类型字段长度是否为空说明IDint10NoKeyreadernamevarchar50No姓名numberint4No可借图书本数3.3.5图书借阅信息表结构设计该表的设计35 图书管理信息系统是用于对读者借阅图书进行管理,表中图书ID属性是对借阅图书的唯一性识别标识,读者ID号记录借阅的相应读者,借出时间记录了相应的归还时间,以及归还时是否超时,操作员是对借阅进行操作的人员的记录方便日后的查询,是否归还标识可查询当时读书是否被归还,图书借阅信息表的具体结构设计如下:表3-5图书借阅信息表tb_borrow字段名称数据类型字段长度是否为空说明IDint10NoKeyreaderIDvarchar10No借阅证编号bookIDint10No图书编号borrowTimedateNo借出时间backTimedateNo归还时间operatorvarchar30No操作员ifbacktinyint1No是否归还3.3.6图书归还信息表结构设计图书归还信息表和图书借阅信息表是相互对照的,该表的设计与图书借阅信息表有一点不同的是把借阅的图书与相应的借阅者的关系相互对应起来以外还记录了读者应归还图书的时间,以此判断读者的借阅是否超过归还日期。图书归还信息表的具体结构设计如下:表3-6图书归还信息表tb_giveback字段名称数据类型字段长度是否为空说明IDint10NoKeyreaderIDvarchar11No借阅证编号bookIDint11No图书编号backTimedateNo归还时间operatorvarchar30No操作员3.3.7用户信息表结构设计该表的设计用于记录图书管理系统用户的信息,方便对用户的管理,表中包括用户ID35 图书管理信息系统和用户的登录密码。用户信息表的具体结构设计如下:表3-7用户信息表tb_user字段名称数据类型字段长度是否为空说明IDint10NoKeynamevarchar30No用户passwordvarchar30No密码3.3.8图书馆信息表结构设计该表包含了图书馆的名称,地址,联系方式,建馆时间,简介等信息,是对图书馆基本属性信息的描述,方便外界读者对图书馆的了解。图书馆信息表的具体结构设计如下:表3-8图书馆信息表tb_library字段名称数据类型字段长度是否为空说明IDint10NoKeylibrarynamevarchar50No图书馆馆名curatorvarchar10No馆长姓名telvarchar20Yes电话addressvarchar100No地址e-mailvarchar100No电子邮箱urlvarchar100No图书馆网站createDatevarcharNo创馆时间introducetextYes图书馆简介3.3.9办证参数信息表结构设计该表是为校外人员设计的,对于需要到图书馆进行借阅的读者可办理临时的借阅证用于对图书的借阅凭证,表中包含了办证所需费用以及证件的有效期限。办证信息表的具体结果设计如下:表3-9办证参数信息表tb_parameter字段名称数据类型字段长度是否为空说明35 图书管理信息系统IDint10NoKeyCostint10No办证费用validityint10No有效时间3.3.10书架信息表结构设计该表是为保存书架信息,不同的书架放置不同类别的图书,方便读者的寻找。书架信息表的具体结果设计如下:表3-10书架信息表tb_bookcase字段名称数据类型字段长度是否为空说明IDint10NoKeynamevarchar30No书架名称3.3.11权限信息表结构设计该表用来保存管理员权限信息,不同类型的用户拥有不同的权限,系统员拥有所以的权限。权限信息表的具体结构设计如下:表3-11权限信息表tb_purview字段名称数据类型字段长度是否为空说明IDint11NoKeysyssettinyint1Yes系统设置readersettinyint1Yes读者管理booksettinyint1Yes图书管理borrowbacktinyint1Yes图书借还sysquerytinyint1Yes系统查询3.3.12出版社信息表结构设计该表包含了出版社的名称,保存出版社信息的描述。出版社信息表的具体结构设计如下:表3-12出版社信息表tb_publishing35 图书管理信息系统字段名称数据类型字段长度是否为空说明ISBNvarchar30YESKeypubnamevarchar30YES出版社名称35 图书管理信息系统第四章.系统总体设计与实现4.1开发平台与工具4.1.1Eclipse平台Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。在开发图书馆借阅管理系统的过程中,应用eclipse,它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。eclipse是功能丰富的J2EE集成开发环境,J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持EnterpriseJavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能[9]。包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL[10]。4.1.2WEB服务器和数据库1.使用的Web应用服务器是Tomcat,Tomcat服务器是ApacheGroupJakarta小组开发的一个免费服务器软件,可以用于嵌入Apache中使用,而且它源代码是开放,我们可以自由地对它进行扩展和补充。Tomcat是一个小型的轻量级应用服务器,它运行时占用的系统资源小、扩展性好、支持负载平衡等开发应用系统常用的功能。因此在中小型系统和并发访问用户不是很多的时候,经常被使用[11]。Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器。2.使用MySQL作为数据库开发工具。MySQL是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构,开发者为瑞典MySQLAB公司,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。35 图书管理信息系统3.为了开发的便捷快速,使用struts第三方插件。Struts是一个全新的MVC框架,是由Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目struts流程并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品[12]。4.2程序设计4.2.1程序设计概述设计模式是程序设计人员用来解决编程问题的一种形式化表示。本系统Web层开发采用目前广泛流行的软件设计模式MVC。MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。其模型关系如图4.1所示。在设计中视图(View)有JSP来实现,为了业务逻辑和表示的分离.它是基于Web应用系统,它的客户端使用Broswer,然后是Web层的应用,业务逻辑层(有EJB实现),资源管理层。客户请求浏览页面,一般Web层的View有JSP组成,并且使用了大量Taglib。把每个请求映射到某个HTMLAction类来响应它。HTMLAction类是一个标准的类,执行选择的HTMLAction。使用MVC模式帮助我们有效地减少了代码的复制,即减少了代码的维护,而且模型返回的格式不带任何显示格式,模型可以直接应用于接口的使用,还因为MVC模型把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说包含了用户请求权限的概念[13]。图4-1MVC模式图在设计中还应用了Struts框架,Struts是一款跟Tomcat、Turbine等诸多Apache项目一样的开源软件,使开发者能更加深入的理解其内部实现机制。35 图书管理信息系统除此之外,Struts的优点主要集中体现在Taglib和页面导航。Taglib是Struts的标记库,设计人员灵活动用的话能有效提高开发效率。页面导航使系统的脉络更加清晰。通过一个配置文件,就能把握整个系统各部分之间的联系,这使程序后期的维护更加轻松[11]。4.2.2数据库与Web服务器的连接数据库连接时采用连接池技术链接MySQL,具体代码实现如下:publicConnDB(){try{InputStreamin=getClass().getResourceAsStream(propFileName);prop.load(in);//通过输入流对象加载Properties文件dbClassName=prop.getProperty("DB_CLASS_NAME");//获取数据库驱动dbUrl=prop.getProperty("DB_URL","jdbc:mysql://127.0.0.1:3306/db_librarySys?user=root&password=123&useUnicode=true");}catch(Exceptione){e.printStackTrace();//输出异常信息}}publicstaticConnectiongetConneoctin(){Connectionconn=null;try{Class.forName(dbClassName).newInstance();conn=DriverManager.getConnection(dbUrl);}catch(Exceptionee){ee.printStackTrace();}if(conn==null){System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.rnrn链接类型:"+dbClassName+"rn链接位置:"+dbUrl);}returnconn;}/**功能:执行查询语句35 图书管理信息系统*/publicResultSetexecuteQuery(Stringsql){try{conn=getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);}catch(SQLExceptionex){System.err.println(ex.getMessage());}returnrs;}/**功能:执行更新操作*/publicintexecuteUpdate(Stringsql){intresult=0;try{conn=getConnection();//调用getConnection()方法构造Connection对象的一个实例connstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);result=stmt.executeUpdate(sql);//执行更新操作}catch(SQLExceptionex){result=0;}returnresult;}/**功能:关闭数据库的连接*/publicvoidclose(){try{if(rs!=null){rs.close();}if(stmt!=null){stmt.close();}if(conn!=null){conn.close();}}catch(Exceptione){35 图书管理信息系统e.printStackTrace(System.err);}}}4.2.3登录模块设计本模块的功能是用户通过它进入图书管理信息系统。打开IE浏览器,输入http://127.0.0.1:8080/JspLibrary/login.jsp。用户输入正确的用户名和密码后就可以进入系统操作页面,不同的用户可进行的操作权限不同;如果输入的用户名和密码错误的话,系统会给出相应的错误提示,用户不能进入系统进行操作。图书管理信息系统的登录主页面如图4-2所示。图4-2图书管理信息系统登录首页用户在登录页面写好用户名:tsoft和密码:1,然后点击确定,登录成功则跳转到系统的首页,否则提示错误信息。判断写好用户名和密码的语句:functioncheck(form){if(form.name.value==""){alert("请输入用户名!");form.name.focus();returnfalse;35 图书管理信息系统}if(form.pwd.value==""){alert("请输入密码!");form.pwd.focus();returnfalse;}}在服务器端进行用户身份验证的程序流程图如图4-3程序流程图所示:图4-3用户登录流程图4.2.4系统主界面设计本图书管理信息系统主界面中有首页、图书借还、读者管理、图书管理、系统查询系统设置、更改口令、退出系统这几个模块。其中每个模块的下拉列表包含了管理员设置、图书馆信息、书架设置等功能。在界面的左右两端分别显示当前日期时间和用户名称,系统首页主要显示了图书借阅排行榜,方便管理员查看借阅情况,读者对哪些图书感兴趣,有效的管理图书。系统主界面如图4-4所示:35 图书管理信息系统图4-4系统主界面图4.2.5系统管理模块设计本模块包含图书馆信息、管理员设置、书架设置和办证参数设置,其中最主要的是管理员设置模块,它根据分配权限来管理系统用户,可对他们进行添加,修改,删除。其中操作页面如下图所示:图4-5系统管理员管理用户操作界面35 图书管理信息系统其中对系统用户权限的设置是该操作的重要部分也是系统提高效率的关键所在,起具体实现代码为:privateActionForwardmanagerModify(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){ManagerFormmanagerForm=(ManagerForm)form;managerForm.setId(managerForm.getId());//获取并设置管理员ID号managerForm.setName(managerForm.getName());//获取并设置管理员名称managerForm.setPwd(managerForm.getPwd());//获取并设置管理员密码managerForm.setSysset(managerForm.getSysset());//获取并设置系统设置权限managerForm.setReaderset(managerForm.getReaderset());//获取并设置读者管理权限managerForm.setBookset(managerForm.getBookset());//获取并设置图书管理权限managerForm.setBorrowback(managerForm.getBorrowback());//获取并设置图书借还权限managerForm.setSysquery(managerForm.getSysquery());//获取并设置系统查询权限intret=managerDAO.update(managerForm);//调用设置管理员权限的方法if(ret==0){request.setAttribute("error","设置管理员权限失败!");//保存错误提示信息到error参数中returnmapping.findForward("error");//转到错误提示页面}else{returnmapping.findForward("managerModify");//转到权限设置成功页面}}4.2.6读者管理模块设计读者管理有读者类型管理和读者信息管理两个子模块,其中管理员可以在读者类型管理设置不同类型读者一次性可借阅的图书数量,读者信息管理则主要管理维护读者的基本信息,其各自操作界面如下所示:1.读者类型管理功能界面:图4-6读者类型管理操作界面2.读者信息管理功能界面:35 图书管理信息系统图4-7读者信息管理界面该管理功能在填写读者信息时需要输入读者姓名、性别、有效证件、电话等等相关信息。4.2.7系统查询模块设计查询功能模块包括图书查询,读者借阅查询和借阅到期提醒三个子功能模块。1.图书查询可根据图书的条形码,书名,作者,出版社等不同信息进行查询,其操作界面图下图所示:图4-8图书查询操作界面实现该功能中根据读者不同需求的按条件查询实现语句如下:35 图书管理信息系统publicCollectionquery(Stringstrif){BookFormbookForm=null;CollectionbookColl=newArrayList();Stringsql="";if(strif!="all"&&strif!=null&&strif!=""){sql="select*from(selectb.*,c.nameasbookcaseName,p.pubnameaspublishing,t.typenamefromtb_bookinfobleftjointb_bookcaseconb.bookcase=c.idjointb_publishingponb.ISBN=p.ISBNjointb_booktypetonb.typeid=t.idwhereb.del=0)asbookwherebook."+strif+""";}else{sql="selectb.*,c.nameasbookcaseName,p.pubnameaspublishing,t.typenamefromtb_bookinfobleftjointb_bookcaseconb.bookcase=c.idjointb_publishingponb.ISBN=p.ISBNjointb_booktypetonb.typeid=t.idwhereb.del=0";}System.out.println("图书查询时的SQL:"+sql);ResultSetrs=conn.executeQuery(sql);try{while(rs.next()){bookForm=newBookForm();bookForm.setBarcode(rs.getString(1));bookForm.setBookName(rs.getString(2));bookForm.setTypeId(rs.getInt(3));bookForm.setAuthor(rs.getString(4));bookForm.setTranslator(rs.getString(5));bookForm.setIsbn(rs.getString(6));bookForm.setPrice(Float.valueOf(rs.getString(7)));//此处必须进行类型转换bookForm.setPage(rs.getInt(8));bookForm.setBookcaseid(rs.getInt(9));bookForm.setInTime(rs.getString(10));bookForm.setOperator(rs.getString(11));bookForm.setDel(rs.getInt(12));bookForm.setId(Integer.valueOf(rs.getString(13)));bookForm.setBookcaseName(rs.getString(14));bookForm.setPublishing(rs.getString(15));bookForm.setTypeName(rs.getString(16));bookColl.add(bookForm);}}catch(SQLExceptionex){ex.printStackTrace();}conn.close();returnbookColl;}}35 图书管理信息系统2.借阅查询功能是对图书当前状态和读者当前的借阅情况进行查询,具有此权限的用户登录并进入该操作界面后输入相应的查询信息,系统即可在页面显示被查询的图书的状态,或以及借该图书的读者是否归还了图书,此外还可以输入相应时间段内的所有借阅清单,或选择某个读者查询他在某个时间段内的借阅情况,整个模块功能操作界面为:图4-9借阅查询操作界面系统中同时选中日期和限制条件进行查询时,程序是在条件查询的基础上选中符合时间条件限制的内容,其实现代码为:if(flag.length==2){if(request.getParameter("f")!=null){str=request.getParameter("f")+"like"%"+request.getParameter("key")+"%"";}System.out.println("日期和条件");Stringsdate=request.getParameter("sdate");Stringedate=request.getParameter("edate");Stringstr1=null;if(sdate!=null&&edate!=null){str1="borrowTimebetween""+sdate+""and""+edate+""";}str=str+"andborr."+str1;System.out.println("条件和日期:"+str);}35 图书管理信息系统3.借阅到期提醒子模块是将系统当前时间与应归还的时间进行比较,如果系统当前时间以超过图书应归还时间,相应的读者借阅信息便会被显示在借阅到期提醒界面,其界面为:图4-10借阅到期提醒4.2.8图书管理功能模块的实现图书管理模块分为图书类型管理和图书档案管理两个子模块,本次系统设计的图书类型管理功能不仅设计图书类型还设计了不同类型图书可借阅的天数,从而对不同类型图书进行区别管理,大大提高了图书类型管理的工作效率。图书档案管理是管理维护藏书的基本信息。这两个子模块的操作界面为:1.图书类型管理界面:图4-11图书类型管理界面35 图书管理信息系统2.图书档案管理界面:图4-12图书档案管理界面图书档案中包含图书的条形码,图书名称,图书类型,作者,译者,价格,出版社,所在书架等图书基本信息,其中作者,译者,页码是备选信息,可以不填。4.2.9图书借还功能模块的实现该功能模块可分为图书借阅,图书归还,图书续借三个子模块。1.图书借阅。该子模块实现系统的借阅功能,读者向图书管理员提供自己的编号会显示出读者当前的借阅情况,读者输入想的借阅的图书标号或者书名,图书管理员将信息记录在系统中,借阅成功,其操作界面如下图:图4-13图书借阅操作界面35 图书管理信息系统读者不能续借已经被借光的图书和不存在的图书,要是读者借书的数目达到上限也不能接着借书。系统将给出相应提示,此功能的实现代码为:privateActionForwardbookborrow(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){//查询读者信息//此处一定不能使用该语句进行转换readerForm.setBarcode(request.getParameter("barcode"));ReaderFormreader=(ReaderForm)readerDAO.queryM(readerForm);request.setAttribute("readerinfo",reader);//查询读者的借阅信息request.setAttribute("borrowinfo",borrowDAO.borrowinfo(request.getParameter("barcode")));//完成借阅Stringf=request.getParameter("f");Stringkey=request.getParameter("inputkey");if(key!=null&&!key.equals("")){Stringoperator=request.getParameter("operator");BookFormbookForm=bookDAO.queryB(f,key);if(bookForm!=null){intret=borrowDAO.insertBorrow(reader,bookDAO.queryB(f,key),operator);if(ret==1){request.setAttribute("bar",request.getParameter("barcode"));returnmapping.findForward("bookborrowok");}else{request.setAttribute("error","添加借阅信息失败!");returnmapping.findForward("error");}}else{request.setAttribute("error","没有该图书!");returnmapping.findForward("error");}}returnmapping.findForward("bookborrow");}2.图书归还。该子模块实现系统的图书归还功能,读者向图书管理员提供自己的编号会显示出读者目前的借阅情况,读者要是提供要归还的图书编号或书名,图书管理员将信息记录在系统中,归还成功,其操作界面如下图:35 图书管理信息系统图4-14图书归还操作界面35 图书管理信息系统第五章.软件测试5.1软件测试的方法与步骤该系统在本地服务器上进行运行和调试,因为对系统的内部结构和处理算法的了解以及对系统功能的掌握从而对系统进行白盒测试和黑盒测试。在开发软件系统的过程中,需要应对解决错综复杂的问题。所以在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试的重要性在于:发现一个发现其中尚未发现的错误。本系统的测试阶段信息流程下图所示[15]。图5-1测试阶段信息流程图为了有效地测试本程序。测试方案如下:所有测试都按照最初的用户需求进行需求模型测试和设计运,先把系统分成小规模的模块进行测试,出错了的话进行调试和修改,最后再整合到一起进行全面的模块测试;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可靠性[15]。按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次:1.单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。2.集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。3.验证测试。在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试[15]。在整个测试中,采用了白盒测试和黑盒测试相结合的方法。35 图书管理信息系统5.2测试用例设计与测试用例的运行过程及测试结果分析5.2.1模块测试1.登录模块测试表5-1登录模块用例测试用例测试数据预期结果UC1:输入正确的用户名和密码用户名:tsoft密码:1系统跳转到登陆成功页面UC2:输入空用户名用户名:请输入用户名UC3:输入用户名和空密码用户名:tsoft密码:请输入密码UC4:输入用户名和错误的密码用户名:tsoft密码:10您输入的用户名或密码错误当用户输入的用户名或密码错误时系统会跳转到出错页面并提示“您输入的用户名或密码错误”,用户点击返回,系统会重新返回到登陆页面,该操作的错误信息提示页面如图5-2所示:图5-2系统出错提示页面2.更改密码模块测试用户登录系统后可以对自己的登录密码进行更改,更改过程要求用户提供原始密码,输入新密码,并对新密码进行确认,如果用户输入的原始密码错误,或两次输入的新密码不一致将无法执行密码更新操作,系统会给出相应的提示,该操作显示页面为:35 图书管理信息系统图5-3两次密码不一致提示页面5.2.2集成测试整合所有经过单元测试的模块形成一个子系统,并对此系统进行测试,检验所有模块整合后是否能相互协调和通信,这里主要对图书管理员功能模块进行了测试,经过检验其功能均得以顺利实现,下图为管理员操作的读者借阅模块成功运行界面:图5-4图书管理员子系统功能测试图35 图书管理信息系统把所有测试过的子系统整合成一个完整的系统进行黑盒测试和白盒测试,并对整个系统的各项功能模块进行了测试,对测试出来的错误进行修改,使整个系统的各项功能能顺利进行。5.2.3验收测试在进行了以上的测试工作后,将整个软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但它是在用户积极参与下进行的,此测试过程主要使用实际数据,进行测试,验证测试的目的是验证系统确实能够满足用户的需求,经过这个环节的实际数据测试,系统的各个功能实现都达到了系统需求设计的要求。5.3评价测试过程严格按照测试的流程,经过单元测试、子系统测试和系统测试。通过单元测试,查找出了系统各模块内部的错误;通过子系统测试,发现了模块间相互协调和通信上的错误;通过系统的集成测试,发现了软件设计过程中存在的错误。通过改正错误的设计和实现部分,保证了图书借阅管理系统可以完成需求分析中制定的需求[16]。通过多次的测试我们可以看到本系统可以完成用户登录、系统设置、图书管理、读者管理管理、借阅管理和系统查询等功能。读者在通过本系统实现按照各种方式查询图书馆的藏书清单,从而方便的进行对图书信息进行查询和对图书借还等等操作。图书馆管理员能够实现方便的对图书信息和读者借阅情况查询,快捷地进行借书还书等操作,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。系统管理员拥有对图书信息管理的所有权限,可以对系统用户进行添加、修改、删除、权限设置等操作,对图书信息修改维护等操作功能。测试阶段发现了系统的各种错误,但是经过多方面的修改后本系统能够实现提高图书信息管理工作效率的预期目的。35 图书管理信息系统结论在Eclipse开发环境下,以J2EE为平台,运用JSP网络编程语言和Struts框架和MySQL数据库完成了B/S模式的图书管理信息系统。本次设计的系统基本上实现了任务书中要求系统必须具备的各项功能和主要设计内容的各项任务,整个系统也经过多次的测试与修改,能够顺利的运行,基本上实现了开题报告中的需求设计。本系统能够实现:1.读者可以通过本系统实现按照各种方式查询图书馆的藏书,从而进行借阅图书,续借图书,归还图书,然后查询自己的借书图书情况。2.图书馆工作人员能够实现方便地对图书进行查询,方便地进行读者借阅情况查询和进行借书还书处理等,更加有效率地对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。3.系统管理员可以对图书馆信息进行修改更新操作,对系统用户进行添加、修改、删除、权限设置等操作,对图书馆的办证参数进行修改维护等操作功能。经过三个月努力和老师同学的帮助下,终于完成了我的毕业设计项目“图书管理信息系统”。在写开题报告期间我就参阅了大量的中外文献,对本系统目前情况、国内外的发展情况以及未来发展趋势有了深入的了解;在系统需求分析过程中对前期的设计流程步骤有了深入的掌握;在设计过程我复习了相关的Java的知识,也进一步的知道如何运用所学的知识到实际项目中,另外我也学习了一些网页设计美工方面的知识,让系统更加美观规范化,在编码过程中也掌握了一些编码的小知识和规范性。在配置开发工具过程中对Tomcat和Eclipse的连接部署有了清晰地认识,在使用Struts框架时对其配置文件Struts-config.xml的作用有了相当深入的了解,对开发Web程序的步骤框架页有了总体性认识。在整个系统开发的过程中,我学到了很多新的知识,以前学过的许多知识点在设计过程中也有了更深的分析理解,这个项目对我来说规模是蛮大的,在整个过程中我也体会到了如何将书本知识转化到实际的应用中。35 图书管理信息系统参考文献[1]王立福.软件工程(第二版)[M].北京:北京大学出版社.2002.[2]张秋余,杨玥.基于用例的需求建模方法[J].计算机工程与设计,2006,19:3539-3541.[3]MattheMacDonal.管理信息系统[J].电子工业出版社.2003.Vol.3(8):102-108.[4]张秋余,杨玥.基于用例的需求建模方法[J].计算机工程与设计,2006,19:3539-3541.[5]JohnW.Satzinger,RobertB.Jackson,StephenD.Burd.[Z].北京:人民邮电出版社,2008.[6]王珊,萨师炫.数据库系统概论(第三版)[M].北京:高等教育出版社.2002[7]张海潘.软件工程[J].清华大学出版社.2003年11月[8]张波.网络答疑系统的设计与实现[D].长春:吉林大学软件学院,2005.[9]陆荣幸,郁洲.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,03:144-146.[10]孙卫琴,李洪称.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社,2003.[11]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,06:274-276.[12]MartyHall,LarryBrown著,赵学良译.Servlet与JSP核心编程(第2版)[M].北京:清华大学出版社,2004.[13]戴继周.基于Web的网络教学平台的设计与实现[D].长春:吉林大学计算机应用技术专业,2004[14]尹朝庆.计算机系统结构教程[M].北京:清华大学出版社.2005.[15]张海藩.软件工程导论(第四版)[M].北京:清华大学出版社,2003.[16]张维明.信息系统原理与工程.电子工业出版社.2002年1月.谢辞35 图书管理信息系统在数月的毕业设计中,我真诚地感谢老师和同学的帮助,在他们的帮助下我才顺利的完成毕业设计。这是我大学期间最后一个作业了。随着它的完成我也将要走出校门踏上社会。在这里的四年时间我真的收获蛮多的。不仅仅是书本上的知识,更重要的是学会要如何做人。除了自己的成长和收获不说,我真的很想感谢很多人。首先,我要感谢我的父母,如果没有你们的支持与鼓励我不会这么顺利的读完了大学;是你们在我迷茫的时候给我指明了前进的道路;是你们的言传身教让我更好得与人沟通;是你们的谆谆教导让我不断成长进步;使你们宽容的处事为人,使我知道凡事都要冷静地对待,是你们一直以来对我的关怀和爱使我健康的成长,不断地进步,谢谢你们,我亲爱的爸爸妈妈。还有,非常感谢我的同学们和老师们,当我在毕业设计过程中遇到问题和困难时,是你们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心得帮我解决了许多实际问题,使我获益良多。是你们教授了我丰富的知识,教会了我学习知识的能力。谢谢我的母校对我的教育,我将以更加饱满的热情投入到人生中去,充实自己,完善自己,向着自己的目标不断地前进,用我的所学去实现我心中的梦想!!!35'