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

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

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

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

    推荐阅读
  • cpb和sk2哪个高端(cpb好还是sk2好)

    CPB是资生堂中高端的品牌,sk2是大家熟知的神仙水。其名气后者要大于前者,从名气来看SK2要更高端一些。

  • 女人动心时会对你说这几句话(女人主动对你说这三句话)

    ——乔叟之前,后台有一位姑娘丽丽曾和我分享过一段关于她的故事。其实不光是丽丽有这样的想法,很多女孩子在现实生活中都会有这样的想法,面对一个自己感觉合不来的人,基本是没有兴趣再继续聊下去的。没有满足的爱情,往往因离别而格外热烈,便是哲学也冲淡不了。深夜,女人的情感相对来说都是比较寂寞的,在这个时候,她们也需要情感上的慰藉。但是对于一个高情商的男人而言,他们也能够听出一个女人这句话中的含义。

  • 为何要坚持日更(日更有感)

    日更有感#打卡挑战局#​回到上海就生病了,喉咙痛到咽口水都不想人也蔫蔫的,一直躺着什么都不想干,连坚持了将近两周的日更也断了昨天晚上感觉稍微好了些,就把回程路上想写的一段文字完成了,今天却是又没力气了看了一下。

  • 什么叫应补退税额(应补退税额是什么意思)

    以下内容大家不妨参考一二希望能帮到您!应纳税额大多数一般发生数在前,就是企业按照税法规定期间计算得出的应向税务机关缴纳各税额;应补(退)税就是本期应纳税额与本期已预缴税额之间的差,如果为正数就是应补税额,如果为负数就是应退税额。而对于实际应补退所得税额是负数,说明预缴时交多了,汇算清缴应退税,或者留待以后年度抵减。

  • 关于春节的古诗佳句有哪些?(春节的古诗介绍)

    关于春节的古诗佳句有哪些《岁除夜》唐·罗隐官历行将尽,村醪强自倾。暖律,畏老惜残更。岁月已如此,寇戎犹未平。儿童不谙事,歌吹待天明。《除夜》唐·尚颜九冬三十夜,寒与暖分开。坐到四更后,身添一岁来。鱼灯延腊火,兽炭化春灰。青帝今应老,迎新见几回。《甲午元旦》清·孔尚任萧疏白发不盈颠,守岁围炉竟废眠。剪烛催干消夜酒,倾囊分遍买春钱。听烧爆竹童心在,看换桃符老兴偏。鼓角梅花添一部,五更欢笑拜新年。

  • 注册商标的续展期是多少(杨涛商标有效期)

    有人问杨涛,已经的注册好的商标,是不是可以无限期的使用下去,是不行的,商标的有效期是10年,在有效期到来之前是需要续费的。商标费用和域名费用差不多,商标有时还便宜,域名基本都是一年一续费,而且商标权优于企业字号和域名,普推杨涛想想自己那么多域名,已续了十多年了,如果选择商标也许会更好些。

  • 酸菜的各种吃法大全(酸菜的各种吃法有哪些呢)

    酸菜的各种吃法大全酸菜羊肉末。用料:酸菜300g、羊肉200g、植物油15茶勺、盐1g、洋葱30g、胡椒粉1茶勺、鸡精2g、酱油2茶勺、青椒3个、红尖椒3个。.把洋葱切末,羊肉切末,把洋葱和羊肉末、胡椒粉拌均匀腌制3分钟左右。.把青红尖椒洗净切小丁。.加青红尖椒翻炒出辣味;加羊肉末翻炒均匀;加少许盐;加酱油翻炒均匀;加鸡精翻炒均匀即可。.水烧开,下入酸菜放少许植物油煮二分钟捞出备用。

  • 房贷转为lpr有什么好处(可以节省利息)

    我们一起去了解并探讨一下这个问题吧!房贷转为lpr有什么好处房贷利率转换为LPR的好处主要就是可以节省利息。由于LPR利率是会改变的,而用户约定了LPR利率期限后,到期就会执行新的LPR利率,这时候只要LPR利率降低了,那么利息也会跟着它降低。而如果用户选择的是固定利率,那么利息从头到尾都不会有变化。当然相对应的,如果LPR利率上升,那么房贷的利息也会增加。

  • 史铁生是怎样思考自己命运的(史铁生的不幸与幸)

    2010年病逝,享年59岁。可以说史铁生是一位具有独创精神的优秀短篇小说家。数十年的病痛生涯,使史铁生对残疾、患病有了一种独到的认识。这里的“我”已不再是那个叫“史铁生”的个人,而是残疾人的一个精神形象、象征形象。年轻的丈夫一条腿、脸被严重烧伤,妻子则是一个侏儒。平淡的生活、长期的病痛,使史铁生避开了尘世的喧嚣,陷入了对人类终结问题的哲学思辨之中,并把他的思辨融入了小说和散文写作。