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

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

    推荐阅读
  • 高考失败后我怎么过来的(高考失败不是你的错)

    高考失败不是你的错文/李光斗(微信公众号:lgdbrand)互联网时代,网红成为了一个炙手可热的职业零门槛、低投入、高回报,如此高性价比的职业还有谁会拒绝因而有人调侃说,高考失败不要紧,XX整形医院为分数低于200的你。

  • 聊天时男生突然不回话怎么办(男生聊天突然不回了)

    聊天时男生突然不回话可能是有事去忙了,这时可以静静等待其回复即可。||聊天时男生突然不回话可以给对方发一句你先忙,忙完再聊。对方如果不是故意不理,就会回复你。

  • 美白养颜抗糖饮品胶原蛋白(周末食疗养颜5款能喝的)

    一方面,黑枸杞有滋肾润肺、滋补肝脏功效,另一方面,现代医学研究表明,黑枸杞富含花青素,每100g黑枸杞就含有3690mg花青素,被称为“花青素之王”。做法:茉莉花、菊花用水煎煮15分钟或直接热水冲泡,冷却至50度以下后放入黑枸杞,晾凉饮用。

  • python当中的pip如何使用(Python技能pip的使用)

    我们可以通过Cmd终端、Pycharm、Jupyter三种平台使用pip安装这些第三方库。所以你需要新建一个然后开始找python和pip的地址。在退出python交互环境之后使用pip看pip是否成功。pipinstall库名,如下图所示:

  • 红扁豆汤的家常做法(黯然销魂的印度红小扁豆汤)

    黯然销魂的印度红小扁豆汤准备好食材,红小扁豆冲洗一下把食材切好热锅凉油,小火炒洋葱,炒到香味出来放入红小扁豆继续翻炒几下,倒入热水,放香叶黑胡椒咖喱块,以及胡萝卜丝和番茄!炖煮20分钟,其间记得偶尔搅拌一下,避免糊锅完工!因。

  • 男款毛衣最新款 编织(有型时尚的男士毛衣和情侣毛衣作品集)

    难得一见的一组有型时尚的男士毛衣:

  • 吴茱萸怎么读(吴茱萸的读音和解释)

    [wúzhūyú]吴茱萸吴茱萸,中药名为芸香科植物吴茱萸,下面我们就来说一说关于吴茱萸怎么读?我们一起去了解并探讨一下这个问题吧!为芸香科植物吴茱萸。吴茱萸简称吴萸,是苦味健胃剂和镇痛剂,又作驱蛔虫药。吴茱萸是芸香科、吴茱萸属植物。小乔木或灌木,高3-5米,嫩枝暗紫红色,与嫩芽同被灰黄或红锈色绒毛,或疏短毛。花期4-6月,果期8-11月。

  • 历史上的千古人名(100个历史人名你全念错了)

    100个历史人名你全念错了1、嫘(léi)祖,相传为轩辕黄帝之正妃2、仓颉(jié),传说中黄帝的史官,相传曾创造了汉字,也写作苍颉3、颛顼(zhuānxū),传说中三皇五帝之一4、帝喾(kù),传说中三皇五帝之一5、鲧(gǔ。

  • 订阅号助手怎么解除绑定(封面评论手机号)

    之于此,信通院迅速出面澄清,强调“尚在内测,并没有对外推出。”可以预见的是,即便现阶段尚在内测的“一键解绑”难堪大用,未来此类产品定型化、实用化,也是大概率事件。然而,目前曝出的“一键解绑”,显然并非如此。此外还需要注意的是,内测的“一键解绑”仅仅支持有限的几个头部APP,而对于公众意见最大的、解绑难最高发的那些小APP、老APP,则是尚未覆盖、无能为力。

  • 欢乐颂王凯上线了吗(欢乐颂2王凯代言DS能挽回DS的败局吗)

    《欢乐颂1》中还是一辆小Polo的赵医生在《欢乐颂2》中毅然换了一辆座驾。在昨天的剧情中,赵医生和曲筱绡还因为这辆车的问题,闹起了分手。然而,这一代言并没有给它刷到多少存在感,DS近一年的销量可以用惨淡来形容。直到今天,DS高层依然坚称DS要“坚持法系高端品牌的理念”。事实上,从终端市场来看,为了促进销量,DS在终端市场的价格已经下探了好多,完全已经可以覆盖一般消费能力的购买者。