肥宅钓鱼网
当前位置: 首页 钓鱼百科

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

时间:2023-07-16 作者: 小编 阅读量: 4 栏目名: 钓鱼百科

管理员拥有所有的功能,可查询所有用户的借阅记录,并且可无限借书,且无超期限制。借阅记录页面显示用户是否超期,并且提示用户距离超期时间还有多少时间。前台通过jQuery发送Ajax请求到达BookController的deleteBookByNo方法,controller层调用service层,由service层通过MyBatis做数据库删除操作。前台通过jQuery发送Ajax请求到达BorrowRecordController,controller接收到http请求后,首先查询用户的借阅记录。

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

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

系统功能模块设计

项目结构

功能实现

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

注册

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

修改密码

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

图书查询

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

图书编辑

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

图书删除

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

图书入库

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

图书信息查看

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

借书

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

查询借阅记录

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

还书

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

权限校验

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

项目总结本项目采用LayUICSSSpringBootjQueryMyBatisMavenMySQL架构实现,程序运行结果良好,代码格式工整。

    推荐阅读
  • 左右沙发十大优点(什么样的沙发更实用)

    左右沙发,一直将自己精准定位于沙发专家。此外,左右沙发真皮沙发运用自然浸染水染上色,经过96小时反复3次360度滚筒式自然上色,色彩自然,光泽度更好,并且保障在正常的使用过程中不掉色、不褪色。始终坚持原创设计的左右沙发用行动告诉着选择左右沙发的家庭,左右沙发打造的沙发不仅实用,更是能成为家中点缀般的存在。而左右沙发始终在用自己的行动向用户证明着,左右沙发的产品颜值与实用始终都是并存的。

  • 清炖美味菇怎么做(怎么做清炖美味菇)

    下面更多详细答案一起来看看吧!将猴头菇洗净后切成厚片,再切成长条;莴苣剖开,切段,与猴头菇一同放入沙锅内,加姜片、葱段、水发口蘑、植物油、料酒、精盐,烧沸后改用小火慢炖约30分钟。

  • 怎样的定投方式好(如何选择适合自己操作的定投渠道)

    我定投的股基打8折,因此申购费率就高达1.2%。像我自己现在货币基金就有3个不同基金公司的,今早赎回了一个嘉实的,准备集中管理。自己定投的股基还是在官网操作,放弃了之前用农行网银定投,因为费率偏低,又有优惠政策。小葵准备9月份工资调整后再定投一只股基,上次分享的基金筛选有反应太简单,实在抱歉了。

  • 衣服起球怎么去除 小窍门(衣服总起球太烦人)

    首先准备一个梳子,再抹上一层胶。之后把刀片粘在梳子上,也可以用刮眉刀,制作完成。我们来试试效果,把刀片一面朝下顺着一个方向刮,这样毛球会很容易刮下来,方便简单而且不伤衣服面料。如果你有更好的方法可以下方评论区留言分享,想看更多实用有趣的妙招,记得关注我们下期再见。

  • 部编版二年级上册语文生字组词带拼音(部编版二年级上册语文生字组词带拼音)

    部编版二年级上册语文生字组词带拼音课文1小蝌蚪找妈妈两liăng两个两人两块斤两两边两篇就jiù就是就来成就迁就就业就位哪nă哪里在哪哪些哪边哪天哪个哪样宽kuān宽大宽容宽广宽阔宽心宽裕宽和顶dǐng房顶头顶屋顶顶尖顶楼顶点顶峰睛j。

  • 阳台保温层有用吗(做阳台保温层有没有作用呢)

    我们一起去了解并探讨一下这个问题吧!因为阳台保温,在控制整个室内温度的同时,是相当重要的。顾名思义,阳台保温层的作用就是保温,在整个房屋中,阳台应该是与外界空气接触到最多的地方,夏天如果天气炎热的话,我们打开阳台的窗户就会感觉到一阵阵的热气吹来。冬天寒风也会从窗户缝隙里钻进来。如果室内暖气不好的话,整个屋内都会感到很闷或者是很阴冷。

  • 苦了60后70后女人年轻时婆婆一手遮天是什么歌曲

    歌词片段:苦了60后70后的女人,她们年轻的时候,婆婆一手遮天,老了的时候,儿女一手遮天,她们伺候婆婆老,又伺候儿孙小,除了没人心疼,全身哪都疼。现在“苦命”的女人是没有自己的生活重心的,她一天到晚只知道围着老公孩子灶台转,因为在这样的女人眼里,只有自己的老公孩子,没有自己,这样的女人是最“苦命”的,因为老公和孩子就是她的一切。

  • 2022年青岛高新区小学入学积分怎么算(青岛高新区实验小学积分政策)

    第一批次集体户适龄儿童适龄儿童落户时间按照落入高新区集体户的登记时间计算,具体到月,每满1个月积1分,最高积分72分。适龄儿童父母一方或双方目前在高新区正规就业一年以上,且该一方或双方户籍在高新区的,一次性加10分。

  • 孜然羊排烤箱的制作方法(烤箱烤孜然羊肉的做法分享)

    烤箱烤孜然羊肉的做法分享食材:羊肉800g、大葱50g、姜50g、孜然粉100g把大块的羊肉洗干净,然后切成小块,装在盆里可以适当带一些肥的,烤出来比较香,切得小一些比较容易烤熟把大葱切成葱花,姜切成细丝,都拌入羊肉里,加入。

  • 鸡蛋花象征着什么代表哪些含义(鸡蛋花寓意着什么呢)

    接下来我们就一起去研究一下吧!鸡蛋花象征着什么代表哪些含义鸡蛋花的花语是孕育希望、复活、新生,所以它象征的是一个简单又平凡的人生。鸡蛋花没有什么神奇的传说,也没有什么优雅的气质和高贵的花姿,它的外表非常简单也非常朴素,只有五片花冠是白色,花心的黄色的花瓣组成。鸡蛋花在老挝被誉为国花,在我国的广东省肇庆市也被誉为市花。鸡蛋花不仅可以做成花环,佩戴作为装饰,还可以食用,也可以泡水喝。