图书管理系统设计文档
开发环境
- win10
- IDEA2019
- MAVEN
- TOMCAT9
- Mysql 8.0
- SpringMVC框架
- 前端使用bootstrap渲染
- UML 系统抽象
应用背景
设计一个图书借阅管理系统来进行图书管理,如要借书,学生登录系统并提交想要借阅的书籍。如果要还书,学生登录系统确认还书,系统计算是否逾期,如果逾期则显示罚金。此外,学生可以向图书馆捐赠书籍。
图书管理员可以查询所有学生借阅的书籍情况,也可以修改书籍的信息和增删书籍。
需求分析
设计一个小型的图书管理系统,需要提供以下功能:
- 输入数据进行合法性验证
- 数据库密码字段应该进行加密
- 输入学号,返回学生借阅列表
- 输入【书名】,可以借书
- 点击还书按钮可以还书。
数据库抽象
学生
作为数据库的一类实体,拥有以下三类属性:
- 学号【int类型 主键】
- 姓名【
varchar类型
】 - 密码【
varchar类型
】
在数据库中新建一张学生表管理学生信息。
书籍
作为数据库的一类实体,拥有以下三类属性:
- 书号【int 主键】
- 书名【
varchar
】 - 数量【
varchar
】 - 图书描述【
varchar
】
在数据库中新建一张书籍表管理书籍。
借书表
按照BCNF
的设计原则,消除数据库非主属性对主属性的传递函数依赖和部分函数依赖,需要新建一张借书表保存图书馆的借阅信息。
-
stu_id: 标识借书用户, 外键约束
-
book_id:标识所借图书编号,外键约束
-
timestamp
: 借书时间
系统抽象
以下按照类图、用例图、时序图、活动图、状态图对图书馆进行系统抽象建模,其中每一个模型表示一个不同的视角或者观点。
类图
描述系统中的对象类以及类之间的关系
类图说明:
可以看到这是一个分层的架构:底层的pojo
层负责包装数据库中的数据,DAO(Data Access Object)
层涵盖对数据库的增删查改,service层用来实现业务,controller层接收前端请求并且执行相应的业务。
pojo
层:每一个类对应数据库 的一张表DAO
层: 包含两个接口,用来操作学生和图书。- Service 层:由DAO层组合而成
- controller层:由service层聚合而成。
用例图
描述系统及其环境之间的交互
参与者 | 普通用户、管理员 |
---|---|
描述: | 读者:可以通过网络查询书籍信息和捐赠书籍,读者可以借书、还书。普通管理员:对后台的书库,读者库,资料库进行管理。 |
数据: | 图书的数量、名称、描述;图书的借阅情况 |
触发机制 | 参与者发出请求 |
响应 | 图书管理系统已经更新的确认信息 |
时序图
描述参与者与系统直接按以及系统构建之间的交互
普通用户的操作顺序:
-
读者登陆读者账号:
首先执行login()方法输入用户名和密码,执行checkId()方法校验用户名正确性。输入非法字符则返回登陆失败;若正确,则继续执行checkPassword()方法,若输入密码错误,则返回登陆失败。密码正确则登陆成功。
-
查询入库新书:
读者查询入库新书,可以使用图书名进行查询。
-
借书
读者进行借书操作,可选择借书或图书续借;借书时,读者查询期望图书,使用
gotoBorrowBook()
跳转到borrowBook()
方法生成借书记录。借书成功则生成借书记录成功,若库存不足则返回借书失败; -
还书
还书:读者进行还书操作,分为正常还书和异常还书;正常还书时,读者查询借书记录,选择要还的图书,首先执行
gotoreturn()
方法调用returnBook()
方法删除借书记录,若借书时间正常,则还书成功,生成还书记录。若逾期则需要先缴纳罚金然后才能还书。 -
查询个人借书
读者查询个人信息,首先执行
queryBookByStu()
方法查询个人已借的图书。
图书管理员的操作顺序:
-
新书入库
图书管理员在登录到系统后,选择增加书籍功能,开始执行
gotoAddBook()
方法,该方法会调用New_Book类中的addBook()
实现新书添加操作。 -
旧书淘汰
在前端界面点击删除按钮后台控制器会执行
deleteBook()
方法将书籍删除。 -
图书更新
管理员有权限执行
updateBook()
方法对图书信息进行更新。 -
查看读者订阅
选择查看读者订阅,即执行
queryBookByStu
方法,即得到相应的读者订阅信息。
活动图
描述过程或者数据处理中包含的活动
状态图
描述系统内部如何对外部事件做出响应
、
使用说明
普通用户
系统运行后首先进入用户登录界面,用户登录的界面,未注册的用户需要先进行注册。
注册
点击Register
进入注册页面填写相关信息即可注册,注册成功后返回登录界面。
登录
输入用户名密码点击登录即可,选中remember me
可以记住账号密码。
借书
按书名关键字搜索,选中即可借阅图书。
还书
阅自己的读者信息以及已经借阅的图书,点击归还即可。
管理员用户
管理员用户使用以下id
和pwd
进行登录:
id:17373290
pwd:root
登录
新增书籍
点击图书管理主界面的新增书籍,然后输入书籍的信息即可。
删除书籍
在书籍展示页面点击删除即可删除图书,如果仍有学生借阅该书籍则删除失败 ,请求会被拦截器拦截。
修改书籍信息
在书籍展示页面点击更新即可修改图书信息。
查询学生借书
输入学生学号即可查询该学生借阅的所有图书。
系统部署说明
启动mysql数据库,需要使用管理员权限
启动idea
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RVr1FEf-1585133695077)(https://github.com/Gary11111/SE-Peroject1/blob/master/IMG/%E5%90%AF%E5%8A%A8IDEA.png?raw=true)]
连接数据库:确保user和密码填写正确
启动TOMCAT:需要注意给project structure添加依赖包,MAVEN不会自动添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tF9To983-1585133695079)(https://github.com/Gary11111/SE-Peroject1/blob/master/IMG/%E5%90%AF%E5%8A%A8TMOCAT.png?raw=true)]
代码统计
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Java 18 193 46 844
JSP 9 62 44 558
XML 8 34 42 207
Maven 1 3 0 44
-------------------------------------------------------------------------------
SUM: 36 292 132 1653
-------------------------------------------------------------------------------
SUM: 36 292 132 1653