前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图书借阅系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

图书借阅系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

作者头像
Designer 小郑
发布2024-02-24 09:19:06
2380
发布2024-02-24 09:19:06
举报
文章被收录于专栏:跟着小郑学JAVA跟着小郑学JAVA

作者主页Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。

\color{red}{本文项目编号:S094。}

一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的图书借阅系统,包含了图书档案模块、图书预定模块、图书评论模块、图书新闻模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,图书借阅系统基于角色的访问控制,给管理员、学生使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

二、功能模块

图书馆借阅管理系统采用了前后端分离的架构,前端和后端通过API进行连接,后端采用MVC三层架构,本章将详细讲解图书馆借阅管理系统的架构设计,使我们的图书馆借阅管理系统更具可伸缩性和直观性,图书馆借阅管理系统的具体的划分结构示意图如下图所示。

2.1 登陆注册模块

登陆注册模块包括了基础的用户登陆和用户注册功能,用户通过这个模块进行认证,从而进入到图书馆图书借阅管理系统。

2.2 图书管理模块

图书管理模块是将所有图书数据规则化保存至图书馆图书借阅管理系统,图书馆人员可以根据需要进行录入图书、取消录入图书、更新图书信息、将图书导出到Excel的操作。

2.3 图书评论模块

当用户消费完成后可以进行评论,可以给与图书好评,告诉别人这是一本好书,其他顾客可以看到关于单个图书的评论信息;用户也可以给出差评,告诉别人这本书的质量不符合自己的要求,让其他用户不要借阅。

2.4 图书预定模块

图书预定模块用户保存顾客的图书下单信息,即预约订单数据。当顾客对某个图书进行预约后,系统应当自动生成预订单,顾客可以进入到图书预定模块,对订单进行支付,也可以查询自己的历史下单数据。

2.5 图书资讯模块

图书管理员可以根据自己的需求,发布关于图书的新闻信息,新闻资讯应当可以包括图片、文字,管理员发布后,用户可以看到这些内容。


三、系统设计

3.1 系统结构设计

3.1.1登陆注册模块的结构设计

登陆注册模块包括了基础的用户登陆和用户注册功能,用户通过这个模块进行认证,从而进入到图书馆图书借阅管理系统。

3.1.2图书管理模块的结构设计

图书管理模块是将所有图书数据规则化保存至图书馆图书借阅管理系统,图书馆人员可以根据需要进行录入图书、取消录入图书、更新图书信息、将图书导出到Excel的操作。

3.1.3图书评论模块的结构设计

当用户消费完成后,可以对图书的环境和服务进行评论,以方便其他顾客对图书有一个初步的了解,顾客可以对图书的某个图书进行评论,其他顾客可以看到关于单个图书的评论信息。

3.1.4图书预定模块的结构设计

图书预定模块用户保存顾客的图书下单信息,即预约订单数据。当顾客对某个图书进行预约后,系统应当自动生成预订单,顾客可以进入到图书预定模块,对订单进行支付,也可以查询自己的历史下单数据。

3.1.5图书资讯模块的结构设计

图书管理员可以根据自己的需求,发布关于图书的新闻信息,新闻资讯应当可以包括图片、文字,管理员发布后,用户可以看到这些内容。

3.2 E-R设计

图书管理模块是图书的基础信息进行记录并管理,其中图书类型的信息包括了图书的类型编号、类型名称、图书价格、图书总数、图书剩余数、图书描述、备注等,其中类型编号是系统图书的确定性因素。

图书档案的数据存储包括图书的楼栋号、楼层号、图书号、图书ID、图书状态、图书类型ID、图书类型、房价、备注等信息。

图书订单档案的数据存储包括订单号、下单人ID、下单人名称、下单人手机号、订单ID、订单价格、预定图书数、下单时间、订单状态、备注等信息。

系统的整体E-R图如图所示。

3.3 数据库设计

学生在使用图书馆图书借阅管理系统的过程中,需要有一个登陆用户的存在,告诉系统当前登陆的用户是谁,以便于传递参数时可以减少性能消耗,以下是图书借阅系统的数据库设计表。

四、系统展示


五、核心代码

5.1 查询图书数据

代码语言:javascript
复制
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询图书数据")
public Result<IPage<Dormitory>> getByPage(@ModelAttribute Dormitory dormitory, @ModelAttribute PageVo page){
    QueryWrapper<Dormitory> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(dormitory.getTitle())) {
        qw.like("title",dormitory.getTitle());
    }
    if(!ZwzNullUtils.isNull(dormitory.getType())) {
        qw.eq("type",dormitory.getType());
    }
    if(!ZwzNullUtils.isNull(dormitory.getBreakfast())) {
        qw.eq("breakfast",dormitory.getBreakfast());
    }
    IPage<Dormitory> data = iDormitoryService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Dormitory>>().setData(data);
}

