图书管理系统报告.docx
《图书管理系统报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统报告.docx(13页珍藏版)》请在冰豆网上搜索。
![图书管理系统报告.docx](https://file1.bdocx.com/fileroot1/2023-6/3/c1da2618-14e9-44e4-a356-1545e5e93362/c1da2618-14e9-44e4-a356-1545e5e933621.gif)
图书管理系统报告
1.需求分析
1.1需求说明
图书管理系统是目前一种典型的WEB应用,涵盖了进行WEB应用程序设计的多种基本技能。
图书管理系统通常分为两部分:
用户端和后台管理端。
前者用于用户借阅图书,后者主要用于对用户及图书进行维护。
图书管理系统面向学校、图书馆等部门的书籍管理、浏览和发布系统,通过将海量资源、信息管理和网络发布系统的进行有机结合,不仅能够充分满足学生对知识的渴求,充实学校的教育资源,而且不受时间和空间限制,让学生随时随地地获取知识。
所以图书馆管理系统的应用要达到能快速查找到书籍的索书号,能查询图书的借阅情况等目的。
能够方便读者借阅图书。
1.2需求功能分析
(1)图书管理:
记录每个图书的基本信息,包括书名、作者、购置日期、单价等;
(2)借阅管理:
能完成图书的借阅管理,以及图书状态的变更;
(3)读者管理:
读者增减、查询,记录读者所在的部门等信息;实现管理员及其帐号分配等;
(4)查询功能:
能在图书页查看该图书所有的被借阅历史;能在读者页查看该读者所有的借阅历史以及当前需要所借书目信息;
(5)催还功能:
能统计当前需要催还的图书书目;
(6)登陆与安全:
页面有不同的权限,一般页面所有人可以访问,管理员页面需要有管理员权限才能访问;
2.系统设计
2.1权限设计
本系统有管理员和用户两种权限,各自可执行的操作不同。
使用者权限通过注册和登陆实现。
(1)管理员
管理员主要负责图书的添加、删除、编辑操作,以及用户的添加、删除操作。
(2)普通用户
普通用户可检索并查看图书基本信息及借阅记录。
(3)注册用户
注册用户除了可使用普通用户功能外,还可借阅、归还书籍,并查看自己的借阅记录。
2.2
功能模块设计
2.2.1模块关系图
2.2.2功能模块设计
(1)普通用户/读者检索图书
普通用户与注册用户(亦称为读者)都有各自的SearchBook.jsp,该页包含通过书名、作者查询书籍,以及显示所有符合条件的书目。
用户通过点击列出书目相应的链接BookDetail.jsp可查看书籍的基本信息与其借阅历史。
注册用户在BookDetail.jsp中有借阅书籍按钮,可供注册用户借阅书籍。
(2)读者登录&退出
Index.jsp中含有读者登录UserLogin.jsp的链接。
而在UserIndex.jsp中含有读者注销的链接。
(3)读者修改个人信息
PersonalInfo.jsp显示部分可修改已存在信息,注册用户可在相应栏更改个人信息。
(4)读者借阅图书
借阅书籍按钮在BookDetail.jsp中。
(5)读者归还图书
归还图书按钮在ShowRecord.jsp中
(6)查看读者借阅历史
注册用户可在ShowRecord.jsp中查看所有自己借阅的历史情况。
此外,ShowRecord.jsp中操作栏含有未归还书籍的归还按钮,注册用户可点击还书。
(7)管理员登录&退出
Index.jsp中含有管理员登录AdminLogin.jsp的链接。
而在AdminIndex.jsp中含有管理员注销的链接。
(8)管理员编辑用户(增删查)
在AdminIndex.jsp中点击UserList.jsp,管理员可查看所有注册用户的基本信息,并可增添、删除注册用户。
(9)管理员编辑图书(增删改查)
在AdminIndex.jsp中点击BookList.jsp,管理员可查看所有馆中已存在的书目的基本信息,并可对其进行增添、删除、修改。
(10)管理员查看需要催还书目
在AdminIndex.jsp中点击ShowOvertimeBook.jsp,管理员可查看所有借阅超过30天的借阅情况,便于管理员通知相应用户还书。
2.3用例图
2.4组件图
组件图–普通用户/读者检索图书
组件图–读者登录&退出
组件图–读者修改个人信息
组件图–借阅图书
组件图–归还图书
组件图–查看读者借阅历史
组件图–管理员登录&退出
组件图–管理员编辑用户(增删查)
组件图–管理员编辑图书(增删改查)
组件图–查看需要催还书目
3.数据库设计
3.1表
图书book(item)
注册用户user
管理员admin
借阅记录lend
4.系统实现
4.1优化设计部分
1)在Context.xml中编写JDBC内容,含用户名,密码,数据库名称等信息。
这样,不用再重复此段无效代码。
name="jdbc/BMDS"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
password="root"
url="jdbc:
mysql:
//localhost:
3306/bookmanagement"
maxActive="4"/>
2)用户查看自己借阅记录页面ShowRecord.jsp含有还书链接。
后端实现还书需要根据其借阅号以及书号分别修改借阅情况表与书目表的借阅、归还情况字段,即此时需要传递多个值。
iftest="${!
element.isReturn}">
urlvalue='/user/returnBook.action?
lid=${element.lid}&bid=${element.bid}'/>">
if>
3)在BookList.jsp点击“修改”按钮,进入DispBookAction.java已便修改时显示原始信息。
在后端实现修改书目部分,而后调用ModifyBookAction.java。
此时若该Action出错,则会返回ModifyBook.jsp,但此过程并未经过DispBookAction,也就是说显示内容丢失。
解决方案如下:
publicvoidsetId(intid){
this.id=id;
try{
BookServicebookSvc=BookService.getInstance();
Itemitem=bookSvc.getItem(id);
ActionContextac=ActionContext.getContext();
HttpServletRequestrequest=(HttpServletRequest)ac.get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("item",item);
}catch(BMExceptione){
addActionError(e.getMessage());
}
}
4)本系统涉及多个列表显示,问题在于当数据库中没有相关数据时,列表表头始终会显示出来。
利用c标签中的EL表达式则可解决这一问题。
iftest="${notemptylist}">
编号 |
forEachvar="element"items="${list}">
<%=i++%> |
forEach>
if>
iftest="${emptylist}">
目前暂无需要催还的书目
if>
4.2设计分析
(1)本系统后端实现部分使用的是Struts2框架。
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
通俗来说,Struts2结构为:
Action–Service–DAO
(2)Web.xml中编写Struts2的过滤器,目的是使系统java代码部分全部使用Struts框架。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
(3)Web.xml编写权限的过滤器,方便限制不同权限使用者使用不同功能
UserFilter
filter.UserFilter
UserFilter
/user/*
AdminFilter
filter.AdminFilter
AdminFilter
/admin/*
5.分析与小结
5.1知识点总结
1)Mysql的bool与tinyint
(1)
mysql是不支持bool类型的,所以,当把一个数据设置成bool类型的时候,数据库会自动转换成tinyint
(1)的数据类型,其实这个就是变相的bool。
默认值也就是1,0两种,分别对应了bool的true和false
2)数据库中,字段名不可与数据库关键字冲突。
例如:
return
3)DAO与数据库对应
4)Boolean类型变量的getter是isXxx,而不是getXxx
isBoolean()方法优先于getBoolean()方法
5)校验器分为字段校验和非字段校验
6)maxInclusive:
定义数值的上限。
所允许的值必须小于或等于此值。
maxExclusive:
定义数值的上限。
所允许的值必须小于此值。
7)在input标签中添加step属性,此例子中将step设为”0.01”,即可以输入含两位小数的数字。
(仅输入含一位小数或整数亦可)
即step属性功能为控制合法数字间隔
8)Action导包使用importjava.util.Date;而非Struts的Date
9)注释验证器通过get方法进行验证
10)只要不写required验证器就允许为空;
之后其余验证器是否验证根据短路校验(short-circuit)决定
11)frameset与body不可共用
FRAMESET元素是FRAME元素的容器。
HTML文档可包含FRAMESET元素或BODY元素之一,而不能同时包含两者。
12)if>没有else,当需要使用else的时候,可以用choose>来取代结构。
或使用
if>,但s标签与c标签区别不小,有些功能s标签中并没有提供
5.2尚待改进的地方
1)将Book与Item实体类分开,亦即合并同种书目,在普通用户及注册用户可见页面上仅显示其数量,而不全部显示
2)设置添加图书的购买日期不可超过当前实际日期
3)图书显示的available字段内容以及借阅情况的isReturn字段内容在jsp中利用c标签及EL表达式将其显示为中国形式
4)补全所有在后端抛出异常信息在jsp页面中的错误提示
5)使用bootstrap模板,使前端页面更加美观
6)补充其他功能。
例如:
预约书籍等
6.参考文献
[1]北京比特塞威斯图书服务事业部等.《JavaWeb应用程序设计》(第2版).机械工业出版社.2009年
[2](美)布朗.(美)戴维斯.斯坦利克.《Struts2实战》.人民邮电出版社.2010年2月
7.附录:
项目开发进度安排
第1天
需求分析、数据库设计
第2天
编写基本框架
第3天
编写权限部分及一部分功能代码
第4天
编写管理员部分代码
第5天
编写用户部分代码
第6天
优化功能代码
第7天
UI设计
第8天
优化页面、报告编写
第9天
答辩
第10天
提交报告