当前位置:   article > 正文

Java项目:图书管理系统(java+SpringBoot+html+ThymeLeaf+Bootstrap+maven+mysql)_对于商品的增删改查的前端代码及后端代码idea要前端好看的javaweb项目

对于商品的增删改查的前端代码及后端代码idea要前端好看的javaweb项目

源码获取:博客首页 "资源" 里下载!

项目介绍

该项目分为管理员与读者两种角色,主要功能有:

1.  登录、注销、修改密码
2.  管理员主要功能包括:图书管理、读者管理、借还管理。对图书信息的增删改查、查看读者、查看借阅记录等;

3.  读者对图书信息的查看查询、修改个人信息、查看借阅记录

共7张表;

环境需要

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版本;

技术栈

数据库:mysql5.7
后端框架: SpringBoot
HTML模板: ThymeLeaf
持久层: Mybatis
UI: Bootstrap

登录验证和用户权限: SpringSecurity

使用说明

本项目使用maven进行管理,详细安装教程自行百度
1.  需下载mysql图形化管理工具(例如Navicat),新建数据库library,右键数据库-->运行项目中的library.sql脚本
2.  打开项目(idea或eclipse皆可,但需配置好maven环境),打开src/main/resources/application.yml,将数据库的username和password修改成你自己的mysql的用户名和密码
3.  找到BookmanagerApplication类运行main方法,打开浏览器,网址栏输入localhost:8080访问系统

4.  如果不想用IDE打开项目而是想直接运行的朋友们,在目录下打开cmd键入mvn package命令,然后在target/目录下会生成对应的jar包,在cmd用“java -jar jar包名”运行即可

注意事项

1.  高版本mysql在登录时可能会报空指针错误,出现问题的建议安装并使用mysql5.7版本

 

 

 

 

