提示:黑马程序员的云借阅管理系统, 后端ssm框架, 前端jQuery, layui,模板引擎为thymeleaf。 有需要的小伙伴可以三连, 我会私聊你发源码。

文章目录

  • 前言
  • 一、整个项目功能图
  • 二、代码展示
    • 1. 用户模块
    • 2. 书籍模块
    • 3. 拦截器配置
    • 4. 项目结构图
  • 总结

前言

提示:视频观看地址

bibi视频项目展示


提示:管理员全部功能, 用户部分功能

一、整个项目功能图

二、代码展示

1. 用户模块

登录分为管理员登录, 普通用户登录, 不同身份登录拥有的权限也不同

代码

@Controller
@RequestMapping("/pub/user")
public class UserController {@Autowiredprivate UserService userService;/*** to -> 登录功能* localhost:8081/pub/user/toLogin* @return*/@GetMapping("toLogin")public String toLogin(){return "login";}/*** 登录功能* localhost:8081/pub/user/login* @param email* @param pwd* @param model* @return*/@PostMapping("login")public String login(String email, String pwd, Model model, HttpServletRequest request){//从数据库中查找用户User user = userService.login(email,pwd);if(user == null){//没有该账户model.addAttribute("userLoginMsg", "账户密码错误");return "login";  //重新登录}else {if ("0".equals(user.getUserStatus())){  //判断是否是正常用户//将用户存储到session中request.getSession().setAttribute("user",user);return "redirect:/pri/book/list_book";     //进入管理员界面}else{   //用户被冻结//不是正常用户model.addAttribute("userLoginMsg", "账号已经冻结");return "login";  //重新登录}}}/*** 退出登录* localhost:8081/pub/user/layout* @param request* @return*/@GetMapping("layout")public String layout(HttpServletRequest request){//清口session会话request.getSession().invalidate();return "redirect:/pub/user/toLogin";}
}

2. 书籍模块

首页页面

借阅图书页面

当前借阅页面

代码

@Controller
@RequestMapping("/pri/book")
public class BookController {@Autowiredprivate BookService bookService;/*** 分页查询书籍功能* localhost:8081/pri/book/list_book?pageNum=2* @param pageNum* @param pageSize* @param model* @return*/@GetMapping("list_book")public String listBook(@RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,@RequestParam(value = "pageSize", required = false, defaultValue = "5") Integer pageSize,Model model){//查询数据库记录List<Book> list = bookService.listBook(pageNum,pageSize);//查询数据库书籍的总记录数Integer totalRecordNum = bookService.findBookTotalNum();//将书籍存储起来, 传给前端页面model.addAttribute("bookList", list);//计算总页数Integer totalPage = 0;if(totalRecordNum % pageSize == 0){ //刚好满足totalPage  = totalRecordNum / pageSize;}else{ //比满页多一页totalPage  = totalRecordNum / pageSize + 1;}model.addAttribute("totalPage",totalPage); //将数据存储起来return "welcome";}/*** 跳转到借阅信息当中* localhost:8081/pri/book/to_book_borrow* @return*/@GetMapping("to_book_borrow")public String toBookBorrow(Model model,HttpServletRequest request){//收集从前端传来的代码Integer bookId = Integer.parseInt(request.getParameter("book_id"));//通过book的id去查找Book信息Book book = bookService.findBookById(bookId);//将信息存储起来model.addAttribute("book", book);System.out.println("===========" + book.toString());return "bookDetail";}/*** 图书借阅功能* localhost:8081/pri/book/borrow_book* @param book* @param request* @param model* @return*/@PostMapping("borrow_book")public String borrowBook(Book book,HttpServletRequest request,Model model){System.out.println("===========" + book.toString());//从session中获取user信息User user = (User)request.getSession().getAttribute("user");String userName = user.getUserName();//更新数据库书籍状态Integer flag = bookService.borrowBook(book,userName);if (flag > 0){ //更新成功 -> 借阅成功model.addAttribute("borrowBookMsg", "借阅成功,请到图书馆二楼领取");return "redirect:/pri/book/list_book";}model.addAttribute("borrowBookMsg", "借阅失败,请重试该操作");return "redirect:/pri/book/list_book";}
}

3. 拦截器配置

为什么要配置拦截器?

拦截器可以避免一些错误, 比如借阅图书的时候需要获取用户的信息,如果程序里面的session没用user信息, 则不能访问页面。

未登录的效果展示

代码

