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

news/2024/11/15 0:59:47/

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.ppmy.cn/news/595600.html

相关文章

xss-labs靶场level1~5

参考资料&#xff1a; XSS常见的触发标签_可以触发xss的标签_H3rmesk1t的博客-CSDN博客 基础知识&#xff1a; XSS漏洞的定义: 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩…

Java的三种循环

1. switch语句 1.1 switch语句结构&#xff08;掌握&#xff09; 1. 格式&#xff1a; switch (表达式) {case 1:语句体1;break;case 2:语句体2;break;...default:语句体n1;break; } 复制 2. 执行流程&#xff1a; 首先计算出表达式的值其次&#xff0c;和case依次比较&a…

《俄罗斯方块游戏制作》---1.俄罗斯方块的创作与输出

从今天开始&#xff0c;我会不断发布这个专辑的内容&#xff0c;预计分十次完成。 今天我们先来完成第一步&#xff1a;俄罗斯方块的创作与输出 1:方块样式 int block_1[4][4]{{0,1,1,1},{0,0,1,0},{0,0,0,0},{0,0,0,0}}; int block_2[4][4]{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,…

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

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

俄罗斯方块、纯前端实现俄罗斯方块、俄罗斯方块代码

俄罗斯方块、纯前端实现俄罗斯方块、俄罗斯方块代码 今天我们要分享一款基于jQuery的俄罗斯方块游戏&#xff0c;这款俄罗斯方块游戏同样支持难度自动提升、累计积分等功能。 点击下载代码 推箱子代码 碰撞检测穿马路、小人过马路 魔幻粒子、火焰动画 开心消消乐 16宫格的翻牌…

经典俄罗斯方块游戏使用手册

本程序为一款经典俄罗斯方块游戏&#xff0c;玩家通过移动、旋转和摆放各种造型的方块&#xff0c;使之排列成完整的一行或多行并且消除得分&#xff1b;使用快速下降按钮&#xff0c;视高度额外加分。本游戏针对触摸屏操作进行优化&#xff0c;让您有酣畅淋漓的快感&#xff1…

超级俄罗斯方块V1.0

超级俄罗斯方块V1.0说明文档 夏斯华 二零零四年三月十四日 1简介 1.1项目名称及编写者 超级俄罗斯方块V1.0(双模式) 夏斯华&#xff08;010155&#xff09;&#xff08;xiasihua0001yahoo.com.cn&#xff09; 1.2项目介绍 本程序实现了俄罗斯方块游戏的基本功能。可以单机游…

自定义俄罗斯方块

单臂大回旋(风车)式旋转支持自定义方块支持修改棋盘大小暴肝一晚,码风混乱,欢迎拍砖/fad ###还有些bug 1判定问题: 一直旋转可能产生原力(卡过下落时间)…减缓掉落 2积分加速还没有严格测试,手太残了,没测出来 食用方式 编译生成.exe 同文件夹下放1.txt,并输入方块信息 4.23更…