dormitory_management_system
[高校宿舍管理系统]
实现功能
- 管理员(拥有系统最高的权限)
- 用户管理、年级管理、组织管理、学生管理、权限管理
- 楼宇管理、宿舍管理、预选管理
- 缺勤管理
- 宿管员
- 楼宇管理、宿舍管理、预选管理
- 缺勤管理
- 学生
- 个人详情、在线预选、缺勤查看
功能具体说明
- 用户管理
- 根据用户名和用户类型模糊查询
- 添加用户 保证用户名的唯一性
- 下载上传模板(对`.xls`文件中的用户类型做了下拉框处理)
- Excel导入用户(使用EasyExcel读数据)
- 修改用户 保证用户名的唯一性 密码加密了就无法显示,不做修改
- 删除用户 如果是学生提示到[学生页面]删除
- 年级管理
- 为了方便起见,id和name相同
- 根据名称模糊查询
- 添加年级 输入正整数
- 批量删除
- 单条数据删除
- 组织管理
- 结构的展示==(难点)==学院—系—专业—班级 学院—专业—班级
- 新增组织 需要选择上级栏目
- 修改组织 先选择一个数据
- 删除组织 需要选择叶子节点进行删除
- 学生管理
- 数据展示 optable
- 根据学号/姓名/年级/班级搜索查询,主要是在mapper.xml中运行
- 删除学生和批量删除学生
- Excel导出全部学生信息
- 添加和修改学生信息 对学生表和用户都进行数据的添加
- 权限管理
- 选择用户类型后再进行编辑
- 后端处理(删除数据再新增数据)
- 楼宇管理
- 添加楼宇的时候,做了添加楼层,宿舍,床位
- 删除楼宇的时候,需要将对应的楼层、宿舍和床位删除
- 编辑楼宇 修改一些简单的字段
- 宿舍管理
- 数据的展示(js+css难点)
- 预选设置
- 数据展示(年级、班级,时间范围)
- 添加和修改预选 时间范围的设置 选择班级叶子节点处理
- 根据名字模糊查询
- 分配宿舍
- 注意点:每个班级和年级这两个和起来也算一个主键
- 缺勤管理
- 测试前先保证有学生入住
- CRUD
- 修改密码
- 输入新两次密码
- 基本资料
- 修改个人信息
- 个人详情
- 主要是针对学生 展示学生的一些基本信息
- 在线预选宿舍
- 数据展示(难点) 未选择 已经选择 你的选择
- 每个学生只能选择一次,而且选择时间是有范围的
- 展示每个宿舍的剩余容量和总是
- 缺勤记录
- 只是进行自己的缺勤显示
- 管理员和宿管员首页可视化
- 使用表格和echart的可视化条形图
开发环境
-
jdk 1.8.0_181
-
mysql8.0.22
-
maven3.5.4
开发工具
-
数据库软件:
Navicat 15
-
开发IDE:
IDEA2019.2
WebStorm2020.1
-
因为我对
vscode
不熟悉,所以使用WebStorm
-
接口测试工具:
ApiPost
技术路线
前端:
layui2.5.7
axios0.21.0
jwt(json web token)
ztree
optable
echarts
-
layuimini v2 单页版
后端:
springboot2.4.2
mybatis-plus3.4.0
EasyExcel
-
easyexcel
线上运行
==~~注意点:放线上了,方便大家查看,所以数据库不要随便删除qaq!!!==~~
服务器到期了,我在部署文档中详细的写了一下步骤,可以参考一下自己部署。
项目本地运行
为了能让大家有一个完美的用户体验,提供了源码的同时,也提供了数据库的sql文件,并且sql文件中的属性也做了一个具体的说明。
-
git clone https://gitee.com/dz138598/dormitory_management_system.git
-
本地新建一个数据库
dormitory
,字符集utf-8
,运行SQL文件dormitory.sql
- 用idea打开项目,并且配置maven下载依赖
-
修改配置文件
application.yml
中的数据库密码 -
运行后端项目
DormitoryApplication
启动类 - 使用webstorm或者vscode运行login.html页面,然后就成功啦
项目的部分截图
项目线上部署
放在两个tomcat上,后端一个tomcat,前端一个tomcat
参考文档:线上部署教学.md
项目难点
- 菜单权限管理的设置
-
不同的角色有不同的菜单
- 涉及两个表
-
菜单表(主要是id和pid)
- 使用jdk的stream流进行递归处理,封装成树
- 菜单和角色表
- 组织的表设计
- 没有设置成四个表 学院、专业、系、班级
-
设计成一个有id和pid的表
-
在线预选同一个床位并发
-
使用乐观锁,锁当行
- 如果使用Mybatis,进行两次的查询version,第二次直接从缓存中直接读取结果,就没有去查数据库,设置version不起作用。
- 尝试过删除一级缓存方法或在该事务中写一个getVersion方法不行。
- 最后成功的方法:单独再写一个方法用来查询版本version方法, 方法放在事务外
-
出现异常的时候设置回滚
-
@Transactional(rollbackFor=Exception.class)
-
参看:https://blog.csdn.net/weixin_41945228/article/details/89920739
-
-
密码加密处理
- 如果md5加密,彩虹表暴力破解
- 两次md5加密,还是存在规律
-
md5盐值加密
- Md5Crypt.md5Crypy("123456".getBytes())
- 加了随机值,所以每次加密的时候都是不一样的,需要将数据也保存下这个随机盐或者存一个固定值
- Spring security BCryptPasswordEncoder
- 加密在数据库生成60位字符串
- 主要用到encode和matches
- 自己在设计项目和实现的时候,明白==冗余字段==的好处,不然要连接好多个表
- 数据库设计和业务流程真的非常重要
- 跨域问题
参考文献
- 基于Spring框架的职业院校管理系统构建(复旦大学·王开明)
- 临沂大学学生公寓管理系统的设计与实现(山东大学·袁伟)
- 大学生宿舍管理系统的设计与实现(湖北工业大学·刘善广)
- 基于移动应用的宿舍管理系统的设计与实现(山东大学·刘慧情)
- 基于Spring的高校教学管理信息系统的设计与实现(西安电子科技大学·刘爱玉)
- 留学生宿舍管理信息系统的设计与实现(东北大学·Osvaldo Silva)
- 基于B/S架构的高校教学住宿一体化系统设计(大连交通大学·张颖)
- 留学生宿舍管理信息系统的设计与实现(东北大学·Osvaldo Silva)
- 基于移动应用的宿舍管理系统的设计与实现(山东大学·刘慧情)
- 基于智慧校园中高校学生宿舍管理系统设计与开发(湖北工业大学·严利)
- 高校业务数据管理系统的研究与实现(西安科技大学·高小茜)
- 基于Spring的高校教学管理信息系统的设计与实现(西安电子科技大学·刘爱玉)
- 基于Spring的高校教学管理信息系统的设计与实现(西安电子科技大学·刘爱玉)
- 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚)
- 大学宿舍管理系统的开发与实现(电子科技大学·许盛诚)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码货栈 ,原文地址:https://bishedaima.com/yuanma/35653.html