33基于Java简单实现图书馆借书管理系统设计与实现

这篇具有很好参考价值的文章主要介绍了33基于Java简单实现图书馆借书管理系统设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章节给大家介绍一个基于Java简单实现图书馆借书管理系统的设计与实现

项目概述

项目总体分为俩种角色,分别是管理员和阅读者,管理员可以登录系统中,进行图书管理,上架下架图书,对用户进行管理、对读者进行管理、查看借阅记录管理等,读者角色可以登录系统查询图书信息、借阅和归还图书、查看个人借阅记录、编辑个人信息等。

项目功能简单,数据库也只有4张表,分别为管理员表,读者表,图书表和借阅记录表,但基本实现了图书馆对图书借书的管理功能,大家可以在这个基础上面灵活增加功能。
33基于Java简单实现图书馆借书管理系统设计与实现

项目架构和内容获取

采用B/S的架构实现,整体遵循MVC的设计思想,采用的是前后端分离的技术。

> 开发系统:Windows
> 架构模式:MVC/前后端分离
J> >DK版本:Java JDK1.8
> 开发工具:idea或者eclipse
> 数据库版本: mysql
> 数据库可视化工具: navicat
> 后端:java,spring,springmvc,springboot,mybatis,tomcat等
> 前端:html,css,javascript,vue等
> 更多详细内容可点击查看:http://projecthelp.top

项目实现

所有的代码文件都有详细的注释,不用担心看不懂代码的。

  • BookController图书的控制器类:
@RestController
@RequestMapping("/book")
public class BookController extends BaseController {
    @Resource
    private BookService bookService;

    /**
     * 分页查询所有数据
     *
     * @param page 分页对象
     * @param book 查询实体
     * @return 所有数据
     */
    @GetMapping("/list")
    public R selectAll(Page<Book> page, Book book) {
        return result(this.bookService.page(page, book));
    }

    /**
     * 添加图书
     *
     * @param book 图书
     * @return 是否添加成功
     */
    @PostMapping("/add")
    public R addBook(@RequestBody Book book) {
        return result(bookService.save(book));
    }

    /**
     * 修改图书
     *
     * @param book 图书
     * @return 是否修改成功
     */
    @PostMapping("/update")
    public R updateBook(@RequestBody Book book) {
        return result(bookService.updateById(book));
    }

    /**
     * 根据图书编号批量删除图书
     *
     * @param isbns 图书编号表
     * @return 是否删除成功
     */
    @GetMapping("/delete")
    public R deleteBook(@RequestParam List<String> isbns) {
        return result(bookService.removeByIds(isbns));
    }

    //======================= 读者操作接口 ======================

    /**
     * 借阅图书
     *
     * @param isbn     图书编号
     * @param readerId 读者编号
     * @return 是否借阅成功
     */
    @GetMapping("/lendBook")
    public R lendBook(String isbn, Long readerId) {
        return result(bookService.lendBook(isbn, readerId));
    }

    /**
     * 归还图书
     *
     * @param isbn     图书编号
     * @param readerId 读者编号
     * @return 是否归还成功
     */
    @GetMapping("/returnBook")
    public R returnBook(String isbn, Long readerId) {
        return result(bookService.returnBook(isbn, readerId));
    }
}
  • 图书service的实现类:
@Service("bookService")
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
    @Resource
    private LendRecordService lendRecordService;

    /**
     * 分页查询图书
     *
     * @param page 分页
     * @param book 查询信息
     * @return 图书列表,图书总计
     */
    @Override
    public Map<String, Object> page(Page<Book> page, Book book) {
        String author = book.getAuthor();
        String bookName = book.getBookName();

        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.lambda().like(!StringUtils.isEmpty(author), Book::getAuthor, author)
                .like(!StringUtils.isEmpty(bookName), Book::getBookName, bookName);

        Page<Book> selectPage = this.baseMapper.selectPage(page, wrapper);
        Map<String, Object> map = new HashMap<>();
        map.put("list", selectPage.getRecords());
        map.put("total", selectPage.getTotal());
        return map;
    }

    /**
     * 借阅图书
     * 根据图书的isbn编号借阅图书
     * 如果当前图书未被借阅(status为0),修改status为1,同时新增一条借阅记录
     *
     * @param isbn     图书编号
     * @param readerId 读者编号
     * @return 是否借阅成功
     */
    @Override
    public boolean lendBook(String isbn, Long readerId) {
        Book book = this.baseMapper.selectById(isbn);
        book.setStatus("1");
        int res = this.baseMapper.updateById(book);

        // 新增借阅记录
        LendRecord lendRecord = new LendRecord();
        lendRecord.setIsbn(isbn);
        lendRecord.setReaderId(readerId);
        lendRecord.setLendDate(new Date());
        boolean save = lendRecordService.save(lendRecord);

        return res == 1 && save;
    }

    /**
     * 归还图书
     *
     * @param isbn     图书编号
     * @param readerId 读者编号
     * @return 是否归还成功
     */
    @Override
    public boolean returnBook(String isbn, Long readerId) {
        Book book = this.baseMapper.selectById(isbn);
        book.setStatus("0");
        int res = this.baseMapper.updateById(book);

        // 更新借阅记录状态
        QueryWrapper<LendRecord> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(LendRecord::getStatus, "0").eq(LendRecord::getIsbn, isbn).eq(LendRecord::getReaderId, readerId);
        LendRecord lendRecord = lendRecordService.getOne(wrapper);
        lendRecord.setReturnDate(new Date());
        lendRecord.setStatus("1");
        boolean update = lendRecordService.update(lendRecord, wrapper);

        return res == 1 && update;

    }
}
  • 系统登录处理控制器LoginController:
