# 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 页汇报演示文稿