用户管理控制层:

  1. /**
  2. * @Description 用户管理
  3. * @Author by yy
  4. */
  5. @Api(tags = "用户管理")
  6. @RestController
  7. @RequestMapping("/user")
  8. public class UsersController {
  9. @Autowired
  10. private UserService userService;
  11. @ApiOperation("用户列表")
  12. @PostMapping("/list")
  13. public R getUsers(@RequestBody PageIn pageIn) {
  14. if (pageIn == null) {
  15. return R.fail(CodeEnum.PARAM_ERROR);
  16. }
  17. // 封装分页出参对象
  18. PageInfo<Users> userList = userService.getUserList(pageIn);
  19. PageOut pageOut = new PageOut();
  20. pageOut.setCurrPage(userList.getPageNum());
  21. pageOut.setPageSize(userList.getPageSize());
  22. pageOut.setTotal((int) userList.getTotal());
  23. List<UserOut> outs = new ArrayList<>();
  24. for (Users users : userList.getList()) {
  25. UserOut out = new UserOut();
  26. BeanUtils.copyProperties(users,out);
  27. out.setIdent(ConvertUtil.identStr(users.getIdentity()));
  28. out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
  29. outs.add(out);
  30. }
  31. pageOut.setList(outs);
  32. return R.success(CodeEnum.SUCCESS,pageOut);
  33. }
  34. /**
  35. * 添加读者操作
  36. * @param users
  37. * @return
  38. */
  39. @ApiOperation("添加读者")
  40. @ResponseBody
  41. @PostMapping("/addReader")
  42. public R addReader(Users users) {
  43. if (users == null) {
  44. return R.fail(CodeEnum.PARAM_ERROR);
  45. }
  46. if(StringUtils.isEmpty(users.getAvatar())) {
  47. return R.fail(CodeEnum.USER_HEAD_PIC_ERROR);
  48. }
  49. if(StringUtils.isEmpty(users.getUsername())) {
  50. return R.fail(CodeEnum.USERNAME_NOT_EXIST_ERROR);
  51. }
  52. if(StringUtils.isEmpty(users.getNickname())) {
  53. return R.fail(CodeEnum.NICKNAME_NOT_EXIST_ERROR);
  54. }
  55. if(StringUtils.isEmpty(users.getTel())) {
  56. return R.fail(CodeEnum.USER_MOBILE_NOT_EXIST_ERROR);
  57. }
  58. if(StringUtils.isEmpty(users.getEmail())) {
  59. return R.fail(CodeEnum.USER_EMAIL_NOT_EXIST_ERROR);
  60. }
  61. Users byUsername = userService.findByUsername(users.getUsername());
  62. if(byUsername!=null){
  63. return R.fail(CodeEnum.USER_NAME_IS_EXIST_ERROR);
  64. }
  65. // 读者默认是普通用户
  66. users.setIsAdmin(1);
  67. Users users1 = userService.addUser(users);
  68. if(users1==null){
  69. return R.fail(CodeEnum.USER_ADD_ERROR);
  70. }
  71. return R.success(CodeEnum.SUCCESS);
  72. }
  73. /**
  74. * 编辑用户操作
  75. * @param users
  76. * @return
  77. */
  78. @ApiOperation("编辑用户")
  79. @ResponseBody
  80. @PostMapping("/edit")
  81. public R modifyUsers(Users users) {
  82. if (users == null) {
  83. return R.fail(CodeEnum.PARAM_ERROR);
  84. }
  85. if(StringUtils.isEmpty(users.getAvatar())) {
  86. return R.fail(CodeEnum.USER_HEAD_PIC_ERROR);
  87. }
  88. if(StringUtils.isEmpty(users.getUsername())) {
  89. return R.fail(CodeEnum.USERNAME_NOT_EXIST_ERROR);
  90. }
  91. if(StringUtils.isEmpty(users.getNickname())) {
  92. return R.fail(CodeEnum.NICKNAME_NOT_EXIST_ERROR);
  93. }
  94. if(StringUtils.isEmpty(users.getTel())) {
  95. return R.fail(CodeEnum.USER_MOBILE_NOT_EXIST_ERROR);
  96. }
  97. if(StringUtils.isEmpty(users.getEmail())) {
  98. return R.fail(CodeEnum.USER_EMAIL_NOT_EXIST_ERROR);
  99. }
  100. Users byUsername = userService.findByUsername(users.getUsername());
  101. if(byUsername!=null){
  102. if(!byUsername.getId().equals(users.getId())){
  103. return R.fail(CodeEnum.USER_NAME_IS_EXIST_ERROR);
  104. }
  105. }
  106. if(!userService.updateUser(users)){
  107. return R.fail(CodeEnum.USER_EDIT_ERROR);
  108. }
  109. return R.success(CodeEnum.SUCCESS);
  110. }
  111. @ApiOperation("用户详情")
  112. @GetMapping("/detail")
  113. public R userDetail(Integer id) {
  114. Users user = userService.findUserById(id);
  115. if (user!=null) {
  116. UserOut out = new UserOut();
  117. BeanUtils.copyProperties(user,out);
  118. out.setBirth(DateUtil.format(user.getBirthday(),Constants.DATE_FORMAT));
  119. out.setIdent(ConvertUtil.identStr(user.getIdentity()));
  120. return R.success(CodeEnum.SUCCESS,out);
  121. }
  122. return R.fail(CodeEnum.NOT_FOUND);
  123. }
  124. @ApiOperation("删除用户")
  125. @GetMapping("/delete")
  126. public R delUsers(Integer id) {
  127. userService.deleteUser(id);
  128. return R.success(CodeEnum.SUCCESS);
  129. }
  130. @ApiOperation("获取当前用户登陆信息")
  131. @GetMapping("/currUser")
  132. public R getCurrUser() {
  133. Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  134. if (principal!=null) {
  135. Map<String,Object> map = BeanUtil.beanToMap(principal);
  136. String username = (String) map.get("username");
  137. if (StrUtil.isNotBlank(username)) {
  138. Users users = userService.findByUsername(username);
  139. UserOut out = new UserOut();
  140. BeanUtils.copyProperties(users,out);
  141. out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
  142. Integer identity = users.getIdentity();
  143. String ident = "";
  144. if (identity == Constants.STUDENT) {
  145. ident = Constants.STU_STR;
  146. }else if (identity == Constants.TEACHER) {
  147. ident = Constants.TEA_STR;
  148. }else if (identity == Constants.OTHER) {
  149. ident = Constants.OTHER_STR;
  150. }else if (identity == Constants.ADMIN) {
  151. ident = Constants.ADMIN_STR;
  152. }
  153. out.setIdent(ident);
  154. return R.success(CodeEnum.SUCCESS,out);
  155. }
  156. }
  157. return R.fail(CodeEnum.USER_NOT_FOUND);
  158. }
  159. }

