基于SpringBoot从0到1编写一个图书管理系统(附源码)

项目源码地址: https://muzidong.com/productDetail/8ff44c71db6b4b6aa30c71e646b1c557

需求分析
基于SSM MySql LayUI的图书管理系统。
该系统应包含图书信息的添加,删除,修改,查询,上传图书封面、借书,还书功能,用户层面的查看个人 信息,以及登录,注销,修改用户密码功能,以及查询借阅记录功能。
该系统区分三种不同的角色:管理员、教师、学生。
管理员拥有所有的功能,可查询所有用户的借阅记录,并且可无限借书,且无超期限制。
教师拥有图书查询,借书,还书,查询个人借阅记录,并且拥有用户层面的所有功能,最多可借10本书,超期天数为10天。
学生拥有图书查询,借书,还书,查询个人借阅记录,并且拥有用户层面的所有功能,最多可借5本书,超期天数为5天。
用户登录后可访问有权限的资源,若未登录,重定向到登录页面。
借阅记录页面显示用户是否超期,并且提示用户距离超期时间还有多少时间。
技术选型:前台 LayUI jQuery CSS
后台 SpringBoot MyBatis MySQL
权限控制 Shiro

系统功能模块设计

基于SpringBoot从0到1编写一个图书管理系统(附源码)

项目结构

基于SpringBoot从0到1编写一个图书管理系统(附源码)

功能实现

基于SpringBoot从0到1编写一个图书管理系统(附源码)

输入用户名密码,系统通过shiro进行身份验证后,方可登录成功进入系统。有其他请求进入系统后,会被Shiro拦截,判断是否已经登录,如果已经登录,则允许继续访问,否则,重定向到登录页面,核心代码见下图:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

注册

基于SpringBoot从0到1编写一个图书管理系统(附源码)

用户填写注册信息,选择相应的角色(本系统有三种角色:管理员、教师、学生),即可注册成功,插入用户表与用户角色对应关系表
注销

基于SpringBoot从0到1编写一个图书管理系统(附源码)

修改密码

基于SpringBoot从0到1编写一个图书管理系统(附源码)

用户登录成功后,方可修改密码

图书查询

基于SpringBoot从0到1编写一个图书管理系统(附源码)

提供两个查询条件选择:图书编号、图书名称,均精确查找
前台页面使用jQuery发送Ajax请求,请求到达BookController后,由BookController去调用service层,然后service层通过MyBatis去做数据库查询操作,返回给前台,核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

图书编辑

基于SpringBoot从0到1编写一个图书管理系统(附源码)

只有管理员角色才拥有此操作权限。
前台通过jQuery发送Ajax请求到达BookController的updateBook方法,首先校验图书编号、名称、出版社字段信息是否为空,校验通过后,调用service的更新方法,由service层通过MyBatis做数据库更新操作。核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

图书删除

基于SpringBoot从0到1编写一个图书管理系统(附源码)

只有管理员角色才拥有此操作权限。
前台通过jQuery发送Ajax请求到达BookController的deleteBookByNo方法,controller层调用service层,由service层通过MyBatis做数据库删除操作。核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

图书入库

基于SpringBoot从0到1编写一个图书管理系统(附源码)

只有管理员角色才拥有此操作权限。
前台通过jQuery发送Ajax请求到达BookController,字段进行为空校验后,验证编码对否已存在,如果已存在,则不允许新增,保证编码的唯一性,如果不存在,则调用service层的insert方法,service层通过MyBatis做数据库插入操作。插入成功后,将上传的封面图片保存。核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

图书信息查看

基于SpringBoot从0到1编写一个图书管理系统(附源码)

此功能不涉及后台操作,将行数据展示到弹出层即可。

借书

基于SpringBoot从0到1编写一个图书管理系统(附源码)

前台通过jQuery发送Ajax请求到达BorrowController,BorrowController接收到http请求后,首先查询图书的当前库存数量,若库存不足,返回“库存不足,无法借书”;如果库存充足,接着查询登录人的借书未还数量,如果已经达到最大借书数量(管理员没有限制,教师最大数量为10,学生为5),则返回前台“已达到最大借书数量,不允许继续借书”;如果条件都满足后:
开启数据库事务,做以下两个操作,两个操作都成功后,将事务提交,如果有一个失败,则将该事务回滚,保证数据的一致性:
1、更新图书库存,通过MyBatis操作book表,将该书的库存-1;
2、新增借阅记录,通过MyBatis操作borrow_recod表,插入一条借阅记录
核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

查询借阅记录

基于SpringBoot从0到1编写一个图书管理系统(附源码)

管理员角色可以查看所有用户的借阅记录,其他角色只能查询本人的借阅记录。
前台通过jQuery发送Ajax请求到达BorrowRecordController,controller接收到http请求后,首先查询用户的借阅记录。查询到借阅记录集合后,做遍历操作,计算每条借阅记录距离超期时刻的时间间隔,并且计算该借阅记录是否超期(管理员没有超期限制,教师最长借书天数为10,学生为5),数据计算完成后,由BorrowRecordController返回前台。核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

