基于javaweb+mysql的+JPA图书馆座位占座预约管理系统(管理员、老师、

article/2025/9/30 13:09:54

基于javaweb+mysql的+JPA图书馆座位占座预约管理系统(管理员、老师、学生)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

管理员:学生管理、教师管理、阅览室类型管理、阅览室管理(座位生成等)、学生信用积分管理、座位预约统计管理等。

学生:登录、修改个人信息、阅览室查看、选座信息查看、选座、取消选座等。

教师:登录、阅览室管理、学生信用管理:可根据学生表现进行扣分、奖励等,扣分达到设定的值则无法进行选座。

技术框架

JSP JavaScript SpringBoot SpringDataJPA FreeMarker MySQL


适用

课程设计,大作业,毕业设计,项目练习,学习演示等

return null;}}
package com.demo.controller.admin;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
    @Autowiredprivate RoleService roleService;public Student findByID(Long id) {/*** 使用jpa自带的方法*         studentDao.getOne();当我查询一个不存在的id数据时,直接抛出异常,因为它返回的是一个引用,简单点说就是一个代理对象*         studentDao.findOne() 当我查询一个不存在的id数据时,返回的值是null.*         studentDao.findById(id) ; .findById(id).get()使用时,如果数据库中查询无符合条件的记录便会抛出异常*/Optional<Student> byId = studentDao.findById(id);return byId.isPresent() ? byId.get() : null;}public List<Student> findAll() {return studentDao.findAll();}/*** 删除一个学生删除的时候需要先查出来相对的用户的id* 先删除学生然后再删除相对应的用户*
	/*** 生成验证码* @return 验证码*/public String generatorVCode(){int len = code.length;Random ran = new Random();StringBuffer sb = new StringBuffer();for(int i = 0;i < vcodeLen;i++){int index = ran.nextInt(len);sb.append(code[index]);}return sb.toString();}/*** 为验证码图片画一些干扰线* @param g */private void drawDisturbLine(Graphics g){Random ran = new Random();for(int i = 0;i < disturbline;i++){int x1 = ran.nextInt(width);int y1 = ran.nextInt(height);
        //用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(clazz);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(clazz.getTeacher() == null || clazz.getTeacher().getTeacherSno() == null){return Result.error(CodeMsg.ADMIN_ClAZZ_EMPTY );}//判断班级名是否存在if(clazzService.isExistClaName(clazz.getClaname(), 0l)){return Result.error(CodeMsg.ADMIN_ClAZZNAME_EXIST);}//到这说明一切符合条件,进行数据库新增if(clazzService.save(clazz) == null){return Result.error(CodeMsg.ADMIN_ClAZZ_ADD_ERROR);}operaterLogService.add("添加班级,班级名:" + clazz.getClaname());return Result.success(true);}/*** 班级编辑页面* @param model* @return*/@RequestMapping(value="/edit")public String edit(Model model,@RequestParam(name="id",required=true)Long id){model.addAttribute("teachers",teacherService.findAll());
        model.addAttribute("pageBean", seatService.findList(readingRoom, pageBean));return "admin/seat/list";}/*** 跳转设置座位可用页面* @param model* @param id* @return*/@RequestMapping(value = "/able", method = RequestMethod.GET)public String ableSeat(Model model,@RequestParam(name="id",required=true)Long id) {model.addAttribute("reading", readRoomService.findById(id));List<Seat> seats = seatService.findByReadingRoomId(id);model.addAttribute("seats", seats);return "admin/seat/able";}@RequestMapping(value = "/able", method = RequestMethod.POST)@ResponseBodypublic Result<Boolean> ableSeat(@RequestParam(name = "id",required = true) Long id,@RequestParam(name = "status",required = true) int status) {
	public static final CodeMsg ADMIN_CLAZZ_TEACHER_EMPTY =new CodeMsg(-9005, "教师信息错误,请重新编辑!") ;//学生扣分日志管理public static final CodeMsg ADMIN_LOFINTEGRAL_CREDITS =new CodeMsg(-9005, "该学生没有那么多分数!") ;
}
package com.demo.common.util;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;/*** 验证码生成器* * @author llq*/
public class CpachaUtil {
            return Result.error(CodeMsg.ADMIN_SEAT_EXIST);}List<Seat> seats = new ArrayList<>();for (int x = 1; x <= readingRoom.getLie(); x++) {for (int y = 1; y <= readingRoom.getRow(); y++) {Seat seat = new Seat();seat.setReadingRoom(readingRoom);seat.setxAxis(x);seat.setyAxis(y);seats.add(seat);}}if (seatService.saveAll(seats).isEmpty()) {return Result.error(CodeMsg.ADMIN_SEAT_ADD_ERROR);}return Result.success(true);}
