16 KiB
第4章 养老院管理系统的系统设计
4.1 系统功能设计
本系统面向管理员、护工和家属三类用户角色,各角色拥有不同的功能权限。管理员作为系统的最高权限角色,负责系统的全面运营管理,包括运营概览、账号管理、长者档案管理、排班管理、账单管理、反馈处理和通知公告管理七大功能模块。护工作为一线服务角色,拥有工作台、我的排班、护理记录、健康监测、交班记录和通知中心六大功能模块。家属作为信息查看角色,拥有家属首页、亲人档案、每日动态、健康记录、账单支付、服务反馈和通知中心七大功能模块。
管理员功能结构图如图4.1所示。
图4.1 管理员功能结构图
护工功能结构图如图4.2所示。
图4.2 护工功能结构图
家属功能结构图如图4.3所示。
图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所示。
图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所示。
图4.5 用户登录序列图
4.3.2 护工添加护理记录序列图
护工添加护理记录过程涉及护工、系统前台、后台系统和数据库四个参与者之间的交互。具体步骤如下:
(1)护工在系统中进入护理记录页面。
(2)系统前台向后台系统请求长者列表数据。
(3)后台系统从数据库查询长者信息并返回。
(4)系统前台展示长者列表供护工选择。
(5)护工选择目标长者,填写护理内容,可选择上传附件。
(6)系统前台将护理记录数据提交至后台系统(POST /api/nurse/care-records)。
(7)后台系统自动关联当前登录护工的ID,设置记录时间,将数据插入数据库。
(8)数据库返回插入结果。
(9)后台系统将创建成功的响应返回给系统前台。
(10)系统前台显示添加成功提示,并刷新护理记录列表。
护工添加护理记录序列图如图4.6所示。
图4.6 护工添加护理记录序列图
4.4 活动图
4.4.1 用户登录活动图
用户登录过程可分为以下几步:
(1)用户在登录页面输入用户名和密码。
(2)系统前台将登录信息提交至后台系统。
(3)后台系统向数据库查询用户数据。
(4)数据库返回查询结果,后台系统判断用户是否存在以及密码是否正确。
(5)若验证失败,系统返回错误提示,用户需重新输入。
(6)若验证成功,后台系统生成Token并返回给前台。
(7)前台存储Token信息,跳转至对应角色的系统首页。
用户登录活动图如图4.7所示。
图4.7 用户登录活动图
4.4.2 管理员处理反馈活动图
管理员处理反馈过程可分为以下几步:
(1)管理员登录系统,进入反馈处理页面。
(2)系统前台向后台系统请求所有反馈数据。
(3)后台系统从数据库查询反馈列表并返回。
(4)管理员查看反馈列表,选择需要处理的反馈。
(5)管理员填写回复内容,更新反馈状态。
(6)系统前台将回复信息提交至后台系统。
(7)后台系统更新数据库中的反馈记录。
(8)系统提示回复成功,反馈列表自动刷新。
管理员处理反馈活动图如图4.8所示。
图4.8 管理员处理反馈活动图
4.5 数据库设计
4.5.1 概念设计
概念设计阶段采用E-R图(实体-关系图)描述系统的数据模型。本系统共包含11个实体,以下列举8个核心实体的属性图。
(1)用户实体
用户实体包含用户ID(主码)、用户名、密码、姓名、电话、角色和状态等属性。用户实体属性图如图4.9所示。
图4.9 用户实体属性图
(2)长者实体
长者实体包含长者ID(主码)、姓名、性别、身份证号、出生日期、房间号、入住日期、护理等级、状态和备注等属性。长者实体属性图如图4.10所示。
图4.10 长者实体属性图
(3)排班实体
排班实体包含排班ID(主码)、护工ID、日期、班次和任务等属性。排班实体属性图如图4.11所示。
图4.11 排班实体属性图
(4)护理记录实体
护理记录实体包含记录ID(主码)、长者ID、护工ID、内容、附件和记录时间等属性。护理记录实体属性图如图4.12所示。
图4.12 护理记录实体属性图
(5)健康记录实体
健康记录实体包含记录ID(主码)、长者ID、护工ID、体温、收缩压、舒张压、心率、备注和记录时间等属性。健康记录实体属性图如图4.13所示。
图4.13 健康记录实体属性图
(6)账单实体
账单实体包含账单ID(主码)、长者ID、月份、床位费、护理费、餐饮费、其他费用、总计和状态等属性。账单实体属性图如图4.14所示。
图4.14 账单实体属性图
(7)反馈实体
反馈实体包含反馈ID(主码)、家属ID、长者ID、类型、内容、评分、状态和回复等属性。反馈实体属性图如图4.15所示。
图4.15 反馈实体属性图
(8)通知实体
通知实体包含通知ID(主码)、标题、内容、目标角色、目标用户ID和创建者ID等属性。通知实体属性图如图4.16所示。
图4.16 通知实体属性图
系统总体E-R图展示了各实体之间的关联关系,如图4.17所示。
图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所示。
图4.18 长者档案管理界面设计图
4.6.2 健康监测界面设计
护工的健康监测界面同样采用左侧导航、右侧内容的布局。主内容区域上方为数据录入表单,包含长者选择下拉框、体温输入框、收缩压输入框、舒张压输入框、心率输入框、备注输入框和记录时间选择器,以及提交按钮。表单下方为健康记录数据表格,展示已录入的历史健康监测数据。健康监测界面设计图如图4.19所示。
图4.19 健康监测界面设计图


