借阅管理控制层:

  1. /**
  2. * @Description 借阅管理
  3. * @Author by yy
  4. */
  5. @Api(tags = "借阅管理")
  6. @RestController
  7. @RequestMapping("/borrow")
  8. public class BorrowController {
  9. @Autowired
  10. private BorrowService borrowService;
  11. @Autowired
  12. private BookService bookService;
  13. @ApiOperation("借阅列表")
  14. @GetMapping("/list")
  15. public R getBorrowList(Integer userId) {
  16. return R.success(CodeEnum.SUCCESS,borrowService.findAllBorrowByUserId(userId));
  17. }
  18. @ApiOperation("借阅图书")
  19. @PostMapping("/add")
  20. public R addBorrow(@RequestBody Borrow borrow) {
  21. Integer result = borrowService.addBorrow(borrow);
  22. if (result == Constants.BOOK_BORROWED) {
  23. return R.success(CodeEnum.BOOK_BORROWED);
  24. }else if (result == Constants.USER_SIZE_NOT_ENOUGH) {
  25. return R.success(CodeEnum.USER_NOT_ENOUGH);
  26. }else if (result == Constants.BOOK_SIZE_NOT_ENOUGH) {
  27. return R.success(CodeEnum.BOOK_NOT_ENOUGH);
  28. }
  29. return R.success(CodeEnum.SUCCESS,Constants.OK);
  30. }
  31. @ApiOperation("编辑借阅")
  32. @PostMapping("/update")
  33. public R modifyBorrow(@RequestBody Borrow borrow) {
  34. return R.success(CodeEnum.SUCCESS,borrowService.updateBorrow(borrow));
  35. }
  36. @ApiOperation("借阅详情")
  37. @GetMapping("/detail")
  38. public R borrowDetail(Integer id) {
  39. return R.success(CodeEnum.SUCCESS,borrowService.findById(id));
  40. }
  41. @ApiOperation("删除归还记录")
  42. @GetMapping("/delete")
  43. public R delBorrow(Integer id) {
  44. borrowService.deleteBorrow(id);
  45. return R.success(CodeEnum.SUCCESS);
  46. }
  47. @ApiOperation("已借阅列表")
  48. @GetMapping("/borrowed")
  49. public R borrowedList(Integer userId) {
  50. List<BackOut> outs = new ArrayList<>();
  51. if (userId!=null&&userId>0) {
  52. // 获取所有 已借阅 未归还书籍
  53. List<Borrow> borrows = borrowService.findBorrowsByUserIdAndRet(userId, Constants.NO);
  54. for (Borrow borrow : borrows) {
  55. BackOut backOut = new BackOut();
  56. BookOut out = bookService.findBookById(borrow.getBookId());
  57. BeanUtils.copyProperties(out,backOut);
  58. backOut.setBorrowTime(DateUtil.format(borrow.getCreateTime(),Constants.DATE_FORMAT));
  59. String endTimeStr = DateUtil.format(borrow.getEndTime(), Constants.DATE_FORMAT);
  60. backOut.setEndTime(endTimeStr);
  61. // 判断是否逾期
  62. String toDay = DateUtil.format(new Date(), Constants.DATE_FORMAT);
  63. int i = toDay.compareTo(endTimeStr);
  64. if (i>0) {
  65. backOut.setLate(Constants.YES_STR);
  66. }else {
  67. backOut.setLate(Constants.NO_STR);
  68. }
  69. outs.add(backOut);
  70. }
  71. }
  72. return R.success(CodeEnum.SUCCESS,outs);
  73. }
  74. @ApiOperation("归还书籍")
  75. @PostMapping("/ret")
  76. public R retBook(Integer userId, Integer bookId) {
  77. // 归还图书
  78. borrowService.retBook(userId,bookId);
  79. return R.success(CodeEnum.SUCCESS);
  80. }
  81. }

