Files
nursing-home/thesis/chapter4.md
2026-03-01 01:13:16 +08:00

383 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第4章 养老院管理系统的系统设计
## 4.1 系统功能设计
本系统面向管理员、护工和家属三类用户角色,各角色拥有不同的功能权限。管理员作为系统的最高权限角色,负责系统的全面运营管理,包括运营概览、账号管理、长者档案管理、排班管理、账单管理、反馈处理和通知公告管理七大功能模块。护工作为一线服务角色,拥有工作台、我的排班、护理记录、健康监测、交班记录和通知中心六大功能模块。家属作为信息查看角色,拥有家属首页、亲人档案、每日动态、健康记录、账单支付、服务反馈和通知中心七大功能模块。
管理员功能结构图如图4.1所示。
![管理员功能结构图](diagrams/admin_func_structure.png)
图4.1 管理员功能结构图
护工功能结构图如图4.2所示。
![护工功能结构图](diagrams/nurse_func_structure.png)
图4.2 护工功能结构图
家属功能结构图如图4.3所示。
![家属功能结构图](diagrams/family_func_structure.png)
图4.3 家属功能结构图
## 4.2 类图
本系统的数据模型采用关系型数据库设计共包含11个数据实体各实体之间通过外键关联形成完整的数据关系网络。系统类图采用IE Crow's Foot标记法展示各实体的属性和实体间的关系。核心实体包括用户表sys_user、长者表elder、家属长者关联表family_elder、排班表schedule、护理记录表care_record、健康记录表health_record、交班记录表handover、通知表notice、反馈表feedback、账单表bill和缴费记录表payment_record
主要的实体关系包括用户护工角色与排班、护理记录、健康记录、交班记录之间为一对多关系用户家属角色与长者之间通过家属长者关联表形成多对多关系长者与护理记录、健康记录、账单、反馈之间为一对多关系账单与缴费记录之间为一对多关系用户管理员角色与通知之间为一对多关系。系统类图如图4.4所示。
![系统类图](diagrams/class_diagram.png)
图4.4 系统类图
## 4.3 序列图
### 4.3.1 用户登录序列图
用户登录过程涉及用户、系统前台、后台系统和数据库四个参与者之间的交互。具体步骤如下:
1用户在浏览器中打开系统登录页面。
2用户输入用户名和密码点击登录按钮。
3系统前台将登录请求发送至后台系统的认证接口POST /api/auth/login
4后台系统接收请求后向数据库查询该用户名对应的用户信息。
5数据库返回查询结果。
6后台系统使用BCrypt算法验证用户输入的密码与数据库中存储的加密密码是否匹配。
7验证通过后后台系统调用Sa-Token框架生成UUID格式的Token。
8后台系统将Token、用户角色和用户信息返回给系统前台。
9系统前台将Token和角色信息存储到浏览器的localStorage中。
10系统前台根据用户角色自动跳转到对应的功能首页。
用户登录序列图如图4.5所示。
![用户登录序列图](diagrams/sequence_login.png)
图4.5 用户登录序列图
### 4.3.2 护工添加护理记录序列图
护工添加护理记录过程涉及护工、系统前台、后台系统和数据库四个参与者之间的交互。具体步骤如下:
1护工在系统中进入护理记录页面。
2系统前台向后台系统请求长者列表数据。
3后台系统从数据库查询长者信息并返回。
4系统前台展示长者列表供护工选择。
5护工选择目标长者填写护理内容可选择上传附件。
6系统前台将护理记录数据提交至后台系统POST /api/nurse/care-records
7后台系统自动关联当前登录护工的ID设置记录时间将数据插入数据库。
8数据库返回插入结果。
9后台系统将创建成功的响应返回给系统前台。
10系统前台显示添加成功提示并刷新护理记录列表。
护工添加护理记录序列图如图4.6所示。
![护工添加护理记录序列图](diagrams/sequence_care_record.png)
图4.6 护工添加护理记录序列图
## 4.4 活动图
### 4.4.1 用户登录活动图
用户登录过程可分为以下几步:
1用户在登录页面输入用户名和密码。
2系统前台将登录信息提交至后台系统。
3后台系统向数据库查询用户数据。
4数据库返回查询结果后台系统判断用户是否存在以及密码是否正确。
5若验证失败系统返回错误提示用户需重新输入。
6若验证成功后台系统生成Token并返回给前台。
7前台存储Token信息跳转至对应角色的系统首页。
用户登录活动图如图4.7所示。
![用户登录活动图](diagrams/activity_login.png)
图4.7 用户登录活动图
### 4.4.2 管理员处理反馈活动图
管理员处理反馈过程可分为以下几步:
1管理员登录系统进入反馈处理页面。
2系统前台向后台系统请求所有反馈数据。
3后台系统从数据库查询反馈列表并返回。
4管理员查看反馈列表选择需要处理的反馈。
5管理员填写回复内容更新反馈状态。
6系统前台将回复信息提交至后台系统。
7后台系统更新数据库中的反馈记录。
8系统提示回复成功反馈列表自动刷新。
管理员处理反馈活动图如图4.8所示。
![管理员处理反馈活动图](diagrams/activity_feedback.png)
图4.8 管理员处理反馈活动图
## 4.5 数据库设计
### 4.5.1 概念设计
概念设计阶段采用E-R图实体-关系图描述系统的数据模型。本系统共包含11个实体以下列举8个核心实体的属性图。
1用户实体
用户实体包含用户ID主码、用户名、密码、姓名、电话、角色和状态等属性。用户实体属性图如图4.9所示。
![用户实体属性图](diagrams/entity_user.png)
图4.9 用户实体属性图
2长者实体
长者实体包含长者ID主码、姓名、性别、身份证号、出生日期、房间号、入住日期、护理等级、状态和备注等属性。长者实体属性图如图4.10所示。
![长者实体属性图](diagrams/entity_elder.png)
图4.10 长者实体属性图
3排班实体
排班实体包含排班ID主码、护工ID、日期、班次和任务等属性。排班实体属性图如图4.11所示。
![排班实体属性图](diagrams/entity_schedule.png)
图4.11 排班实体属性图
4护理记录实体
护理记录实体包含记录ID主码、长者ID、护工ID、内容、附件和记录时间等属性。护理记录实体属性图如图4.12所示。
![护理记录实体属性图](diagrams/entity_care_record.png)
图4.12 护理记录实体属性图
5健康记录实体
健康记录实体包含记录ID主码、长者ID、护工ID、体温、收缩压、舒张压、心率、备注和记录时间等属性。健康记录实体属性图如图4.13所示。
![健康记录实体属性图](diagrams/entity_health_record.png)
图4.13 健康记录实体属性图
6账单实体
账单实体包含账单ID主码、长者ID、月份、床位费、护理费、餐饮费、其他费用、总计和状态等属性。账单实体属性图如图4.14所示。
![账单实体属性图](diagrams/entity_bill.png)
图4.14 账单实体属性图
7反馈实体
反馈实体包含反馈ID主码、家属ID、长者ID、类型、内容、评分、状态和回复等属性。反馈实体属性图如图4.15所示。
![反馈实体属性图](diagrams/entity_feedback.png)
图4.15 反馈实体属性图
8通知实体
通知实体包含通知ID主码、标题、内容、目标角色、目标用户ID和创建者ID等属性。通知实体属性图如图4.16所示。
![通知实体属性图](diagrams/entity_notice.png)
图4.16 通知实体属性图
系统总体E-R图展示了各实体之间的关联关系如图4.17所示。
![系统E-R图](diagrams/er_diagram.png)
图4.17 系统E-R图
### 4.5.2 逻辑设计
将E-R图中的实体关系转换为关系模式具体如下
1用户表用户ID用户名密码姓名电话角色状态创建时间更新时间
2长者表长者ID姓名性别身份证号出生日期房间号入住日期护理等级状态备注
3家属长者关联表关联ID家属ID长者ID关系创建时间。外键家属ID引用用户表长者ID引用长者表。
4排班表排班ID护工ID日期班次任务创建时间更新时间。外键护工ID引用用户表。
5护理记录表记录ID长者ID护工ID内容附件URL记录时间创建时间。外键长者ID引用长者表护工ID引用用户表。
6健康记录表记录ID长者ID护工ID体温收缩压舒张压心率备注记录时间创建时间。外键长者ID引用长者表护工ID引用用户表。
7交班记录表记录ID护工ID日期内容创建时间。外键护工ID引用用户表。
8通知表通知ID标题内容目标角色目标用户ID创建者ID创建时间。外键创建者ID引用用户表。
9反馈表反馈ID家属ID长者ID类型内容评分状态回复创建时间更新时间。外键家属ID引用用户表长者ID引用长者表。
10账单表账单ID长者ID月份床位费护理费餐饮费其他费用总计状态创建时间支付时间。外键长者ID引用长者表。
11缴费记录表记录ID账单ID家属ID金额支付方式支付时间。外键账单ID引用账单表家属ID引用用户表。
### 4.5.3 物理设计
系统根据MySQL数据库数据存储的特性设计数据库关系表以下列举主要的物理表结构。
表4.1 用户表sys_user表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 用户ID | BIGINT | - | 主键,自增 |
| username | 用户名 | VARCHAR | 50 | 非空,唯一 |
| password | 密码 | VARCHAR | 100 | 非空 |
| name | 姓名 | VARCHAR | 50 | 非空 |
| phone | 电话 | VARCHAR | 30 | - |
| role | 角色 | VARCHAR | 20 | 非空 |
| status | 状态 | TINYINT | - | 非空默认1 |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
| updated_at | 更新时间 | DATETIME | - | 自动更新 |
表4.2 长者表elder表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 长者ID | BIGINT | - | 主键,自增 |
| name | 姓名 | VARCHAR | 50 | 非空 |
| gender | 性别 | VARCHAR | 10 | - |
| id_card | 身份证号 | VARCHAR | 30 | 非空,唯一 |
| birthday | 出生日期 | DATE | - | - |
| room_no | 房间号 | VARCHAR | 20 | - |
| check_in_date | 入住日期 | DATE | - | - |
| care_level | 护理等级 | VARCHAR | 20 | - |
| status | 状态 | VARCHAR | 20 | - |
| remark | 备注 | VARCHAR | 200 | - |
表4.3 护理记录表care_record表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 记录ID | BIGINT | - | 主键,自增 |
| elder_id | 长者ID | BIGINT | - | 非空 |
| nurse_id | 护工ID | BIGINT | - | 非空 |
| content | 护理内容 | VARCHAR | 500 | - |
| attachment_url | 附件URL | VARCHAR | 200 | - |
| record_time | 记录时间 | DATETIME | - | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
表4.4 健康记录表health_record表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 记录ID | BIGINT | - | 主键,自增 |
| elder_id | 长者ID | BIGINT | - | 非空 |
| nurse_id | 护工ID | BIGINT | - | 非空 |
| temperature | 体温 | DECIMAL | 4,1 | - |
| bp_systolic | 收缩压 | INT | - | - |
| bp_diastolic | 舒张压 | INT | - | - |
| heart_rate | 心率 | INT | - | - |
| note | 备注 | VARCHAR | 200 | - |
| record_time | 记录时间 | DATETIME | - | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
表4.5 账单表bill表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 账单ID | BIGINT | - | 主键,自增 |
| elder_id | 长者ID | BIGINT | - | 非空 |
| month | 月份 | VARCHAR | 7 | 非空 |
| bed_fee | 床位费 | DECIMAL | 10,2 | - |
| care_fee | 护理费 | DECIMAL | 10,2 | - |
| meal_fee | 餐饮费 | DECIMAL | 10,2 | - |
| other_fee | 其他费用 | DECIMAL | 10,2 | - |
| total | 总计 | DECIMAL | 10,2 | - |
| status | 状态 | VARCHAR | 20 | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
| paid_at | 支付时间 | DATETIME | - | - |
表4.6 排班表schedule表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 排班ID | BIGINT | - | 主键,自增 |
| nurse_id | 护工ID | BIGINT | - | 非空 |
| date | 日期 | DATE | - | 非空 |
| shift | 班次 | VARCHAR | 20 | - |
| task | 任务 | VARCHAR | 200 | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
| updated_at | 更新时间 | DATETIME | - | 自动更新 |
表4.7 反馈表feedback表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 反馈ID | BIGINT | - | 主键,自增 |
| family_id | 家属ID | BIGINT | - | 非空 |
| elder_id | 长者ID | BIGINT | - | 非空 |
| type | 类型 | VARCHAR | 20 | - |
| content | 内容 | VARCHAR | 500 | - |
| rating | 评分 | INT | - | - |
| status | 状态 | VARCHAR | 20 | - |
| reply | 回复 | VARCHAR | 500 | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
| updated_at | 更新时间 | DATETIME | - | 自动更新 |
表4.8 通知表notice表
| 字段名称 | 字段意义 | 数据类型 | 长度 | 完整性约束 |
|----------|----------|----------|------|-----------|
| id | 通知ID | BIGINT | - | 主键,自增 |
| title | 标题 | VARCHAR | 100 | 非空 |
| content | 内容 | VARCHAR | 1000 | - |
| target_role | 目标角色 | VARCHAR | 20 | - |
| target_user_id | 目标用户ID | BIGINT | - | - |
| created_by | 创建者ID | BIGINT | - | - |
| created_at | 创建时间 | DATETIME | - | 默认当前时间 |
## 4.6 图形界面设计
### 4.6.1 长者档案管理界面设计
管理员的长者档案管理界面采用经典的管理后台布局,左侧为导航菜单,右侧为主内容区域。主内容区域顶部设有"添加长者"操作按钮下方为长者信息数据表格表格列包括姓名、性别、身份证号、房间号、护理等级、状态和操作列。操作列提供编辑和删除按钮。点击添加或编辑按钮时弹出表单对话框供用户输入或修改长者信息。长者档案管理界面设计图如图4.18所示。
![长者档案管理界面设计图](diagrams/ui_wireframe_elder.png)
图4.18 长者档案管理界面设计图
### 4.6.2 健康监测界面设计
护工的健康监测界面同样采用左侧导航、右侧内容的布局。主内容区域上方为数据录入表单包含长者选择下拉框、体温输入框、收缩压输入框、舒张压输入框、心率输入框、备注输入框和记录时间选择器以及提交按钮。表单下方为健康记录数据表格展示已录入的历史健康监测数据。健康监测界面设计图如图4.19所示。
![健康监测界面设计图](diagrams/ui_wireframe_health.png)
图4.19 健康监测界面设计图