Vue+SpringBoot打造图书借阅系统

在这里插入图片描述


目录

  • 一、摘要
    • 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 图书订单付款
  • 六、免责说明


一、摘要

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 查询图书数据

@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 新增图书评论

@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 新建图书订单

@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 查询我的图书订单

@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 图书订单付款

@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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clickhouse 随心所欲的聚合模型-AggregatingMergeTree

clickhouse 强大的 MergeTree 系列引擎令人信服&#xff0c;其 ReplacingMergeTree、SummingMergeTree 在数据唯一性和汇总场景中表现非凡。但你是否还有保留最小(大)、平均等预聚合需求&#xff0c;甚至在一个模型中既有唯一性语意也有汇总、最小、最大、平均值语意该如何处理…

【C语言】剖析qsort函数的实现原理

主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《C语言》 本文将从回调函数&#xff0c;qsort函数的应用&#xff0c;qsort函数的实现原理三个方面进行讲解&#xff0c;请自行跳转至相对位置进行阅读~ 目录 回调函数 qsort函数的应用 qsort函数实现原理 回调函数 什…

独立游戏《星尘异变》UE5 C++程序开发日志1——项目与代码管理

写在前面&#xff1a;本日志系列将会向大家介绍在《星尘异变》这款模拟经营游戏&#xff0c;在开发时用到的与C相关的泛用代码与算法&#xff0c;主要记录UE5C与原生C的用法区别&#xff0c;以及遇到的问题和解决办法&#xff0c;因为这是我本人从ACM退役以后第一个从头开始的项…

冒泡排序 和 qsort排序

目录 冒泡排序 冒泡排序部分 输出函数部分 主函数部分 总代码 控制台输出显示 总代码解释 冒泡排序优化 冒泡排序 主函数 总代码 代码优化解释 qsort 排序 qsort 的介绍 使用qsort排序整型数据 使用qsort排序结构数据 冒泡排序 首先&#xff0c;我先介绍我的冒泡…

模糊搜索小案例

C#窗体实现数据录入与模糊搜索小案例 记录一下 主要代码 private void button1_Click(object sender, EventArgs e){string name textBox1.Text;string hometown textBox4.Text;string school textBox6.Text;string sex textBox5.Text;string lat textBox3.Text;string …

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示&#xff1a;具名数据源没有cuckoo*具名数据&#xff08;解决&#xff09; 今天咕咕更新打印模板的时候遇到的问题&#xff0c;就是在模版中配置了字段名&#xff0c;但是启动c#应用&#xff0c;后端发送json数据打印的时候c#报错提示&#xff0c;没有在…

python 小游戏《2048》字符版非图形界面

参考链接&#xff1a; 闲谈2048小游戏和数组的旋转及翻转和转置 目录 2048 一、方阵类 二、随机插入1或2 三、 合并和递增 四、 判断和移动 五、 键盘控制 完整源代码 玩法过程 2048 上回说到2048小游戏中数组的各种旋转、翻转的方法&#xff0c;就是为代码编程作准…

第十六天-爬虫selenium库

目录 1.介绍 2.使用 selenium 1.安装 2.使用 1.测试打开网页&#xff0c;抓取雷速体育日职乙信息 2.通过xpath查找 3.输入文本框内容 send_keys 4.点击事件 click 5.获取网页源码&#xff1a; 6.获取cookies 7.seleniumt提供元素定位方式&#xff1a;8种 8.控制浏览…

CSS3单独制作移动端页面布局方式(流式布局、flex弹性布局)

目录 1. 流式布局(百分比布局)2. flex弹性布局(强烈推荐)2.1 介绍2.2 Flex容器常见属性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex项目常见属性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

银河麒麟之Workstation安装

一、VMware Workstation简介 VMware Workstation是一款由VMware公司开发的虚拟化软件&#xff0c;它允许用户在一台物理计算机上运行多个操作系统&#xff0c;并在每个操作系统中运行多个虚拟机。VMware Workstation提供了一个可视化的用户界面&#xff0c;使用户可以轻松创建、…

程序环境和预处理(2)

