作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
图书租赁管理系统
项目介绍
图书租赁管理系统,该系统分为管理员与普通读者两种角色;
管理员主要功能包括:
图书管理:添加、修改、删除;
图书分类管理:添加、修改、删除;
借阅信息:还书;
预定信息:确认借书;
归还信息;
统计管理:借书/归还、营业额、销量;
普通读者主要功能包括:预定图书、待拿图书、借阅中、归还信息等;
客户端的充值,使用的支付宝沙箱测试化境
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 8.0版本;
7.lombok插件安装:本项目需要安装lombok插件,否则运行会有异常;
技术栈
1. 后端:Spring SpringMVC MyBatis
2. 前端:JSP+bootstrap+jQuery+echarts
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/bm/
运行截图
相关代码
MBookController
package com.bookManagerment.controller.mannager;
import com.bookManagerment.entity.Books;
import com.bookManagerment.service.BookService;
import com.bookManagerment.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@RequestMapping("/manager/books")
@RestController()
public class MBookController {
@Autowired
private BookService bookService;
//分页获取图书信息 并可查找
@GetMapping(value = "/{page}/{size}")
public ResponseEntity<Page<Books>> booksList(@PathVariable("page") Integer page,
@PathVariable("size") Integer size,
Books book){
return ResponseEntity.ok(bookService.getBookList(page,size,book));
}
//添加图书
@PostMapping
public ResponseEntity<Void> addBook(@RequestBody Books books){
bookService.addBook(books);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
//修改图书
@PutMapping
public ResponseEntity<Void> modifyBook(@RequestBody Books books){
bookService.modifyBook(books);
return ResponseEntity.ok().build();
}
//修改图书的状态
@PutMapping("/{bId}/{status}")
public ResponseEntity<Void> modifyBookStatus(@PathVariable("bId") Integer bId,
@PathVariable("status") Boolean status){
bookService.modifyBookStatus(bId,status);
return ResponseEntity.ok().build();
}
//修改图书的总数量
@PutMapping("/total/{bId}/{total}")
public ResponseEntity<Void> modifyBookTotal(@PathVariable("bId") Integer bId,
@PathVariable("total") Integer total){
bookService.modifyBookTotal(bId,total);
return ResponseEntity.ok().build();
}
// //删除图书 多个
@DeleteMapping
public ResponseEntity<Void> deleteBookBybIds(@RequestBody List<Integer> ids){
bookService.deleteBookBybIds(ids);
return ResponseEntity.ok().build();
}
//删除图书 一个
@DeleteMapping("/{bId}")
public ResponseEntity<Void> deleteBookBybId(@PathVariable("bId") Integer bId){
bookService.deleteBookBybIds(Arrays.asList(bId));
return ResponseEntity.ok().build();
}
}
MBookTypeController
package com.bookManagerment.controller.mannager;
import com.bookManagerment.entity.BookType;
import com.bookManagerment.service.BookTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@RequestMapping("manager/bookType")
@RestController
public class MBookTypeController {
@Autowired
private BookTypeService bookTypeService;
//获取图书分类
@RequestMapping
public ResponseEntity<List<BookType>> bookTypeList(){
return ResponseEntity.ok(bookTypeService.bookTypeList());
}
//获取图书分类
@RequestMapping("/all")
public ResponseEntity<List<BookType>> bookTypeListAll(){
return ResponseEntity.ok(bookTypeService.bookTypeListAll());
}
//添加图书分类
@PostMapping("/{tName}")
public ResponseEntity<Void> addBookType(@PathVariable("tName") String tName){
bookTypeService.addBookType(tName);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
//删除多个图书分类
@DeleteMapping
public ResponseEntity<Void> deleteBookTypes(@RequestBody List<Integer> ids ){
bookTypeService.deleteBookTypes(ids);
return ResponseEntity.ok().build();
}
//删除一个图书分类
@DeleteMapping("/{btId}")
public ResponseEntity<Void> deleteBookType(@PathVariable("btId") Integer btId ){
bookTypeService.deleteBookTypes(Arrays.asList(btId));
return ResponseEntity.ok().build();
}
//修改一个图书分类
@PutMapping
public ResponseEntity<Void> modifyBookType(@RequestBody BookType bookType){
bookTypeService.modifyBookType(bookType);
return ResponseEntity.ok().build();
}
}
MGiveBackBookController
package com.bookManagerment.controller.mannager;
import com.bookManagerment.entity.GiveBackBooks;
import com.bookManagerment.service.GiveBackBookService;
import com.bookManagerment.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RequestMapping("manager/giveBack")
@RestController
public class MGiveBackBookController {
@Autowired
private GiveBackBookService giveBackBookService;
//根据 bbId 还书
@PostMapping("/{bbId}")
public ResponseEntity<GiveBackBooks> giveBackBookById(@PathVariable("bbId") Integer bbId){
return ResponseEntity.ok().body(giveBackBookService.giveBackBookById(bbId));
}
//分页查询 并可以带查询参数
@GetMapping("/{page}/{size}")
public ResponseEntity<Page<GiveBackBooks>> giveBackBook(@PathVariable("page") Integer page,
@PathVariable("size") Integer size,
GiveBackBooks reserveGiveBack){
return ResponseEntity.ok(giveBackBookService.giveBackBook(page,size, reserveGiveBack,false));
}
}
MReserveBorrowBooksController
package com.bookManagerment.controller.mannager;
import com.bookManagerment.entity.ReserveBorrowBooks;
import com.bookManagerment.service.ReserveBorrowBooksService;
import com.bookManagerment.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@RequestMapping("manager/reserveBorrow")
@RestController
public class MReserveBorrowBooksController {
@Autowired
private ReserveBorrowBooksService reserveBookService;
//分页查询 并可以带查询参数
@GetMapping("/{page}/{size}")
public ResponseEntity<Page<ReserveBorrowBooks>> borrowBookByPage(@PathVariable("page") Integer page,
@PathVariable("size") Integer size,
ReserveBorrowBooks reserveBorrowBooks){
return ResponseEntity.ok(reserveBookService.reserveBookByPage(page,size, reserveBorrowBooks));
}
//借书 一个
@PostMapping("/{resId}")
public ResponseEntity<Void> saveReserve(@PathVariable("resId") Integer resId){
reserveBookService.saveReserves(Arrays.asList(resId));
return ResponseEntity.status(HttpStatus.CREATED).build();
}
//借书 多个
@PostMapping
public ResponseEntity<Void> saveReserves(@RequestBody List<Integer> resIds){
reserveBookService.saveReserves(resIds);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
}
SalesStatisticsController
package com.bookManagerment.controller.mannager;
import com.bookManagerment.service.SalesStatisticsService;
import com.bookManagerment.vo.SalesBooksByTypeVO;
import com.bookManagerment.vo.SalesStatisticsVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("manager")
public class SalesStatisticsController {
@Autowired
private SalesStatisticsService salesStatisticsService;
//根据分类获取图书销量
@RequestMapping("/salesByType/{typeName}")
public ResponseEntity<SalesBooksByTypeVO> salesByType(@PathVariable("typeName") String typeName){
return ResponseEntity.ok(salesStatisticsService.querySalesBooksByType(typeName));
}
//获取按销量降序获取图书分类,以及销量最高的第一个分类下的图书销量
@RequestMapping("/sales")
public ResponseEntity<SalesStatisticsVo> sales(){
return ResponseEntity.ok(salesStatisticsService.queryBookTypeSales());
}
}
ReaderController
package com.bookManagerment.controller.reader;
import com.bookManagerment.service.ReaderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RequestMapping("reader")
@Controller
public class ReaderController {
@Autowired
private ReaderService readerService;
//发送支付请求
@PostMapping("/balance")
public void addBalance(Double money,HttpServletRequest request, HttpServletResponse response){
readerService.addBalance(money,request,response);
}
//支付同步通知
@RequestMapping("/returnUrl")
public String returnUrl(HttpServletRequest request,HttpServletResponse response){
readerService.returnUrl(request);
return "redirect:/pages/reader/bookDatalist.jsp";
}
//支付异步通知
@PostMapping("/notify")
public void notify(HttpServletRequest request,HttpServletResponse response){
readerService.notify(request,response);
}
@GetMapping("/refreshMoney")
public ResponseEntity<Double> refreshMoney(HttpServletRequest request){
return ResponseEntity.ok(readerService.refreshMoney(request));
}
}
RGiveBackController
package com.bookManagerment.controller.reader;
import com.bookManagerment.config.BMSystemProperties;
import com.bookManagerment.entity.GiveBackBooks;
import com.bookManagerment.entity.Reader;
import com.bookManagerment.service.GiveBackBookService;
import com.bookManagerment.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
@RequestMapping("reader/giveBack")
@RestController
public class RGiveBackController {
@Autowired
private GiveBackBookService giveBackBookService;
@Autowired
private BMSystemProperties bmProperties;
//分页查询 并可以带查询参数
@GetMapping("/{page}/{size}")
public ResponseEntity<Page<GiveBackBooks>> giveBackBook(@PathVariable("page") Integer page,
@PathVariable("size") Integer size,
GiveBackBooks reserveGiveBack,
HttpSession session){
Reader reader = (Reader) session.getAttribute(bmProperties.getReaderSessionName());
reserveGiveBack.setRName(reader.getRName());
return ResponseEntity.ok(giveBackBookService.giveBackBook(page,size, reserveGiveBack,true));
}
}
如果也想学习本系统,下面领取。关注并回复:015ssm