摘要
伴随着我国生态文明建设的不断推进以及人们动物保护意识的增强,动物救助工作也由原来的零星公益行为转变为社会共同参与的大事。目前大部分的动物救助站仍然沿用传统的以手工登记、纸质存档为主的管理方式,造成救助机构的数据分散、程序杂乱无章、资源调配低效、公众参与困难等突出问题,从而影响到救助服务的速度以及公益事业的公信度。
为了解决行业问题,本文设计出一个用Python语言编写的动物救助站管理系统。系统使用B/S架构,后端用Python及其相关的Web框架进行开发,前端用Vue.js等技术搭建用户界面,用MySQL存储业务数据,包含动物整个生命周期管理、救助流程监控、领养和放生活动循环、物资和捐赠管理、数据统计分析等功能模块。系统依靠多角色权限掌控、流程标准化管控、数据可视化剖析,促使救助站运作达到规范化、精细化、数字化的提升目的,冲破传统管理方式信息分散化、流程不完备、资源分配低效等难题。
测试结果说明本系统功能完备,运行稳定,操作方便,可以有效地提高救助站运营效率和管理透明度,为中小规模救助机构提供低成本、高适应性的数字化解决方案,也给公益领域管理系统的开发提供了一条技术路径参考,有较大的实践价值和社会意义。
关键词 : 动物救助;管理系统;Python;数字化管理;数据可视化
目录
[1 前言](#1 前言)
[1.1 课题研究背景](#1.1 课题研究背景)
[1.2 国内外研究现状](#1.2 国内外研究现状)
[1.2.1 国外研究现状](#1.2.1 国外研究现状)
[1.2.2 国内研究现状](#1.2.2 国内研究现状)
[1.3 研究内容](#1.3 研究内容)
[2 系统开发环境](#2 系统开发环境)
[2.1 Python技术介绍](#2.1 Python技术介绍)
[2.2 MySQL 介绍](#2.2 MySQL 介绍)
[2.3 Spring 框架介绍](#2.3 Spring 框架介绍)
[2.4 Spring Boot 框架介绍](#2.4 Spring Boot 框架介绍)
[2.5 Uniapp 框架介绍](#2.5 Uniapp 框架介绍)
[2.6 Vue 框架介绍](#2.6 Vue 框架介绍)
[2.7 TypeScript 介绍](#2.7 TypeScript 介绍)
[3 系统分析](#3 系统分析)
[3.1 可行性分析](#3.1 可行性分析)
[3.1.1 技术可行性分析](#3.1.1 技术可行性分析)
[3.1.2 经济可行性分析](#3.1.2 经济可行性分析)
[3.1.3 操作可行性分析](#3.1.3 操作可行性分析)
[3.1.4 法律可行性分析](#3.1.4 法律可行性分析)
[3.2 系统功能性需求分析](#3.2 系统功能性需求分析)
[3.2.1 管理员角色需求](#3.2.1 管理员角色需求)
[3.2.2 工作人员角色需求](#3.2.2 工作人员角色需求)
[3.2.3 外部用户角色需求](#3.2.3 外部用户角色需求)
[3.3 非功能性需求分析](#3.3 非功能性需求分析)
[3.3.1 易用性需求](#3.3.1 易用性需求)
[3.3.2 安全性需求](#3.3.2 安全性需求)
[3.3.3 稳定性需求](#3.3.3 稳定性需求)
[3.3.4 可扩展性需求](#3.3.4 可扩展性需求)
[3.3.5 兼容性需求](#3.3.5 兼容性需求)
[4 系统设计](#4 系统设计)
[4.1 系统总体设计](#4.1 系统总体设计)
[4.2 系统功能结构设计](#4.2 系统功能结构设计)
[4.3 功能流程设计](#4.3 功能流程设计)
[4.3.1 用户登录流程](#4.3.1 用户登录流程)
[4.3.2 动物信息管理流程](#4.3.2 动物信息管理流程)
[4.3.3 救助流程管理流程](#4.3.3 救助流程管理流程)
[4.3.4 领养流程管理流程](#4.3.4 领养流程管理流程)
[4.3.5 物资与库存管理流程](#4.3.5 物资与库存管理流程)
[4.3.6 捐赠与财务管理流程](#4.3.6 捐赠与财务管理流程)
[4.3.7 系统管理流程](#4.3.7 系统管理流程)
[4.4 数据库设计](#4.4 数据库设计)
[4.4.1 数据库概念模型设计](#4.4.1 数据库概念模型设计)
[4.4.2 数据库逻辑设计](#4.4.2 数据库逻辑设计)
[5 系统实现](#5 系统实现)
[5.1 登录注册模块](#5.1 登录注册模块)
[5.2 动物信息管理](#5.2 动物信息管理)
[5.3 救助流程管理](#5.3 救助流程管理)
[5.4 领养流程管理](#5.4 领养流程管理)
[5.5 物资与库存管理](#5.5 物资与库存管理)
[5.6 捐赠与财务管理](#5.6 捐赠与财务管理)
[5.7 系统管理](#5.7 系统管理)
[6 系统测试](#6 系统测试)
[6.1 软件测试简介](#6.1 软件测试简介)
[6.2 部分系统功能测试](#6.2 部分系统功能测试)
[6.2.1 登录注册模块](#6.2.1 登录注册模块)
[6.2.2 动物信息管理](#6.2.2 动物信息管理)
[6.2.3 救助流程管理](#6.2.3 救助流程管理)
[6.2.4 领养流程管理](#6.2.4 领养流程管理)
[6.2.5 物资与库存管理](#6.2.5 物资与库存管理)
[6.2.6 捐赠与财务管理](#6.2.6 捐赠与财务管理)
[6.2.7 系统管理](#6.2.7 系统管理)
[6.3 测试总结](#6.3 测试总结)
[7 结论](#7 结论)
1 前言
1.1 课题研究背景
随着我国生态文明建设的不断推进和社会动物保护意识的日益增强,动物救助也由原来单纯的公益行为变成了社会共同参与的系统工程。一方面城市流浪动物的数量在结构上呈递增趋势,高校、社区等场景下流浪动物救助的需求也在不断增加,张雨蝶、周春柳认为高校场景下的流浪动物年救助量已经达到原来的 15%-20%,传统的登记模式加上纸质保存的管理模式已经不能满足大量的数据处理1。另一方面,野生动物保护力度越来越大,刘健等有关城市流浪动物智能管理的研究也表明,目前动物救助场景下对于数字化、智能化的管理工具有着更高的要求,而这样的救助场景不仅仅是完成一般的伤病治疗、健康监测等常规工作,更多的是需要完成迁徙追踪、应急调度、跨区域协作等一系列更加复杂的任务2。
目前我国动物救助站管理存在的问题仍然很多,是影响救助效率和质量提高的重要障碍。曲琦认为,大多数救助站存在"三散"问题,即数据零散,动物的救助来源、健康状况、领养记录等信息分散存储在不同的载体上,没有被统一整合起来;流程松散,从发现上报、现场救助到后期的领养回访等环节没有形成一个标准化的管控体系,容易造成责任推卸和信息的遗漏;资源分散,资金、物资、志愿者等救助资源的调配依靠人工经验,很难达到精准匹配的效果。赵亚洲等对动物领养管理系统有关研究认为,传统管理模式存在流程不闭环、信息不透明的两大主要问题3。这些问题直接造成救助效率低、资源浪费大,部分救助站由于管理不善而陷入经营困境,数字化转型成了解决行业难题的必然出路。
数字转型要想实现,就必须要依靠相适应的技术工具支持,Python 语言的特点同动物救助管理的要求存在着很好的吻合。Python拥有比较成熟的开源生态,在数据处理、系统开发、人工智能应用等领域具有明显的优势,在数据管理方面,它自带的数据库接口以及诸多第三方库(Pandas、SQLAlchemy)能够迅速完成救助数据的收集、清理、保存并回溯查询,很好地解决了传统数据管理过程中数据分散存在的问题,张敏于 C 语言和 Python 数据存储的对比研究当中显示,Python 在数据存储和处理方面的程序开发速度更快,更能符合实际业务要求;就系统开发而言,Django、Flask 等Web框架可以快速搭建起模块化的管理平台,可以自由地适应救助动物管理、保护野生动植物这些不一样的场景里所存在的功能需求,曹雪朋,郭鹤楠都是利用 Django 进行 Web 系统的设计与实现,证明 D 阁楼系统具有良好的模块化设计、快速部署的能力,并且有可借鉴的工程化发展之路;就智能应用来说,利用 YOLO 目标检测、CNN 卷积神经网络等技术,可以实现对动物种类的识别、健康状况的观察等功能,使救助工作的精细化得到进一步提高,蔡迪阳对网络数据采集、图像信息处理的技术可行性的研究表明,Python具有很强的优势45678。
根据以上情况可知,林静敏、魏松林所设计的基于Python的数据集管理系统对于动物救助智能识别模块的应用有着很好的技术借鉴意义,陆婧、陈立毅等学者也提出过类似的以Python为主的系统管理解决方案9。沈杰对于Python数据分析可视化的研究,也给系统数据统计模块的开发赋予了技术支撑10。技术实践给动物救助站管理系统创建赋予了可资借鉴的技术途径,从而促使Python成为推进救助管理数字化、智能化的最佳技术手段。在这样的大背景下,对基于 Python 的动物救助站管理系统进行设计和实现,有很强的现实意义和时代背景。
系统功能性需求分析
本系统功能性需求是围绕管理员、工作人员、外部用户这三个角色展开的,各个角色的功能需求如下所示。
3.2.1 管理员角色需求
管理员是系统中具有最高权限的用户,主要对整个系统进行管理及运营工作,核心的功能需求有以下几方面:用户权限管理(新建、管理工作人员和志愿者的账号,设置各个角色的权限),动物信息监管(审核动物档案,更改动物的状态,支持多条件搜索、筛选),救助任务统筹(安排救助任务,跟踪任务进程,处理特殊状况),领养和放生最终审定(检查领养资质,批准放生计划,解决领养争议),物资和库存管理(操控物资的进出库,设定库存警报线,核算物资的耗费情形),捐赠和财务管理(录入捐赠信息,操控行使收入支出的数据,出具财务报表),数据统计分析(显示救助量,领养率,物资消耗,捐赠趋向等数据图表),公告发布(发布通知,活动消息,需求公示),操作日志审计(记载重要操作,给予追溯查询),数据库备份和恢复(定时备份数据,保证数据安全)。图3-1为用例图。

工作人员角色需求
工作人员属于救助站的主要运营用户,承担日常救助及管理任务,核心功能需求如下所示,账号登录(工号+密码+验证码登录,保证账号安全),动物档案登记(录入动物基本信息、救助来源、健康状况等信息),状态跟踪(更新动物治疗、康复、领养等状态,记录状态变更时间及原因),健康记录管理(录入疫苗接种、治疗计划、日常护理、体检结果等信息),照片/视频上传(记录动物救助、康复过程的影像资料),救助任务执行(接受救助任务,填写执行情况,上传救助现场资料),康复与放生评估(提交康复评估结果,制定放生计划),领养流程处理(审核领养申请资料,签署领养协议,记录回访信息),物资申领(申请药品、食品、笼具等救助物资,填写申领用途和数量)。用例图见图3-2。

外部用户角色需求
外部用户为社会公众,分为志愿者、领养人、捐赠人等,主要功能需求如下表所示。图3-3是用例图。

系统功能结构设计
本系统按照用户的角色以及业务场景,将功能模块划分成三大模块,每个模块又细分为若干个功能子模块,总体的功能结构如下所示:
管理员模块为系统最高权限模块,包含用户权限管理、动物信息监管、救助任务统筹、领养与放生终审、物资与库存管理、捐赠与财务管理、数据统计分析、公告管理、日志审计、数据库备份等子功能,对整个系统进行管理。
工作人员模块是救助站的核心运营模块,主要包含账号登录、动物档案登记、状态跟踪、健康记录管理、救助任务执行、康复评估、领养流程处理、物资申领等功能子模块,对日常工作救助管理起到主要的作用。
外部用户模块主要是为社会公众服务的模块,包括注册登录、志愿者信息管理、领养申请、捐赠登记、救助线索报送、活动报名、消息通知、社区交流等,可以实现公众同救助站之间的有效对接。
各个模块内部采取分层结构,模块之间经由统一接口进行交互,从而保证系统具备良好的扩展性以及可维护性。功能结构图如图4-2所示。

数据库逻辑设计
管理员表存放的是系统的管理员信息,即管理员的身份认证以及权限控制使用的地方。管理员表有用户名、密码、角色。管理员表如下图4-1所示。
表4-1 管理员表
|----------|--------------|------|-------------------|----|------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| username | varchar(200) | 否 | - | 否 | 用户名 |
| password | varchar(200) | 否 | - | 否 | 密码 |
| role | varchar(200) | 是 | NULL | 否 | 角色 |
用户表用来存储系统所有的外部用户的个人基本资料,方便进行用户的身份认证、跟踪用户的行为以及管理志愿者的服务活动等。用户表包含用户的账号,姓名,性别,手机号码,擅长的领域等。用户表见图4-2。
表4-2 用户表
|--------------------|--------------|------|-------------------|----|----------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| yonghuzhanghao | varchar(16) | 否 | - | 否 | 用户账号 |
| mima | varchar(200) | 否 | - | 否 | 密码 |
| yonghuxingming | varchar(16) | 否 | - | 否 | 用户姓名 |
| touxiang | longtext | 是 | - | 否 | 头像 |
| xingbie | varchar(16) | 是 | NULL | 否 | 性别 |
| shoujihaoma | varchar(32) | 是 | NULL | 否 | 手机号码 |
| pquestion | varchar(200) | 是 | NULL | 否 | 密保问题 |
| panswer | varchar(200) | 是 | NULL | 否 | 密保答案 |
| max_password_wrong | int(11) | 否 | 4 | 否 | 最大密码输错次数 |
| is_locked | int(11) | 否 | 0 | 否 | 用户锁定状态 |
| shanzhanglinyu | varchar(200) | 是 | NULL | 否 | 擅长邻域 |
| kefuwushijian | varchar(200) | 是 | NULL | 否 | 可服务时间 |
③工作人员表是系统中救助站核心运营用户信息表,用工作人员工号作为唯一的标识来认证工作人员身份、分配救助任务和管理工作的记录。工作人员表如下4.3所示。
表4-3 工作人员表
|-----------------------|--------------|------|-------------------|----|--------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| touxiang | longtext | 是 | - | 否 | 头像 |
| gongzuorenyuangonghao | varchar(16) | 否 | - | 否 | 工作人员工号 |
| mima | varchar(200) | 否 | - | 否 | 密码 |
表4-3 工作人员表(续)
|------------------------|--------------|------|------|----|----------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| gongzuorenyuanxingming | varchar(16) | 否 | - | 否 | 工作人员姓名 |
| nianling | varchar(200) | 是 | NULL | 否 | 年龄 |
| xingbie | varchar(16) | 是 | NULL | 否 | 性别 |
| lianxifangshi | varchar(32) | 是 | NULL | 否 | 联系方式 |
| pquestion | varchar(200) | 是 | NULL | 否 | 密保问题 |
| panswer | varchar(200) | 是 | NULL | 否 | 密保答案 |
| max_password_wrong | int(11) | 否 | -3 | 否 | 最大密码输错次数 |
| is_locked | int(11) | 否 | 0 | 否 | 用户锁定状态 |
④动物档案表是对救助动物的整个生命周期内所有的档案信息进行存储、管理的表,记录了动物从救助到康复或者领养全过程的所有信息。动物档案表属性有品种、年龄、性别、毛色、体型、健康状况、救助时间、地点、发现人、工作人员工号、状态、照片。动物档案表如下图4-4所示。
表4-4 动物档案表
|-------------------|---|------|---|---|-------------------|----|------|
| 字段名 || 数据类型 | 允许为空 || 默认值 | 主键 | 备注 |
| id | bigint(20) ||| 否 | - | 是 | 主键 |
| addtime | timestamp ||| 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| pinzhong | varchar(32) ||| 是 | NULL | 否 | 品种 |
| nianling | int(11) ||| 是 | NULL | 否 | 年龄 |
| xingbie | varchar(16) ||| 是 | NULL | 否 | 性别 |
| maose | varchar(200) ||| 是 | NULL | 否 | 毛色 |
| tixing | varchar(200) ||| 是 | NULL | 否 | 体型 |
| jiankangzhuangtai | varchar(200) ||| 是 | NULL | 否 | 健康状态 |
| jiuzhushijian | datetime ||| 是 | NULL | 否 | 救助时间 |
| didian | varchar(200) ||| 是 | NULL | 否 | 地点 |
表4-4 动物档案表(续)
|-----------------------|---|------|---|---|------|----|--------|
| 字段名 || 数据类型 | 允许为空 || 默认值 | 主键 | 备注 |
| faxianren | varchar(200) ||| 是 | NULL | 否 | 发现人 |
| gongzuorenyuangonghao | varchar(200) ||| 是 | NULL | 否 | 工作人员工号 |
| zhuangtai | varchar(200) ||| 是 | NULL | 否 | 状态 |
| zhaopian | longtext ||| 是 | - | 否 | 照片 |
⑤救助需求表用来存储备份外部用户提交的流浪动物救助线索信息,工作人员以及管理员依据该表格完成任务分派和救助安排。救助需求表的属性有救助地点、地区、时间、宠物种类、数量、宠物颜色、状态、用户账号等。救助需求表如表4-5所示。
表4-5 救助需求表
|------------------|--------------|------|-------------------|----|------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| jiuzhudidian | varchar(32) | 是 | NULL | 否 | 救助地点 |
| diqu | varchar(200) | 是 | NULL | 否 | 地区 |
| shijian | datetime | 是 | NULL | 否 | 时间 |
| chongwuzhonglei | varchar(16) | 是 | NULL | 否 | 宠物种类 |
| shuliang | int(11) | 是 | NULL | 否 | 数量 |
| chongwuyanse | varchar(32) | 是 | NULL | 否 | 宠物颜色 |
| chongwumingcheng | varchar(16) | 是 | NULL | 否 | 宠物名称 |
| chongwutupian | longtext | 是 | - | 否 | 宠物图片 |
| zhuangtai | varchar(200) | 是 | NULL | 否 | 状态 |
| yonghuzhanghao | varchar(200) | 是 | NULL | 否 | 用户账号 |
| sfsh | varchar(200) | 是 | 待审核 | 否 | 是否审核 |
| shhf | longtext | 是 | - | 否 | 回复内容 |
领养信息表是对用户领养申请和审核过程数据进行存储的表,包括了从用户申请到审核成功的全过程数据。领养信息表的属性有宠物名称、宠物种类、用户账号、居住环境、领养时间、审核情况、身份证号、工作人员工号等。领养信息表见表4-6。
表4-6 领养信息表
|-----------------------|--------------|------|-------------------|----|--------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| chongwumingcheng | varchar(16) | 否 | - | 否 | 宠物名称 |
| chongwuzhonglei | varchar(16) | 是 | NULL | 否 | 宠物种类 |
| chongwuxingbie | varchar(200) | 否 | - | 否 | 宠物性别 |
| chongwunianling | varchar(200) | 是 | NULL | 否 | 宠物年龄 |
| yonghuzhanghao | varchar(16) | 是 | NULL | 否 | 用户账号 |
| yonghuxingming | varchar(16) | 是 | NULL | 否 | 用户姓名 |
| juzhuhuanjing | longtext | 是 | - | 否 | 居住环境 |
| lingyangshijian | datetime | 是 | NULL | 否 | 领养时间 |
| sfsh | varchar(200) | 是 | NULL | 否 | 是否审核 |
| shhf | longtext | 是 | - | 否 | 回复内容 |
| shenfenzheng | varchar(200) | 是 | NULL | 否 | 身份证 |
| gongzuorenyuangonghao | varchar(200) | 是 | NULL | 否 | 工作人员工号 |
⑦物资信息表是对救助站所有物资的库存进行管理的数据表,可实现物资的入库、出库、库存查询等功能。物资信息表有物品名称、物品类型、物品数量、更新时间等属性。物资信息表如下表4-7所示。
表4-7 物资信息表
|---------|------------|------|-------------------|----|------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
表4-7 物资信息表(续)
|----------------|--------------|------|------|----|------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| wupinmingcheng | varchar(200) | 否 | - | 否 | 物品名称 |
| wupinleixing | varchar(200) | 否 | - | 否 | 物品类型 |
| wupinshuliang | int(11) | 是 | NULL | 否 | 物品数量 |
| gengxinshijian | datetime | 是 | NULL | 否 | 更新时间 |
捐赠项目表是用来公示救助站物资需求信息的表,是社会公众向救助站定向捐赠物资的指引,也是提高救助站公益透明度的一种方式。捐赠项目表有捐赠地点、物品需求、数量、发布时间、图片等信息。捐赠项目表见表4-8。
表4-8 捐赠项目表
|----------------|--------------|------|-------------------|----|------|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
| id | bigint(20) | 否 | - | 是 | 主键 |
| addtime | timestamp | 否 | CURRENT_TIMESTAMP | 否 | 创建时间 |
| juanzengdidian | varchar(200) | 是 | NULL | 否 | 捐赠地点 |
| xuyaowuzi | varchar(200) | 是 | NULL | 否 | 需要物资 |
| xuyaoshuliang | int(11) | 是 | NULL | 否 | 需要数量 |
| fabushijian | datetime | 是 | NULL | 否 | 发布时间 |
| tupian | longtext | 是 | - | 否 | 图片 |
| storeup_number | int(11) | 是 | NULL | 否 | 收藏数 |
5 系统实现
5.1 登录注册模块
用户登录界面渲染之后,前端会显示一个登录表单,输入账号、密码以及图形验证码之后点击登陆。前端对输入信息做基本的检验(不能为空、格式是否符合规范等),将登录信息发送给后端。后端接收到登录请求之后,会先判断图形验证码是否正确,如果验证码错误就会返回提示信息要求重新输入,如果验证码正确就从数据库中查询对应的用户记录,再用BCrypt算法比对密码是否正确。账号或者密码有误时显示登录失败提示,校验成功后后端根据用户的角色(管理员、工作人员、用户)生成JWT token,把用户的身份信息和权限数据放到token载荷中,然后将token存储到localStorage,记录登录日志。前端根据返回的用户角色信息跳转到相应的主页。登录注册流程时序图如下图5-1所示。

救助流程管理
外部用户在前端填写救助线索表单,录入流浪动物的位置、情况描述、宠物种类、数量、颜色等信息并上传现场照片。前端对表单数据进行校验之后,就会把线索传送到后台。服务器端收到数据之后存储到救助需求表里,并将状态设为"待审核"。
管理员登陆后看到救助线索列表进行审核。审核通过之后,管理员按照救助地点以及宠物种类将任务分派给相应的工作人员,将线索状态更新为"已分配"并在救助分配表中生成分配记录。工作人员认证自己所接到的任务,在现场执行救助。救助结束后,工作人员对救助过程、宠物的初步情况、转运信息等进行详细的记录,可以将现场救助的资料上交。后端把救助记录存入救助信息表,更新动物的状态并录入健康信息以及治疗计划。管理员可以实时查看救助任务的进度,对于异常情况可以做出处理,保证救助过程是完整的闭环。救助流程时序图如图5-7所示。


系统管理
管理员登录到后台系统管理页面后就进入系统的各项管理功能。管理员可以查看系统中所有的用户、工作人员、管理员账号,对账号进行创建、角色权限分配、账号启用或者禁用等操作。
内容管理中管理员可以发布通知公告、活动信息和需求公示等各类信息,填写好标题、内容以及发布时间后提交给系统,系统会把该信息存储到公告表中,用户端首页就可以显示最新的公告。系统使用AOP切面对重要的业务操作进行拦截,并把操作人、操作内容、请求参数、IP地址等信息保存到操作日志表中,管理员可以通过时间以及操作人员来查找查询操作记录。管理员可以定时对数据库做一次备份工作,在指定的位置把备份文件存起来,从而保证数据安全。系统设置模块还可以对轮播图进行设置,菜单进行配置,对敏感词进行修改,管理员可以自由地对系统的运行参数进行设定,从而保证系统稳定可靠地工作。系统管理时序图如图5-18所示。


结论
本文根据动物救助站管理实际业务需求,设计出并实现了一个以Python为基础的动物救助站管理系统。系统使用Python Web框架(Django或者Flask)做为后端核心,用Vue.js搭建起前端交互界面,MySQL当作关系型数据库用来存放业务数据,并且遵照B/S架构创建了前后端分离的设计模式。
在需求分析阶段,本文对救助站日常运营过程进行详细的调查后,确定了管理员、工作人员和外部用户这三个主要角色的功能需求。管理员对系统的运行和监管负责,可以进行用户权限管理、动物信息审核、救助任务安排、领养终审、物资和捐赠的管理、数据统计分析以及系统维护等工作,工作人员负责日常的救助执行工作,对动物档案登记、状态跟踪、健康记录的保存、救助任务的执行以及领养流程的处理有操作权利,外部用户可以对领养申请、捐赠登记、救助线索的上报、活动的报名、社区的互动进行操作。用用例图的形式把各个角色的功能需求用可视化建模的方式呈现出来。
本文在系统设计阶段完成了系统架构设计、功能模块划分、业务流程设计、数据库设计。系统使用四层分层架构,把表现层、业务逻辑层、数据访问层、数据存储层分离开来,以实现系统高内聚、低耦合的特点。用流程图来对用户登录、动物信息管理、救助流程管理、领养流程管理、物资和库存管理、捐赠和财务管理以及系统管理这7个主要业务流程做了详细的阐述。数据库设计包含管理员表、用户表、工作人员表、动物档案表、救助需求表、领养信息表、物资信息表、捐赠项目表等主要数据表,用规范的表结构以及主外键约束来保证数据的一致性、完整性。
本文对系统实现阶段各个主要功能模块的实现过程进行了详细的说明,时序图也对系统各个角色和系统之间的交互逻辑进行了展示。系统采用BCrypt算法进行用户的密码加密存储、JWT Token的身份认证、AOP切面的操作日志审计、数据库事务处理物资库存扣减及捐赠台账更新等技术方案,从而达到保证系统安全、稳定、一致的目的。
经过系统的测试,本文就七个核心模块设计出43个测试用例来验证,分别包含正常的业务流程、异常的输入以及边界条件的测试等各方面。经测试,本系统的各个模块功能都达到了预期的要求,可以正确地实现业务流转的逻辑,对动物救助站日常运营管理起到很好的支撑作用,可以实现从动物救助、康复治疗到领养放生的全过程信息化管理。
虽然本文完成了系统的基础设计与实现,但是还存在一定的改进余地。可以考虑如下扩展、优化的内容有,在救助数量、领养率、物资消耗、捐赠量等各项数据的基础上使用ECharts等图表技术,对救助数量的变化趋势进行实时显示;采用人工智能智能图像识别技术,可以辅助进行动物品种识别和健康情况的自动判断;改善移动端的访问便利性,使工作人员在野外救助的时候也可以直接录入资料、拍照并上传照片;创建志愿者培训的知识库和线上学习平台来提高志愿者的技能水平并提高参与率;建立消息推送系统,及时通知审核结果、回访提醒和活动公告等内容。