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

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

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

管理员拥有所有的功能,可查询所有用户的借阅记录,并且可无限借书,且无超期限制。借阅记录页面显示用户是否超期,并且提示用户距离超期时间还有多少时间。前台通过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架构实现,程序运行结果良好,代码格式工整。

    推荐阅读
  • 敞篷车的车身刚性很差吗 敞篷车安全性能差吗

    敞篷车上面没有东西用来增强车身刚性,但是硬顶车上面有车顶来加强车身刚性。那大家可以想象一下连接一个木板更加牢固还是连接两个木板更加牢固,结果很明显,连接两个木板的是更加牢固的。如果车身刚性太差,那会影响车子的安全性,也会影响车子的操控性。有些汽车的敞篷版车型与硬顶版车型差不多,这是因为这种车车身刚性很强,根本不需要加强。

  • 竹席如何清洗(如何清洗竹席)

    我们一起去了解并探讨一下这个问题吧!竹席如何清洗先把竹席摊开,建议靠着墙立着,这样会比较好清洗。先干的刷子刷一下席子,然后用温水擦洗竹席的两面,可以在这边家一些消毒水。不能暴晒,这样会把席经晒断,席子就容易散开。然后准备好一颗樟脑丸,粉碎之后撒在阴干好的竹席上。把洒好樟脑丸的席子卷好,然后装到席套里。找个干燥阴凉的地方放好就可以啦。

  • 香肠是煮蒸烤哪种最好吃(想吃香肠不用买)

    #我的早餐日记#自制鸡肉肠前几天,我的朋友对我说:“用鸡胸肉做了很多肉丸,一周早餐都可以有肉类了。”我朋友说用鸡胸肉的蛋白质含量高,脂肪含量少,可以孩子补充营养很合适。这次我用了鸡胸肉、虾仁、鸡蛋制作香肠,因为有虾仁吃起来味道很鲜美。第二步鸡胸肉切小块,用柠檬汁、料酒腌制片刻,目的是为了去肉臊味。第三步把鸡胸肉块、虾仁、土豆、鸡蛋放入破壁机,用破壁机搅拌成细腻的鸡肉糜。

  • win10(找不到网络打印机怎么办(win10系统找不到网络打印机的应对办法)

    下面希望有你要的答案,我们一起来看看吧!win10首先,在开始选项的搜索栏中搜索“控制面板”。选择完网络和Internet后后,再点击“网络和共享中心”#f#。然后选择“更改适配器设置”。滑动鼠标选择“Internet协议版本4”。在出现的页面中点击“启动LMHOSTS查找”再点击“默认”。最后返回查看打印机就是可以显示的了。

  • 人类历史上的零售史(一代商业奇才谢幕)

    一代商业奇才谢幕黄明端这次是真的走了!12月2日,大润发年会上,一手创办并掌舵大润发23年之久的黄明端正式离职,接替他的是阿里集团的林小海因为知道了这一天对黄明端有特殊意义,大润发年会的现金抽奖环节没有之前热烈,黄明。

  • 粉浆饭的做法(怎样做粉浆饭)

    粉浆饭的做法绿豆制作粉皮粉条后的余汁、小米、黄豆、花生米、白菜、猪油、香油、香菜。粉浆饭(4张),要想做好粉浆饭可不容易,一定要下功夫,而且一定要有耐心,因为粉浆内含有淀粉要是沉到锅底糊了锅,味道就不好了。所以粉浆烧开锅后,要一刻不停的用勺子搅和,再放入花生,小米,大豆、大油直接熬煮。

  • 逃避现实的句子(有关逃避的句子范例)

    我们一起去了解并探讨一下这个问题吧!逃避现实的句子逃避有两种:我们把有目的的逃避叫做飞翔,把没有目的的逃避叫做漂浮。其实这世上有很多事情不是你想就能做到的,总有些命运你无法逃避,总有些悲伤让你永远铭记。这个世界,黑暗总是与光明共存,我们无法逃避黑暗,但是我们永远可以选择拥抱光明。不逃避什么,只是强者的思考方式,强求的这个世界才是有问题的。

  • 英汉差异总结(英汉如何对左右)

    右之发音与意义又是怎样的一个终极来源?因此往后有闲也将推出。肝藏气胆藏魂,肺藏魄,神勇气魄皆在右边体现出来,这正与武将神勇之才为特征吻合。导致无数中国人对此含混不清!对此,中国人都糊涂了。也就是面朝君王则右为大,但此时按君王视线方向则群臣之又仍然是君王之左。把这个选择铎定之后,左大也有理、右尊也有据,更不至于韩国糊涂。

  • 李立的个人资料(李立我与祖国共成长)

    李立1961年出生于石家庄、现居秦皇岛,中国美术家协会会员、秦皇岛市当代油画艺术研究院院长。中华人物辞海当代文化卷顾问编委,中国环境管理干部学院特聘教授。2000:与时代同行—李立绘画50年成就展山东威海2000:日本福冈市《亚洲美术馆》脉—中国当代艺术展。

  • 安康图书馆服务(安康市图书馆很)

    今年暑假,安康市图书馆共接待读者123420人次,日均接待读者达1990人次,新增注册读者1206人次,文献外借量达27149册次,日均文献外借量达437册次。整个假期,安康市图书馆在做好疫情防控工作的前提下,通过各种方式,广泛吸纳大学生、学校老师、高校教授等社会力量共同开展各类暑期阅读推广活动,包括举办书法教学课堂、亲子故事会、中医药文化科普讲座、普法课堂、朗诵与主持公益课堂以及巧手坊美术系列活动等,累计开展阅读题推广活动67场。