JavaWeb 圖書管理系統
阿新 • • 發佈:2020-10-25
檢視更多系統:系統大全,課程設計、畢業設計,請點選這裡檢視
01 系統簡述
圖書管理系統就是利用計算機,結合網際網路對圖書進行結構化、自動化管理的一種軟體,來提高對圖書的管理效率。
02 系統特點
整合主流框架,簡單精簡化開發,高拓展性
03 技術
springboot + jpa + mybatis + springsecurity +javaex
後端:
- 基礎框架: SpringBoot
- 簡單資料操作: Spring Data Jpa
- 複雜資料操作: Mybatis
- 安全框架:SpringSecurity
- 模板引擎: Thymeleaf
前端:
- javaEx, 其實就是對html,css,js的封裝。比較接近原生 修改起來比較方便
- jQuery , 講真的jQuery用著還是很舒服, 突破各種前端框架的限制
04 執行環境
jdk1.8 + maven3 + mysql5.7
05 功能介紹
圖書管理
圖書列表:顯示已經上架的圖書資訊,可對上架圖書進行搜尋、修改、刪除操作。
圖書上架:錄入圖書資訊,輸入圖書名稱、作者、圖書分類,頁數,定價等資料進行圖書錄入。
借閱管理
搜尋圖書:根據圖書名稱、作者名稱,圖書分類等搜尋圖書。
借閱圖書:錄入圖書資訊,輸入圖書名稱、作者、圖書分類,頁數,定價等資料進行圖書借閱。
歸還圖書:對已經借閱的圖書進行歸還操作。
讀者管理
讀者列表:顯示已經註冊的讀者使用者。
讀者新增:錄入使用者的暱稱、使用者名稱、密碼、生日、電話、郵箱等資訊新增新使用者。
使用者中心
個人資訊:檢視、修改個人資訊。
使用者管理:對已經新增的使用者進行搜尋、刪除、使用許可權資訊進行設定。
新增管理員:錄入管理員的暱稱、使用者名稱、密碼、生日、電話、郵箱等資訊新增新管理員。
06 執行截圖
登入介面
首頁
圖書列表介面
新增圖書介面
圖書歸還介面
讀者列表介面
個人資訊介面
使用者管理介面
07 主要程式碼
圖書管理
package com.book.manager.controller; import com.book.manager.entity.Book; import com.book.manager.service.BookService; import com.book.manager.util.R; import com.book.manager.util.http.CodeEnum; import com.book.manager.util.ro.PageIn; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; /** * @Description 使用者管理 */ @Api(tags = "圖書管理") @RestController @RequestMapping("/book") public class BookController { @Autowired private BookService bookService; @ApiOperation("圖書搜尋列表") @PostMapping("/list") public R getBookList(@RequestBody PageIn pageIn) { if (pageIn == null) { return R.fail(CodeEnum.PARAM_ERROR); } return R.success(CodeEnum.SUCCESS,bookService.getBookList(pageIn)); } @ApiOperation("新增圖書") @PostMapping("/add") public R addBook(@RequestBody Book book) { return R.success(CodeEnum.SUCCESS,bookService.addBook(book)); } @ApiOperation("編輯圖書") @PostMapping("/update") public R modifyBook(@RequestBody Book book) { return R.success(CodeEnum.SUCCESS,bookService.updateBook(book)); } @ApiOperation("圖書詳情") @GetMapping("/detail") public R bookDetail(Integer id) { return R.success(CodeEnum.SUCCESS,bookService.findBookById(id)); } @ApiOperation("圖書詳情 根據ISBN獲取") @GetMapping("/detailByIsbn") public R bookDetailByIsbn(String isbn) { return R.success(CodeEnum.SUCCESS,bookService.findBookByIsbn(isbn)); } @ApiOperation("刪除圖書") @GetMapping("/delete") public R delBook(Integer id) { bookService.deleteBook(id); return R.success(CodeEnum.SUCCESS); } }
借閱管理
package com.book.manager.controller;
import cn.hutool.core.date.DateUtil;
import com.book.manager.entity.Borrow;
import com.book.manager.service.BookService;
import com.book.manager.service.BorrowService;
import com.book.manager.util.R;
import com.book.manager.util.consts.Constants;
import com.book.manager.util.http.CodeEnum;
import com.book.manager.util.ro.RetBookIn;
import com.book.manager.util.vo.BackOut;
import com.book.manager.util.vo.BookOut;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Description 使用者管理
*/
@Api(tags = "借閱管理")
@RestController
@RequestMapping("/borrow")
public class BorrowController {
@Autowired
private BorrowService borrowService;
@Autowired
private BookService bookService;
@ApiOperation("借閱列表")
@GetMapping("/list")
public R getBorrowList(Integer userId) {
return R.success(CodeEnum.SUCCESS,borrowService.findAllBorrowByUserId(userId));
}
@ApiOperation("借閱圖書")
@PostMapping("/add")
public R addBorrow(@RequestBody Borrow borrow) {
Integer result = borrowService.addBorrow(borrow);
if (result == Constants.BOOK_BORROWED) {
return R.success(CodeEnum.BOOK_BORROWED);
}else if (result == Constants.USER_SIZE_NOT_ENOUGH) {
return R.success(CodeEnum.USER_NOT_ENOUGH);
}else if (result == Constants.BOOK_SIZE_NOT_ENOUGH) {
return R.success(CodeEnum.BOOK_NOT_ENOUGH);
}
return R.success(CodeEnum.SUCCESS,Constants.OK);
}
@ApiOperation("編輯借閱")
@PostMapping("/update")
public R modifyBorrow(@RequestBody Borrow borrow) {
return R.success(CodeEnum.SUCCESS,borrowService.updateBorrow(borrow));
}
@ApiOperation("借閱詳情")
@GetMapping("/detail")
public R borrowDetail(Integer id) {
return R.success(CodeEnum.SUCCESS,borrowService.findById(id));
}
@ApiOperation("刪除歸還記錄")
@GetMapping("/delete")
public R delBorrow(Integer id) {
borrowService.deleteBorrow(id);
return R.success(CodeEnum.SUCCESS);
}
@ApiOperation("已借閱列表")
@GetMapping("/borrowed")
public R borrowedList(Integer userId) {
List<BackOut> outs = new ArrayList<>();
if (userId!=null&&userId>0) {
// 獲取所有 已借閱 未歸還書籍
List<Borrow> borrows = borrowService.findBorrowsByUserIdAndRet(userId, Constants.NO);
for (Borrow borrow : borrows) {
BackOut backOut = new BackOut();
BookOut out = bookService.findBookById(borrow.getBookId());
BeanUtils.copyProperties(out,backOut);
backOut.setBorrowTime(DateUtil.format(borrow.getCreateTime(),Constants.DATE_FORMAT));
String endTimeStr = DateUtil.format(borrow.getEndTime(), Constants.DATE_FORMAT);
backOut.setEndTime(endTimeStr);
// 判斷是否逾期
String toDay = DateUtil.format(new Date(), Constants.DATE_FORMAT);
int i = toDay.compareTo(endTimeStr);
if (i>0) {
backOut.setLate(Constants.YES_STR);
}else {
backOut.setLate(Constants.NO_STR);
}
outs.add(backOut);
}
}
return R.success(CodeEnum.SUCCESS,outs);
}
@ApiOperation("歸還書籍")
@PostMapping("/ret")
public R retBook(Integer userId, Integer bookId) {
// 歸還圖書
borrowService.retBook(userId,bookId);
return R.success(CodeEnum.SUCCESS);
}
}
使用者管理
package com.book.manager.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.book.manager.entity.Users;
import com.book.manager.service.UserService;
import com.book.manager.util.R;
import com.book.manager.util.consts.Constants;
import com.book.manager.util.consts.ConvertUtil;
import com.book.manager.util.http.CodeEnum;
import com.book.manager.util.vo.PageOut;
import com.book.manager.util.ro.PageIn;
import com.book.manager.util.vo.UserOut;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Description 使用者管理
*/
@Api(tags = "使用者管理")
@RestController
@RequestMapping("/user")
public class UsersController {
@Autowired
private UserService userService;
@ApiOperation("使用者列表")
@PostMapping("/list")
public R getUsers(@RequestBody PageIn pageIn) {
if (pageIn == null) {
return R.fail(CodeEnum.PARAM_ERROR);
}
// 封裝分頁出參物件
PageInfo<Users> userList = userService.getUserList(pageIn);
PageOut pageOut = new PageOut();
pageOut.setCurrPage(userList.getPageNum());
pageOut.setPageSize(userList.getPageSize());
pageOut.setTotal((int) userList.getTotal());
List<UserOut> outs = new ArrayList<>();
for (Users users : userList.getList()) {
UserOut out = new UserOut();
BeanUtils.copyProperties(users,out);
out.setIdent(ConvertUtil.identStr(users.getIdentity()));
out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
outs.add(out);
}
pageOut.setList(outs);
return R.success(CodeEnum.SUCCESS,pageOut);
}
// @ApiOperation("新增使用者")
// @PostMapping("/add")
// public R addUsers(@RequestBody Users users) {
// return R.success(CodeEnum.SUCCESS,userService.addUser(users));
// }
@ApiOperation("新增讀者")
@PostMapping("/addReader")
public R addReader(@RequestBody Users users) {
if (users == null) {
return R.fail(CodeEnum.PARAM_ERROR);
}
// 讀者預設是普通使用者
users.setIsAdmin(1);
return R.success(CodeEnum.SUCCESS,userService.addUser(users));
}
@ApiOperation("新增管理員")
@PostMapping("/addAdmin")
public R addAdmin(@RequestBody Users users) {
if (users == null) {
return R.fail(CodeEnum.PARAM_ERROR);
}
// 設定管理員許可權
users.setIsAdmin(0);
return R.success(CodeEnum.SUCCESS,userService.addUser(users));
}
@ApiOperation("編輯使用者")
@PostMapping("/update")
public R modifyUsers(@RequestBody Users users) {
return R.success(CodeEnum.SUCCESS,userService.updateUser(users));
}
@ApiOperation("使用者詳情")
@GetMapping("/detail")
public R userDetail(Integer id) {
Users user = userService.findUserById(id);
if (user!=null) {
UserOut out = new UserOut();
BeanUtils.copyProperties(user,out);
out.setBirth(DateUtil.format(user.getBirthday(),Constants.DATE_FORMAT));
out.setIdent(ConvertUtil.identStr(user.getIdentity()));
return R.success(CodeEnum.SUCCESS,out);
}
return R.fail(CodeEnum.NOT_FOUND);
}
@ApiOperation("刪除使用者")
@GetMapping("/delete")
public R delUsers(Integer id) {
userService.deleteUser(id);
return R.success(CodeEnum.SUCCESS);
}
@ApiOperation("獲取當前使用者登陸資訊")
@GetMapping("/currUser")
public R getCurrUser() {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal!=null) {
Map<String,Object> map = BeanUtil.beanToMap(principal);
String username = (String) map.get("username");
if (StrUtil.isNotBlank(username)) {
Users users = userService.findByUsername(username);
UserOut out = new UserOut();
BeanUtils.copyProperties(users,out);
out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
Integer identity = users.getIdentity();
String ident = "";
if (identity == Constants.STUDENT) {
ident = Constants.STU_STR;
}else if (identity == Constants.TEACHER) {
ident = Constants.TEA_STR;
}else if (identity == Constants.OTHER) {
ident = Constants.OTHER_STR;
}else if (identity == Constants.ADMIN) {
ident = Constants.ADMIN_STR;
}
out.setIdent(ident);
return R.success(CodeEnum.SUCCESS,out);
}
}
return R.fail(CodeEnum.USER_NOT_FOUND);
}
}
08 使用說明
- 本地搭建好java8環境,資料庫MySQL5.5+;
- 匯入sql檔案至資料庫中,修改資料連線(你自己庫名,使用者名稱,密碼等);
- 匯入專案,配置maven, 等待依賴下載完成;
- 安裝IDE,開啟專案;
- 啟動訪問http://localhost:8080 即可;
- 賬號:【學生: stu/123】【教師: tea/123】【其他:other/123】【管理員:admin/123】
09 如何匯入?
- idea:直接open開啟原始碼資料夾,記住是pom檔案所在的目錄
- eclipse: 直接匯入- 選擇已存在匯入maven專案
- 檢查maven是否配置好
10 原始碼下載
關注公眾號【C you again】,回覆“JavaWeb 圖書管理系統”免費領取。
亦可直接掃描主頁二維碼關注,回覆“JavaWeb 圖書管理系統”免費領取,點此打開個人主頁
說明:此原始碼來源於網路,若有侵權,請聯絡刪除!!