1. 项目概述
高校宿舍管理系统一直是校园信息化建设中的痛点。传统纸质登记、电话报修的方式效率低下,数据难以统计,学生和宿管人员都苦不堪言。去年我在某高校信息化部门工作时,就接到过改造老旧宿舍管理系统的需求。经过三个月的开发,我们基于Spring Boot和微信小程序的技术栈,打造了一套轻量高效的解决方案。
这个系统的核心价值在于:学生可以随时用手机完成报修、访客预约等操作;宿管人员能实时掌握宿舍动态;管理员则拥有完整的数据看板。最重要的是,它不需要安装额外APP,微信扫码就能用。下面我就从技术选型到具体实现,分享这个项目的完整开发经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 为什么选择Spring Boot + 小程序组合
在技术选型阶段,我们对比了三种方案:
- 纯APP开发(Android+iOS)
- 微信公众号H5
- 微信小程序+后端API
最终选择方案3基于以下考量:
- 开发成本:小程序跨平台特性省去了双端开发成本
- 使用门槛:学生无需下载安装,扫码即用
- 迭代速度:小程序支持热更新,无需应用商店审核
- 性能体验:小程序比H5更接近原生体验
后端选择Spring Boot则是因为:
- 快速搭建RESTful API
- 丰富的starter简化集成(JPA, Security等)
- 内嵌Tomcat便于部署
- 完善的生态和文档支持
2.2 系统分层架构
我们采用经典的四层架构:
code复制Controller层(API入口)
↓
Service层(业务逻辑)
↓
Repository层(数据访问)
↓
Database(MySQL 5.7)
这种分层带来三个明显优势:
- 职责分离,便于团队协作
- 可测试性强,各层可单独mock测试
- 扩展灵活,例如要换数据库只需修改Repository层
3. 数据库设计与优化
3.1 核心表结构设计
系统包含12张核心表,这里重点说明4个关键表的设计:
学生表(student)
sql复制CREATE TABLE `student` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`student_no` varchar(20) NOT NULL COMMENT '学号',
`name` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`dorm_id` bigint(20) DEFAULT NULL COMMENT '宿舍ID',
`bed_no` int(11) DEFAULT NULL COMMENT '床位号',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_student_no` (`student_no`),
KEY `idx_dorm_id` (`dorm_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
宿舍表(dormitory)
sql复制CREATE TABLE `dormitory` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`building_no` varchar(10) NOT NULL COMMENT '楼号',
`room_no` varchar(10) NOT NULL COMMENT '房间号',
`total_beds` int(11) NOT NULL DEFAULT '4' COMMENT '总床位数',
`occupied_beds` int(11) NOT NULL DEFAULT '0' COMMENT '已占用床位数',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1可用 0维修中',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_building_room` (`building_no`,`room_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
维修表(repair)
sql复制CREATE TABLE `repair` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`student_id` bigint(20) NOT NULL,
`dorm_id` bigint(20) NOT NULL,
`description` varchar(500) NOT NULL,
`images` varchar(1000) DEFAULT NULL COMMENT '图片U