文章目录 3.2.7 命名约定 3.3 #undef3.4 命令行定义3.5 条件编译3.6 文件包含3.6.1 头文件被包含的方式3.6.2 嵌套文件包含 4. 其他预处理指令 3.2.7 命名约定 一般来讲函数和宏的使用语法很相似&#xff0c;所以语言本身没法帮我们区分二者&#xff0c;那我们平时的一个习惯是…

Redis安全加固策略:绑定Redis监听的IP地址 修改默认端口 禁用或者重命名高危命令

Redis安全加固策略&#xff1a;绑定Redis监听的IP地址 & 修改默认端口 & 禁用或者重命名高危命令 1.1 绑定Redis监听的IP地址1.2 修改默认端口1.3 禁用或者重命名高危命令1.4 附&#xff1a;redis配置文件详解&#xff08;来源于网络&#xff09; &#x1f496;The Beg…

驱动开发面试复习

创建字符设备 1 创建设备号 alloc_chrdev_region 2.创建cdev cdev_init 3.添加一个 cdev,完成字符设备注册到内核 cdev_add 4.创建类 class_create 5.创建设备 device_create 1.内核空间与用户空间数据 copy_from_user 和copy_to_user 俩个函数来完成。 copy_from_user 函数…

618快递准点到达,别忘了感谢它!

进入6月以来&#xff0c;全国快递日均业务量飞速上涨。 虽然618大促是电商的主场&#xff0c;但作为不可或缺的物流环节&#xff0c;为了这场年中大考&#xff0c;快递企业在此期间也使尽浑身解数&#xff0c;竞相比拼配送速度。那么&#xff0c;为了更快的时效&#xff0c;快递…

【Wio Terminal】使用WiFi(3)- Wi-F的高级使用

使用WiFi&#xff08;3&#xff09; Wi-F的高级使用HTTPClient 的使用HTTP GETHTTPs GETHTTP POSTWebServerHTTP Authentication Web ServerDNSServermDNSmDNS-SDWiFiManager Wi-F的高级使用 本节介绍了一些WiFi的高级库用法&#xff0c;如HTTPClient、DNSServer和WebServer库…

美国亚利桑那州立大学宣布与OpenAI建立合作伙伴关系!

美国亚利桑那州立大学 (Arizona State University) 在官网宣布—— 将与OpenAI建立合作伙伴关系&#xff01; 该校也成为了第一个与OpenAI合作的高等教育机构。 来源&#xff1a;亚利桑那州立大学官网 亚利桑那州立大学校长表示&#xff1a; “我们认识到人工智能系统将持续…

Redis安全加固策略:配置文件权限设置 配置本地日志存储目录 连接超时时间限制

Redis安全加固策略&#xff1a;配置文件权限设置 & 配置本地日志存储目录 & 连接超时时间限制 1.1 配置文件权限设置1.2 配置本地日志存储目录1.3 连接超时时间限制 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1.1 配置文件权限…

Qt/事件分发器/事件过滤器

事件分发器 //事件分发器bool event(QEvent* e); //事件分发器&#xff1a;&#xff1a;用途 分发事件 bool MyLabel::event(QEvent* e) {if(e->type() QEvent::MouseButtonPress){//如果是鼠标摁下 拦截事件 不向下分发QMouseEvent* ev static_cast<QMouseEvent*>…

Deeplearning4j【基础 01】初识Java深度学习框架DL4J

初识Java深度学习框架DL4J 1.起因2.简介3.组件3.1 Deeplearning4j/ScalNet3.1.1 Deeplearning4jf&#xff08;Java&#xff09;3.1.2 ScalNet&#xff08;Scala&#xff09; 3.2 ND4J/LibND4J3.3 SameDiff3.4 DataVec3.5 Arbiter3.6 RL4J 4.总结 内容来自网络&#xff0c;基于官…

Redis--线程模型详解

Redis线程模型 Redis内部使用的文件事件处理器&#xff08;基于Reactor模式开发的&#xff09;file event handler是单线程的&#xff0c;所以Redis线程模型才叫单线程模型&#xff0c;它采用IO多路复用机制同时监听多个socket&#xff0c;当被监听的socket准备好执行accep、r…