基于SpringBoot的教师宿舍管理系统设计与实现(源码+调试)

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的教师宿舍管理系统设计与实现。

功能需求

本教师宿舍管理系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从宿舍管理业务以及学校管理人员的角度出发,对每个功能的需求实现点进行人性化详细的构思。本系统未做完善的用户体系,只是简单的分为了三个用户分别为:

  1. 系统管理员:登录、教师管理、楼栋管理、宿舍管理、入住管理、宿管管理、管理员管理。
  2. 教师用户:教师管理、宿舍管理。
  3. 宿管用户:教师管理、宿舍管理、入住管理。
    具体功能可以根据角色权限配置菜单按钮。
部分效果图

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

部分代码
  /*** 宿管存储服务*/@Autowiredprivate DormitoryManagerRepository dormitoryManagerRepository;@RequestMapping(method = RequestMethod.POST, path = "/login", produces = "application/json", consumes = "application/json")@ResponseBodypublic ResponseEntity<LoginResponse> login(@RequestBody LoginRequest loginRequest, HttpServletRequest request) {try {LoginResponse loginResponse = doLogin(loginRequest, request);return new ResponseEntity(loginResponse, HttpStatus.OK);} catch (Exception e) {return new ResponseEntity(null, HttpStatus.INTERNAL_SERVER_ERROR);}}@RequestMapping(method = RequestMethod.POST, path = "/logout", produces = "application/json", consumes = "application/json")@ResponseBodypublic ResponseEntity<LogoutResponse> logout(@RequestBody LogoutRequest logoutRequest, HttpServletRequest request) {try {LogoutResponse logoutResponse = doLogout(logoutRequest, request);return new ResponseEntity(logoutResponse, HttpStatus.OK);} catch (Exception e) {return new ResponseEntity(null, HttpStatus.INTERNAL_SERVER_ERROR);}}public LogoutResponse doLogout(LogoutRequest logoutRequest, HttpServletRequest request) {LogoutResponse logoutResponse = new LogoutResponse();logoutResponse.setOperator(logoutRequest.getOperator());logoutResponse.setRequestId(logoutRequest.getRequestId());request.getSession().setAttribute("user", null);request.getSession().setAttribute("userType", null);logoutResponse.setResponseCode(ResponseCodeEnum.SUCCESS);logoutResponse.setTimestamp(System.currentTimeMillis());return logoutResponse;}private LoginResponse doLogin(LoginRequest loginRequest, HttpServletRequest request) {//登录返回信息LoginResponse loginResponse = new LoginResponse();loginResponse.setOperator(loginRequest.getOperator());loginResponse.setRequestId(loginRequest.getRequestId());//验证码校验Object cpacha = request.getSession().getAttribute("cpacha");//校验session数据是否失效if (null == cpacha || !StringUtils.hasLength(String.valueOf(cpacha))) {//验证码已失效loginResponse.setResponseCode(ResponseCodeEnum.CPACHA_INVALID);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else {String[] cpachaCode = cpacha.toString().split("_");long time = Long.parseLong(cpachaCode[1]);long now = System.currentTimeMillis();if (now - time > cpachaTimeout) {//验证码已过期loginResponse.setResponseCode(ResponseCodeEnum.CPACHA_INVALID);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}// 设置不区分大小写if (!loginRequest.getCaptcha().toUpperCase().equals(cpachaCode[0].toUpperCase())) {//验证码输入错误loginResponse.setResponseCode(ResponseCodeEnum.CPACHA_INVALID);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}}//登录信息校验if ("1".equals(loginRequest.getType())) {// 超级管理员用户AdminEntity admingEntity = adminRepository.findByName(loginRequest.getAccount());if (null == admingEntity) {//账户不存在loginResponse.setResponseCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else {if (!loginRequest.getPassword().equals(admingEntity.getPassword())) {//密码错误loginResponse.setResponseCode(ResponseCodeEnum.PASSWORD_ERROR);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else {request.getSession().setAttribute("user", loginRequest.getAccount());request.getSession().setAttribute("userType", loginRequest.getType());loginResponse.setResponseCode(ResponseCodeEnum.SUCCESS);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}}} else if ("3".equals(loginRequest.getType())) {// 教师登录TeacherEntity studentEntity = studentRepository.findBySn(loginRequest.getAccount());if (null == studentEntity) {List<TeacherEntity> studentEntityList = studentRepository.findByName(loginRequest.getAccount());if (studentEntityList.size() > 1) {loginResponse.setResponseCode(ResponseCodeEnum.SAME_NAME);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else if (studentEntityList.size() == 1) {studentEntity = studentEntityList.get(0);} else {loginResponse.setResponseCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}}if (!loginRequest.getPassword().equals(studentEntity.getPassword())) {//密码错误loginResponse.setResponseCode(ResponseCodeEnum.PASSWORD_ERROR);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else {request.getSession().setAttribute("user", loginRequest.getAccount());request.getSession().setAttribute("userType", loginRequest.getType());loginResponse.setResponseCode(ResponseCodeEnum.SUCCESS);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}} else if ("2".equals(loginRequest.getType())) {// 宿管登录DormitoryManagerEntity dormitoryManagerEntity = dormitoryManagerRepository.findBySn(loginRequest.getAccount());if (null == dormitoryManagerEntity) {List<DormitoryManagerEntity> dormitoryManagerEntityList = dormitoryManagerRepository.findByName(loginRequest.getAccount());if (dormitoryManagerEntityList.size() > 1) {loginResponse.setResponseCode(ResponseCodeEnum.SAME_NAME);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else if (dormitoryManagerEntityList.size() == 1) {dormitoryManagerEntity = dormitoryManagerEntityList.get(0);} else {loginResponse.setResponseCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}}if (!loginRequest.getPassword().equals(dormitoryManagerEntity.getPassword())) {//密码错误loginResponse.setResponseCode(ResponseCodeEnum.PASSWORD_ERROR);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} else {request.getSession().setAttribute("user", loginRequest.getAccount());request.getSession().setAttribute("userType", loginRequest.getType());loginResponse.setResponseCode(ResponseCodeEnum.SUCCESS);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;}} else {//不支持其他登录方式loginResponse.setResponseCode(ResponseCodeEnum.PARAM_ERROR);loginResponse.setTimestamp(System.currentTimeMillis());return loginResponse;} 
安装部署需求

idea运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在idea中运行打包;

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL5.7
4.框架:SpringBoot+bootstrap

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 IDEA
语言 JDK1.8 、SpringBoot、bootstrap
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

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

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

相关文章

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。&#xff08;可以注意到&#xff1a;D0CF11E0非常类似DOCFILE&#xff09; 使用john的office2john.py 提取hash …

第3部分 原理篇2去中心化数字身份标识符(DID)(2)

3.2.2. DID相关概念 3.2.2.1. 去中心化标识符 (Decentralized identifier&#xff0c;DID) 本聪老师&#xff1a;DID有两个含义&#xff0c;一是Decentralized identity&#xff0c;就是去中心化身份&#xff0c;是广泛意义的DID。另外一个是Decentralized identifier&#xf…

小兴教你做平衡小车-stm32程序开发(新建通用工程)

文章目录 1、准备工作2、拷贝文件2.1 拷贝文件到FWLIB文件夹2.2 拷贝文件到CMSIS文件夹2.3 拷贝文件到USER文件夹 3、keil新建工程4、通用工程下载 参考博客&#xff1a; 零死角玩转stm32初级篇1-从零创建STM32工程模板 1、准备工作 首先呢&#xff0c;我们用压缩软件解压之前…

基于springboot+vue的植物健康系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

2024开年,手机厂商革了自己的命

文&#xff5c;刘俊宏 编&#xff5c;王一粟 2024开年&#xff0c;AI终端的号角已经由手机行业吹响。 OPPO春节期间就没闲着&#xff0c;首席产品官刘作虎在大年三十就迫不及待地宣布&#xff0c;OPPO正式进入AI手机时代。随后在开年后就紧急召开了AI战略发布会&#xff0c;…

Django学习笔记-创建第一个django项目

1.创建一个虚拟环境的python项目 2.点击解释器设置 3.安装django包 4.终端选择Command Prompt 5.创建django项目运行django-admin startproject demo01(自命名) 6.修改连接数据库为mysql 7.修改语言(中国汉语)和时区(亚洲上海)USE_TZ改为False,否则时区不生效 8.修改TEMPLA…

Vue | (四)使用Vue脚手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;初始化脚手架&#x1f407;创建初体验&#x1f407;分析脚手架结构&#x1f407;关于render&#x1f407;查看默认配置 &#x1f4da;ref与props&#x1f407;ref属性&#x1f407;props配置项 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped样…

关于设备连接有人云的使用及modbus rtu协议,服务器端TCP调试设置

有人云调试 调试过程问题1. 关于modbus rtu协议,实质上有三种modbus基本原理modbus 格式2. 关于modbus crc16通信校验3. 关于在ubuntu阿里云服务器端,监听网络数据之调试mNetAssist4. 使用有人FAE传给的设置软件问题???之前的一个项目,再拿出来回顾下。 调试过程 先 要在有…

寄存器的功能和地址详细信息

基于Modbus协议中各种寄存器的功能和地址详细信息&#xff0c;这里再进一步阐述它们如何对应于DI&#xff08;数字输入&#xff09;、DO&#xff08;数字输出&#xff09;、AI&#xff08;模拟输入&#xff09;、和AO&#xff08;模拟输出&#xff09;类型&#xff1a; 离散输入…

golang 监听ip数据包(golang纯享版)

golang 监听ip数据包(golang纯享版) 【注】本机编译运行平台为linux&#xff0c;如需测试代码请移至linux平台进行代码测试 本文以ip4 作为案例进行包抓取示范&#xff0c;ip6抓取与ip4方式异曲同工&#xff0c;可自行举一反三得出 第一步&#xff0c;通过wireshark抓包拿到…

【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【Java程序设计】【C00280】基于Springboot的校友社交系统(有论文)

基于Springboot的校友社交系统&#xff08;有论文&#xff09; 项目简介项目简介项目获取开发环境项目技术运行截图 项目简介 项目简介 这是一个基于Springboot的校友社交系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;在系统首页…

10.Halcon形态学膨胀,腐蚀,开运算,闭运算

膨胀:对边界点进行扩充,填充空洞&#xff0c;使边界向外部扩张的过程。 腐蚀:消除物体边界点,使边界向内部收缩的过程,把小于结构元素的物体去除掉. 开运算: 先腐蚀后膨胀的过程称为开运算。 作用 : 去除孤立的小点,毛刺,消除小物体,平滑较大物体边界,同时不改变其面积. 闭运…

企业级大数据安全架构(十一)Kerberos接入dophinscheduler

作者&#xff1a;楼高 建议将dophinscheduler集成到Ambari安装部署&#xff0c;在Ambari上面开启kerberos 1.安装准备 编译 从GitHub获取dolphinscheduler-1.3.9源码 git clone https://github.com/apache/dolphinscheduler.git -b 1.3.9-releasehttps://github.com/apache/…

解决Jenkins-2.396启动报错:Failed to start Jenkins Continuous Integration Server.

场景&#xff1a;现有环境已经使用Java 8在运行业务&#xff0c;安装Jenkins后启动报错。 原因&#xff1a;因为Jenkins-2.396 依赖于Java 11 版本才能启动。 解决方法&#xff1a; yum 安装Java11 yum install java-11-openjdk-devel java-11-openjdk 或者二进制安装java11修…

element导航菜单el-menu添加搜索功能

element导航菜单-侧栏&#xff0c;自带的功能没有搜索或者模糊查询。 找了找资料 找到一个比较可行的&#xff0c;记录一下&#xff1a; //index.vue的代码 <div style"overflow:auto"><el-menu :default-active"$route.path":default-openeds&…

如何让程序员过一个没有烦恼的假日

每逢假期、周末&#xff0c;总是被各种排障会和线上问题折磨&#xff0c;做什么都做不进去&#xff0c;也没法好好休息…… 常会听身边的同行们这样描述自己的假期。说实话&#xff0c;这感觉我可太熟悉不过了&#xff0c;因为这状态困扰了我好几年…… 不管你是正吃着火锅还是…

时域系统到频域响应的直观解析及数学推导

课本里经常有已知系统时域的差分方程&#xff0c;求系统的频率响应这样的题&#xff0c;老师会讲怎么带公式进去解决&#xff0c;怎么查表解决&#xff0c;但我们总时无法直观地理解这两种转换的特殊关联在哪里&#xff0c;这篇文章以FIR滤波器为例&#xff0c;不仅列出了课本里…

CHiME丨​MMCSG(智能眼镜多模态对话)

CHiME 挑战赛已经正式开启&#xff0c;今天分享下 CHiME 的子任务MMCSG(智能眼镜多模态对话)&#xff0c;欢迎大家投稿报名&#xff01; 赛事官网&#xff1a;https://www.chimechallenge.org/current/task3/index CHiME (Computational Hearing in Multisource Environments…

最新版opencv4.9安装介绍,基本图像处理详解

文章目录 一、什么是OpenCV &#xff1f;二. OpenCV 安装1. 下载地址2.安装命令&#xff1a;pip install opencv-python 三、图像基础1. 基本概念2. 坐标系3. 基本操作&#xff08;彩色图片&#xff09;&#xff08;1&#xff09;读取图片&#xff1a;cv2.imread( )&#xff08…