1.系统概述
图书管理系统就是利用计算机,结合互联网对图书进行结构化、自动化管理的一种软件,来提高对图书的管理效率。
本系统具有集成主流框架、简单精简化开发、高拓展性等优点。
2.实现技术
SpringBoot + Jpa + MyBatis + SpringSecurity +JavaEx
后端:
-
基础框架:SpringBoot
-
简单数据操作:Spring Data Jpa
-
复杂数据操作:Mybatis
-
安全框架:SpringSecurity
-
模板引擎:Thymeleaf
前端:
-
JavaEx, 其实就是对 Html,CSS,Js 的封装。比较接近原生修改起来比较方便
-
JQuery , 对 Js 进行了封装, 突破各种前端框架的限制
3.运行环境
Jdk1.8 + Maven3 + MySql5.7
4.功能介绍
图书管理
-
图书列表:显示已经上架的图书信息,可对上架图书进行搜索、修改、删除操作。
-
图书上架:录入图书信息,输入图书名称、作者、图书分类,页数,定价等数据进行图书录入。
借阅管理
-
搜索图书:根据图书名称、作者名称,图书分类等搜索图书。
-
借阅图书:录入图书信息,输入图书名称、作者、图书分类,页数,定价等数据进行图书借阅。
-
归还图书:对已经借阅的图书进行归还操作。
读者管理
-
读者列表:显示已经注册的读者用户。
-
读者添加:录入用户的昵称、用户名、密码、生日、电话、邮箱等信息添加新用户。
用户中心
-
个人信息:查看、修改个人信息。
-
用户管理:对已经添加的用户进行搜索、删除、使用权限信息进行设置。
-
添加管理员:录入管理员的昵称、用户名、密码、生日、电话、邮箱等信息添加新管理员。
5.运行截图
登录界面
首页
图书列表界面
添加图书界面
图书归还界面
读者列表界面
个人信息界面
用户管理界面
6.主要代码
图书管理
```java 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));
}
```
```java @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);
}
} ```
借阅管理
```java 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));
}
```
```java @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);
}
```
```Java
@ApiOperation("已借阅列表")
@GetMapping("/borrowed")
public R borrowedList(Integer userId) {
List
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);
}
} ```
用户管理
```java 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("/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));
}
```
java
@ApiOperation("编辑用户")
@PostMapping("/update")
public R modifyUsers(@RequestBody Users users) {
return R.success(CodeEnum.SUCCESS,userService.updateUser(users));
}
```java @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);
}
} ```
参考文献
- 基于SSH框架的图书馆管理系统分析与设计(云南大学·郑晨)
- Android环境下的沈阳工学院移动图书馆的研究(沈阳理工大学·张波)
- 基于Web的书刊进销存系统的设计与实现(大连理工大学·王宁)
- 基于RBAC的SSH架构下的图书管理应用研究(大连理工大学·姜楠)
- 基于J2EE架构的某学院图书管理信息系统设计与开发(电子科技大学·戴杰)
- 基于SSH框架的图书馆管理系统分析与设计(云南大学·郑晨)
- 基于WEB的图书管理系统的设计与开发(大连理工大学·邬金池)
- 基于J2EE架构的某学院图书管理信息系统设计与开发(电子科技大学·戴杰)
- 基于SSH架构的高校自助化图书管理系统的设计与实现(大连理工大学·杨议)
- 基于JSP的网上书店交易系统的设计与实现(吉林大学·徐迎新)
- 利用J2EE技术设计与实现网上书店(四川大学·周家锐)
- 图书管理系统设计与开发(电子科技大学·刘晓清)
- 图书馆管理信息系统的设计与实现(华东师范大学·朱瑞)
- 基于Android平台的图书管理系统手机客户端开发(电子科技大学·赵鲲)
- 网上书店的设计与实现(同济大学·徐爱鸣)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码项目助手 ,原文地址:https://m.bishedaima.com/yuanma/35671.html