图书馆管理信息系统基于JAVA和MySQL.docx
《图书馆管理信息系统基于JAVA和MySQL.docx》由会员分享,可在线阅读,更多相关《图书馆管理信息系统基于JAVA和MySQL.docx(14页珍藏版)》请在冰豆网上搜索。
图书馆管理信息系统基于JAVA和MySQL
图书馆管理系统设计与实现
一、需求分析
1.1需求概述
图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息。
现有的人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。
因此需要对书籍资源、读者资源、借书信息、还书信息、挂失信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。
一个图书馆有若干个图书管理员,每个管理员用唯一的编号标识,并作为其身份验证的用户名,管理员的其他信息主要包括密码、姓名等。
一个图书馆有若干书籍由国标书号(ISBN)惟一标识。
书籍需要记录的其他主要信息有书名、作者、出版社、出版年限、价格、图书类型、索书号、馆藏位置等。
在从图书馆借阅图书之前,读者必须进行有效的注册,包括读者编号、类型、姓名、性别、登陆密码等。
读者编号惟一标识读者身份。
可以将读者加入黑名单,加入黑名单的读者不能再次借书。
读者归还图书后需保留借阅历史记录,其中包括的信息有图书编号、读者编号、借阅日期、归还日期等。
图书丢失须进行挂失登记,将原有借阅记录状态改为已挂失并且添加丢失日期等信息。
1.2功能分析
※用户信息管理(用户信息包括管理员及读者信息)
添加用户信息
删除用户信息
修改用户信息
查询用户信息
修改用户密码
※图书信息管理
添加图书信息
删除图书信息
修改图书信息
查询图书信息
※图书借阅管理
添加借阅信息
修改借阅信息
查询借阅信息
图书挂失登记
1.3开发平台
开发工具:
eclipse+JDK1.6+Struts2.3+Spring3.2+MyBatis3.2
开发语言:
Java、Python
数据库:
MySQL5.0
系统环境:
Windows7+Tomcat7
1.4数据库需求分析
※用户信息:
用户编号、账号、密码、姓名、性别、员工号/学号、年级、用户类型、用户状态
※图书信息:
图书编号、书名、副标题、原书名、封面、作者、译者、出版社、页数、价格、装帧、馆藏位置、出版日期、目录、作者简介、图书简介、入库日期、豆瓣评分、图书状态
※借阅信息:
操作员编号、读者编号、图书编号、借阅日期、借阅天数、归还日期、挂失日期、备注、借阅状态
二、数据库逻辑设计
2.1ER图
图1图书馆管理系统ER模型图
上图是图书馆管理系统的概念模型的ER图,涉及到的实体集有:
管理员实体集:
具有属性管理员编号、账号、密码、员工号、姓名、性别、状态。
读者实体集:
具有属性读者编号、账号、密码、学号、姓名、性别、状态。
图书实体集:
具有属性图书编号、名称、副标题、原名、作者、译者、ISBN、价格、页数、装帧、馆藏位置、出版社、出版日期、作者简介、目录、图书简介、封面、入库日期、状态。
借阅记录实体集:
具有属性借阅编号、操作者(管理员)、借阅者(读者)、所借图书、借阅日期、借阅天数、归还日期、丢失日期、备注、状态。
一个读者可以借阅多本图书,一个操作员可以登记多个图书借阅记录,管理员、读者及图书是M:
N:
P多对多的关系。
为简化数据库设计,不在重复设置丢失表,读者丢失图书时,借阅记录转化为丢失记录,借阅记录中状态设为2的为丢失记录。
同理将管理员表和读者表合二为一,增加用户类型字段,用户类型为0表示读者信息,用户类型为1表示管理员信息。
2.2将E-R模型转换为关系模型
(1)管理员实体集可以转换为关系
管理员(编号,账号,密码,员工号,姓名,性别,状态)
(2)读者实体集可以转换为关系
读者(编号、账号、密码、学号、姓名、性别、状态)
(3)图书实体集可以转换为关系
图书(编号、名称、副标题、原名、作者、译者、ISBN、价格、页数、装帧、馆藏位置、出版社、出版日期、作者简介、目录、图书简介、封面、入库日期、状态)
(4)借阅实体集可以转换为关系
借阅记录(编号、操作者、借阅者、所借图书、借阅日期、借阅天数、归还日期、丢失日期、备注、状态)
2.2将关系模型转化为表结构
2.2.1用户信息表
⏹表名:
user
⏹功能描述:
记录管理员、读者信息
⏹字段说明:
字段名称
类型
P
F
M
说明
userid
int(11)
√
√
用户编号,自增
username
varchar(30)
√
账号
password
varchar(30)
√
密码
realname
varchar(30)
√
姓名
sex
varchar(4)
√
性别
employeeid
varchar(30)
√
员工号/学号
maxnum
int(11)
√
最大可借数目(预留)
borrowednum
int(11)
√
已借数目(预留)
grade
varchar(50)
年级
usertype
int(11)
√
类型,0读者;1管理员
status
int(11)
√
状态,0正常;1失效
2.2.1图书信息表
⏹表名:
book
⏹功能描述:
记录图书信息
⏹字段说明:
字段名称
类型
P
F
M
说明
bookid
int(11)
√
√
图书编号,自增
bookname
varchar(255)
√
书名
subheading
varchar(512)
副标题
oldname
varchar(512)
原名
thumb
varchar(255)
封面
bookconcern
varchar(255)
出版社
pages
varchar(40)
页数
price
varchar(40)
价格
bound
varchar(40)
装帧
author
varchar(255)
作者
translator
varchar(255)
译者
isbn
varchar(40)
√
ISBN号
pubdate
varchar(20)
√
发布年份
score
decimal(4)
评分
catalog
text(0)
authorintro
text(0)
作者简介
description
text(0)
简介
location
varchar(100)
√
馆藏位置
adddate
date(0)
√
入库日期
status
int(11)
√
状态:
0正常可借1已借出2已挂失
2.2.1借阅登记表
⏹表名:
borrow
⏹功能描述:
记录图书借阅、图书归还、图书挂失等信息
⏹字段说明:
字段名称
类型
P
F
M
说明
borrowid
int(11)
√
√
借阅流水号,自增
borrowerid
int(11)
√
√
借阅者编号(外键user表)
bookid
int(11)
√
√
图书编号(外键book表)
operatorid
int(11)
√
√
操作员编号(外键user表)
borrowdate
date
√
借阅日期
borrowdays
int(11)
√
借阅天数
returndate
date
归还日期
losedate
date
丢失日期
remark
text
备注
status
int(11)
√
状态,0未归还1已归还2已挂失
三、数据库物理设计
3.1索引
表
建立索引的列
原因
user
userid
主键,搜索条件
username
搜索条件
employeeid
搜索条件
book
bookid
主键,搜索条件
isbn
搜索条件
status
搜索条件
borrow
borrowid
主键,搜索条件
operatorid
外键,搜索条件
borrowerid
外键,搜索条件
bookid
外键,搜索条件
status
搜索条件
3.2视图
1)该系统需经常查询某个读者当前借阅书刊的详细信息,为简化多表查询,故建立视图view_borrow,该视图定义如下:
CREATEviewview_borrow
as
select`borrow`.`borrowid`AS`borrowid`,`borrow`.`borrowerid`AS`borrowerid`,`borrow`.`bookid`AS`bookid`,`borrow`.`operatorid`AS`operatorid`,`borrow`.`borrowdate`AS`borrowdate`,`borrow`.`borrowdays`AS`borrowdays`,`borrow`.`returndate`AS`returndate`,`borrow`.`remark`AS`remark`,`borrow`.`status`AS`status`,`book`.`bookname`AS`bookname`,`book`.`isbn`AS`isbn`,`borrower`.`realname`AS`borrowername`,`borrower`.`employeeid`AS`employeeid`,`operator`.`realname`AS`operatorname`from(((`borrow`join`book`)join`user``borrower`)join`user``operator`)where((`borrow`.`bookid`=`book`.`bookid`)and(`borrow`.`borrowerid`=`borrower`.`userid`)and(`borrow`.`operatorid`=`operator`.`userid`))
3.3安全机制
1)系统安全
并没有给每个数据库用户分配一个认证标识,均使用超级用户root连接数据库,数据库用户所能做的操作在应用程序中加以控制,来保证系统安全。
2)数据安全
基本上没有用户对基本表和视图操作的权限控制,这些均在应用程序中加以控制,来保证数据安全。
四、应用程序设计
4.1管理员功能模块
图2图书馆管理系统功能模块
4.1.1系统管理模块
用户查询,根据用户编号、账号、姓名、工号、学号、类型、状态检索用户详细信息;
添加新用户时,系统自动生成用户编号,输入用户的其他相关信息,提交即可添加新用户。
删除读者时,若该读者存在借阅图书未还的情况,则系统提示暂无法删除。
4.1.2借阅管理模块。
功能包括检索借书登记,还书登记和书刊挂失登记。
1)借书登记
读者借阅图书时,管理员输入读者编号,可查询读者的详细信息;输入要借阅书刊的编号或者ISBN号,可核实该书的详细信息;点击提交借书请求。
结束成功后,该读者当前借阅信息将添加新借阅书刊,令管理员方便的核实提交是否成功。
以下几种情况任意一种情况发生,读者都暂时无法借书:
①该读者当前借阅量已达最大借阅量;
②该读者有借阅图书已超期未归还;
③该读者被加入黑名单的。
2)还书登记
读者归还书刊时,只需输入书刊号,可查询该书的借阅信息,点击还书提交还书请求填写相关的信息后提交,书刊成功归还,其他读者可以借阅。
3)书刊挂失
借阅书刊遗失,读者可进行挂失。
挂失操作时,只需输入读者编号,即可查询读者当前借阅书刊的详细信息,每条记录后附有挂失一栏,读者确认挂失某本书刊,管理员只需点击挂失一栏,填写相关信息后提交,挂失成功,借阅记录状态改为已挂失,图书状态改为已挂失,其他读者不可借阅此书。
4.1.3图书管理模块
功能包括检索图书详细信息,添加图书信息,修改图书信息,删除图书信息。
图书检索,根据图书编号,ISBN,图书名称、图书作者、馆藏位置、发行日期进行模糊查询,输入检索条件后单击检索即可检索得到相应图书详细信息。
该信息还包括图书馆藏位置、是否可借的情况。
添加新书时,输入书刊的相关信息,为了减少图书编目输入的复杂度,系统提供根据ISBN号从互联网豆瓣读书获取图书信息功能,大大减少管理员输入图书详细信息时的效率。
删除指定书刊时,输入书号可查询书刊详细信息,若当前书刊有外借副本,则系统提示暂无法删除;点击提交删除请求,则删除该书刊的相关信息。
4.2.读者功能模块
4.2.1读者信息管理模块
读者可查看个人信息,并修改个人密码。
4.2.2图书检索模块
读者可以根据图书编号,ISBN,图书名称、图书作者、馆藏位置、发行日期进行模糊查询,输入检索条件后单击检索即可检索得到相应图书详细信息。
该信息还包括图书馆藏位置、是否可借的情况。
读者检索到想要借阅的图书信息后记录图书编号、ISBN等信息,到图书馆前台提供以上信息进行图书借阅。
4.3界面设计
界面设计风格简单明了,朴实自然,便于操作。
尽可能列表直接显示查询结果,避免数据的输入,方便用户使用。
图3图书入库界面
图4图书管理界面
图5图书借阅管理界面
图6图书借阅登记界面
图7用户管理界面
五、测试和运行
分别用管理员用户root,密码admin和读者用户sunshine,密码123456登录图书馆管理信息系统。
登录成功后,分别进入管理员业务界面和读者我的图书馆界面。
通过python写的爬虫工具从豆瓣读书抓取了近5000条图书信息作为初始化测试数据。
在图书检索界面通过输入ISBN等检索条件进行检索,系统响应时间在200ms,响应时间非常快。
如下图:
通过root、sunshine账号对图书借阅、归还、挂失进行了测试,流程均可以跑通,对于黑名单用户、已挂失图书均做了相应的逻辑处理。
六、总结
在这次数据库系统原理大作业的事件过程中,确实有很多收获。
通过这次课程设计把上学期的java课程学到的东西也应用到了实践过程之中。
还学习使用了java流行的框架结构struts、spring、mybatis等。
虽然只是一个简单的DEMO系统,有些系统逻辑尚有欠缺,并不能实际应用,但是从数据库的设计到编码实现,这个过程中还是学到了不少东西。
另外从豆瓣读书获取图书详细信息是此图书馆管理系统的一大创新,目前市场上流行的图书馆管理系统在成千上万图书集中入库时需要N多编辑人员对图书信息进行人工录入,费时费力而且录入信息不一定准确。
随着豆瓣读书、当当网、卓越网的流行,互联网上存在着大量的图书详细信息,图书入库时从这些互联网上根据ISBN直接获取图书详细信息供录入人员参考将会大大减少图书信息录入的工作量,大大提高录入人员的工作效率,大大增强图书信息录入的准确度。
但是由于本学期课程较多,时间较紧,此图书馆管理系统的某些逻辑设计的非常简单,比如每种图书都需要有副本管理,每个副本都有唯一条码确定,读者借书时只需要提供条码号即可;图书挂失后应该会有相应的赔偿,如果没有赔偿则读者的信誉度降低不能再次借阅图书;每个读者都应该有相应的借阅图书数目的限制,超过此数目后将不能借书;读者没有图书归还超限以后将不能借书等等。
我们认为此次数据库原理大作业的实践是对我们下学期毕业设计及毕业论文的编写的一个热身,对我们高质量的顺利的完成毕业设计产生了非常积极的作用,借此机会感谢杨老师的悉心教导!