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

基于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架构实现,程序运行结果良好,代码格式工整。

    推荐阅读
  • 孩子上幼儿园必备证件(孩子上幼儿园需要什么证件)

    孩子上幼儿园必备证件家长携带儿童,同时带好户口簿、预防接种卡、独生子女证,在规定时间内到附近托儿所、幼儿园办理报名手续。港、澳、台人士子女,按照相对就近原则入园。同时按有关规定收费,港、澳人士子女,家长需到侨务办公室开具《来沪就读证明》,台湾人士子女,家长需持《台胞证》。

  • 我的世界基础指令学习(我的世界中一些基础实用的指令)

    大家好,我是海底蛟龙4解说,今天向大家分享一下我的世界最实用的一些指令。指令是一个非常好的东西。直接在聊天框内就可以打出,并且可以获得玩家想要的效果,但指令只存在于作弊下。天气指令的模板是/weatherclear/rain/,分别为晴天、雨天、雷雨天,手机上打出/weather以后,后面就会自动显示3个。

  • 一汽丰田的工作问题(即使是丰田的员工也不一定知道)

    丰田Toyota作为全球最大的轿车品牌之一,其背面的故事更是广为人知,信任不少人对丰田第一个形象即是十分耐操。丰田Toyota是ToyodaSakichi一手兴办,开始在取名时从前思考叫做Toyoda,以自个的姓名创建品牌也算多见,本田,法拉利,保时捷等品牌同样是人名。雷克萨斯是丰田Toyota旗下的奢华牌子,在质量和奢华度方面都是高水准,丰田Toyota知道严峻的质量监控才干出良品。丰田Toyota乡镇才够霸气,没错!

  • 简单意大利面的做法(如何制作意大利面)

    下面希望有你要的答案,我们一起来看看吧!简单意大利面的做法在锅中用温火融化黄油后,开大火,放入洋葱碎,炒出香味后,倒入西红柿丁翻炒。出汤后加入罗勒、黑胡椒、盐,不停搅拌,大火将汤收干成酱。锅中倒入清水加热,待水开后放入少许盐,再按意大利面包装袋上的提示时间煮熟,控干水份,在面中倒入少许食用油搅拌,以免沾粘。

  • 哪些车6年免检 6年免检车辆有哪些

    目前,各地公安交通管理部门正会同质检部门认真落实各项改革新政。新车上牌免检措施已全面推行,全部小型、微型载客汽车和所有轿车在办理新车注册登记时,免予到检验机构上线检验。北京38家检验机构全面开展预约检验,实现了预约验车不排队、优质服务不打折、全程代办不收费,60多万名车主通过网上预约办理了验车业务,平均每天预约验车2000多辆。三是严格查处违规检验问题。

  • 火车票最新调整信息宁波(告别纸质火车票)

    来自中国铁路上海局的最新消息,11月20日起,长三角地区第二批电子客票应用推广工作启动,又有48个车站将告别纸质车票,正式迈入电子客票时代。所谓铁路电子客票,即以电子数据形式体现的铁路运输合同,旅客购票后,铁路运输企业将不再出具纸质车票。长三角铁路正逐步扩大电子客票应用实施范围。

  • app用什么语言编写 app用什么语言编写好

    app用java语言编写。Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。

  • gp和lp通俗一点有什么区别(gp和lp区别是什么)

    跟着小编一起来看一看吧!gp和lp通俗一点有什么区别概念不同。LP是指limitedpartner,是为风险投资公司提供资金的,即出资人;GP是指generalpartner,是负责运营、管理基金的,包括寻找投资机会、管理投资组合公司、设计和实施退出方案等。LP是风险资本的主要提供者,在有限合伙制风险投资机构当中,LP的出资比例一般为99%;GP的的出资比例为1%。LP以出资额为上限对投资公司和企业承担有限责任;GP则对投资公司的选择和管理负有无限的责任。

  • 户口跨省通办试点哪些城市(跨省通办扩围哪项和你有关)

    日前,国务院办公厅印发《关于扩大政务服务“跨省通办”范围进一步提升服务效能的意见》。“跨省通办”也有利于加快形成全国统一大市场。扎实推进地区间“跨省通办”合作,进一步拓展“跨省通办”范围和深度。三是加强“跨省通办”服务支撑。完善“跨省通办”事项标准和业务规则,加快制定完善全程网办、异地代收代办、多地联办的业务标准和操作规程。

  • 羊肉泡馍是什么地方的美食(特别策划丝路乡土美食系列之四十七:牛羊肉泡馍)

    队长十万火急地找念过经的马阿訇拿上刀子火速前往。于是队长决定,宰了卖成钱的不追究放羊娃的责任,死了的扣放羊娃的工分。现在,牛羊肉泡馍成了大西北的一道名吃,在西安,似乎成了城市名片。西安的则是,死面饦饦馍自个掰碎,碎如指头蛋大小,递给后厨,后厨放肉汤肉片粉丝之类进行烹煮,根据需要做出不同的种类。有许多种做法,也有许多种吃法。西安人吃不惯天水的牛羊肉泡馍,天水人对于西安的牛羊肉泡馍也不感兴趣。