@RestController
public class LoginController extends BaseController {
    @Resource
    private AdminService adminService;
    @Resource
    private ReaderService readerService;

    /**
     * 登录
     *
     * @param loginBody 登录信息
     * @return 随机字符串uuid
     */
    @PostMapping("/login")
    public R login(@RequestBody LoginBody loginBody) {
        String username = loginBody.getUsername();
        String password = loginBody.getPassword();
        String role = loginBody.getRole();
        Object user = null;

        if (!StringUtils.isEmpty(role)) {
            if ("reader".equals(role)) {
                // 读者登录
                QueryWrapper<Reader> wrapper = new QueryWrapper<>();
                wrapper.lambda().eq(Reader::getUsername, username).eq(Reader::getPassword, password);
                user = readerService.getOne(wrapper);
            } else if ("admin".equals(role)) {
                // 管理员登录
                QueryWrapper<Admin> wrapper = new QueryWrapper<>();
                wrapper.lambda().eq(Admin::getUsername, username).eq(Admin::getPassword, password);
                user = adminService.getOne(wrapper);
            }
        }

        if (user != null) { // 登录成功
            String uuid = UUIDUtils.getUUID();
            Long userId = "admin".equals(role) ? ((Admin) user).getId() : ((Reader) user).getReaderId();
            LoginUser.addUser(uuid, role, userId);
            LoginUser.addVisitCount(); // 访问数量加1
            return result(uuid, "登录成功!");
        } else {
            return result(R.ERROR, "登录失败! 账号或密码错误!");
        }
    }

    /**
     * 获取用户信息
     *
     * @param token 令牌
     * @return 用户信息
     */
    @GetMapping("/getInfo")
    public R getInfo(String token) {
        if (!StringUtils.isEmpty(token)) {
            User u = LoginUser.getUserByToken(token);
            if (u != null) {
                // token验证成功
                String role = u.getRole();
                Long userId = u.getUserId();
                Object user = null;

                if ("reader".equals(role)) {
                    // 获取读者信息
                    QueryWrapper<Reader> wrapper = new QueryWrapper<>();
                    wrapper.lambda().eq(Reader::getReaderId, userId);
                    user = readerService.getOne(wrapper);
                } else if ("admin".equals(role)) {
                    // 获取管理员信息
                    QueryWrapper<Admin> wrapper = new QueryWrapper<>();
                    wrapper.lambda().eq(Admin::getId, userId);
                    user = adminService.getOne(wrapper);
                }
                return result(user);
            }
        }
        return result(R.SUCCESS, "暂未登录!");
    }

    /**
     * 获取访问数量
     *
     * @return 访问数量
     */
    @GetMapping("/visitCount")
    public R visitCount() {
        return result(LoginUser.getVisitCount());
    }
}
  • 完整项目获取
浏览器输入 projecthelp.top 

部分功能展示

登录页面

管理员和读者可以通过账号密码登录系统中:
33基于Java简单实现图书馆借书管理系统设计与实现

管理员角色

管理员首页

管理员首页展示了所有的借阅次数,总共访问数,总共的图书数量以及总共的读者数量,同时还了图表显示:
33基于Java简单实现图书馆借书管理系统设计与实现

图书管理

管理员可以上架新的图书,可以修改,删除图书:
33基于Java简单实现图书馆借书管理系统设计与实现

读者管理

管理员可以看到所有的系统读者,还可以增加读者,修改密码等等:
33基于Java简单实现图书馆借书管理系统设计与实现

借阅管理

