毕业设计之图书馆座位预约系统

news2024/9/23 17:21:19

1.系统开发环境

               系统采用的集成开发环境为IDEA,使用JAVA语言及SPRINGBOOT框架进行开发,其中硬件环境和软件环境如下:

2.硬件环境

        处理器:Intel(R) Core(TM) i7-9750 GPU @ 3.00GHz

内存:8GB

3.软件环境

        操作系统:windows 10 64位操作系统

        开发工具:IDEA  ---2021.3

        数据库:NAVICAT  --- MySQL-8.1.13

        JDK: JDK   ---1.8

        Maven:Maven ---3.5.4

图4-9 系统E-R图

模块介绍

  1. 座位预约模块

首先该模块需要确定属于哪个自习室,然后获取该自习室下座位分布,获取到座位分布后再获取该自习室下的学生占座情况,并且根据选座日期,将以前的数据进行筛选和更新,并且预约后会对学生的预约记录进行查询,以确保一个学生只能预约一个座位。

通过时间和code找到在某个时间段内哪些座位是已预约的

    public List<Long> findDisableSeat(Long readingRoomId, Date date, int code) {

        List<SeatOrder> disableSeat = seatOrderDao.findByReadingRoomId(readingRoomId);

        Date yuYueTime = DateUtil.day(date);

        List<Long> unusableSeat = new ArrayList<>();

        for (SeatOrder seatOrder : disableSeat) {

            long seatOrderTime = DateUtil.day(seatOrder.getSubscribeTime()).getTime();

            if (yuYueTime.getTime() != seatOrderTime) {

                continue;}

            if (code != seatOrder.getTimeCode()) {

                continue;}

            unusableSeat.add(seatOrder.getSeat().getId());}

        return unusableSeat;}

根据时间筛选往期预约记录