  1. 配置
//能够被springIOC容器扫描到
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {private LoginInterceptor loginInterceptor;@Autowiredpublic void setLoginInterceptor(LoginInterceptor loginInterceptor){this.loginInterceptor = loginInterceptor;}/*** 添加拦截器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/pub/user/login","/","/pub/user/toLogin", "/pub/user/layout");}
}
  1. 拦截器
@Component
public class LoginInterceptor implements HandlerInterceptor {/*** 获取session会话,然后验证session会话是否有user,有放行, 没有则通过* @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();User user = (User)session.getAttribute("user");if(user != null){return true;}return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

4. 项目结构图


数据库表

# 借阅记录表
CREATE TABLE `record` (`record_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`record_bookname` varchar(32) NOT NULL COMMENT '借阅的图书名称',`record_bookisbn` varchar(32) NOT NULL COMMENT '借阅的图书的ISBN',`record_borrower` varchar(32) NOT NULL COMMENT '图书借阅人',`record_borrowtime` varchar(32) NOT NULL COMMENT '图书借阅时间',`record_remandtime` varchar(32) NOT NULL COMMENT '图书归还时间',PRIMARY KEY (`record_id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4;
# 用户表 -> 管理员和用户放在一起了
CREATE TABLE `user` (`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`user_name` varchar(32) NOT NULL COMMENT '用户名称',`user_password` varchar(32) NOT NULL COMMENT '用户密码',`user_email` varchar(32) NOT NULL COMMENT '用户邮箱[用户账号]',`user_role` varchar(32) NOT NULL COMMENT '用户角色[ADMIN:管理员,USER:用户]',`user_status` varchar(1) NOT NULL,PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
# 书籍表
CREATE TABLE `books` (`book_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`book_name` varchar(32) NOT NULL COMMENT '图书名称',`book_isbn` varchar(32) NOT NULL COMMENT '图书标准',`book_press` varchar(32) NOT NULL COMMENT '图书出版社',`book_author` varchar(32) NOT NULL COMMENT '图书作者',`book_pagination` int(11) NOT NULL COMMENT '图书页数',`book_price` decimal(5,2) NOT NULL COMMENT '图书价格',`book_uploadtime` varchar(32) NOT NULL COMMENT '图书上架时间',`book_status` varchar(1) NOT NULL COMMENT,`book_borrower` varchar(32) DEFAULT NULL COMMENT '图书借阅人',`book_borrowtime` varchar(32) DEFAULT NULL COMMENT '图书借阅时间',`book_returntime` varchar(32) DEFAULT NULL COMMENT '图书预计归还时间',PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

pom.xml文件

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version></dependency></dependencies>

总结

上述代码只是部分代码, 需要完整的代码可以私聊我, 如果上述描述有问题,
立即联系我, 谢谢!!! 记得三连 支持支持博主

期末考试还缺项目吗?黑马的图书借阅管理系统很香相关推荐

  1. 图书借阅管理系统的设计与实现/书籍借还管理系统

    摘要 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化.网络化和电子化.网上借阅一系列功能将成为人们最关注话题,本论文是以构建图书借阅为目标,使用 Ja ...

  2. Springboot+vue开发的图书借阅管理系统项目源码下载-P0029

    前言 图书借阅管理系统项目是基于SpringBoot+Vue技术开发而来,功能相对比较简单,分为两个角色即管理员和学生用户,核心业务功能就是图书的发布.借阅与归还,相比于一些复杂的系统,该项目具备简单 ...

  3. python图书馆图书借阅管理系统django项目源码含文档ppt

    图书馆图书借阅管理系统能做到的不仅是大大简化管理员的信息管理工作,在提高图书馆管理效率的同时还能缩减开支,更能在数字化的平面网络上将图书馆管理最好的一面展示给客户和潜在客户,而这个系统在带给图书馆管理 ...

  4. Java Swing 期末大作业-----图书借阅管理系统

    文章目录 项目:图书借阅系统 子项目:需求分析 第一模块:图书信息管理 第二模块:读者信息管理 第三模块:类型信息管理 第四模块:借阅信息管理 第五模块:用户信息管理 子项目:数据库设计 子项目:图书 ...

  5. 学校图书借阅管理系统,Mysql数据库课程设计期末作品或练手项目

    使用Navicat操作,未包含Java代码. 目录 一.课程设计的目的1 二.课程设计内容1 2.1课程设计功能分析说明1 2.2数据库需求分析1 2.2.1系统功能分析说明1 (1)信息需求分析1 ...

  6. 微信小程序项目实例SSM项目源代码小程序图书借阅系统

  7. 图书借阅管理系统微信小程序的开发 报告+开题报告+PPT+SSM项目源码及数据库文件+演示视频

    摘 要 尽管有的图书馆有图书管理系统,但是仅仅限于图书管理员使用,属于单机系统,对于Internet服务几乎没有,更不用说是WAP等服务.这样的图书管理系统根本没有发挥它的效力,资源闲置比较突出.基于 ...

  8. 计算机毕业论文Java项目源码下载javaweb图书借阅管理系统

  9. 图书馆借阅管理系统 springboot开发的java项目源码

    目录 项目简介: 需求说明: 项目截图: 1.登录界面 2.管理首页-查看图书 3.图书详情 4.查看读者列表 5.编辑读者信息 6.借还日志 项目源码参考: 项目源码下载: 项目简介: 项目编号:J ...

最新文章

  1. (基础篇)PHP字符串函数
  2. Object-C 有私有变量?私有方法?
  3. 绝症老父亲即将说不了话,儿子用AI技术挽留他的声音
  4. windows剪切板暂存
  5. echarts 折线图阴影颜色渐变
  6. io操作 mysql_使用IO流,操作Jdbc连接MySql数据库
  7. 生物特征识别:小面积指纹识别算法(二)
  8. Adobe Photoshop CC 2019( adobe ps cc)果然不一般
  9. 物联网终端安全系列(之四) -- 终端安全方案之SIM卡篇
  10. python-将图片存储到pdf中
  11. mysql什么情况用引号_sql中什么时候需要用双引号,什么时候用单引号;
  12. 2017年-应届毕业生面试总结(二)
  13. 常规调幅系统matlab结果,matlab课程设计参考题目
  14. Partially Labeled Dirichlet Allocation(PLDA)算法的理解与编程细节(Java)
  15. 单点遥信发送表里一般都有什么变量啊?
  16. linux禅道怎么改公司名字,在linux系统下一键部署禅道环境
  17. 中小项目敏捷实践之一(关于项目所有者和责任人)
  18. 利用淘宝指数做产品数据分析
  19. 基于Threejs构建的3D立体空间实战入门
  20. 《Java基础入门第2版》--黑马程序员 课后答案及其详解 第5章 Java中的常用类

热门文章

  1. 虚拟机NAT模式用nmtui配置ip
  2. Z-score 标准化(standardization)
  3. Matlab 条件语句和函数
  4. 2023成人自考报名费用大概多少 费用怎么交
  5. 科脉系统服务器ip地址,科脉服务器ip地址怎么查
  6. 无限循环小数四则运算_循环小数period;四则运算
  7. Android中okhttp原理详解
  8. springboot+poi导出百万级数据避免OOM内存溢出
  9. python 训练好的模型怎么保存_如何保存训练好的机器学习模型
  10. 智能马桶盖通水运行测试,快速连接器的作用不可小觑