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;甚至在一个模型中既有唯一性语意也有汇总、最小、最大、平均值语意该如何处理…

Spring-静态代理VS动态代理/实现代理ProxyFactory

文章目录 静态代理VS动态代理Spring实现代理ProxyFactory 工作中遇到问题整理动态代理异常com.sun.proxy.$Proxy0 cannot be cast to 静态代理VS动态代理 静态代理VS动态代理 参考URL: https://blog.csdn.net/qq_25881443/article/details/103245938 【java项目实战】代理模式…

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

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

mysql主从库Slave_SQL_Running: No问题经验分享

最近在创建mysql主从库的时候&#xff0c;遇到一个问题。执行 mysql> SHOW SLAVE STATUS\G结果显示 Slave_IO_Running: Yes Slave_SQL_Running: No 很是苦恼&#xff0c;查询了很久没有解决 执行 mysql> SELECT * FROM performance_schema.replication_applier_status_…

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

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

代码随想录算法训练营第五十天 | 买股票2

目录 买卖股票的最佳时机III买卖股票的最佳时机IV LeetCode 123.买卖股票的最佳时机III LeetCode 123.买卖股票的最佳时机IV 买卖股票的最佳时机III 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。…

牛客周赛 Round 35(A,B,C,D,E,F,G)

这场简单&#xff0c;甚至赛时90分钟不到就AK了。比赛链接&#xff0c;队友题解友链 刚入住学校监狱&#xff0c;很不适应&#xff0c;最近难受的要死&#xff0c;加上最近几场CF打的都不顺利&#xff0c;san值要爆掉了&#xff0c;只能慢慢补题了。 这场C是个滑动窗口&#…

冒泡排序 和 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.控制浏览…

Spring Security OAuth2如何自定义返回的 Token 信息

文章目录 Spring Security OAuth2如何自定义返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint参考Spring Security OAuth2如何自定义返回的 Token 信息 Spring Boot+OAuth2,如何自定义返回的 Token 信息? 参考URL: https://www.jianshu.com/p/b7…

【Go】指针的声明和初始化

package mainimport "fmt"func main() {// 声明一个整数变量var num int 42// 声明一个指向整数的指针变量&#xff0c;并将其初始化为指向整数变量的地址var ptr *int &num// 打印整数变量的值和指针变量的值&#xff08;即整数变量的地址&#xff09;fmt.Pri…

2024第24届中国国际工业博览会新能源与智能网联汽车展电池制造展馆

2024第24届中国国际工业博览会新能源与智能网联汽车展电池制造展馆 时间&#xff1a;2024年9月24日-28日 地点&#xff1a;国家会展中心&#xff08;上海&#xff09; 主办单位&#xff1a;工业和信息化部、国家发展和改革委员会、科学技术部、商务部、中国科学院、中国工程…

【游记】GDOI2024

GDOI2024游记 老年退役选手。NOIP 218 分&#xff0c;GDOI 纯纯旅游。 Day -5 周日返校&#xff0c;开始停课。 开始攒 rp。 Day -4 模拟赛&#xff0c;犯困&#xff0c;啥也不会。 下午打球。 Day -3 模拟赛&#xff0c;不困&#xff0c;还是啥也不会。 下午打球。 …

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;那我们平时的一个习惯是…

linux条件判断之if-then

if..then是最常见的条件判断语句&#xff0c;简而言之&#xff0c;就是当符合某个条件判断的时候&#xff0c;就予以进行某项工作。 1.if-then格式 if-then格式1&#xff1a; if [ 条件判断表达式 ];then 当条件判断表达式成立时&#xff0c;需执行的命令 fi if-then格式2…