高校学生宿舍管理系统
创建于 2026 年 4 月 20 日
项目介绍
这是一套面向高校宿舍管理场景的业务系统,在若依(RuoYi-Vue)前后端分离框架上扩展而成。宿舍管理的第一性问题,是把”人”和”床”稳定地对应起来:谁住在哪栋楼的哪个房间哪个床位、什么时候入住的、打算什么时候走。系统用 dorm_building(楼栋)、dorm_room(房间)、dorm_bed(床位)三级档案解决”床”的建模,用 dorm_student(学生档案)+ dorm_stay_record(住宿记录)解决”人”与”床”的绑定,再围绕这两条主线展开查寝、访客、报修等日常运营动作。
在此基础上,系统覆盖了宿管工作的完整日常:宿管人员维护楼栋房间床位、办理入住/调宿/退宿、创建查寝任务并处理异常、登记进出访客、派单维修;学生可以在”我的住宿 / 我的查寝 / 我的报修 / 个人信息”中自助查看与发起;维修人员通过”维修工单”接单、反馈、完工。三类角色(dorm_manager / dorm_student / dorm_repair)按菜单权限天然隔离,学生端接口单独走 /dorm/my/*,不复用宿管接口,权限边界清晰。
项目架构
项目根目录为 RuoYi-Vue-高校学生宿舍管理系统,后端沿用若依经典多模块布局:ruoyi-admin(启动与 Web 层)、ruoyi-system(业务层)、ruoyi-framework / ruoyi-common(框架与公共组件)、ruoyi-quartz(定时任务)、ruoyi-generator(代码生成)。技术栈为 Java 17、Spring Boot 4.0.3、MyBatis 4.0.1、Druid 1.2.28、PageHelper 2.1.1、Fastjson 2.0.61,数据存储使用 MySQL 8.0 + Redis(若依默认的验证码/会话缓存)。宿舍业务集中在 com.ruoyi 下的 dorm 包:ruoyi-admin 的 web/controller/dorm 下新增 15 个 Controller,ruoyi-system 下新增 9 个 domain 实体、10 个 Mapper、10 个 Service(含 9 个 MyBatis XML),其中 DormBizServiceImpl 是核心门面,负责统计概览、学生端”我的”查询以及派单/接单/完工、查寝跟进、访客离开、调宿退宿等带事务的操作。
数据库脚本分两份:sql/ry_20260320.sql 为若依基础库(约 20 张 sys_* 表),sql/dm_dormitory_standalone.sql 为宿舍模块独立脚本(约 860 行),二者按顺序执行。模块脚本一次完成四件事:初始化 3 个角色与 16 个菜单(编号预留 3000-3999)、9 类 dorm_* 字典、6 项 dorm.* 配置;创建 11 张业务表(dorm_building、dorm_building_manager、dorm_room、dorm_bed、dorm_student、dorm_stay_record、dorm_inspection_task、dorm_inspection_detail、dorm_visitor_record、dorm_repair_order、dorm_repair_process_log);创建 4 个统计视图(当前住宿、楼栋入住率、查寝日报、访客日报);最后灌入两栋楼、4 间房、16 个床位、5 名学生、在住/退宿记录、查寝任务、访客与报修工单等示例数据,导入即可联调。
前端基于 Vue 2.6.12 + Element UI 2.15.14 + ECharts 5.4.0 + Axios,ruoyi-ui/src/views/dorm 下共 15 个页面:楼栋/房间/床位/学生档案、住宿分配、查寝管理、访客管理、报修管理、统计分析、宿舍设置,以及面向学生端的 myStay / myInspection / myRepair / myProfile 和个人信息。统计页用 ECharts 绘制查寝异常趋势折线与报修状态分布饼图,楼栋入住率用进度条表格呈现。
核心功能
- 宿舍三级档案与宿管分配:楼栋维护校区、适用性别(不限/男/女)、楼层数、值班电话与地址;房间挂在楼栋下,记录楼层、房型(如四人间)、设计床位数与房间状态(可用/维修/停用);床位带床号、标签(A床、靠窗上铺)与位置描述。另设
dorm_building_manager表把宿管与楼栋关联,职责分为主宿管/副宿管/值班,带开始与结束日期,形成楼栋责任台账。 - 住宿分配全流程:住宿分配页提供入住登记、床位分配、调宿办理、退宿办理四个动作,分配来源区分人工分配/批量导入/学生申请。关键设计在
dorm_stay_record表:用两列generated always as生成列把”在住”状态的 student_id 与 bed_id 单独投影出来并建唯一索引,从数据库层面保证一个学生同一时间只有一条在住记录、一个床位同一时间只能被一个人占用,应用层再加事务兜底,杜绝重复入住与床位冲突。 - 查寝与异常跟进:宿管创建查寝任务时选择日期、时段(早查/晚查/专项)与范围(整栋/某楼层/某房间),指定查寝人;按在住名单生成应查人数,逐人登记结果(正常/缺勤/晚归/违规)与违规类型;任务统计已查人数与异常人数,异常明细支持登记跟进处理人并闭环(待处理→已处理),晚归判定阈值可在模块设置中调整。
- 报修工单流转:学生端提交报修(类别、优先级普通/紧急、标题、描述、图片),生成
RP + 日期 + 序号工单号;宿管派单给维修人员,维修人员在”维修工单”中接单、反馈处理中、完工并填写处理结果,也可取消。每次状态变化(提交/派单/接单/处理中反馈/完工/取消)都写入dorm_repair_process_log流转日志,形成可追溯的完整工单轨迹。 - 访客登记与统计看板:访客登记记录姓名、身份证、电话、与学生关系(家长/亲属/同学/朋友/其他)、被访学生、楼栋房间与来访事由,进楼登记后凭”离开登记”闭环,超时未离自动标记超时离校;访客来访时段与单次人数上限由
dorm.*配置控制。统计页聚合出启用楼栋/可用房间/可用床位/当前入住概览卡片、楼栋入住率、近 7 天查寝异常趋势、报修状态分布与近 7 天访客统计,数据由 4 个 MySQL 视图预聚合。
功能截图
暂无运行截图。
快速上手
数据库按序执行两个脚本:先 sql/ry_20260320.sql 初始化若依基础表,再执行 sql/dm_dormitory_standalone.sql 导入宿舍模块(脚本自带重复导入清理,可安全重建)。后端进入 ruoyi-admin,修改 application-druid.yml 中的 MySQL 连接(默认库名 shcool_room)与 application.yml 中的 Redis 配置,启动 RuoYiApplication,服务监听 8080 端口。
前端进入 ruoyi-ui 执行 npm install 后 npm run dev 启动开发服务(代理指向 http://localhost:8080)。登录账号:管理员 admin / admin123;角色示例账号 dorm_manager(宿管张老师)、dorm_student / dorm_student2(学生李晓宇、王雨桐)、dorm_repair(维修王师傅),密码均与 admin 一致为 admin123。导入 SQL 后即可直接体验入住登记、派单、查寝、访客登记与统计看板的全流程。
总结
这个项目的价值在于把宿舍管理中最容易出错的”人床绑定”问题用数据库约束固化下来:住宿记录表的两列生成列唯一索引,让”一人一住、一床一人”不再依赖开发人员的自觉;报修工单把状态机与流转日志分开建模,任何一次派单、接单、完工都有据可查;三类角色加学生端独立接口,让宿管、学生、维修人员各用其端而不越权。模块级独立 SQL 脚本(字典、菜单、角色、配置、示例数据一键初始化)也体现了良好的工程化习惯,导入即可前后端联调。
若在此基础上继续演进,可以考虑的方向包括:接入水电计量与缴费、门禁/人脸识别联动查寝打卡、报修工单的催办定时任务(配置项已预留 dorm.repair.urgeHours),以及把入住率、异常率等指标做成长周期的报表导出。