还书

基于SpringBoot从0到1编写一个图书管理系统(附源码)

用户点击还书按钮
首先判断该借阅记录是否有还书时间,若有,提示前台“该书已还”。
前台jQuery发送ajax请求到BorrowRecordController,controller接收到用户请求后,首先查询当前登录人是否为该借阅记录的借书人,如果不是,则返回前台“不允许替他人还书”;条件满足后,开始事务,做以下两个操作:
1、更新图书库存,通过MyBatis操作book表做update操作,将本书的库存 1
2、更新借阅记录还书时间,通过MyBatis操作borrow_record表做update操作,将该借阅记录的还书时间更新为当前时间
这两个操作全部都正确执行后,提交事务,否则将事务回滚,保证数据的一致性
核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

权限校验

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

本系统权限校验通过Shiro权限框架实现,分为操作权限和页面权限。
非管理员权限无法查看图书管理页面,故无法做图书的新增,修改,删除操作
用户登录后,将登陆人所属角色的所有操作权限交由Shiro管理,每一个请求进来后,都会由Shiro进行鉴权,鉴权通过后,方可处理该请求。
系统菜单通过数据库进行配置,用户登录后,将登录人所属角色所拥有的的菜单权限查询出来,并展示再前台页面。
核心代码如下:

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

基于SpringBoot从0到1编写一个图书管理系统(附源码)

项目总结
本项目采用LayUI CSS SpringBoot jQuery MyBatis Maven MySQL架构实现,程序运行结果良好,代码格式工整。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年12月14日 下午3:44
下一篇 2022年12月14日 下午3:58

相关推荐

  • 邵阳县市场监督管理局:“党建+”工程 提升基层战斗堡垒作用(市场监督管理局党建工作要点)

    红网时刻新闻5月22日讯(通讯员 王蓁)“真的太谢谢你们了,最近农活真的太多了,你们真的是帮了我大忙了。”这是邵阳县市场监督管理局在全县市场监管系统内内开展“党建 ”工程、着力提升…

    科研百科 2024年5月31日
    88
  • 对党建工作的感悟(对党建工作的感悟和思考)

    近年来,全国党的建设研究会坚持正确政治方向,围绕党的建设重大理论和实际问题开展研究,为推进新时代党的建设作出了重要贡献。结合工作实际,有以下几点感悟: 一是需要持续强化党的创新理论…

    科研百科 2023年9月23日
    140
  • excel 项目进度管理

    项目进度管理是项目管理中的重要一环,它可以帮助项目经理和团队成员更好地跟踪项目的进展情况,确保项目按时完成并达到预期目标。在这篇文章中,我们将介绍如何使用Excel来实施项目进度管…

    科研百科 2024年8月15日
    48
  • 河北项目管理

    河北项目管理:挑战与机遇 河北项目管理是当前项目管理领域的一个重要话题。作为河北省的一个重要经济板块,河北项目管理面临着许多挑战,但同时也充满了机遇。本文将从河北项目管理的基本概念…

    科研百科 2024年7月14日
    46
  • 科技项目管理系统入口

    科技项目管理系统入口 随着科技行业的快速发展,科技项目管理系统已经成为了项目管理中不可或缺的一部分。科技项目管理系统可以帮助项目经理更好地管理项目进度、资源、风险等方面,提高项目管…

    科研百科 2024年12月26日
    1
  • IPO案例1785个:内控制度(15)合同内控管理丨合同履行(合同内控制度管理流程)

    #实话实说# (一)合同档案管理 1签署的任何合同,gs至少留存三份原件,分别交行政部一份,业务部门一份,档案室一份。如相关部门或人员另有需要,请审核合同时明示。 2合同的档案管理…

    科研百科 2024年1月18日
    118
  • 买科研项目(花钱参加的科研项目有用吗)

    花钱参加科研项目是否值得,是一个值得探讨的话题。在当今社会,科技的发展已经成为推动社会进步的重要力量。因此,许多科学家和研究人员致力于探索新的技术和方法,以解决当前面临的问题。 花…

    科研百科 2024年4月9日
    78
  • 条码库存软件(仓储条码管理软件)

    仓储条码管理软件是一种用于管理仓储物品的自动化软件,能够帮助企业更高效地管理库存,减少人工错误,提高准确性,并提高生产效率。 条码技术是一种用于识别和跟踪物品的技术,通过将物品的编…

    科研百科 2024年8月30日
    30
  • 协同办公行业

    协同办公行业概述 随着信息技术的不断发展,协同办公行业逐渐成为了一个快速发展的行业。协同办公行业是指通过计算机网络技术,实现多人多人同时在线协同工作的一种工作方式。随着企业规模的扩…

    科研百科 2025年1月5日
    0
  • 太到位了,专家谈工程项目进度管理存在的问题及对策,值得推荐

    工程项目进度管理是指对工程项目各阶段的工作内容、工作程序、持续时间和衔接关系编制进度计划,并将该计划付诸实施,在实施的过程中经常检查实际进度是否按计划要求进行,对出现的偏差分析原因…

    科研百科 2022年10月9日
    221