5.2 新增图书评论

代码语言:javascript
复制
@RequestMapping(value = "/addMyDiscuss", method = RequestMethod.POST)
@ApiOperation(value = "新增图书评论")
public Result<Object> addMyDiscuss(@RequestParam String id, @RequestParam String reply, @RequestParam String text){
    Dormitory dormitory = iDormitoryService.getById(id);
    if(dormitory == null) {
        return ResultUtil.error("图书不存在");
    }
    User currUser = securityUtil.getCurrUser();
    DormitoryDiscuss discuss = new DormitoryDiscuss();
    discuss.setUserId(currUser.getId());
    discuss.setUserName(currUser.getNickname());
    discuss.setReply(reply);
    discuss.setDormitoryId(dormitory.getId());
    discuss.setDiscussTime(DateUtil.now());
    discuss.setContent(text);
    iDormitoryDiscussService.saveOrUpdate(discuss);
    return ResultUtil.success("OK");
}

5.3 新建图书订单

代码语言:javascript
复制
@RequestMapping(value = "/addMyOrder", method = RequestMethod.POST)
@ApiOperation(value = "新建图书订单")
public Result<Object> addMyOrder(@RequestParam String id, @RequestParam String date){
    Dormitory dormitory = iDormitoryService.getById(id);
    if(dormitory == null) {
        return ResultUtil.error("图书不存在");
    }
    QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();
    qw.eq("dormitory_id",id);
    qw.eq("order_date",date);
    long count = iDormitoryOrderService.count(qw);
    if(count > 0) {
        return ResultUtil.error("图书当日已被预定");
    }
    User currUser = securityUtil.getCurrUser();
    DormitoryOrder order = new DormitoryOrder();
    order.setUserId(currUser.getId());
    order.setUserName(currUser.getNickname());
    order.setOrderTime(DateUtil.now());
    order.setPayFlag("否");
    order.setDormitoryId(dormitory.getId());
    order.setPrice(dormitory.getPrice());
    order.setRemark("");
    order.setDormitoryName(dormitory.getTitle());
    order.setOrderDate(date);
    iDormitoryOrderService.saveOrUpdate(order);
    return ResultUtil.success();
}

5.4 查询我的图书订单

代码语言:javascript
复制
@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询我的图书订单")
public Result<IPage<DormitoryOrder>> getMyPage(@ModelAttribute DormitoryOrder order,@ModelAttribute PageVo page){
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();
    qw.eq("user_id",currUser.getId());
    if(!ZwzNullUtils.isNull(order.getDormitoryId())) {
        qw.eq("dormitory_id",order.getDormitoryId());
    }
    if(!ZwzNullUtils.isNull(order.getUserName())) {
        qw.eq("user_name",order.getUserName());
    }
    IPage<DormitoryOrder> data = iDormitoryOrderService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<DormitoryOrder>>().setData(data);
}

5.5 图书订单付款

代码语言:javascript
复制
@RequestMapping(value = "/payOrder", method = RequestMethod.POST)
@ApiOperation(value = "图书订单付款")
public Result<Object> payOrder(@RequestParam String id){
    DormitoryOrder order = iDormitoryOrderService.getById(id);
    if(!order.getPayFlag().equals("是")) {
        order.setPayFlag("是");
        iDormitoryOrderService.saveOrUpdate(order);
        return ResultUtil.success();
    }
    return ResultUtil.error("已付款,请勿重复支付");
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、摘要
    • 1.1 项目介绍
      • 1.2 项目录屏
      • 二、功能模块
        • 2.1 登陆注册模块
          • 2.2 图书管理模块
            • 2.3 图书评论模块
              • 2.4 图书预定模块
                • 2.5 图书资讯模块
                • 三、系统设计
                  • 3.1 系统结构设计
                    • 3.1.1登陆注册模块的结构设计
                    • 3.1.2图书管理模块的结构设计
                    • 3.1.3图书评论模块的结构设计
                    • 3.1.4图书预定模块的结构设计
                    • 3.1.5图书资讯模块的结构设计
                  • 3.2 E-R设计
                    • 3.3 数据库设计
                    • 四、系统展示
                    • 五、核心代码
                      • 5.1 查询图书数据
                        • 5.2 新增图书评论
                          • 5.3 新建图书订单
                            • 5.4 查询我的图书订单
                              • 5.5 图书订单付款
                              • 六、免责说明
                              相关产品与服务
                              云数据库 MySQL
                              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档