图书管理控制层:

  1. /**
  2. * @Description 图书管理
  3. * @Author by yy
  4. */
  5. @Api(tags = "图书管理")
  6. @RestController
  7. @RequestMapping("/book")
  8. public class BookController {
  9. @Autowired
  10. private BookService bookService;
  11. @ApiOperation("图书搜索列表")
  12. @PostMapping("/list")
  13. public R getBookList(@RequestBody PageIn pageIn) {
  14. if (pageIn == null) {
  15. return R.fail(CodeEnum.PARAM_ERROR);
  16. }
  17. return R.success(CodeEnum.SUCCESS,bookService.getBookList(pageIn));
  18. }
  19. /**
  20. * 添加图片操作
  21. * @param book
  22. * @return
  23. */
  24. @ApiOperation("添加图书")
  25. @ResponseBody
  26. @PostMapping("/add")
  27. public R addBook(Book book) {
  28. if(StringUtils.isEmpty(book.getName())){
  29. return R.fail(CodeEnum.BOOK_NAME_NOT_EXIST_ERROR);
  30. }
  31. if(StringUtils.isEmpty(book.getIsbn())){
  32. return R.fail(CodeEnum.BOOK_ISBN_NOT_EXIST_ERROR);
  33. }
  34. if(StringUtils.isEmpty(book.getPic())){
  35. return R.fail(CodeEnum.BOOK_IMAGE_NOT_EXIST_ERROR);
  36. }
  37. if(StringUtils.isEmpty(book.getAuthor())){
  38. return R.fail(CodeEnum.BOOK_AUTHOR_NOT_EXIST_ERROR);
  39. }
  40. if(StringUtils.isEmpty(book.getType())){
  41. return R.fail(CodeEnum.BOOK_TYPE_NOT_EXIST_ERROR);
  42. }
  43. BookOut bookByIsbn = bookService.findBookByIsbn(book.getIsbn());
  44. if(bookByIsbn.getName()!=null){
  45. return R.fail(CodeEnum.BOOK_ISBN_EXIST_ERROR);
  46. }
  47. if(bookService.addBook(book)==null){
  48. return R.fail(CodeEnum.BOOK_ADD_ERROR);
  49. }
  50. return R.success(CodeEnum.SUCCESS);
  51. }
  52. /**
  53. * 编辑图书
  54. * @param book
  55. * @return
  56. */
  57. @ApiOperation("编辑图书")
  58. @ResponseBody
  59. @PostMapping("/edit")
  60. public R editBook(Book book) {
  61. if(StringUtils.isEmpty(book.getName())){
  62. return R.fail(CodeEnum.BOOK_NAME_NOT_EXIST_ERROR);
  63. }
  64. if(StringUtils.isEmpty(book.getIsbn())){
  65. return R.fail(CodeEnum.BOOK_ISBN_NOT_EXIST_ERROR);
  66. }
  67. if(StringUtils.isEmpty(book.getPic())){
  68. return R.fail(CodeEnum.BOOK_IMAGE_NOT_EXIST_ERROR);
  69. }
  70. if(StringUtils.isEmpty(book.getAuthor())){
  71. return R.fail(CodeEnum.BOOK_AUTHOR_NOT_EXIST_ERROR);
  72. }
  73. if(StringUtils.isEmpty(book.getType())){
  74. return R.fail(CodeEnum.BOOK_TYPE_NOT_EXIST_ERROR);
  75. }
  76. BookOut bookByIsbn = bookService.findBookByIsbn(book.getIsbn());
  77. if(bookByIsbn.getName()!=null){
  78. if(!bookByIsbn.getId().equals(book.getId())){
  79. return R.fail(CodeEnum.BOOK_ISBN_EXIST_ERROR);
  80. }
  81. }
  82. if(!bookService.updateBook(book)){
  83. return R.fail(CodeEnum.BOOK_EDIT_ERROR);
  84. }
  85. return R.success(CodeEnum.SUCCESS);
  86. }
  87. @ApiOperation("图书详情")
  88. @GetMapping("/detail")
  89. public R bookDetail(Integer id) {
  90. return R.success(CodeEnum.SUCCESS,bookService.findBookById(id));
  91. }
  92. @ApiOperation("图书详情 根据ISBN获取")
  93. @GetMapping("/detailByIsbn")
  94. public R bookDetailByIsbn(String isbn) {
  95. BookOut bookByIsbn = bookService.findBookByIsbn(isbn);
  96. if(bookByIsbn.getId()==null){
  97. return R.fail(CodeEnum.BOOK_NOT_EXIST_ERROR);
  98. }
  99. return R.success(CodeEnum.SUCCESS,bookByIsbn);
  100. }
  101. @ApiOperation("删除图书")
  102. @GetMapping("/delete")
  103. public R delBook(Integer id) {
  104. bookService.deleteBook(id);
  105. return R.success(CodeEnum.SUCCESS);
  106. }
  107. }

源码获取:博客首页 "资源" 里下载! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/760660
推荐阅读
相关标签
  

闽ICP备14008679号