# 宿舍管理系统 (Dormitory Management System) 基于 **SSM(Spring + Spring MVC + MyBatis)** 框架的高校宿舍管理系统,提供线上化的宿舍资源管理和学生自助服务。 ## 项目背景 传统高校宿舍管理多依赖纸质表格或 Excel 记录,存在信息分散、更新滞后、学生体验差、管理效率低等问题。本系统旨在通过信息化手段解决上述痛点,实现宿舍管理的数字化和自动化。 ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | 语言 | Java | JDK 8 | | 核心框架 | Spring (IoC, AOP, TX) | 5.3.31 | | Web MVC | Spring MVC | 5.3.31 | | ORM | MyBatis | 3.5.6 | | 数据库 | MySQL | 8.0.25 | | 连接池 | Druid | 1.2.8 | | 分页 | PageHelper | 5.3.2 | | 视图 | JSP + JSTL + EL | Servlet 4.0 | | 前端 | Bootstrap 4.3.1 + jQuery 3.3.1 | CDN | | 构建工具 | Maven | 3.x | | 服务器 | Apache Tomcat | 9.x | ## 系统架构 采用 **SSM 三层架构 + MVC 设计模式**: ``` 表示层 (JSP + Bootstrap + jQuery) ↓ HTTP 请求 / 响应 控制层 (Spring MVC @Controller) ↓ 服务层 (Service Interface + Impl + @Transactional) ↓ 持久层 (MyBatis Mapper Interface + XML SQL) ↓ 数据库 (MySQL) ``` 请求经过 `DispatcherServlet` → 拦截器链(`LoginInterceptor` → `AuthInterceptor`)→ `@Controller` → `Service` → `Mapper` → 数据库。 ## 功能模块 ### 1. 认证与授权 - 用户名/密码登录,MD5 密码加密 - Session 会话管理 - 双角色:管理员(role=0)和学生(role=1) - 未登录拦截 + 管理员权限拦截 ### 2. 宿舍楼管理(管理员) - 宿舍楼的增删改查 - 分页查询与条件过滤(名称、编号、性别类型) - 删除时校验是否存在关联房间 ### 3. 房间管理(管理员) - 按楼栋管理房间,增删改查 - 分页查询,按楼栋和楼层过滤 - 删除时校验是否存在关联床位 ### 4. 床位管理(管理员) - 按房间管理床位,增删改查 - 分页查询,按楼栋和房间号过滤 - 床位状态:空闲 / 已入住 / 维修 - 删除时校验是否为占用状态 ### 5. 用户管理(管理员) - 学生账户的增删改查 - 分页查询,按姓名、性别、学号过滤 - 头像上传功能 - 删除时校验是否当前有住宿记录 ### 6. 分配管理(管理员) - 查看所有住宿分配记录(关联用户、楼栋、房间、床位) - 手动分配学生到指定床位 - 退宿操作(结宿日期 + 床位释放) ### 7. 学生自助服务(学生端) - 查看个人信息和当前住宿情况 - 头像上传(验证图片类型,最大 2MB) - 三步选宿向导:选择楼栋 → 选择房间 → 选择床位 - 按性别过滤可选床位 - 事务保障:防止重复分配 ## 数据库设计 | 表名 | 说明 | |------|------| | `user` | 用户表(管理员 + 学生) | | `dormitory_building` | 宿舍楼表 | | `room` | 房间表 | | `bed` | 床位表 | | `assignment` | 分配记录表 | **预置数据:** | 用户名 | 密码 | 角色 | |--------|------|------| | admin | admin123 | 管理员 | | zhangsan | 123456 | 学生 | | lisi | 123456 | 学生 | | wangwu | 123456 | 学生 | ## 快速开始 ### 环境要求 - JDK 8+ - Maven 3.x - MySQL 8.0 - Apache Tomcat 9.x(或使用 `tomcat7-maven-plugin`) ### 安装步骤 1. **克隆项目** ```bash git clone cd dormitory_manage ``` 2. **初始化数据库** ```bash mysql -u root -p < sql/init.sql ``` 3. **配置数据库连接** 编辑 `src/main/resources/jdbc.properties`,修改数据库用户名和密码: ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/dormitory_manage?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=root ``` 4. **启动项目** 方式一:使用 Maven 插件 ```bash mvn tomcat7:run ``` 方式二:部署 WAR 包到 Tomcat ```bash mvn package # 将 target/dormitory_manage.war 部署到 Tomcat 的 webapps 目录 ``` 5. **访问系统** 打开浏览器访问 `http://localhost:8080/` ### 默认账号 - **管理员**:`admin` / `admin123` - **学生**:`zhangsan` / `123456` ## 项目结构 ``` dormitory_manage/ ├── doc/ # 项目文档 │ └── work.md # 详细项目报告 ├── sql/ │ └── init.sql # 数据库初始化脚本 ├── src/ │ └── main/ │ ├── java/space/anyi/ │ │ ├── common/ # 公共工具类(Result, PageResult) │ │ ├── controller/ # Controller 层 │ │ ├── entity/ # 实体类 │ │ ├── interceptor/ # 拦截器(登录 + 权限) │ │ ├── mapper/ # MyBatis Mapper 接口 │ │ └── service/ # Service 层(接口 + 实现) │ ├── resources/ │ │ ├── mapper/ # MyBatis XML 映射文件 │ │ ├── jdbc.properties # 数据库配置 │ │ ├── logback.xml # 日志配置 │ │ ├── mybatis-config.xml │ │ ├── spring-context.xml │ │ └── spring-mvc.xml │ └── webapp/ │ ├── WEB-INF/ │ │ ├── web.xml │ │ └── views/ # JSP 视图文件 │ │ ├── admin/ # 管理员页面 │ │ └── student/ # 学生页面 │ └── static/ │ └── uploads/ # 头像上传目录 └── pom.xml # Maven 构建配置 ```