import com.demo.common.util.MenuUtil;
import com.demo.common.util.ValidateEntityUtil;/*** 后台角色管理控制器* @author Administrator**/
@RequestMapping("/role")
@Controller
public class RoleController {private Logger log = LoggerFactory.getLogger(RoleController.class);@Autowiredprivate MenuService menuService;@Autowiredprivate OperaterLogService operaterLogService;
    @RequestMapping(value = "/choose", method = RequestMethod.GET)public String choose(Model model,@RequestParam(name = "date",required = true) Long date,@RequestParam(name = "timeCode",required = true) int timeCode,@RequestParam(name="id",required=true)Long id) {if (Objects.isNull(date)) {return "error/500";}if (Objects.isNull(timeCode)) {return "error/500";}model.addAttribute("title", "选座管理");model.addAttribute("date_time", DateUtil.millisecondToFormatDate(date));model.addAttribute("timeCode", timeCode);model.addAttribute("reading", readRoomService.findById(id));List<Seat> seats = seatService.findByReadingRoomId(id);List<Long> disableSeats = seatService.findDisableSeat(id, DateUtil.millisecondToDate(date), timeCode);if (!disableSeats.isEmpty()) { //给已经占座的状态赋值2seats = seats.stream().map(o -> {
        return seatDao.findByReadingRoomId(readRoomId);}/*** list存储座位** @param seats* @return*/public List<Seat> saveAll(List<Seat> seats) {return seatDao.saveAll(seats);}/*** 判断座位是否已生成** @param id* @return*/public boolean isExistReadingRoomId(Long id) {
        }//表示session未失效,进一步判断用户填写的验证码是否正确if (!cpacha.equalsIgnoreCase(attribute.toString())) {return Result.error(CodeMsg.CPACHA_ERROR);}//表示验证码正确,开始查询数据库,检验密码是否正确User findByUsername = userService.findByUsername(user.getUsername());//判断是否为空if (findByUsername == null) {return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);}//表示用户存在,进一步对比密码是否正确if (!findByUsername.getPassword().equals(user.getPassword())) {return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);}//表示密码正确,接下来判断用户状态是否可用if (findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE) {return Result.error(CodeMsg.ADMIN_USER_UNABLE);}//检查用户所属角色状态是否可用
	/*** 设置图片高度* @param height */public void setHeight(int height) {this.height = height;}/*** @return 干扰线条数*/public int getDisturbline() {return disturbline;}/*** 设置干扰线条数
         *         studentDao.getOne();当我查询一个不存在的id数据时,直接抛出异常,因为它返回的是一个引用,简单点说就是一个代理对象*         studentDao.findOne() 当我查询一个不存在的id数据时,返回的值是null.*         studentDao.findById(id) ; .findById(id).get()使用时,如果数据库中查询无符合条件的记录便会抛出异常*/Optional<Student> byId = studentDao.findById(id);return byId.isPresent() ? byId.get() : null;}public List<Student> findAll() {return studentDao.findAll();}/*** 删除一个学生删除的时候需要先查出来相对的用户的id* 先删除学生然后再删除相对应的用户
        userService.delete(byID.getUser().getId());}/*** 保存学生* 用户需要固定一个学生的角色** @param student* @return*/@Transactionalpublic Student add(Student student) {Role role = roleService.find(Student.STUDENT_ROLE_ENABLE);String s = StringUtil.generateSn(Student.STUDENT_BIRTHDAY_ENABLE);student.setStudentSno(s);student.getUser().setPassword(s);student.getUser().setUsername(s);student.getUser().setRole(role);User user = student.getUser();
	 * @param user* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Result<Boolean> add(User user){//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(user);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(user.getRole() == null || user.getRole().getId() == null){return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);}//判断用户名是否存在

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述


http://chatgpt.dhexx.cn/article/pKJBlRve.shtml

相关文章

基于Android的图书馆借阅占座座位app

本次毕业设计是设计并实现一个图书馆座位预约系统。该系统的最终目的是为了自动化管理图书馆自习座位&#xff0c;解决占座问题&#xff0c;提高座位利用率。实际上我校是有相应的座位管理系统&#xff0c;它是那种固定的触摸刷卡屏终端&#xff0c;每层有一个&#xff0c;来供…

python基于PHP+MySQL的图书馆自习室预约占座系统

随着我国高等教育的普及和高校生源的扩招,很多学校都出现了一个很严重的问题,那就是自习室和图书馆座位不够用,出现了一座难求的情况。为了能够让高校的这些自习室和图书馆的座位得到合理的利用,我通过现代化的手段还发了一套图书馆自习室预约占座系统。通过本系统可以让高校的…

图书馆预约占座管理系统《第二弹》

&#x1f4cc;系统设计 专栏正在持续更新中&#xff0c;案例的原理图解析、各种模块分析&#x1f496;这里都有哦&#xff0c;同时也欢迎大家订阅专栏&#xff0c;获取更多详细信息哦✊✊✊ ✨个人主页&#xff1a;零小唬的博客主页 &#x1f942;欢迎大家 &#x1f44d;点赞 &…

图书馆座位预定系统开发

图书馆座位预定系统开发 功能&#xff1a; 登陆---〉预定--〉退出 #create_sql.py:创建用户数据库 import sqlite3 #建一个数据库 def create_sql():sql sqlite3.connect("user_data.db")sql.execute("""create table if not exists%s(%s integer pr…

图书馆座位预约系统,图书馆座位管理系统,图书馆座位预约毕业设计

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的教室图书馆座位预约系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c…

技术分享——SSM图书馆预约占座系统

介绍 最近闲来无事&#xff0c;帮学校开发了一套系统&#xff0c;就是咱们特别普通的这种图书馆预约占座系统&#xff0c;我用的最基本的技术ssm框架&#xff0c;啊freestyle啊今天下午播放中国新说唱啊&#xff0c;666啊双击老铁&#xff01; Demo样例图 核心代码实现&#…

图书馆占座系统(七)

第一次更新&#xff08;2018.8.19 19&#xff1a;50&#xff09; 嗯&#xff0c;好久没更新了&#xff0c;是因为做项目做兴奋了&#xff0c;图书馆占座系统已经开发完了&#xff0c;另外我又开发了其他两个系统&#xff0c;这个另说。 上一章讲到cookie&#xff0c;登录过去…

图书馆占座系统-产品需求规格说明书

图书馆占座系统-产品需求规格说明书 一. 文档介绍1. 文档目的2. 文档范围3. 读者对象4. 参考文档5. 术语与缩写解释 二. 产品介绍1. 产品背景2. 产品功能三. 产品面向的用户群体四. 产品应当遵循的标准或规范五. 产品范围六. 产品中的角色七. 产品的功能性需求1. 数据流图2. 用…

图书馆占座系统(SSM,JQUERY-EASYUI,MYSQL)

图书馆预约占座管理系统(SSM,JQUERY-EASYUI,MYSQL)(毕业论文14000字,共47页,程序代码,MySQL数据库) 【项目演示视频】 【运行环境】 Eclipse, IDEA JDK1.7(JDK1.8) Tomcat7(Tomcat8) 【技术栈】 JAVA, JSP, SSM, JQUERY, JQUERY EASYUI, MYSQL, HTML, CSS, JAVASCR…

ubuntu查看OpenGL版本

glxinfo | grep "OpenGL version" 或者 glxinfo | grep OpenGL 版本为3.3

Linux - 如何查看Ubuntu系统的版本信息

1、打开终端&#xff1a;可以用快捷键CtrlAltt&#xff0c;也可以点击左侧的终端图标: 2、命令&#xff1a;cat /proc/version 作用&#xff1a; 查看目录"/proc"下version的信息&#xff0c;也可以得到当前系统的内核版本号及系统名称 。 补充说明&#xff1a; &a…

查看ubuntu系统的版本信息

目录 1&#xff09;查看linux内核、gcc版本、ubuntu版本 2&#xff09;显示linux的内核版本和系统是多少位 1&#xff09;查看linux内核、gcc版本、ubuntu版本 显示如下 Linux version 4.15.0-29-generic (builddlcy01-amd64-024) linux内核版本号 gcc version 5.4…

ubuntu 查看mysql版本

简言 办法1&#xff1a;运行命令&#xff1a;mysql -V 效果如下图 办法:2&#xff1a;连接进mysql&#xff0c;运行命令&#xff1a;select version(); 办法3&#xff1a;连接进mysql&#xff0c;运行命令&#xff1a;show variables like ‘%version%’; 效果如下图 办法4…

Ubuntu-查看ubuntu系统的版本信息

安装软件或者搭建服务的时候&#xff0c;需要了解当前系统的版本信息&#xff0c;在这里分享怎么查看当前ubuntu系统的版本信息。 注&#xff1a;我这里使用的是带图形界面的Ubuntu 工具/原料 Ubuntu系统的电脑一台或Ubuntu虚拟机 Linux系统的电脑一台或Linux虚拟机 方法/…

Ubuntu查看cuDNN版本

1、先成功下载cuDNN(如果这个有问题的&#xff0c;请参考我的另一个博客&#xff0c;地址&#xff1a;tensorflow2.0及以上版本用GPU加速计算_English ONly的博客-CSDN博客) 2、将下载成功的cudnn后得到的cuda里面的信息放到不同的 /usr/local/cuda目录里。(其中红色为下载cuD…

Linux如何查看当前Ubuntu系统的版本

1 使用命令&#xff1a;lsb_release -a 查看 2 使用命令&#xff1a;cat /proc/version 查看 Linux version 3.16.0-30-generic (builddkissel) linux内核版本号 gcc version 4.8.2 gcc编译器版本号 Ubuntu 4.8.2-19ubuntu1 Ubuntu版本号 3 使用命令&#xff1a;uname -a 查…

linux查看ubuntu版本命令,检查Ubuntu版本号的三种方法:从终端和设置中检查及使用Neofetch...

如果你运行Ubuntu系统&#xff0c;但你不确定你使用的是哪个Ubuntu版本(Ubuntu Version)&#xff0c;有三种方法可以快速找到答案&#xff1a;从终端和设置中检查Ubuntu版本及使用Neofetch。在本文中&#xff0c;你将学习可用于立即检查Ubuntu版本号的命令行和GUI方法&#xff…

查看ubuntu版本号命令

查看ubuntu版本号命令 1、uname -a 查看内核版本号 2、cat /etc/issue 查看ubuntu版本号 3、sudo lsb_release -a 查看ubuntu版本号 posted on 2018-10-26 16:50 skyfall007 阅读(...) 评论(...) 编辑 收藏

ubuntu查看eigen版本

ubuntu查看eigen版本 1.方法一 CtrlAltT 打开Macros.h文件 gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h如上图中的eigen版本为3.3.7 2.方法二 pkg-config --modversion eigen3