软件工程图书馆管理系统课程设计报告.docx
《软件工程图书馆管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《软件工程图书馆管理系统课程设计报告.docx(46页珍藏版)》请在冰豆网上搜索。
软件工程图书馆管理系统课程设计报告
1绪论…………………………………………………………………………1
2可行性研究报告……………………………………………………………1
3需求规格说明书……………………………………………………………4
4总体设计说明书……………………………………………………………7
5数据库设计说明书…………………………………………………………8
6详细设计说明书……………………………………………………………9
7系统实现……………………………………………………………………11
8测试分析报告………………………………………………………………23
参考文献
1.绪论
1.1选题目的及意义
随着计算机技术的快速发展,人们对用计算机代替手工管理信息的需求越来越强烈,越来越多的计算机软件如雨后春笋般的应用于人们生产生活的各个领域,为人们提供各种各样的便利。
本图书馆管理系统应用软件可以有效地解决高等院校、中小学图书馆由于藏书量增大而带来的管理问题,图书馆管理员可以更好地管理学校图书馆藏书信息,学生可以更方便地享受借书还书的服务,为更有效地学习知识提供有利的保证。
对于我来说,选择这个题目作为课程设计的题目有以下两个原因:
一是因为自从上大学以来,每当在图书馆借书的时候,我都会留心观察一下图书馆管理员的那台计算机上显示的内容,久而久之,就对本系统的基本流程越来越了解,做好一个软件的前提是必须对这个软件的功能和原理非常熟悉,相比别的题目,我对这个题目更加了解;二是本学期通过学习Java程序设计和Oracle数据库课程,我觉得这个题目虽然没有那么难(涉及算法的内容很少),但也不是轻而易举就能完成的,所以我想挑战一下自己,看看自己的实现能力到底怎么样,因此决定用面向对象方法学的思想,前台用Java程序设计语言编写界面,访问Oracle数据库中的数据,完成本系统。
1.2系统概述
本系统通过JDBC-ODBC桥实现前后台数据的联系,基本上实现了一个图书馆管理系统所具备的基本功能,本系统把使用者分为三类:
超级管理员、普通管理员、读者,对三种用户分别设计了各自的主界面,以便更好的实现信息的隐藏性,超级管理员可以进行这个系统所有操作;管理员只能执行超级管理员的基本功能,查看自己的信息;读者只能查看自己的信息,对自己当前借书进行挂失和续借两种操作,查询图书馆的藏书。
2.可行性研究报告
2.1编写目的
本报告编写目的在于研究图书馆管理系统应用软件是否可行,指出本软件开发所使用的方法和手段,并对该软件前景进行分析。
本报告的预期读者是:
高等院校、中小学图书馆管理人员、程序设计人员、以及对图书馆管理系统感兴趣的爱好者。
2.2相关背景
工程名称:
图书馆管理应用软件
工程产品名称:
高校图书馆管理系统应用软件
工程的组织者:
西安科技大学计算机学院软件工程系
产品用户:
高校图书馆、中小学图书馆;
产品的生产者:
西安科技大学计算机学院软件工程062班袁震;
产品设计者:
西安科技大学计算机学院软件工程062班袁震;
2.3可行性研究的前提
本图书管理系统在功能上要求完成以下基本功能:
a).读者、管理员登陆;
b).借书;
c).还书;
d).续借;
e).图书挂失;
f).历史记录查询;
g).新书入库;
h).读者登记及修改个人信息;
本系统在性能上力争达到响应时间短,具有一定的容错能力,力争减少由用户直接输入数据,绝大多数据的输入都用可以选择的形式让用户进行选择。
本系统预计有如下输出:
a).登陆成功显示:
成功则进入主界面;失败则重新输入;都要给出相应的提示;
b).借书成功显示:
显示借书是否成功,如成功,记录插入数据库,失败说明错误原因,返回借书界面;
c).还书成功显示:
显示还书是否成功,如成功,修改数据库多项记录,失败说明错误原因,返回主界面;
d).续借成功显示:
显示续借是否成功,如成功,修改数据库记录,失败则说明错误原因,返回主界面;
e).图书挂失成功显示:
成功则提示用户需要赔偿的价钱,并禁止该用户再借书,直到交了罚款为止;
f).历史记录查询:
管理员可以查询所有记录,用户只能查询自己的借还书记录;显示这些记录;
g).新书入库成功显示:
显示新书入库是否成功,成功则向数库插入数据,失败给出错误提示,返回主界面;
h).读者登记成功显示:
显示读者是否成功注册,成功则向数据库插入数据,失败给出提示,返回主界面;
i).修改个人信息成功显示:
显示个人信息是否成功修改,成功则修改数据库中的数据,失败则给出错误提示,返回主界面;
本系统预计有如下数据输入:
a).登陆系统时需要输入用户名和密码,选择用户类型;用户名、密码、和用户类型均为字符型;
b).借书时需要选择用户编号和书的编号,均为字符型;
c).还书时需要选择用户名和书的名字,均为字符型;
d).续借时,需要选择书的编号,为字符型;
e).挂失时,需要选择书的编号,为字符型;
f).新书入库时,需要输入书的编号、名字、类别、价格、当前剩余藏书量、入库日期;其中入库时期为系统当前时间,价格为双精度浮点型,当前剩余藏书量为整型,其余均为字符型;
g).读者登记时,需要输入读者的编号、名字、密码、当前最大可借书量,当前状态(0或1),0为未激活,1为激活;其中当前最大可借书量为整型,其余为字符型;
h).修改个人密码时,需要提供一次原密码和两次新密码;均为字符型;
本系统基本系统模型如图2-1所示:
图1-1图书管理系统基本系统模型
通过图1-1.,我们可以发现该系统的数据源是读者和图书馆管理员;读者处理的事务只有修改个人密码、续借、图书挂失,其余事务均由图书馆管理员来处理;数据终点是读者,意味着所有处理最后都要由读者确认,这种确认可以是某种操作,也可以是管理员的一句提示。
本系统的完成期限为16天(即2008年12月22日到2009年1月7日)。
2.4目标
本图书管理系统的主要开发目标为:
a).实现图书管理的便捷程度;
b).在完成数据库连接的基础上,适当提高查询速度和访问效率;
c).在完成基本功能的基础上,减少代码量,提高工作效率;
2.5进行可行性研究的方法
本系统可行性研究是通过走访大学图书馆的方式进行的,通过走访西安科技大学图书馆和陕西航天职工大学图书馆,对两校现有图书管理系统进行调查、了解,分析得出本系统应实现的基本功能,本系统根据两校图书馆管理系统进行相应的模仿的基础上,添加了一些自己的功能。
2.6评价尺度
本系统在评价时应从以下几个方面进行分析:
开发时间要尽量短;
各个功能实现代码要尽量少;
访问数据库的效率要尽量高;
用户使用过程中容错能力要很强;
2.7对现有系统的分析
通过对西安科技大学图书馆管理系统的分析,由于该系统是专业软件公司所为,基本上没有什么太大的问题,就是有时候会出现响应时间过长的问题,原因可能是访问数据库效率过低,所以本系统着重提高访问数据库效率的问题,在功能上尽量模仿上述系统。
因此有必要对现有系统进行修改。
现有系统的主要工作为处理借还书,新书入库,读者登记,读者信息修改,读者挂失等业务。
现有系统最大局限性就是响应时间过慢,数据存储能力不足,由于使用时间很长,源代码无法找到,所以需要对该系统进行重新设计,以适应社会的需要。
2.8所建议使用的系统
本图书管理系统采用面向对象的分析方法进行分析,然后用面向对象的设计方法进行设计,最后用面向对象语言Java进行实现,后台数据库使用Oracle,连接方式为JDBC-ODBC。
Java中GUI程序设计本身就是界面程序设计,用它设计出来的界面不但美观,而且使用方便,使用者只需点几次鼠标,就能根据提示进行正确的操作,实现了图书管理的便捷程度;
由于Java代码重用性非常好,加上本系统部分代码我可以用别的程序代码稍微做一些修改就可以实现功能,因此可以实现降低代码量的目的;
Oracle数据库是目前市场上通用数据库之一,查询速度本身就非常多,再加上我会在代码中尽量避免多表连接查询和处理语句的使用,所以可以真正起到提高查询效率的目的。
本系统局限性可能来自以下几个方面:
a).界面不美观;
b).部分功能无法实现;
c).访问效率很低;
d).容错性不够;
对于a),我觉得我们应该注意力放在功能及代码的效率上,而不是去追求一个优秀的界面,对于界面,只要能看得过去就行;
对于b),我尽量避免这个的发生,因为它是一个程序员水平的标尺,尽可能的用自己最大努力做出尽可能多的功能是我的目标;
对于c),尽量减少多表连接操作的次数,应该就可以尽可能的提高访问效率了。
对于d),这个是需要大量测试才能发现的,由于时间关系,不可能把所有的情况考虑完全,只能尽可能多地去考虑周全点,尽可能的把所有问题都考虑到。
2.9技术条件方面的可行性
按照目前的技术水平,本系统的功能目标是可以达到的,该系统的功能是可以实现的,在规定的期限内,本系统可以开发完成。
2.10法律方面的可行性
由于这个系统只供学习研究使用,不涉及任何商业行为,因此,该系统从法律方面是可行的。
2.11使用方面的可行性
本图书管理系统是为学校图书馆开发的,从学校图书馆日常流程的角度来看,是可以使用该软件系统的;经过我们的调查,我们发现学校图书馆管理人员是有一定的计算机操作水平的,经过短期的培训,是可以熟练掌握本系统的使用细则的。
2.12结论
由上面的内容我们可以得到如下研究结论:
本图书馆管理系统可以立即开始进行。
3.需求规格说明书
对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。
3.1编写目的
为开发人员,维护人员,客户之间提供共同的协议而创立基础,对图书馆管理系统软件功能的实现做一全面的描述;
本说明书预期读者为客户、业务或需求分析人员、测试人员、文档编写者、项目管理人员;
3.2任务概述
本图书管理系统仅供学习、研究之用,应用目标是让使用该软件的用户感觉轻松、愉快的完成本系统的各个功能模块,给以客观公正的评价。
本软件的灵感来源于本人长期使用本校的图书馆管理系统,对其结构和功能有了一定的了解,所以就产生了自己模仿一个的想法。
由于本软件是模仿其他类似软件开发的,所以只能供学习、研究之用。
|
本软件终端用户应该是图书馆管理人员,各个年龄层次的读者。
对于图书馆管理人员来说,应该对这个软件的流程很熟悉,所以本软件在设计时尽量追求可操作性和简洁大方的人机界面的设计,力求尽量减少用户直接输入性东西,大量使用可选框。
对于读者,本软件将为其设计更加方便的界面,尽量不使用直接输入性信息,追求操作的最简单化。
由于本软件只供学习和研究之用,所以不存在预期使用周期。
3.3需求规定
通过对学校图书馆管理系统的使用和跟有关人员的访谈,我初步认为该系统应该有以下功能约定:
1).每个读者最多在借数目为5;
2).每种书只剩一本时,禁止外借;
3).读者编号是10位数字,初始密码和编号相同,提示读者修改密码;
4).管理员编号是5位数字,初始密码和编号相同,提示管理员修改密码;
5).当读者挂失图书且未缴纳罚款时,禁止该读者借阅续借和挂失其他图书,直到罚款交齐为止;
6).尽可能多的用可选项代替文本框,减少人为输入错误发生的概率;
7).当可选项为编号时,为了方便查阅详细信息,设置按钮显示其详细信息;
8).读者界面应该显示读者当前在借图书的详细信息;
9).为了方便读者查询,应该提供多种查询图书的方式;
10).图书挂失后,读者应该缴纳三倍书价的罚款作为赔偿;
11).修改密码时,应提供原密码作为验证,两次输入新密码;
12).用户登陆时,需根据用户身份,进入各自的主界面;
通过对以上功能约定的分析,我将这个系统分为以下11个模块,它们分别是登陆模块、添加管理员、读者、书籍信息模块、借书模块、还书模块、续借模块、图书挂失模块、挂失处理模块、修改个人密码模块、删除操作记录、读者信息模块,查询图书模块等等。
下面用IPO表分别写出对上述模块的功能要求进行定性和定量的叙述:
1、登陆模块:
模块名称
登陆模块
输入数据
用户编号,密码,级别
处理过程
调用数据库数据进行验证
输出数据
无
表3-1登陆模块IPO表
2、添加管理员与读者模块
模块名称
添加管理员和读者模块
输入数据
新管理员编号和姓名
处理过程
编号唯一性验证,向数据库添加数据
输出数据
无
表3-2添加管理员和读者模块IPO表
3、添加书籍信息模块
模块名称
添加书籍信息模块
输入数据
书条形码号,书名,作者,分类,价格,数目
处理过程
编号唯一性验证,向数据库添加数据
输出数据
无
表3-3添加书籍信息模块IPO表
4、借书模块
模块名称
借书模块
输入数据
读者编号、书条形码号
处理过程
验证编号,向数据库添加数据
输出数据
无
表3-4借书模块IPO表
5、还书模块
模块名称
借书模块
输入数据
读者编号、书条形码号
处理过程
验证编号,修改数据库数据
输出数据
无
表3-5还书模块IPO表
6、续借模块
模块名称
续借模块
输入数据
读者编号、书条形码号
处理过程
验证编号,修改数据库数据
输出数据
无
表3-6续借模块IPO表
7、图书挂失模块
模块名称
图书挂失模块
输入数据
读者编号、书条形码号
处理过程
验证编号,修改数据库数据
输出数据
书名、应缴纳的罚款数额
表3-7图书挂失模块IPO表
8、图书挂失处理模块
模块名称
图书挂失处理模块
输入数据
读者编号
处理过程
查询挂失信息
输出数据
书名,罚款数额
表3-8图书挂失处理模块IPO表
9、修改个人密码模块
模块名称
修改个人密码模块
输入数据
读者编号,旧密码,新密码
处理过程
验证旧密码正确性,修改数据库数据
输出数据
无
表3-9修改个人密码模块IPO表
10、删除操作记录模块
模块名称
删除操作记录模块
输入数据
无
处理过程
删除数据库中操作记录表的信息
输出数据
无
表3-10删除操作记录模块IPO表
11、删除读者信息模块
模块名称
删除读者信息模块
输入数据
读者编号
处理过程
验证能否删除,删除数据库数据
输出数据
无
表3-11删除读者信息模块IPO表
12、查询图书信息模块
模块名称
查询图书信息模块
输入数据
图书编号或分类信息或书名关键字
处理过程
查询图书表
输出数据
相关图书信息
表3-12删除读者信息模块IPO表
3.4性能需求
该软件对输入数据、输出数据精度的要求如下表所示:
数据类型
方向
格式
字符型
输入输出
avcAaaa
浮点型
输入输出
123.65
日期型
输出
YYYY-MM-DD
时间型
输出
HH24:
MM:
SS
表3-13数据精度要求表
本图书管理系统要求响应时间低于1秒,更新处理时间、数据的转换和传送时间短,用户等待时间尽可能为0.
本系统主要任务是访问后台数据库的数据,并做出相应的处理,所以对数据库的容量要求很高,因此建议设置变长的表空间,这样就可以避免出现分配的空间不够而给用户管理带来麻烦的情况。
初始化表空间容量为5M,每次增长的空间为5M。
本系统运行过程中可能出现的问题是数据库故障,处理方法是建议用户每天对数据库中的做一次备份,这样如果数据库出现问题,可以立即还原数据,而不造成大的损失
3.5事件跟踪图
由于这个系统模块很多,如果画出每个模块的事件跟踪图,会占用很大的篇幅,何况很多模块的事件跟踪图大同小异,所以我决定画出正常情况下读者挂失图书模块、管理员新增图书信息模块、超级管理员查看操作记录模块的事件跟踪图。
读者挂失图书模块的事件跟踪图如图3-1所示:
图3-1读者挂失模块的事件跟踪图
管理员新增图书信息模块的事件跟踪图如图3-2所示:
图3-2管理员新增图书信息模块事件跟踪图
超级管理员查看操作记录模块的事件跟踪图如图3-3所示:
图3-3超级管理管理员新增图书信息模块事件跟踪图
4.总体设计说明书
4.1编写目的
总体设计的目的就是回答“概括地说,系统应该如何实现?
”这个问题。
也就是说这个说明书的编写目的也就是告诉程序员和软件设计人员本图书馆管理系统系统的系统结构和软件结构。
本报告的预期读者是:
编写该软件的程序员、其他软件设计人员、系统分析员。
4.2图书管理系统的系统层次结构图
图4-1是该图书管理系统的系统层次结构图。
4.3图书管理系统的软件结构图
图4-2是图书管理系统的软件结构图
5.数据库设计说明书
5.1概念结构设计
本课程设计连接数据库是Oracle9i,用的方式是JDBC桥,因此数据库设计尤为重要;本系统E-R图如
图3-4图书管理系统的系统层次结构图
图3-5图书管理系统的软件结构图
下:
图5-1读者表和书表的E-R图
图5-2管理员表和操作记录表的E-R图
5.2逻辑结构设计
根据上述E-R模型,我们可以得到该系统的数据库应该包括五个表,分别是:
读者信息表、书籍信息表、借阅信息表、管理员表、操作记录表;下面是这五个表的详细属性信息(下划线的是该表的主键):
读者信息表:
读者编号、姓名、密码、当前可借书册数、当前状态
书籍信息表:
书编号、书名、出版社、类别、单价、现有藏书量
借阅信息表:
借阅编号、读者编号、书编号、借书时间、预计还书时间、标识位、还书时间
管理员表:
管理员编号、姓名、密码、级别
操作记录表:
操作时间、发生事件
5.3物理结构设计
一般数据库的物理结构设计包括两个方面:
为关系模式选择存取方法和设计关系、索引等数据库文件的物理存储结构。
本系统没有建立任何索引。
6.详细设计说明书
6.1编写目的
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种设计语言书写的程序。
本说明书是为了给程序员提供出一个程序的“蓝图”,指导他们更好地完成编码任务。
本说明书目标读者是:
软件设计师、所有参与这个项目的编码人员和测试人员。
6.2界面设计
从需求规格说明书中,我们已经知道本系统将使用者分为三类:
超级管理员、一般管理员和读者。
而且他们的权限各不相同,故需要为他们各自设计主界面,本节将用三个参考模型详细说明三个主界面应如何设计。
图6-1是超级管理员主界面设计参考模型。
图6-2是一般管理员主界面设计参考模型。
图6-3是读者主界面设计参考模型。
图6-1超级管理员主界面设计模型
图6-2一般管理员主界面设计模型
图6-3读者主界面设计模型
6.3一点说明
由于本系统模块过多,如果把所有模块的详细设计过程全部写出,实验报告的篇幅将会很长,所以我只写出“添加书的信息”模块详细设计过程,其余模块类似。
6.4“添加书的信息”模块界面设计
从需求规格说明书和数据库设计中,我们可以看出,书表的属性有:
编号、书名、类别、当前在馆册数、价格和出版社;而为了节省字段,我把书名定义为书名和作者;当前在馆册数初始状态下就是藏书量,一般的图书馆一种书籍的藏书量不会超过5本,所以该项可设计为可选项;由于管理员的工作是很忙的,不可能不出现错误,尤其长时间做同一工作,所以出版社那一栏中我建议初始化为“出版社”,按钮设置方面,“提交”和“取消”是不可缺少的,但考虑到管理员的工作需要,我又设置了一个“重置”的按钮,单击这个按钮后,所有输入栏都将会回到刚打开窗口时的状态;因此,其界面设计参考模型如图6-4所示。
图6-4“添加书的信息”模块界面设计参考模型
6.5“添加书的信息”模块参考方法设计
表6-1和表6-2是“添加图书信息”模块参考方法设计
方法名称
checkID
方法返回类型
boolean
方法形参名称
Stringid
前置条件
单击“提交”
SQL语句
select*frombookwhereb_no=id
处理结果
如果没有这个号码,返回false,反之返回true
表6-1“添加图书信息”模块参考方法1
方法名称
insertBook
方法返回类型
boolean
方法形参名称
Bookb
前置条件
所有验证都已完毕,且没有异常
SQL语句
insertintobookvalues(id,name,puname,leibie,price,lsnum)
处理结果
如果插入成功,返回true,失败,返回false
表6-2“添加图书信息”模块参考方法2
7.系统实现
7.1开发环境
中央处理器:
Core(TM)2CPUT5600;
内存:
512MB;
主频:
1.83GHz;
开发平台:
JBuider2006;
数据库:
Oracle9i;
运行平台:
WindowsXP
7.2关键技术
本图书管理系统所使用的关键技术有:
JDBC-ODBC桥,JavaGUI程序设计基本技术,数据库增删改查技术,面向对象程序设计技术(类的继承和派生技术)。
7.3运行结果
7.3.1访问数据库模块
该系统访问数据库使用的是JDBC-ODBC桥的方式,为了节省工作量,需要编写一个类专门用户访问Oracle数据库,这个类的代码如下:
packagelibrarysystem.tools;
importjava.sql.ResultSet;
importjava.sql.*;
publicclassDBClassimplementsDBinterface{
publicDBClass(){
}
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
protectedstaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver";
protectedstaticfinalStringURL="jdbc:
oracle:
thin:
@localhost:
1521:
ora9i";
publicbooleancreateConnect(){
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,"lmsm","1234");
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
publicintgetExecuteUpdate(Stringsql){
try{
stmt=co