# 24计算机-分组项目
**Repository Path**: data-structure_24_CST/24-computer-group-project
## Basic Information
- **Project Name**: 24计算机-分组项目
- **Description**: 24计算机-分组项目
- **Primary Language**: C
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-09-30
- **Last Updated**: 2026-06-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 需求分析说明书
**系统名称**:高校宿舍管理系统
**姓 名**:__________
**学 号**:__________
---
## 一、总体需求描述
### 1.1 文字说明
高校宿舍管理是学校后勤保障的重要环节,涉及学生入住、退宿、换宿、宿舍楼与房间维护、报修处理、水电费缴费、宿管人员调度等多类业务。传统的人工登记方式面临以下问题:
- **床位状态滞后**:纸质或 Excel 登记无法实时反映床位空闲、占用、维修等状态,导致新生入住安排混乱。
- **报修流程不透明**:学生提交报修后缺少统一记录,宿管无法跟踪维修进度,后勤难以统计未完成任务。
- **缴费记录分散**:各宿舍每月水电费数据单独记录,缺乏统一的查询与统计渠道,容易出现漏缴或数据错误。
- **信息查询效率低**:查找某学生住在哪里、某宿舍有多少空位,需要翻阅多份表格,耗时且易出错。
为此,设计一套**高校宿舍管理系统**,以数据库为核心,统一存储和管理学生信息、宿舍资源(楼栋、房间、床位)、入住记录、报修记录和缴费记录,支撑日常宿舍管理业务的数字化运行。
### 1.2 系统目标
1. 统一管理学生基本信息(学号、姓名、学院、专业、班级、联系方式)。
2. 维护宿舍资源信息(楼栋、房间、床位及床位状态)。
3. 支撑入住、退宿和换宿等核心住宿业务,保证床位状态与入住记录的一致性。
4. 提供报修申请与处理跟踪功能。
5. 按宿舍和月份记录水电费缴费情况,自动计算费用总额。
6. 提供面向宿管、学生和后勤管理人员的常用查询与统计功能。
7. 通过视图、索引和存储过程等数据库对象提升查询效率和可维护性。
### 1.3 用户角色
| 角色 | 主要职责 |
|---|---|
| 宿舍管理员 | 管理楼栋、宿舍、床位信息;办理入住、退宿、换宿;维护报修和缴费记录 |
| 学生 | 查询本人住宿信息;提交报修申请;查看缴费情况 |
| 后勤管理人员 | 查看报修统计、缴费统计;掌握宿舍整体使用情况 |
### 1.4 业务流程概述
```
学生入学 → 宿管分配床位 → 创建入住记录 → 床位状态更新为"已入住"
↓
学生入住期间 → 提交报修(可选)→ 后勤处理维修 → 更新报修状态
↓
每月 → 生成宿舍缴费记录 → 学生缴费 → 更新缴费状态
↓
学生毕业/换宿 → 办理退宿 → 释放床位 → 入住记录归档
```
---
## 二、功能需求
### 2.1 功能模块图
```mermaid
graph TD
A[高校宿舍管理系统] --> B[学生信息管理]
A --> C[宿舍资源管理]
A --> D[入住管理]
A --> E[报修管理]
A --> F[缴费管理]
A --> G[查询统计]
B --> B1[录入学生信息]
B --> B2[修改学生信息]
B --> B3[查询学生信息]
C --> C1[维护楼栋信息]
C --> C2[维护宿舍房间]
C --> C3[维护床位状态]
D --> D1[办理入住]
D --> D2[办理退宿]
D --> D3[办理换宿]
E --> E1[提交报修申请]
E --> E2[更新报修状态]
E --> E3[查看报修记录]
F --> F1[录入缴费记录]
F --> F2[更新缴费状态]
F --> F3[查询缴费明细]
G --> G1[空床位查询]
G --> G2[住宿信息查询]
G --> G3[报修统计]
G --> G4[缴费统计]
```
### 2.2 功能详细说明
| 功能模块 | 功能项 | 功能描述 |
|---|---|---|
| 学生信息管理 | 录入/修改/查询 | 维护学号、姓名、性别、学院、专业、班级、联系电话等基本信息 |
| 宿舍资源管理 | 楼栋维护 | 管理宿舍楼名称、楼层数、性别限制、地址等 |
| 宿舍资源管理 | 房间维护 | 管理每个楼栋下的宿舍房间号、楼层、容量 |
| 宿舍资源管理 | 床位维护 | 管理每个房间的床位编号及状态(空闲/已入住/维修中) |
| 入住管理 | 办理入住 | 为学生分配空闲床位,创建入住记录,更新床位状态 |
| 入住管理 | 办理退宿 | 结束入住记录,释放床位,恢复床位为空闲 |
| 入住管理 | 办理换宿 | 同时完成退宿原床位和入住新床位的操作(事务性操作) |
| 报修管理 | 提交报修 | 学生提交维修内容,记录报修时间和宿舍 |
| 报修管理 | 处理报修 | 更新报修状态(待处理→处理中→已完成),记录处理人和完成时间 |
| 缴费管理 | 费用录入 | 按宿舍和月份录入水费、电费 |
| 缴费管理 | 缴费确认 | 更新缴费状态为已缴费,记录缴费日期 |
| 查询统计 | 空床位查询 | 按楼栋查询空闲床位,用于安排新生入住 |
| 查询统计 | 住宿查询 | 按学生姓名查询其所在楼栋、房间和床位 |
| 查询统计 | 入住统计 | 按宿舍统计当前入住人数和剩余床位数 |
| 查询统计 | 报修统计 | 按报修状态统计各类报修数量 |
| 查询统计 | 缴费统计 | 按月份查询未缴费宿舍清单 |
---
## 三、数据流图
### 3.1 第 0 层数据流图(顶层图 / 上下文图)
第 0 层将整个系统抽象为一个整体处理过程,展示系统与外部实体之间的数据交互。
```mermaid
graph TD
%% 外部实体
S[/学生\]
M[/宿舍管理员\]
L[/后勤管理人员\]
%% 主处理
P[高校宿舍管理系统
P0]
%% 学生 → 系统
S -->|入住申请、退宿申请、换宿申请| P
S -->|报修申请、报修内容| P
S -->|缴费查询请求| P
%% 系统 → 学生
P -->|住宿信息、分配床位| S
P -->|报修处理结果| S
P -->|缴费明细、缴费状态| S
%% 宿管 → 系统
M -->|学生信息、楼栋信息、房间信息| P
M -->|床位分配指令| P
M -->|缴费记录录入| P
%% 系统 → 宿管
P -->|空床位列表、入住统计| M
P -->|缴费状态汇总| M
P -->|学生住宿清单| M
%% 后勤 → 系统
L -->|报修处理结果、维修记录| P
%% 系统 → 后勤
P -->|报修统计报表| L
P -->|缴费统计报表| L
P -->|宿舍使用率统计| L
```
### 3.2 第 1 层数据流图(详细层)
第 1 层将顶层的主处理拆分为 6 个子处理过程,展示各子过程之间及其与数据存储之间的数据流。
```mermaid
graph TD
%% 外部实体
S[/学生\]
M[/宿舍管理员\]
L[/后勤管理人员\]
%% 子处理过程
P1[P1
学生信息管理]
P2[P2
宿舍资源管理]
P3[P3
入住管理]
P4[P4
报修管理]
P5[P5
缴费管理]
P6[P6
查询统计]
%% 数据存储
D1[(D1 学生表
Student)]
D2[(D2 宿舍楼表
Building)]
D3[(D3 宿舍表
Dormitory)]
D4[(D4 床位表
Bed)]
D5[(D5 入住记录表
CheckIn)]
D6[(D6 报修记录表
Repair)]
D7[(D7 缴费记录表
Payment)]
D8[(D8 宿管表
Manager)]
%% 宿管 → P1
M -->|学生基本信息| P1
P1 -->|写入/更新| D1
%% 宿管 → P2
M -->|楼栋/宿舍/床位信息| P2
P2 -->|写入/更新| D2
P2 -->|写入/更新| D3
P2 -->|写入/更新| D4
M -->|宿管信息| P2
P2 -->|写入/更新| D8
%% 学生 → P3 & P4
S -->|入住/退宿/换宿申请| P3
P3 -->|读取空闲床位| D4
P3 -->|写入/更新入住记录| D5
P3 -->|更新床位状态| D4
P3 -->|读取学生信息| D1
S -->|报修申请| P4
P4 -->|写入报修记录| D6
P4 -->|读取学生信息| D1
P4 -->|读取宿舍信息| D3
%% 后勤 → P4
L -->|报修处理信息| P4
P4 -->|更新报修状态| D6
%% 宿管 → P5
M -->|缴费数据录入| P5
P5 -->|写入/更新缴费记录| D7
P5 -->|读取宿舍信息| D3
%% 查询 P6
S -->|查询请求| P6
M -->|统计请求| P6
L -->|统计请求| P6
P6 -->|读取| D1
P6 -->|读取| D2
P6 -->|读取| D3
P6 -->|读取| D4
P6 -->|读取| D5
P6 -->|读取| D6
P6 -->|读取| D7
P6 -->|查询/统计结果| S
P6 -->|查询/统计结果| M
P6 -->|查询/统计结果| L
```
---
## 四、数据字典
### 4.1 数据项
数据项是系统中不可再分的最小数据单位。
| 数据项编号 | 数据项名称 | 别名 | 类型与长度 | 取值范围 | 说明 |
|---|---|---|---|---|---|
| DI-001 | student_id | 学生编号 | INT | 自增序列 | 主键,系统内部唯一标识 |
| DI-002 | student_no | 学号 | VARCHAR(20) | 如 "202401001" | 唯一,学生业务标识 |
| DI-003 | name | 学生姓名 | VARCHAR(20) | 中文字符 | 不能为空 |
| DI-004 | gender | 性别 | ENUM | '男'、'女' | 不能为空 |
| DI-005 | college | 学院 | VARCHAR(50) | 如 "计算机学院" | 不能为空 |
| DI-006 | major | 专业 | VARCHAR(50) | 如 "软件工程" | 不能为空 |
| DI-007 | class_name | 班级 | VARCHAR(30) | 如 "软工2401" | 不能为空 |
| DI-008 | phone | 联系电话 | VARCHAR(20) | 11位手机号 | 可为空 |
| DI-009 | building_id | 楼栋编号 | INT | 自增序列 | 主键 |
| DI-010 | building_name | 楼栋名称 | VARCHAR(30) | 如 "一号楼" | 唯一,不能为空 |
| DI-011 | floors | 楼层数 | INT | ≥1 | 检查约束 |
| DI-012 | gender_limit | 性别限制 | ENUM | '男'、'女' | 该楼栋允许住宿的性别 |
| DI-013 | address | 地址 | VARCHAR(100) | 如 "东区生活园A区" | 可为空 |
| DI-014 | dormitory_id | 宿舍编号 | INT | 自增序列 | 主键 |
| DI-015 | room_no | 房间号 | VARCHAR(10) | 如 "101" | 同一楼栋内唯一 |
| DI-016 | floor_no | 楼层 | INT | ≥1 | 检查约束 |
| DI-017 | capacity | 容量 | INT | ≥1 | 该宿舍最大床位数 |
| DI-018 | bed_id | 床位编号 | INT | 自增序列 | 主键 |
| DI-019 | bed_no | 床位号 | VARCHAR(10) | 如 "1号床" | 同一宿舍内唯一 |
| DI-020 | bed_status | 床位状态 | ENUM | '空闲'、'已入住'、'维修中' | 默认'空闲' |
| DI-021 | checkin_id | 入住记录编号 | INT | 自增序列 | 主键 |
| DI-022 | checkin_date | 入住日期 | DATE | 如 "2025-09-01" | 不能为空 |
| DI-023 | checkout_date | 退宿日期 | DATE | 如 "2026-07-01" | 在住时为空 |
| DI-024 | checkin_status | 入住状态 | ENUM | '在住'、'已退宿' | 默认'在住' |
| DI-025 | repair_id | 报修编号 | INT | 自增序列 | 主键 |
| DI-026 | repair_content | 报修内容 | VARCHAR(200) | 描述故障情况 | 不能为空 |
| DI-027 | repair_status | 报修状态 | ENUM | '待处理'、'处理中'、'已完成' | 默认'待处理' |
| DI-028 | report_time | 报修时间 | DATETIME | 如 "2026-05-08 09:30:00" | 默认当前时间 |
| DI-029 | finish_time | 完成时间 | DATETIME | 完成时填写 | 可为空 |
| DI-030 | handler | 处理人 | VARCHAR(20) | 如 "维修员A" | 可为空 |
| DI-031 | payment_id | 缴费编号 | INT | 自增序列 | 主键 |
| DI-032 | fee_month | 费用月份 | CHAR(7) | 如 "2026-05" | 同一宿舍每月唯一 |
| DI-033 | water_fee | 水费 | DECIMAL(8,2) | ≥0 | 默认 0 |
| DI-034 | electricity_fee | 电费 | DECIMAL(8,2) | ≥0 | 默认 0 |
| DI-035 | total_amount | 总金额 | DECIMAL(8,2) | = 水费 + 电费 | 自动计算(生成列) |
| DI-036 | payment_status | 缴费状态 | ENUM | '未缴费'、'已缴费' | 默认'未缴费' |
| DI-037 | pay_date | 缴费日期 | DATE | 如 "2026-05-03" | 未缴费时为空 |
| DI-038 | manager_id | 宿管编号 | INT | 自增序列 | 主键 |
| DI-039 | manager_name | 宿管姓名 | VARCHAR(20) | 中文字符 | 不能为空 |
### 4.2 数据结构
数据结构描述了数据项之间的组合关系,对应数据库中的表结构。
| 数据结构编号 | 数据结构名称 | 组成数据项 | 对应表名 |
|---|---|---|---|
| DS-01 | 学生信息 | student_id + student_no + name + gender + college + major + class_name + phone | Student |
| DS-02 | 宿管信息 | manager_id + manager_name + phone | Manager |
| DS-03 | 宿舍楼信息 | building_id + building_name + floors + gender_limit + address + manager_id | Building |
| DS-04 | 宿舍信息 | dormitory_id + building_id + room_no + floor_no + capacity | Dormitory |
| DS-05 | 床位信息 | bed_id + dormitory_id + bed_no + bed_status | Bed |
| DS-06 | 入住记录 | checkin_id + student_id + bed_id + checkin_date + checkout_date + status | CheckIn |
| DS-07 | 报修记录 | repair_id + student_id + dormitory_id + repair_content + repair_status + report_time + finish_time + handler | Repair |
| DS-08 | 缴费记录 | payment_id + dormitory_id + fee_month + water_fee + electricity_fee + total_amount + payment_status + pay_date | Payment |
### 4.3 数据处理
数据处理描述系统中对数据的各类操作。
| 处理编号 | 处理名称 | 输入数据 | 输出数据 | 处理逻辑 | 涉及数据存储 |
|---|---|---|---|---|---|
| DP-01 | 录入学生信息 | 学号、姓名、性别、学院、专业、班级、电话 | 新增学生记录 | INSERT INTO student | Student |
| DP-02 | 修改学生信息 | student_id + 需修改的字段 | 更新后的学生记录 | UPDATE student SET ... | Student |
| DP-03 | 维护楼栋信息 | 楼栋名称、楼层数、性别限制、地址、宿管ID | 新增/更新楼栋记录 | INSERT/UPDATE building | Building |
| DP-04 | 维护宿舍信息 | 楼栋ID、房间号、楼层、容量 | 新增/更新宿舍记录 | INSERT/UPDATE dormitory | Dormitory |
| DP-05 | 维护床位信息 | 宿舍ID、床位号 | 新增/更新床位记录 | INSERT/UPDATE bed | Bed |
| DP-06 | 办理入住 | student_id + bed_id + checkin_date | 新增入住记录 + 更新床位状态为"已入住" | INSERT check_in + UPDATE bed SET bed_status='已入住' | CheckIn, Bed |
| DP-07 | 办理退宿 | student_id | 更新入住记录状态 + 更新床位状态为"空闲" | UPDATE check_in SET status='已退宿', checkout_date=今天 + UPDATE bed SET bed_status='空闲' | CheckIn, Bed |
| DP-08 | 办理换宿 | student_no + new_bed_id | 退宿旧床位 + 入住新床位 | 事务操作:退宿→释放旧床→入住新床→占用新床 | CheckIn, Bed |
| DP-09 | 提交报修 | student_id + dormitory_id + repair_content | 新增报修记录 | INSERT INTO repair (status='待处理') | Repair |
| DP-10 | 处理报修 | repair_id + handler | 更新报修状态 | UPDATE repair SET status='已完成', finish_time=NOW() | Repair |
| DP-11 | 录入缴费 | dormitory_id + fee_month + water_fee + electricity_fee | 新增缴费记录(total_amount 自动计算) | INSERT INTO payment | Payment |
| DP-12 | 确认缴费 | payment_id + pay_date | 更新缴费状态 | UPDATE payment SET status='已缴费', pay_date=日期 | Payment |
| DP-13 | 删除错误缴费 | payment_id | 删除缴费记录(仅限未缴费) | DELETE FROM payment WHERE status='未缴费' | Payment |
| DP-14 | 查询空床位 | building_name | 空床位列表 | SELECT ... JOIN ... WHERE bed_status='空闲' | Bed, Dormitory, Building |
| DP-15 | 按姓名查住宿 | student_name | 住宿信息(楼栋、房间、床位) | SELECT ... JOIN 5张表 WHERE name=姓名 AND status='在住' | Student, CheckIn, Bed, Dormitory, Building |
| DP-16 | 宿舍入住统计 | 无(视图) | 各宿舍入住人数与空床位数 | CREATE VIEW v_dormitory_occupancy | Dormitory, Bed, CheckIn |
| DP-17 | 查未缴费宿舍 | fee_month | 未缴费宿舍清单 | SELECT ... WHERE fee_month=月份 AND status='未缴费' | Payment, Dormitory, Building |
| DP-18 | 报修状态统计 | 无 | 各状态报修数量 | SELECT ... GROUP BY repair_status | Repair |
| DP-19 | 按学号查缴费 | student_no | 该学生所在宿舍缴费历史 | 存储过程 sp_query_student_payment | Student, CheckIn, Bed, Dormitory, Payment |
### 4.4 数据存储总览
| 存储编号 | 存储名称 | 对应表名 | 主键 | 记录数(初始) | 增长频率 |
|---|---|---|---|---|---|
| S-01 | 学生信息 | Student | student_id | 6条 | 每年新生入学时批量新增 |
| S-02 | 宿管信息 | Manager | manager_id | 2条 | 偶有新增或变更 |
| S-03 | 宿舍楼信息 | Building | building_id | 2条 | 新建楼栋时新增 |
| S-04 | 宿舍信息 | Dormitory | dormitory_id | 6条 | 新建宿舍时新增 |
| S-05 | 床位信息 | Bed | bed_id | 24条 | 新增宿舍时批量新增 |
| S-06 | 入住记录 | CheckIn | checkin_id | 6条 | 每学期初集中新增 |
| S-07 | 报修记录 | Repair | repair_id | 3条 | 按报修频率日常新增 |
| S-08 | 缴费记录 | Payment | payment_id | 6条 | 每月每宿舍新增一条 |
---
## 附录:数据库实施参考
详见同目录下文件:
- `高校宿舍管理系统_mysql.sql` — 完整建库、建表、初始化数据、视图、索引、存储过程脚本
- `高校宿舍管理系统_大作业说明书.md` — 概念结构设计(ER 图)与逻辑结构设计
- `高校宿舍管理系统_汇报PPT.pptx` — 12 页汇报演示文稿