管理员可以查看所有的系统图书的借阅记录:
33基于Java简单实现图书馆借书管理系统设计与实现

读者角色

图书查询

读者可以通过图书名称或者图书的作者查询系统的图书列表,对于未借阅的图书,读者可以点击借阅即可借阅图书,然后对于自己已借阅的图书可以进行归还:
33基于Java简单实现图书馆借书管理系统设计与实现

查看自己的借阅记录

对于读者在系统上面的借阅记录,可以在借阅管理进行查看:
33基于Java简单实现图书馆借书管理系统设计与实现

个人信息

读者可以在个人中心进行信息修改:
33基于Java简单实现图书馆借书管理系统设计与实现文章来源地址https://www.toymoban.com/news/detail-436667.html

到了这里,关于33基于Java简单实现图书馆借书管理系统设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于JAVA微信小程序教室图书馆座位预约系统设计与实现

    开发概要 小程序开发:微信开发者工具(MINA框架) 后台环境:JDK1.8 + Tomcat8 后台开发语言:Java 后台开发框架:springboot 后台模板引擎:Thymeleaf 后台开发工具:Idea2020 数据库:mysql8 数据库管理工具:navicat 其他开发语言:html + css +javascript

    2024年02月11日
    浏览(45)
  • 基于Java的图书馆借阅管理系统的设计与实现--毕业开题报告

    基于Java的图书馆借阅管理系统的设计与实现–开题报告 这个先写一版开题报告,后续有时间给大家提供论文 。 题目:基于Java的图书馆借阅管理系统的设计与实现 图书馆是一个信息系统,它收集、处理、组织、存储、选择、控制、转换重要的信息和知识载体,并将其传递给

    2024年02月03日
    浏览(117)
  • 基于JAVA+Springboot+Thymeleaf前后端分离项目:校园学校图书馆座位预约系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月19日
    浏览(57)
  • 用Java开发一个简单的图书馆管理系统

    图书馆管理系统是一种用于管理图书馆材料、用户和借还书记录等信息的软件系统。Java是一种流行的编程语言,它可以用于开发图书馆管理系统。在本篇文章中,我们将介绍如何使用Java编写一个简单的图书馆管理系统。 在设计系统时,需要考虑到各种各样的因素,例如系统

    2024年02月08日
    浏览(57)
  • Java 实现图书馆管理系统

    目录 一:创建对象 1.学生类对象Student : 2.图书类对象book : 3.管理员类对象OP: 二.创建主要交互界面MainMenu,并实现主界面功能 1.创建交互界面: 2.实现主界面功能: 三:创建OP管理界面: 1.创建主要交互界面及实现\\\"管理学生\\\"功能OPmenu: (1).交互界面: (2):实现\\\"管理学生\\\"功能: 2.实现\\\"管理

    2024年02月12日
    浏览(48)
  • 42基于java的图书馆自习室座位预约系统

    本章节给大家带来一个基于java的座位预约系统,可以用于图书馆占位系统,图书馆座位预约系统,大学自习室占座系统,自习室座位预约系统,图书馆预约占座系统,自习室预约占座系统,座位预约系统等等; 下面以图书馆为例,大家把源码下载下来后,还可以修改图书馆

    2024年02月07日
    浏览(66)
  • 图书馆自习室|基于SSM的图书馆自习室座位预约小程序设计与实现(源码+数据库+文档)

    图书馆自习室 目录 基于SSM的图书馆自习室座位预约小程序设计与实现 一、前言 二、系统设计 三、系统功能设计  1、小程序端: 2、后台 四、数据库设计  五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍 :✌️大厂码农|毕设布道师,

    2024年04月12日
    浏览(73)
  • 基于springboot+uniapp的图书馆座位预约小程序(Java毕业设计)

     大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是初学者还是有一定经验的程序员,我都希望能够为你

    2024年01月21日
    浏览(48)
  • 基于微信小程序的图书馆管理系统设计与实现

                                                                         摘要 在当今社会,互联网已经开始成为时代的主流,随着信息技术的发展,人们开始越来越依赖网络。互联网也逐渐成为我们生活中必不可少的一部分,它的出现也重新定义了人们获取信息资源的

    2024年02月12日
    浏览(52)
  • Java连接数据库实现图书馆管理系统(详细教程)

    该功能用到的软件为 IDEA 、Navicat 、云服务器(非必须) 源码下载 https://www.aliyundrive.com/s/UTz8pNxobGK 在自己的服务器或者电脑本机安装数据库系统,本次系统演示的数据库版本为5.6。 1.创建图书管理数据库library 字符集为:utf8 -utf8_general_ci 2.设计好将要使用的sql语句 视图、存储

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包