|
@@ -0,0 +1,191 @@
|
|
|
|
|
+# 宿舍管理系统 (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 <repository-url>
|
|
|
|
|
+ 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 构建配置
|
|
|
|
|
+```
|