基于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://www.hqwc.cn/news/484842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点被吹爆的桌面便签小工具

桌面便签小工具有很多&#xff0c;任何一款桌面便签小工具都有它的优缺点&#xff0c;而那些被吹爆了好用的桌面便签小工具往往是优点远多于缺点&#xff0c;从而深受用户的喜爱&#xff0c;今天我们来给大家盘点一款被很多行业吹爆了的桌面便签小工具&#xff1a;好用便签。 …

高盛:日本这轮通胀是否可持续,关键看房租

租金在日本CPI中的权重高达20%&#xff0c;高盛预计短期内租金将继续拖累通胀至1.7%或以下&#xff0c;长期有望温和上行&#xff0c;使通胀稳在2%的水平。 日本正在转向“去通缩”&#xff0c;房租能否支撑通胀态势&#xff1f; 在日股今年一路高歌、有望“收复失地”时&…

openEuler2203 LTS安装VMware WorkStation Pro 17并远程桌面连接Linux服务器

openEuler 2203 LTS默认只有命令行&#xff0c;没有GUI图形界面&#xff0c;在其中安装VMware WorkStation需要有图形界面的支持。这里以安装深度的DDE桌面环境&#xff0c;最后通过VNC远程桌面连接Linux服务器操作VMware WorkStation。 以下操作请保持网络能正常连接 1、安装…

零到大师:嵌入式Linux学习书单分享

大家好&#xff0c;我是知微&#xff01; 上一篇推荐的书单嵌入式软件必读10本书_单片机篇&#xff0c;收到反响很好。再推荐一篇嵌入式Linux相关的书单。 《鸟哥的Linux私房菜》 鸟哥的Linux系列适合零基础小伙伴&#xff0c;从电脑基础到文件系统、shell脚本等等&#xff…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…

游戏平台如何定制开发?

随着科技的飞速发展和互联网的普及&#xff0c;游戏平台已成为人们休闲娱乐的重要选择。为了满足用户多样化的需求&#xff0c;游戏平台的定制开发显得尤为重要。本文将探讨游戏平台定制开发的过程、关键要素以及注意事项&#xff0c;为有志于涉足此领域的开发者提供参考。 一、…

【踩坑专栏】主机ping虚拟机失败

我出现的问题finalshell连接超时&#xff0c;ping了一下发现ping都ping不通&#xff0c;于是发现问题所在。 最开始我是把虚拟机的网络设置改为桥接模式&#xff0c;问题解决了&#xff0c;但是这种模式的问题就是每次开机&#xff0c;ip都会改变&#xff0c;因此非常麻烦&…

消息中间件之RocketMQ源码分析(十二)

Namesrv启动流程 Broker启动流程 BrokerStartup.java类主要负责为真正的启动过程做准备&#xff0c;解析脚本传过来的参数&#xff0c;初始化Broker配置&#xff0c;创建BrokerController实例等工作。BrokerController.java类是Broker的掌控者&#xff0c;它管理和控制Broker的…

在QWidget里面放上QTabWidget更改它的qss样式

如上图QWidget里面放了QTabWidget qss这样写

高级语言期末2015级唐班B卷

1.编写函数&#xff0c;按照如下公式计算圆周率π的值&#xff08;精确到1e-5&#xff09; #include <stdio.h>double pai() {double last0;double flag1;int n1;while(flag-last>1e-5) {lastflag;flag*1.0*(2*n)*(2*n)/((2*n-1)*(2*n1));n;}return 2*last; }int main…

cilium-agent远程debug

文章目录 概述编译cilium-agent运行cilium-agent开启远程debug参考资料 概述 通过远程 debug&#xff0c;来分析 cilium-agent 是如何在容器创建的时候定义容器网络接口。 编译cilium-agent 首先是在本地编译 cilium-agent&#xff0c;下面是以 v1.14.4 的代码作为例子来阐述…