public SeatOrder stuIsOrdered(Long stuId, Long currentDay) {//把往期记录过滤掉,选出正在预约中的座位

        int pm = DateUtil.isPM(); //判断当前时间是否为下午,0为上午 1为下午

        for (SeatOrder seatOrder : seatOrders) { //判断学生是否已预约 若已预约则提示 以当先时间为基准过滤掉以前的预约

            long stuTime = DateUtil.day(seatOrder.getSubscribeTime()).getTime();

      if (stuTime > currentDay) {// 订单时间大于当前时间 就说明已经有预约了

return seatOrder;}

      if (stuTime == currentDay) { //订单时间等于当前时间

      if (TimeEnum.AM.getCode() == seatOrder.getTimeCode()) {//订单时间为上午

      if (pm == 0) {//当前时间为上午 return seatOrder;}}

      if (TimeEnum.PM.getCode() == seatOrder.getTimeCode()) {//订单时间为下午

      if (pm == 1) {//当前时间为下午

            return seatOrder;}}}} //该判断已经通过之后,就说明订单表里已经都是小于当前时间的预约订单了 就是都是以前预约的记录(一个学生只能预约一次未来的时间座位)

        return null;}

根据当前时间和自习室类型获取座位预约情况如图5-1所示:

图 5-1 已预约座位表

选择座位进行预约

判断是否有积分

if (student.getStudentCredits() < readingRoomIntegral) {// 判断学生的积分是否符合

    return Result.error(CodeMsg.ADMIN_SEAT_STUDENT_INTEGRAL_ERROR);

}

判断当前座位是否已预约

for (Long disableSeat : disableSeats) { //判断该座位是否被已预约

    if (disableSeat == seatId) {

        return Result.error(CodeMsg.ADMIN_SEAT_ORDER_ADD_EXIST); }}

判断版本号是否相同

int version = seat.getVersion();//获取座位版本号

int newversion=0;//用户版本号

if(version == newversion){

newversion=version+1;//版本号赋值为1

seatService.update(seatId,newversion);//更新座位版本状态

}

保存座位信息

SeatOrder seatOrder = new SeatOrder();

seatOrderService.add(seatOrder)

预约成功后再次预约其他座位将会提示,如图5-2所示:

图5-2 重复预约提示

在预约记录中查看自己往期预约记录和当前预约记录,如图5-3所示:

图5-3 预约记录

对预约记录进行取消,如图5-4所示:

获取学生预约记录信息

Student student = studentService.findByLoginUser();//获取学生预约记录信息

if (Objects.isNull(stuIsOrdered)) {

图5-4 取消预约

1.​​​信誉积分模块

图书馆管理员根据学号信息获取学生信誉积分数据,如图5-5所示

判断学生积分是否比扣除分数大

if (logIn.getGrade()>stuID.getCredits()){

  return Result.error(CodeMsg.COMMONENT.ERROR;

}

保存操作信息

dologtagerService.save(login);//保存操作信息

 

 图5-5 查询学生信誉分

查询学生积分后对学生积分进行操作,如图5-6、5-7所示:

图5-6 选择操作

图5-7 进行操作

图5-9 预约统计

                                                        图5-10违规统计 

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

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

相关文章

【无标题】实时系统Preempt RT与Xenomai之争!谁更主流,谁更实时?

选择争论一直存在 大家知道EtherCAT是实时现场总线技术&#xff0c;当我们开发一款支持EtherCAT总线的控制器时&#xff0c;实时操作系统的选择不仅对于产品本身是最重要的一部分&#xff0c;而且对产品研发的整个过程也影响深远。 根据EtherCAT主站提供商Acontis公司对全球新客…

【ssh】pycharm链接远程服务器出现:Bad owner or permissions on C:\\Users\\用户名/.ssh/config

一直以来是用的pycharm&#xff0c;最近改用了vscode登录&#xff0c;并配置了config文件实现了vscode自动连接远程服务器&#xff0c;但是回到pycharm发现terminal端口不管用了&#xff0c;电脑上的powershell也是链接不上远程服务器并报错Bad owner or permissions。 【解决…

算法06-搜索算法

算法0X-XX 总结大纲要求搜索算法-深度优先搜索例1:全排列放置扑克牌的案例n皇后案例 搜索算法-广度优先搜索 总结 本系列为C算法学习系列&#xff0c;会介绍 算法概念与描述&#xff0c;入门算法&#xff0c;基础算法&#xff0c;数值处理算法&#xff0c;排序算法&#xff0…

Vue3学习(四)服务器部署

注意后端SpringBoot需要提前安装Java1.8的环境和Mysql5.7的数据库 SpringBoot 打包后Jar包需要配置数据库 application.yml 文件 配置服务器数据库的IP和密码 ifconfig 查看内网IP&#xff0c;然后配置。 Vue配置 .env.prod VITE_ENV prod VITE_BASE_URL http://qing.vu…

线性回归与逻辑回归

文章目录 介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据接下来需要实现数据可视化的代码&#xff0c;该部分数据绘制出的图像应与如下相同 2.2 梯度下降2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特…

08-属性描述符Object.getOwnPropertyDescriptor(),原始数据不可重写

把原始数据作为属性值传入新对象中&#xff0c;发生原始数据修改丢失的问题怎么办&#xff1f; 应该使用Object.defineProperty()设置该属性用Object.defineProperty()设置的属性&#xff0c;默认writable、enumerable、configurable均为false并且自定义提醒该属性设置了不可重…

深度学习与机器学习区别

深度学习与机器学习区别 本文目录&#xff1a; 一、特征提取方面 1.1、机器学习 1.2、深度学习 1.3、机器学习特征提取 1.4、深度学习特征提取 1.5、深度学习特征提取例子 二、数据量和计算性能要求 三、算法代表 3.1、朴素贝叶斯算法 3.2、决策树 四、神经网络 一、…

pyspark报错 ‘DataFrame‘ object has no attribute ‘iteritems‘

修改pandas版本即可 我环境spark3.3.2 python3.9 numpy 1.25.0

AutoSAR系列讲解(入门篇)3.3-RTE对Ports的支撑(上)

目录 一、特征 1、扮演SWCs和BSW的交流途径 2、其他特征 二、S/R接口的不同方式 1、直接调用&#xff08;Direct&#xff09; 2、缓存调用&#xff08;Buffered&#xff09; 3、队列调用&#xff08;Queued&#xff09; 三、跨ECU的方式 一、特征 1、扮演SWCs和BSW的交…

数据分析入门-SARIMA模型案例分析(超详细)

由于代码中注释已经非常的清晰&#xff0c;文章中就不过多叙述了&#xff0c;直接上代码。 代码如下: # 在开始之前先导入所需要的包import warnings # do not disturbe mode warnings.filterwarnings(ignore)import numpy as np …

ChatGPT批量生成文章软件:创意无限,智能驱动文章

随着人工智能技术的不断发展&#xff0c;ChatGPT批量生成文章软件成为了当今互联网世界中备受瞩目的创新之一。作为一种基于大规模预训练语言模型的自然语言处理工具&#xff0c;ChatGPT能够以人类般的方式与用户进行对话&#xff0c;并且能够生成高质量的文章。这一技术的出现…

【LLMs系列】没钱玩GPT-4?来试试Mini-GPT4吧!

一、MiniGPT-4尝鲜 还在苦苦等待GPT-4开放&#xff1f;开源项目MiniGPT-4就能提前体验类似GPT-4的多模态对话功能。 2023年4月17日&#xff0c;多模态问答模型MiniGPT-4发布&#xff0c;实现了GPT-4里的宣传效果 《MiniGPT-4: Enhancing Vision-language Understanding with …

GDB常用调试方法及其底层原理

本文分为两个大模块&#xff0c;第一部分记录下本人常用到的GDB的调试方法和技巧&#xff0c;第二部分则尝试分析GDB调试的底层原理。 一、GDB调试 要让程序能被调试&#xff0c;首先得编译成debug版本&#xff0c;当然release版本的也能通过导入符号表来实现调试&#xff0c…

Centos7下tensorflow 2.12无法找到NVIDIA Tesla T4 GPU终极解决方法

目录 背景 系统信息 GPU信息 关键软件信息 问题现象 原因分析

解决element-ui消息提示$message重叠问题

在进行表单校验的时候&#xff0c;当触发两个提示消息的时候会出现上面的叠加情况&#xff0c;没有将提示消息分开显示&#xff0c;这样就给用户造成不好的视觉效果 我们的预期效果是达到上面的显示效果&#xff0c;就是在进行提示的时候&#xff0c;如果叠加就需分开显示&…

Centos8同步时间(阿里云NTP服务为例)

一、安装chrony sudo dnf install chrony二、使用 sed 命令一键完成配置 #pool 2.centos.pool.ntp.org iburst给这一行加注释 sudo sed -i s/^pool 2.centos.pool.ntp.org iburst/#&/ /etc/chrony.conf #添加3个阿里云NTP服务器 echo -e "server ntp1.aliyun.com ib…

withContext CoroutineScope协程切换,kotlin

withContext CoroutineScope协程切换&#xff0c;kotlin <dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-coroutines-core</artifactId><version>1.4.2</version></dependency> import kotlinx.co…

python 上传包到pypi

参考 https://www.jianshu.com/p/81fe5a5cd27a 1.打包 在pypi注册账号&#xff0c;并新建token 需要在用户下创建一个.pypirc文件。username__ token __ 是固定的&#xff0c;password 填入刚刚的token。 使用下面两个命令把dist中文件推送到pypi python setup.py sdist…

AI读心重磅突破登Nature!AI破译大脑信号

近日&#xff0c;洛桑联邦理工学院团队在Nature上提出了一种名为CEBRA的可实现AI读脑的最新算法&#xff0c;以高精度捕捉到了动物大脑的动态。 利用AI&#xff0c;一个研究团队「看见」了老鼠眼中的电影世界。更神奇的是&#xff0c;这种机器学习算法&#xff0c;还能揭示大脑…

【以太坊】本地搭建以太坊测试网络,部署合约

文章目录 工具建议参考测试 工具 Ganache 建议 推荐使用 Ganache 搭建&#xff0c;简单易上手 参考 https://www.npmjs.com/package/ganache 测试 npm install ganache --global && ganache --help ganache