基于JavaWeb开发图书管理系统

01 系统简述 图书管理系统就是利用计算机,结合互联网对图书进行结构化,自动化管理的一种软件,来提高对图书的管理效率, 02 系统特点 集成主流框架

本文包含相关资料包-----> 点击直达获取<-------

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 主要代码

图书管理

```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));
}


@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));
}


@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);
}

}

```

用户管理

```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("/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 使用说明

  1. 本地搭建好 java8 环境,数据库 MySQL5.5+;
  2. 导入 SQL 文件至数据库中,修改数据连接(你自己库名,用户名,密码等);
  3. 导入项目,配置 maven, 等待依赖下载完成;
  4. 安装 IDE,打开项目;
  5. 启动访问 http://localhost:8080 即可;
  6. 账号:【学生: stu/123】【教师: tea/123】【其他:other/123】【管理员:admin/123】

09 如何导入?

  • idea:直接 open 打开源码文件夹,记住是 pom 文件所在的目录
  • eclipse: 直接导入- 选择已存在导入 maven 项目
  • 检查 maven 是否配置好

参考文献

  • 基于B/S架构的图书管理系统(山东大学·彭鹏)
  • 基于B/S架构的图书管理系统(山东大学·彭鹏)
  • 图书综合管理系统(吉林大学·王宇)
  • 基于SSH框架的图书馆管理系统分析与设计(云南大学·郑晨)
  • 基于B/S架构的图书管理系统(山东大学·彭鹏)
  • 基于B/S架构的图书管理系统(山东大学·彭鹏)
  • 基于WEB的JSP网络售书系统(吉林大学·郭志峰)
  • 基于Android平台的图书管理系统手机客户端开发(电子科技大学·赵鲲)
  • 基于SSH架构的高校自助化图书管理系统的设计与实现(大连理工大学·杨议)
  • 图书管理系统的设计与实现(西南交通大学·张晶)
  • 基于JSP的艺术院校图书管理系统的设计与实现(西安电子科技大学·王擒龙)
  • 基于J2EE的图书管理系统的分析与设计(吉林大学·李妍)
  • 基于SSH框架的图书馆管理系统分析与设计(云南大学·郑晨)
  • 基于JSP的网上书店交易系统的设计与实现(吉林大学·徐迎新)
  • 图书管理系统的设计与实现(西南交通大学·张晶)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码工坊 ,原文地址:https://m.bishedaima.com/yuanma/35776.html

相关推荐

  • 基于Java Swing实现的简易考试系统界面搭建

    基于Java Swing实现的简易考试系统界面搭建 一,任务介绍 1,1 任务描述 本任务要搭建一个考试系统界面,考试题型主要有两类:判断题和单选题
    2024年05月14日
    2 1 1
  • 基于Python实现RRT与双向RRT算法

    1, 算法概述 1,1 RRT快速拓展随机数算法 RRT 的思想是快速扩张一群像树一样的路径以探索(填充)空间的大部分区域,伺机找到可行的路径,虽然不知道出路在哪里
    2024年05月14日
    1 1 1
  • 高校教务系统之Python

    高校教务系统 一,需求分析 1,1 业务场景 高校教务系统用户分为三种:管理员,教师,学生, 这也是根据现实大学生中的教务系统的情况,以及自己的一些想象
    2024年05月14日
    2 1 1
  • 基于Python实现类高级语言的词法分析器

    1, 需求分析 要求:阐述词法分析系统所要完成的功能 设计实现类高级语言的词法分析器,基本功能如下: 能识别以下几类单词: 标识符(由大小写字母
    2024年05月14日
    2 1 2
  • 基于JSP的学生信息管理系统

    Student-information-managemen 基于JSP的学生信息管理系统 参考文献 开放性实验室管理系统的设计与实现(南昌大学·刘定军) 基于JSP的辽宁大学毕业设计指导系统的设计与实现(吉林大学·王一凡) 基于J2EE的高校人力资源信息管理的设计与实现(四川大学·付明柏) 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚) 基于Web的学生管理信息系统的分析和设计(厦门大学·叶露阳) 基于MVC与ASP
    2024年05月14日
    2 1 1
  • 基于Python构建Wiki中文语料词向量模型

    利用Python构建Wiki中文语料词向量模型试验 本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型构建的实践过程
    2024年05月14日
    1 1 1
  • 基于Servlet + JSP实现的简易版的学生管理系统

    学生管理系统简易版总结 一,技术准备 这个项目是自己用于巩固 J2EE 相关知识的练手项目,非常简单,但是相关的功能却非常实用,所以在这里分享一下 为了完成这个项目
    2024年05月14日
    18 1 2
  • 基于Java+SSM的失物招领平台

    失物招领平台在当今社会具有重要意义,随着城市化进程的加快和人口流动的增加,人们的物品丢失的情况也日益普遍,针对这一现状,基于Java+SSM框架的失物招领平台应运而生,该平台为普通用户提供了一个便捷的途径来寻找丢失的物品
    2024年05月07日
    3 1 1
  • 飘香水果购物网站

    这是一个🔥🔥基于SpringBoot框架的飘香水果购物网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    6 1 1
  • 基于springboot+vue框架实现的在线教育系统

    基于springboot+vue框架实现的在线教育系统 一,引言 1,编写目的 希望给广大程序员们提供一个分享交流的平台,主要提供视频与文档的上传共享功能
    2024年05月14日
    4 1 1

发表回复

登录后才能评论