当前位置: 首页 > news >正文

图书借阅管理系统

文章目录

  • 图书借阅管理系统
    • 一、项目演示
    • 二、项目介绍
    • 三、万字文档参考
    • 四、系统部分功能截图
    • 五、部分代码展示
    • 六、底部获取项目和万字文档

图书借阅管理系统

一、项目演示

图书借阅管理系统

二、项目介绍

基于Springboot+vue的前后端分离图书借阅管理系统

开发语言:java

运行环境:idea或eclipse vscode 数据库:mysql

技术:JAVA、 SpringBoot、MyBatis、MySQL、 Vue

本图书借阅管理系统的功能,主要是后端管理系统,角色就分为普通用户和管理员两大角色,

主要功能包括:图书信息管理、图书类别管理、借阅信息管理、用户管理、修改密码、用户借书、用户还书。

三、万字文档参考


四、系统部分功能截图





五、部分代码展示

packagecom.rabbiter.bms.web;importcom.rabbiter.bms.service.BookInfoService;importcom.rabbiter.bms.utils.MyResult;importcom.rabbiter.bms.utils.MyUtils;importcom.rabbiter.bms.model.BookInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;importjava.util.List;importjava.util.Map;@RestController@RequestMapping(value="/bookInfo")publicclassBookInfoController{@AutowiredBookInfoServicebookInfoService;// 获取图书数量@GetMapping(value="/getCount")publicIntegergetCount(){returnbookInfoService.getCount();}// 查询所有图书信息@GetMapping(value="/queryBookInfos")publicList<BookInfo>queryBookInfos(){returnbookInfoService.queryBookInfos();}// 分页搜索查询图书信息 params: {page, limit, bookname, bookauthor, booktypeid}@GetMapping(value="/queryBookInfosByPage")publicMap<String,Object>queryBookInfosByPage(@RequestParamMap<String,Object>params){MyUtils.parsePageParams(params);intcount=bookInfoService.getSearchCount(params);// 获得总数List<BookInfo>bookInfos=bookInfoService.searchBookInfosByPage(params);// 分页查询returnMyResult.getListResultMap(0,"success",count,bookInfos);}// 添加图书信息@PostMapping(value="/addBookInfo")publicIntegeraddBookInfo(@RequestBodyBookInfobookInfo){returnbookInfoService.addBookInfo(bookInfo);}// 删除图书信息@DeleteMapping(value="/deleteBookInfo")publicIntegerdeleteBookInfo(@RequestBodyBookInfobookInfo){returnbookInfoService.deleteBookInfo(bookInfo);}// 删除一些图书信息@DeleteMapping(value="/deleteBookInfos")publicIntegerdeleteBookInfos(@RequestBodyList<BookInfo>bookInfos){returnbookInfoService.deleteBookInfos(bookInfos);}// 更新图书信息@PutMapping(value="/updateBookInfo")publicIntegerupdateBookInfo(@RequestBodyBookInfobookInfo){returnbookInfoService.updateBookInfo(bookInfo);}}
packagecom.rabbiter.bms.web;importcom.rabbiter.bms.exception.NotEnoughException;importcom.rabbiter.bms.exception.OperationFailureException;importcom.rabbiter.bms.model.Borrow;importcom.rabbiter.bms.service.BookInfoService;importcom.rabbiter.bms.service.BorrowService;importcom.rabbiter.bms.utils.MyResult;importcom.rabbiter.bms.utils.MyUtils;importcom.rabbiter.bms.model.BookInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.transaction.annotation.Transactional;importorg.springframework.transaction.interceptor.TransactionAspectSupport;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importjava.util.Date;importjava.util.List;importjava.util.Map;@RestController@RequestMapping(value="/borrow")publicclassBorrowController{@AutowiredBorrowServiceborrowService;@AutowiredBookInfoServicebookInfoService;// 分页查询借阅 params: {page, limit, userid, bookid}@RequestMapping(value="/queryBorrowsByPage")publicMap<String,Object>queryBorrowsByPage(@RequestParamMap<String,Object>params){MyUtils.parsePageParams(params);intcount=borrowService.getSearchCount(params);List<Borrow>borrows=borrowService.searchBorrowsByPage(params);returnMyResult.getListResultMap(0,"success",count,borrows);}// 添加借阅@RequestMapping(value="/addBorrow")publicIntegeraddBorrow(@RequestBodyBorrowborrow){returnborrowService.addBorrow(borrow);}// 获得数量@RequestMapping(value="/getCount")publicIntegergetCount(){returnborrowService.getCount();}// 删除借阅@RequestMapping(value="/deleteBorrow")publicIntegerdeleteBorrow(@RequestBodyBorrowborrow){returnborrowService.deleteBorrow(borrow);}// 删除一些借阅@RequestMapping(value="/deleteBorrows")publicIntegerdeleteBorrows(@RequestBodyList<Borrow>borrows){returnborrowService.deleteBorrows(borrows);}// 更新借阅@RequestMapping(value="/updateBorrow")publicIntegerupdateBorrow(@RequestBodyBorrowborrow){returnborrowService.updateBorrow(borrow);}// 借书@RequestMapping(value={"/borrowBook","/reader/borrowBook"})@TransactionalpublicIntegerborrowBook(Integeruserid,Integerbookid){try{// 查询该书的情况BookInfotheBook=bookInfoService.queryBookInfoById(bookid);if(theBook==null){// 图书不存在thrownewNullPointerException("图书"+bookid+"不存在");}elseif(theBook.getIsborrowed()==1){// 已经被借thrownewNotEnoughException("图书"+bookid+"库存不足(已经被借走)");}// 更新图书表的isBorrowedBookInfobookInfo=newBookInfo();bookInfo.setBookid(bookid);bookInfo.setIsborrowed((byte)1);Integerres2=bookInfoService.updateBookInfo(bookInfo);if(res2==0)thrownewOperationFailureException("图书"+bookid+"更新被借信息失败");// 添加一条记录到borrow表Borrowborrow=newBorrow();borrow.setUserid(userid);borrow.setBookid(bookid);borrow.setBorrowtime(newDate(System.currentTimeMillis()));Integerres1=borrowService.addBorrow2(borrow);if(res1==0)thrownewOperationFailureException("图书"+bookid+"添加借阅记录失败");}catch(Exceptione){System.out.println("发生异常,进行手动回滚");TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();e.printStackTrace();return0;}return1;}// 还书@RequestMapping(value={"/returnBook","/reader/returnBook"})@TransactionalpublicIntegerreturnBook(Integerborrowid,Integerbookid){try{// 查询该书的情况BookInfotheBook=bookInfoService.queryBookInfoById(bookid);// 查询借书的情况BorrowtheBorrow=borrowService.queryBorrowsById(borrowid);if(theBook==null){// 图书不存在thrownewNullPointerException("图书"+bookid+"不存在");}elseif(theBorrow==null){//结束记录不存在thrownewNullPointerException("借书记录"+bookid+"不存在");}elseif(theBorrow.getReturntime()!=null){// 已经还过书thrownewNotEnoughException("图书"+bookid+"已经还过了");}// 更新图书表的isBorrowedBookInfobookInfo=newBookInfo();bookInfo.setBookid(bookid);bookInfo.setIsborrowed((byte)0);Integerres2=bookInfoService.updateBookInfo(bookInfo);if(res2==0)thrownewOperationFailureException("图书"+bookid+"更新被借信息失败");// 更新Borrow表,更新结束时间Borrowborrow=newBorrow();borrow.setBorrowid(borrowid);borrow.setReturntime(newDate(System.currentTimeMillis()));Integerres1=borrowService.updateBorrow2(borrow);if(res1==0)thrownewOperationFailureException("图书"+bookid+"更新借阅记录失败");}catch(Exceptione){System.out.println("发生异常,进行手动回滚");TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();e.printStackTrace();return0;}return1;}}

六、底部获取项目和万字文档

有问题,或者需要协助调试运行项目的也可以

http://www.jsqmd.com/news/598807/

相关文章:

  • RStudio Server卡在‘R启动慢’?别慌,手把手教你清理session文件恢复访问
  • 印度裔全球崛起:一场无硝烟的人才与人口博弈
  • Retinaface+CurricularFace人脸识别:高清人脸比对效果案例分享
  • 开天辟地 初出茅庐
  • 【2026 AI 实战】用 Python 做一个本地 AI 聊天机器人,零基础也能跑通
  • 笔记04
  • 从社交推荐到药物发现:GAT(图注意力网络)在5个工业级场景下的落地实践
  • 双剪切式固体废物破碎机结构设计
  • 快速原型利器:在快马平台一键对比不同AI模型的代码生成效果
  • Z-Image-Turbo-辉夜巫女应用:快速生成动漫角色,打造个人风格画师
  • AMD锐龙处理器终极调优指南:RyzenAdj完整配置与实战教程
  • 【花雕学编程】嵌入式 AI Agent:从云端到终端,开启物理世界智能新范式
  • 基于FOC的无刷平衡车设计(开题报告)
  • Docker 常用命令速查手册
  • 工业质检实战:如何用Real-IAD数据集快速搭建异常检测模型(附完整代码)
  • 如何用Winhance实现Windows系统深度优化:全面配置指南
  • 洛谷P2731 [USACO3.3] 骑马修栅栏 Riding the Fences
  • SteamAchievementManager终极指南:如何安全掌控你的Steam游戏成就
  • YOLO12边缘设备部署指南:Nano版仅需2GB显存,低配置也能跑
  • BBDown进阶指南:从入门到精通的B站视频下载解决方案
  • H-ui.admin:如何在30分钟内构建企业级后台管理系统?
  • 信创运维避坑指南:统信UOS服务器离线安装软件,这些细节你注意了吗?
  • OpenClaw从入门到应用——频道:IRC
  • 圣女司幼幽-造相Z-Turbo进阶用法:用Python脚本批量生成角色图教程
  • 别再乱猜了!手把手教你用数字万用表的‘通断档’精准定位电路板上的信号短路
  • jupyter Kernel Disconnected崩溃的修复
  • 【花雕动手做】ESP32-S3 + MimiClaw 实战:通过飞书自然语言指令控制板载 WS2812 彩灯
  • P社游戏Mod管理神器:手把手教你用C++打造自动排序工具
  • 如何掌握Cucumber.js API接口:从CLI到编程式调用的完整指南
  • 3个智能控制策略让电脑用户实现散热优化与静音平衡