目录
- [Java 核心与应用:基于Spring Boot和Vue的宠物医院管理系统设计与实现](#Java 核心与应用:基于Spring Boot和Vue的宠物医院管理系统设计与实现)
-
- 摘要
- [1 绪论](#1 绪论)
-
- [1.1 研究背景](#1.1 研究背景)
- [1.2 研究意义](#1.2 研究意义)
- [1.3 系统目标](#1.3 系统目标)
- [1.4 论文组织结构](#1.4 论文组织结构)
- [2 相关技术介绍](#2 相关技术介绍)
-
- [2.1 Spring Boot框架](#2.1 Spring Boot框架)
- [2.2 Vue 3框架](#2.2 Vue 3框架)
- [2.3 数据库技术](#2.3 数据库技术)
-
- [2.3.1 MySQL 8.0](#2.3.1 MySQL 8.0)
- [2.3.2 MyBatis-Plus](#2.3.2 MyBatis-Plus)
- [2.4 前端UI框架](#2.4 前端UI框架)
- [2.5 构建工具](#2.5 构建工具)
- [2.6 技术栈总结](#2.6 技术栈总结)
- [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.2 需求分析](#3.2 需求分析)
-
- [3.2.1 功能性需求](#3.2.1 功能性需求)
- [3.2.2 非功能性需求](#3.2.2 非功能性需求)
- [3.3 用例分析](#3.3 用例分析)
-
- [3.3.1 系统总体用例图](#3.3.1 系统总体用例图)
- [3.3.2 预约管理用例图](#3.3.2 预约管理用例图)
- [4 系统设计](#4 系统设计)
-
- [4.1 系统架构设计](#4.1 系统架构设计)
-
- [4.1.1 系统架构图](#4.1.1 系统架构图)
- [4.1.2 系统交互流程](#4.1.2 系统交互流程)
- [4.2 功能模块设计](#4.2 功能模块设计)
-
- [4.2.1 功能模块结构图](#4.2.1 功能模块结构图)
- [4.3 数据库设计](#4.3 数据库设计)
-
- [4.3.1 E-R图设计](#4.3.1 E-R图设计)
- [4.3.2 数据表设计](#4.3.2 数据表设计)
- [4.4 接口设计](#4.4 接口设计)
-
- [4.4.1 统一响应格式](#4.4.1 统一响应格式)
- [4.4.2 主要接口列表](#4.4.2 主要接口列表)
- [4.4.3 预约流程时序图](#4.4.3 预约流程时序图)
- [4.5 安全设计](#4.5 安全设计)
-
- [4.5.1 身份认证机制](#4.5.1 身份认证机制)
- [4.5.2 权限控制设计](#4.5.2 权限控制设计)
- [5 系统实现](#5 系统实现)
-
- [5.1 用户登录模块实现](#5.1 用户登录模块实现)
-
- [5.1.1 后端登录接口实现](#5.1.1 后端登录接口实现)
- [5.1.2 前端登录页面实现](#5.1.2 前端登录页面实现)
- [5.2 工作台模块实现](#5.2 工作台模块实现)
-
- [5.2.1 数据统计卡片](#5.2.1 数据统计卡片)
- [5.2.2 数据可视化图表](#5.2.2 数据可视化图表)
- [5.3 宠物管理模块实现](#5.3 宠物管理模块实现)
-
- [5.3.1 宠物列表](#5.3.1 宠物列表)
- [5.3.2 宠物信息编辑](#5.3.2 宠物信息编辑)
- [5.4 预约管理模块实现](#5.4 预约管理模块实现)
-
- [5.4.1 预约列表](#5.4.1 预约列表)
- [5.4.2 预约状态流转](#5.4.2 预约状态流转)
- [5.5 医疗记录模块实现](#5.5 医疗记录模块实现)
-
- [5.5.1 病历创建](#5.5.1 病历创建)
- [5.5.2 病历查询](#5.5.2 病历查询)
- [5.6 药品管理模块实现](#5.6 药品管理模块实现)
-
- [5.6.1 药品列表](#5.6.1 药品列表)
- [5.6.2 库存管理](#5.6.2 库存管理)
- [5.7 新闻管理模块实现](#5.7 新闻管理模块实现)
-
- [5.7.1 新闻发布](#5.7.1 新闻发布)
- [5.7.2 新闻展示](#5.7.2 新闻展示)
- [5.8 前台系统实现](#5.8 前台系统实现)
-
- [5.8.1 首页](#5.8.1 首页)
- [5.8.2 医生团队](#5.8.2 医生团队)
- [5.8.3 个人中心](#5.8.3 个人中心)
- [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.3 性能测试](#6.3 性能测试)
- [6.4 安全测试](#6.4 安全测试)
- [6.5 兼容性测试](#6.5 兼容性测试)
- [6.6 测试结论](#6.6 测试结论)
- [7 总结与展望](#7 总结与展望)
-
- [7.1 工作总结](#7.1 工作总结)
- [7.2 系统特点](#7.2 系统特点)
- [7.3 存在的不足](#7.3 存在的不足)
- [7.4 改进方案](#7.4 改进方案)
- [7.5 未来展望](#7.5 未来展望)
- 参考文献
- 致谢
- 参考文献
- 致谢
Java 核心与应用:基于Spring Boot和Vue的宠物医院管理系统设计与实现
系统演示视频 :点击查看B站视频
摘要
随着宠物经济的快速发展,宠物医疗服务需求日益增长。传统的宠物医院管理模式存在预约效率低、病历管理混乱、药品库存难以追踪等问题。本文设计并实现了一个基于Spring Boot和Vue 3的宠物医院管理系统。
系统采用前后端分离的B/S架构,后端使用Spring Boot 2.5.14框架,结合MyBatis-Plus 3.5.2进行数据持久化,使用MySQL 8.0作为数据库,采用JWT技术实现身份认证。前端使用Vue 3.3.8框架,搭配Element Plus 2.4.3组件库,使用Vite 5.0作为构建工具,通过Pinia进行状态管理,使用ECharts实现数据可视化。
系统实现了用户管理、宠物管理、预约管理、医疗记录管理、药品管理、新闻公告等核心功能模块。支持管理员、医生、员工、宠物主人四种角色的分级权限控制。前台提供医院介绍、医生团队展示、在线预约、个人中心等功能;后台提供工作台数据统计、宠物信息管理、预约处理、病历管理、药品库存管理等功能。
经过测试,系统运行稳定,功能完善,为宠物医院提供了一套完整的信息化管理解决方案。
关键词:宠物医院;Spring Boot;Vue 3;前后端分离;预约管理;MyBatis-Plus
1 绪论
1.1 研究背景
随着人们生活水平的提高和生活方式的改变,宠物已成为许多家庭的重要成员。据统计,中国宠物市场规模持续增长,宠物医疗作为宠物产业链的重要环节,市场需求旺盛。然而,传统宠物医院管理模式存在诸多问题:预约依赖电话或现场排队,效率低下;病历采用纸质记录,查询困难且易丢失;药品库存管理混乱,容易出现过期或缺货;客户信息分散,难以进行有效的客户关系管理。
在此背景下,开发一套功能完善的宠物医院管理系统具有重要的现实意义。通过信息化手段,可以实现预约流程的在线化、病历管理的电子化、库存管理的自动化,从而提高医院运营效率,提升客户服务体验。
1.2 研究意义
本系统的开发具有以下意义:
在理论层面,系统的设计与实现为宠物医疗信息化提供了实践案例,验证了前后端分离架构在医疗管理系统中的可行性,为类似系统的开发提供参考。
在实践层面,系统能够显著提高宠物医院的管理效率,实现预约、诊疗、收费、库存的一体化管理,减少人工操作,降低出错率,提升客户满意度。
1.3 系统目标
系统的功能目标包括:实现多角色权限控制(管理员、医生、员工、宠物主人);提供在线预约和预约管理功能;实现电子病历的创建、查询和管理;提供药品库存管理和出入库记录;实现新闻公告的发布和展示;提供数据统计和可视化展示。
系统的性能目标包括:支持100名用户同时在线;页面响应时间控制在2秒以内;系统可用性达到99%以上。
1.4 论文组织结构
本论文共分为7个章节。第1章绪论介绍研究背景和意义;第2章介绍相关技术;第3章进行系统分析;第4章进行系统设计;第5章介绍系统实现;第6章进行系统测试;第7章总结与展望。
2 相关技术介绍
2.1 Spring Boot框架
Spring Boot是由Pivotal团队推出的全新框架,旨在简化Spring应用的搭建和开发过程。其核心特性包括:
- 自动配置:根据类路径中的jar包自动配置Bean,减少配置工作
- 起步依赖:通过starter依赖简化Maven依赖管理
- 内嵌服务器:内置Tomcat服务器,可打包成独立可执行jar文件
- 生产就绪:提供健康检查、指标监控等功能
本系统使用Spring Boot 2.5.14作为后端核心框架,构建RESTful API接口。
2.2 Vue 3框架
Vue 3是Vue.js的最新主要版本,引入了Composition API作为新的组件逻辑组织方式。主要特性包括:
- Composition API:提供基于函数的API,使组件逻辑更灵活地组合和复用
- 性能提升:虚拟DOM重写,性能提升约50%
- TypeScript支持:核心代码使用TypeScript重写,提供完整类型定义
- Fragment特性:支持组件拥有多个根节点
本系统使用Vue 3.3.8框架,配合Vue Router 4.2.5实现路由管理,Pinia 2.1.7进行状态管理。
2.3 数据库技术
2.3.1 MySQL 8.0
MySQL是世界上最流行的开源关系型数据库之一。MySQL 8.0带来了查询性能提升、JSON支持增强、窗口函数、通用表表达式等新特性。本系统使用MySQL 8.0存储所有业务数据。
2.3.2 MyBatis-Plus
MyBatis-Plus是MyBatis的增强工具,提供了通用Mapper、条件构造器、分页插件、代码生成器等功能,简化了数据库操作。本系统使用MyBatis-Plus 3.5.2作为持久层框架。
2.4 前端UI框架
Element Plus是基于Vue 3的桌面端组件库,提供了60多个高质量组件,包括表单、表格、导航、反馈等。本系统使用Element Plus 2.4.3构建用户界面。
2.5 构建工具
Vite是新一代前端构建工具,利用浏览器原生ES模块实现极速开发服务器启动和热模块替换。本系统使用Vite 5.0作为前端构建工具。
2.6 技术栈总结
| 类别 | 技术 | 版本 |
|---|---|---|
| 后端框架 | Spring Boot | 2.5.14 |
| ORM框架 | MyBatis-Plus | 3.5.2 |
| 数据库 | MySQL | 8.0 |
| 连接池 | Druid | 1.2.16 |
| 身份认证 | JWT | 4.2.1 |
| 前端框架 | Vue | 3.3.8 |
| UI组件库 | Element Plus | 2.4.3 |
| 状态管理 | Pinia | 2.1.7 |
| 路由管理 | Vue Router | 4.2.5 |
| 构建工具 | Vite | 5.0 |
| 图表库 | ECharts | 5.4.3 |
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
系统选用的Spring Boot和Vue 3都是当前主流的开发框架,技术成熟度高,社区活跃。Spring Boot生态完善,MyBatis-Plus简化了数据库操作。Vue 3配合Element Plus能够快速构建美观的用户界面。所有技术都有详细的官方文档和丰富的社区资源,技术风险可控。
3.1.2 经济可行性
系统采用的所有技术栈都是开源免费的,无需支付软件许可费用。开发工具如IntelliJ IDEA社区版、VS Code都是免费的。系统可部署在云服务器上,成本可控。
3.1.3 操作可行性
系统采用Element Plus组件库,界面简洁美观,操作流程直观。不同角色的用户只需简单培训即可上手使用。
3.2 需求分析
3.2.1 功能性需求
管理员功能:系统管理、用户管理、医生管理、宠物管理、预约管理、医疗记录管理、药品管理、新闻管理、数据统计。
医生功能:查看预约、处理预约、创建病历、查看病历、个人中心。
员工功能:宠物管理、预约管理、药品管理、个人中心。
宠物主人功能:浏览医院信息、查看医生团队、在线预约、查看预约状态、查看宠物病历、个人中心。
3.2.2 非功能性需求
性能需求:支持100并发用户,响应时间小于2秒。
安全需求:密码加密存储,JWT身份认证,基于角色的权限控制。
兼容性需求:支持Chrome、Firefox、Edge等主流浏览器。
3.3 用例分析
用例图是描述系统功能需求的重要工具,展示了系统的参与者和他们可以执行的操作。本系统的主要参与者包括管理员、医生、员工和宠物主人四种角色。
3.3.1 系统总体用例图
系统总体用例图展示了各角色与系统功能之间的关系。管理员拥有最高权限,可以管理所有模块;医生主要负责预约处理和病历管理;员工负责日常运营管理;宠物主人则使用前台服务功能。
宠物医院管理系统
用户登录/注册
个人信息管理
宠物管理
预约管理
医疗记录管理
药品管理
新闻管理
数据统计
用户管理
浏览医院信息
查看医生团队
宠物主人
医生
员工
管理员
3.3.2 预约管理用例图
预约管理是系统的核心业务流程之一。宠物主人可以创建预约、查看预约状态和取消预约;医生和员工可以查看预约列表、确认预约和完成预约。通过预约管理,实现了宠物就诊流程的规范化管理。
预约管理
宠物主人
医生
员工
创建预约
查看预约
取消预约
确认预约
完成预约
4 系统设计
4.1 系统架构设计
本系统采用前后端分离的B/S架构,整体分为表现层、业务层和数据层三个层次。表现层基于Vue 3框架,负责用户界面展示和交互;业务层基于Spring Boot框架,负责业务逻辑处理和API接口提供;数据层使用MySQL数据库和文件系统,负责数据的持久化存储。这种分层架构具有职责清晰、易于维护、便于扩展等优点。
4.1.1 系统架构图
系统架构图展示了各层之间的关系和数据流向。用户通过浏览器访问Vue前端应用,前端通过HTTP请求调用后端API接口,后端经过拦截器验证和业务处理后访问数据库,最终将结果返回给前端展示。
数据层
业务层-后端
表现层-前端
客户端层
HTTP/HTTPS
Web浏览器
Vue 3应用
Vue Router路由
Pinia状态管理
Element Plus组件
ECharts图表
Controller控制层
Service业务层
Mapper数据访问层
JWT认证
拦截器
MySQL数据库
文件系统
4.1.2 系统交互流程
系统交互流程图展示了用户操作从前端到后端再到数据库的完整过程。用户访问系统时,首先经过路由守卫检查登录状态;未登录用户需要先完成登录认证,获取JWT Token后才能访问受保护的资源;已登录用户的每次请求都会携带Token,后端验证Token有效性后处理业务逻辑并返回结果。
数据库 Mapper层 Service层 Controller层 Vue前端 用户 数据库 Mapper层 Service层 Controller层 Vue前端 用户 alt [未登录] 访问页面 路由守卫检查 重定向到登录页 输入用户名密码 POST /api/auth/login login() 查询用户 SELECT 返回用户数据 验证密码,生成JWT 返回Token 返回响应 保存Token 跳转首页 执行业务操作 HTTP请求(带Token) 验证Token 调用业务方法 数据库操作 执行SQL 返回数据 返回结果 返回响应 更新页面
4.2 功能模块设计
系统根据功能划分为前台系统和后台管理系统两大部分。前台系统面向宠物主人和访客,提供医院信息展示、医生团队介绍、在线预约、个人中心等功能;后台管理系统面向管理员、医生和员工,提供工作台、宠物管理、人员管理、医疗管理、药品管理、预约管理、新闻管理等功能。各模块之间相对独立又相互协作,共同支撑系统的完整业务流程。
4.2.1 功能模块结构图
功能模块结构图展示了系统的模块划分和层次关系。前台系统包含首页、服务项目、医生团队、新闻动态、关于我们、个人中心等模块;后台系统包含工作台、宠物管理、人员管理、医疗管理、药品管理、预约管理、新闻管理、个人中心等模块。
宠物医院管理系统
前台系统
后台管理系统
首页展示
服务项目
医生团队
新闻动态
关于我们
个人中心
工作台
宠物管理
人员管理
医疗管理
药品管理
预约管理
新闻管理
个人中心
我的宠物
我的预约
就诊记录
药品列表
库存记录
4.3 数据库设计
数据库设计是系统设计的重要组成部分,合理的数据库设计能够保证数据的一致性和完整性,提高数据访问效率。本系统使用MySQL 8.0作为关系型数据库,采用InnoDB存储引擎,支持事务和外键约束。
4.3.1 E-R图设计
E-R图展示了系统中各个实体及其关系。用户实体是系统的核心,与宠物、预约、医疗记录、新闻等实体建立了关联关系。一个用户可以拥有多只宠物,一只宠物可以有多条预约记录和医疗记录。医生信息作为用户的扩展信息单独存储。药品实体与库存记录实体关联,记录药品的出入库历史。
owns
creates
creates
has
has
has
generates
has
publishes
has
USER
bigint
id
PK
varchar
username
UK
varchar
password
varchar
name
varchar
avatar
varchar
phone
varchar
email
int
role
int
status
varchar
department
datetime
create_time
datetime
update_time
PET
bigint
id
PK
varchar
name
bigint
owner_id
FK
varchar
pet_avatar
varchar
type
varchar
breed
varchar
gender
int
age
decimal
weight
int
sterilized
varchar
allergies
varchar
notes
datetime
create_time
datetime
update_time
APPOINTMENT
bigint
id
PK
bigint
pet_id
FK
varchar
service_type
bigint
doctor_id
FK
bigint
owner_id
FK
datetime
appointment_time
varchar
status
varchar
notes
datetime
create_time
datetime
update_time
MEDICAL_RECORD
bigint
id
PK
bigint
pet_id
FK
bigint
doctor_id
FK
bigint
appointment_id
FK
varchar
diagnosis
varchar
treatment
varchar
prescription
decimal
fee
int
status
datetime
create_time
datetime
update_time
DOCTOR_INFO
bigint
id
PK
bigint
user_id
FK
varchar
title
varchar
speciality
text
introduction
int
status
datetime
create_time
datetime
update_time
MEDICINE
bigint
id
PK
varchar
name
varchar
type
varchar
specification
varchar
unit
decimal
price
int
stock
varchar
manufacturer
varchar
description
int
status
datetime
create_time
datetime
update_time
MEDICINE_STOCK_RECORD
NEWS
bigint
id
PK
varchar
title
varchar
category
text
content
varchar
image
varchar
author
int
views
int
status
datetime
create_time
datetime
update_time
MEDICAL_RECORD_REVIEW
4.3.2 数据表设计
根据E-R图设计,系统共包含用户表、宠物表、预约表、医疗记录表、医生信息表、药品表、药品库存记录表、新闻表、医疗评价表等数据表。以下是核心数据表的详细设计。
用户表(user)
用户表存储系统所有用户的基本信息和认证信息,包括管理员、医生、员工和宠物主人。通过role字段区分不同角色,status字段控制账号启用状态。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 用户ID |
| username | varchar(50) | 唯一,非空 | 用户名 |
| password | varchar(255) | 非空 | 密码(加密) |
| name | varchar(50) | - | 姓名 |
| avatar | varchar(255) | - | 头像路径 |
| phone | varchar(20) | - | 手机号 |
| varchar(100) | - | 邮箱 | |
| role | int | 非空 | 角色:0管理员,1医生,2员工,3宠物主人 |
| status | int | 默认1 | 状态:0禁用,1启用 |
| department | varchar(50) | - | 部门 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
宠物表(pet)
宠物表存储宠物的基本信息和健康信息,通过owner_id关联到用户表,记录宠物的主人。支持存储宠物类型、品种、性别、年龄、体重、是否绝育、过敏史等详细信息,为医疗诊断提供参考。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 宠物ID |
| name | varchar(50) | 非空 | 宠物名称 |
| owner_id | bigint | 外键 | 主人ID |
| pet_avatar | varchar(255) | - | 宠物头像 |
| type | varchar(20) | - | 类型:dog,cat,rabbit,bird,other |
| breed | varchar(50) | - | 品种 |
| gender | varchar(10) | - | 性别:male,female |
| age | int | - | 年龄 |
| weight | decimal(5,2) | - | 体重(kg) |
| sterilized | int | 默认0 | 是否绝育:0否,1是 |
| allergies | varchar(255) | - | 过敏史 |
| notes | text | - | 备注 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
预约表(appointment)
预约表存储宠物的预约记录,关联宠物、医生和主人信息。service_type字段记录服务类型,包括疫苗接种、体检、治疗、手术、美容等。status字段记录预约状态,支持待确认、已确认、已完成、已取消四种状态。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 预约ID |
| pet_id | bigint | 外键 | 宠物ID |
| service_type | varchar(20) | 非空 | 服务类型 |
| doctor_id | bigint | 外键 | 医生ID |
| owner_id | bigint | 外键 | 主人ID |
| appointment_time | datetime | 非空 | 预约时间 |
| status | varchar(20) | 默认pending | 状态 |
| notes | text | - | 备注 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
医疗记录表(medical_record)
医疗记录表存储宠物的就诊病历信息,关联宠物、医生和预约记录。记录诊断结果、治疗方案、处方和费用等信息,status字段标识费用支付状态。通过appointment_id关联预约记录,实现就诊流程的完整追溯。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 记录ID |
| pet_id | bigint | 外键 | 宠物ID |
| doctor_id | bigint | 外键 | 医生ID |
| appointment_id | bigint | 外键 | 预约ID |
| diagnosis | text | - | 诊断结果 |
| treatment | text | - | 治疗方案 |
| prescription | text | - | 处方 |
| fee | decimal(10,2) | - | 费用 |
| status | int | 默认0 | 状态:0未支付,1已支付 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
药品表(medicine)
药品表存储医院药品的基本信息和库存信息。type字段记录药品类型,包括疫苗、抗生素、止痛药、维生素等。stock字段记录当前库存数量,status字段控制药品的上架/下架状态。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 药品ID |
| name | varchar(100) | 非空 | 药品名称 |
| type | varchar(20) | - | 类型 |
| specification | varchar(50) | - | 规格 |
| unit | varchar(20) | - | 单位 |
| price | decimal(10,2) | - | 单价 |
| stock | int | 默认0 | 库存 |
| manufacturer | varchar(100) | - | 生产厂家 |
| description | text | - | 描述 |
| status | int | 默认1 | 状态:0下架,1上架 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
新闻表(news)
新闻表存储医院发布的新闻公告信息。category字段记录新闻分类,包括医院动态、宠物知识、通知公告三种类型。views字段记录浏览量,status字段控制新闻的发布/下架状态。
| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| id | bigint | 主键,自增 | 新闻ID |
| title | varchar(200) | 非空 | 标题 |
| category | varchar(20) | - | 分类:hospital,knowledge,notice |
| content | text | - | 内容 |
| image | varchar(255) | - | 封面图 |
| author | varchar(50) | - | 作者 |
| views | int | 默认0 | 浏览量 |
| status | int | 默认1 | 状态:0下架,1发布 |
| create_time | datetime | - | 创建时间 |
| update_time | datetime | - | 更新时间 |
4.4 接口设计
系统采用RESTful API设计风格,遵循HTTP协议规范,使用GET、POST、PUT、DELETE等方法对应资源的查询、创建、更新、删除操作。所有接口返回统一的JSON格式数据,便于前端统一处理。
4.4.1 统一响应格式
为了便于前端统一处理响应数据,系统定义了统一的响应格式。code字段表示业务状态码,200表示成功,其他值表示失败;msg字段表示响应消息;data字段表示响应数据。
json
{
"code": 200,
"msg": "操作成功",
"data": {}
}
4.4.2 主要接口列表
系统按照功能模块划分接口,主要包括认证接口、用户接口、宠物接口、预约接口、医疗记录接口、药品接口、新闻接口等。以下是主要接口的设计说明。
| 模块 | 接口 | 方法 | 说明 |
|---|---|---|---|
| 认证 | /api/auth/login | POST | 用户登录 |
| 认证 | /api/auth/register | POST | 用户注册 |
| 认证 | /api/auth/info | GET | 获取当前用户信息 |
| 用户 | /api/users | GET | 获取用户列表 |
| 用户 | /api/users/{id} | GET | 获取用户详情 |
| 用户 | /api/users | POST | 创建用户 |
| 用户 | /api/users/{id} | PUT | 更新用户 |
| 用户 | /api/users/{id} | DELETE | 删除用户 |
| 宠物 | /api/pets | GET | 获取宠物列表 |
| 宠物 | /api/pets/{id} | GET | 获取宠物详情 |
| 宠物 | /api/pets | POST | 添加宠物 |
| 宠物 | /api/pets/{id} | PUT | 更新宠物 |
| 宠物 | /api/pets/{id} | DELETE | 删除宠物 |
| 预约 | /api/appointments | GET | 获取预约列表 |
| 预约 | /api/appointments | POST | 创建预约 |
| 预约 | /api/appointments/{id}/status | PUT | 更新预约状态 |
| 医疗 | /api/medical-records | GET | 获取医疗记录列表 |
| 医疗 | /api/medical-records | POST | 创建医疗记录 |
| 药品 | /api/medicines | GET | 获取药品列表 |
| 药品 | /api/medicines | POST | 添加药品 |
| 药品 | /api/medicines/{id} | PUT | 更新药品 |
| 新闻 | /api/news | GET | 获取新闻列表 |
| 新闻 | /api/news | POST | 发布新闻 |
4.4.3 预约流程时序图
预约流程时序图展示了宠物主人创建预约和查看预约状态的完整交互过程。创建预约时,前端收集预约信息后发送请求到后端,后端验证数据有效性后保存到数据库;查看预约时,后端从数据库查询预约列表并返回给前端展示。
数据库 后端 前端 宠物主人 数据库 后端 前端 宠物主人 创建预约流程 预约确认流程 填写预约信息 POST /api/appointments 验证Token 验证预约信息 INSERT INTO appointment 插入成功 返回成功响应 提示预约成功 查看预约状态 GET /api/appointments SELECT * FROM appointment 返回预约列表 返回数据 显示预约列表
4.5 安全设计
系统的安全设计是保障系统稳定运行和数据安全的重要保障,主要包括身份认证和权限控制两个方面。
4.5.1 身份认证机制
系统采用JWT(JSON Web Token)技术实现无状态的身份认证机制。用户登录成功后,后端生成包含用户信息的Token返回给前端,前端将Token保存到localStorage中。后续每次请求都在请求头中携带Token,后端通过拦截器验证Token的有效性,验证通过后从Token中提取用户信息供业务逻辑使用。
数据库 JWT工具 后端 前端 用户 数据库 JWT工具 后端 前端 用户 登录认证流程 请求验证流程 alt [Token有效] [Token无效] 输入用户名密码 POST /api/auth/login 查询用户 返回用户数据 验证密码 生成Token 返回Token 返回Token和用户信息 保存Token到localStorage 执行操作 HTTP请求(携带Token) 验证Token 验证通过 处理业务逻辑 返回响应数据 验证失败 返回401错误 跳转到登录页
4.5.2 权限控制设计
系统实现了基于角色的访问控制(RBAC)机制,定义了四种角色,每种角色拥有不同的权限范围。后端通过拦截器检查用户角色,拒绝未授权的访问请求;前端通过路由守卫和菜单权限配置,根据用户角色动态显示可访问的功能菜单。
| 角色 | 角色值 | 权限范围 |
|---|---|---|
| 管理员 | 0 | 所有功能 |
| 医生 | 1 | 预约管理、医疗记录、个人中心 |
| 员工 | 2 | 宠物管理、预约管理、药品管理、个人中心 |
| 宠物主人 | 3 | 前台功能、个人中心 |
5 系统实现
本章详细介绍系统各功能模块的具体实现过程,包括用户登录、工作台、宠物管理、预约管理、医疗记录、药品管理、新闻管理和前台系统等模块。系统采用前后端分离的开发模式,后端使用Spring Boot框架提供RESTful API接口,前端使用Vue 3框架构建用户界面。
5.1 用户登录模块实现
用户登录是系统的入口,采用JWT技术实现无状态身份认证。登录流程包括前端表单验证、后端凭证验证、Token生成和用户信息返回等步骤。
5.1.1 后端登录接口实现
后端登录接口位于AuthController类中,接收用户名和密码参数,验证用户凭证后生成JWT Token返回给前端。首先根据用户名查询数据库获取用户信息,然后验证密码是否匹配,验证通过后检查账号状态是否启用,最后调用JWT工具类生成Token。Token中包含用户ID、用户名和角色信息,有效期设置为7天。
5.1.2 前端登录页面实现
前端登录页面使用Vue 3的Composition API编写,使用Element Plus的表单组件构建登录界面。页面采用渐变背景色设计,中央显示白色登录卡片,包含系统Logo、标题、用户名输入框、密码输入框、记住我复选框和登录按钮。表单使用Element Plus的表单验证功能,确保用户名和密码不为空。登录成功后根据用户角色跳转到不同页面:宠物主人跳转到前台首页,其他角色跳转到后台工作台。

5.2 工作台模块实现
工作台是后台管理系统的首页,为管理人员提供系统核心数据的概览和快捷入口,帮助用户快速了解系统运营状况。
5.2.1 数据统计卡片
工作台顶部展示四个统计卡片,分别显示今日预约数、待处理预约数、本月就诊数和宠物总数。每个卡片使用不同的图标和颜色进行区分,数据通过后端Dashboard接口聚合查询获取。卡片采用Element Plus的Card组件实现,配合图标和数字展示,直观呈现关键业务指标。
5.2.2 数据可视化图表
工作台使用ECharts图表库实现数据可视化展示,帮助管理人员直观了解业务趋势和分布情况。主要包括:预约趋势图使用折线图展示近7天的预约数量变化趋势;服务类型分布使用饼图展示各类服务(疫苗、体检、治疗、手术、美容等)的占比情况;宠物类型统计使用柱状图展示各类宠物(狗、猫、兔子、鸟等)的数量分布。

5.3 宠物管理模块实现
宠物管理模块实现了宠物信息的增删改查功能,是系统的基础数据管理模块。
5.3.1 宠物列表
宠物列表页面使用Element Plus的Table组件展示宠物信息,表格包含宠物头像、名称、类型、品种、性别、年龄、体重、主人姓名、主人电话等列。页面顶部提供搜索区域,支持按宠物名称、类型、主人姓名进行模糊搜索筛选。表格支持分页显示,每页默认显示10条记录。操作列提供编辑和删除按钮,管理员和员工可以对宠物信息进行维护。
5.3.2 宠物信息编辑
点击添加或编辑按钮后弹出对话框表单,表单分为基本信息和健康信息两部分。基本信息包括宠物名称、类型、品种、性别、年龄、体重等字段;健康信息包括是否绝育、过敏史、备注等字段。表单支持上传宠物头像,使用Element Plus的Upload组件实现,头像文件上传到服务器的upload/pet/avatar目录下,数据库中存储文件路径。

5.4 预约管理模块实现
预约管理模块实现了预约的创建、查看、确认、完成、取消等功能,是系统的核心业务模块。
5.4.1 预约列表
预约列表页面展示所有预约记录,表格包含预约编号、宠物名称、服务类型、预约医生、预约时间、状态、备注等列。页面顶部提供筛选区域,支持按预约状态、服务类型、日期范围进行筛选。预约状态使用Element Plus的Tag组件以不同颜色显示:pending(待确认)显示黄色标签,confirmed(已确认)显示蓝色标签,completed(已完成)显示绿色标签,cancelled(已取消)显示红色标签。操作列根据预约状态显示不同的操作按钮。
5.4.2 预约状态流转
预约状态遵循固定的流转规则:新创建的预约状态为"待确认",医生或员工可以将其确认为"已确认"状态,也可以取消为"已取消"状态;已确认的预约在完成诊疗后可以标记为"已完成"状态,也可以取消。状态流转通过调用后端接口更新数据库记录实现。
创建预约
确认预约
取消预约
完成预约
取消预约
pending
confirmed
cancelled
completed

5.5 医疗记录模块实现
医疗记录模块实现了电子病历的创建和管理功能,是宠物医院信息化的核心模块,实现了病历的电子化存储和便捷查询。
5.5.1 病历创建
医生在完成预约诊疗后可以创建病历记录。病历创建表单包含诊断结果、治疗方案、处方和费用等字段。诊断结果记录宠物的症状和诊断结论;治疗方案记录采取的治疗措施;处方记录开具的药品和用法用量;费用记录本次诊疗的收费金额。病历通过appointment_id关联预约记录,通过pet_id关联宠物信息,实现就诊历史的完整追溯。
5.5.2 病历查询
病历列表页面展示所有医疗记录,表格包含宠物名称、主人姓名、诊断医生、诊断结果、费用、支付状态、创建时间等列。支持按宠物名称、医生、日期范围进行筛选查询。宠物主人可以在前台个人中心查看自己宠物的就诊记录,了解宠物的健康状况和治疗历史。

5.6 药品管理模块实现
药品管理模块实现了药品信息管理和库存管理功能,帮助医院有效管理药品资源,避免药品过期或缺货。
5.6.1 药品列表
药品列表页面展示所有药品信息,表格包含药品名称、类型、规格、单位、单价、库存数量、生产厂家、状态等列。支持按药品名称、类型进行搜索筛选。操作列提供编辑、上架/下架、删除等按钮。药品类型包括疫苗、抗生素、止痛药、维生素等分类,便于药品的分类管理。
5.6.2 库存管理
库存管理功能记录药品的入库和出库操作,每次操作生成一条库存记录,包含操作类型(入库/出库)、操作数量、操作前库存、操作后库存、操作人、操作时间、备注等信息。通过库存记录可以追溯药品库存的变化历史,便于库存盘点和异常排查。系统支持库存预警功能,当药品库存低于设定阈值时提醒管理员及时补货。

5.7 新闻管理模块实现
新闻管理模块实现了新闻公告的发布和管理功能,帮助医院向客户传递医院动态、宠物知识和通知公告等信息。
5.7.1 新闻发布
管理员可以发布新闻公告,新闻发布表单包含标题、分类、内容、封面图等字段。分类包括医院动态、宠物知识、通知公告三种类型,便于用户按类别浏览。内容字段支持富文本编辑,可以插入图片和格式化文本。封面图用于在新闻列表中展示,吸引用户点击阅读。新闻发布后状态为"已发布",管理员也可以将新闻设置为"下架"状态暂时隐藏。
5.7.2 新闻展示
前台新闻页面展示已发布的新闻列表,每条新闻显示封面图、标题、分类、发布时间、浏览量等信息。支持按分类筛选,用户可以选择只查看某一类别的新闻。点击新闻进入详情页,显示新闻的完整内容,同时后端自动增加浏览量计数。新闻详情页采用简洁的阅读布局,提供良好的阅读体验。

5.8 前台系统实现
前台系统面向宠物主人和访客,提供医院信息展示和在线服务功能,是用户了解医院和使用服务的主要入口。
5.8.1 首页
首页是前台系统的门户页面,采用现代化的设计风格,展示医院的核心信息和服务。页面顶部是导航栏,包含首页、服务项目、医生团队、新闻动态、关于我们等菜单项。页面主体展示医院介绍Banner、服务项目卡片、医生团队展示、最新动态列表等内容。页面底部提供医院联系方式、地址、工作时间等信息。首页设计注重用户体验,提供清晰的导航和快捷入口,引导用户预约服务。
5.8.2 医生团队
医生团队页面展示所有在职医生的详细信息,帮助用户了解医生的专业背景,选择合适的医生进行预约。每位医生的信息卡片包含头像、姓名、职称、专长领域、个人简介等内容。医生信息来源于doctor_info表,与user表关联获取医生的基本信息。页面采用卡片式布局,医生信息清晰展示,用户可以快速浏览和比较。
5.8.3 个人中心
宠物主人登录后可以访问个人中心,管理个人相关的所有信息。个人中心包含以下功能模块:个人信息管理,可以查看和修改个人资料、修改密码、上传头像;我的宠物,可以查看、添加、编辑自己的宠物信息;我的预约,可以查看预约列表、创建新预约、取消待确认的预约;就诊记录,可以查看宠物的历史就诊病历,了解诊断结果和治疗方案。个人中心采用左侧菜单、右侧内容的布局方式,操作便捷直观。


6 系统测试
系统测试是保证软件质量的重要环节,本章介绍系统的测试环境、测试策略、测试用例和测试结果。通过全面的测试验证系统的功能正确性、性能稳定性、安全可靠性和兼容性。
6.1 测试环境
测试环境的硬件和软件配置如下表所示,测试环境尽量模拟实际生产环境,确保测试结果的有效性。
| 项目 | 配置 |
|---|---|
| 操作系统 | Windows 10/11 |
| 处理器 | Intel Core i7 |
| 内存 | 16GB DDR4 |
| JDK版本 | OpenJDK 1.8 |
| 数据库 | MySQL 8.0 |
| Node.js | 16.x |
| 浏览器 | Chrome 120、Firefox 120、Edge 120 |
6.2 功能测试
功能测试采用黑盒测试方法,验证系统各功能模块是否按照需求规格正确实现。测试用例覆盖正常流程和异常流程,确保系统在各种输入条件下都能正确响应。
6.2.1 用户登录功能测试
用户登录是系统的入口功能,测试用例覆盖正确登录、密码错误、用户名为空、账号禁用等场景。
| 测试用例 | 输入 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|---|
| 正确登录 | 正确用户名和密码 | 登录成功,跳转首页 | 符合预期 | 通过 |
| 密码错误 | 正确用户名,错误密码 | 提示"用户名或密码错误" | 符合预期 | 通过 |
| 用户名为空 | 空用户名 | 提示"请输入用户名" | 符合预期 | 通过 |
| 账号禁用 | 被禁用的账号 | 提示"账号已被禁用" | 符合预期 | 通过 |
6.2.2 预约功能测试
预约功能是系统的核心业务,测试用例覆盖预约创建、确认、取消、完成等状态流转场景。
| 测试用例 | 输入 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|---|
| 创建预约 | 完整预约信息 | 预约创建成功 | 符合预期 | 通过 |
| 确认预约 | 待确认的预约 | 状态变为已确认 | 符合预期 | 通过 |
| 取消预约 | 待确认的预约 | 状态变为已取消 | 符合预期 | 通过 |
| 完成预约 | 已确认的预约 | 状态变为已完成 | 符合预期 | 通过 |
6.2.3 宠物管理功能测试
宠物管理功能测试覆盖宠物的增删改查操作,验证数据的正确存储和展示。
| 测试用例 | 输入 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|---|
| 添加宠物 | 完整宠物信息 | 添加成功 | 符合预期 | 通过 |
| 编辑宠物 | 修改宠物信息 | 更新成功 | 符合预期 | 通过 |
| 删除宠物 | 选择宠物删除 | 删除成功 | 符合预期 | 通过 |
| 搜索宠物 | 输入搜索关键词 | 显示匹配结果 | 符合预期 | 通过 |
6.3 性能测试
性能测试使用Apache JMeter工具进行,模拟不同数量的并发用户访问系统,测试系统的响应时间、吞吐量和错误率等性能指标。
| 并发用户数 | 平均响应时间 | 错误率 | 吞吐量 |
|---|---|---|---|
| 10 | 0.5s | 0% | 20/s |
| 50 | 0.8s | 0% | 60/s |
| 100 | 1.2s | 0% | 80/s |
| 150 | 1.8s | 0.5% | 85/s |
测试结果表明,系统在100并发用户以下运行稳定,响应时间符合要求。
6.4 安全测试
安全测试验证系统的安全防护能力,包括身份认证、权限控制、数据安全等方面的测试。
| 测试项目 | 测试方法 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|---|
| 无效Token访问 | 使用无效Token请求接口 | 返回401错误 | 符合预期 | 通过 |
| 权限控制 | 普通用户访问管理接口 | 返回403错误 | 符合预期 | 通过 |
| SQL注入 | 输入SQL语句 | 正常处理,无注入 | 符合预期 | 通过 |
| XSS攻击 | 输入恶意脚本 | 脚本被转义 | 符合预期 | 通过 |
6.5 兼容性测试
兼容性测试验证系统在不同浏览器上的运行情况,确保系统的广泛适用性。
| 浏览器 | 版本 | 功能测试 | 界面显示 | 状态 |
|---|---|---|---|---|
| Chrome | 120 | 正常 | 正常 | 通过 |
| Firefox | 120 | 正常 | 正常 | 通过 |
| Edge | 120 | 正常 | 正常 | 通过 |
| Safari | 16 | 正常 | 正常 | 通过 |
6.6 测试结论
经过全面测试,系统功能测试通过率达到100%,性能测试表明系统能够支持100并发用户稳定运行,安全测试验证了系统的安全防护机制有效,兼容性测试证实系统在主流浏览器上均能正常运行。系统已达到上线运行的标准。
7 总结与展望
7.1 工作总结
本文设计并实现了一个基于Spring Boot和Vue 3的宠物医院管理系统,完成了以下主要工作:
-
需求分析与系统设计:通过需求分析明确了系统的功能需求和非功能需求,设计了前后端分离的三层架构,完成了数据库设计和接口设计。
-
系统实现:使用Spring Boot 2.5.14开发后端,使用Vue 3.3.8开发前端,实现了用户管理、宠物管理、预约管理、医疗记录管理、药品管理、新闻管理等核心功能模块。
-
系统测试:进行了功能测试、性能测试、安全测试和兼容性测试,验证了系统的正确性、稳定性和安全性。
7.2 系统特点
-
前后端分离架构:后端提供RESTful API,前端通过HTTP请求调用,职责清晰,便于维护和扩展。
-
多角色权限控制:支持管理员、医生、员工、宠物主人四种角色,实现了细粒度的权限控制。
-
完整的业务流程:覆盖了预约、诊疗、收费、库存管理等核心业务流程。
-
良好的用户体验:界面简洁美观,操作流程直观,提供数据可视化展示。
7.3 存在的不足
-
移动端支持不足:系统主要面向桌面端设计,移动端体验有待优化。
-
支付功能缺失:目前只记录费用,未集成在线支付功能。
-
消息通知功能简单:缺少短信、邮件等多渠道通知功能。
-
数据分析功能基础:统计分析功能较为简单,缺少深度数据挖掘。
7.4 改进方案
-
开发移动端应用:开发移动端H5页面或原生APP,提供更好的移动办公体验。
-
集成支付功能:接入微信支付、支付宝等支付渠道,实现在线收费。
-
完善通知功能:集成短信、邮件、微信公众号等多渠道通知。
-
增强数据分析:引入数据分析组件,提供更丰富的统计报表和数据可视化。
-
引入智能化功能:利用AI技术实现智能问诊、智能推荐等功能。
7.5 未来展望
随着宠物经济的持续发展,宠物医疗信息化将迎来更大的发展空间。未来的发展方向包括:
-
智能化:引入AI技术,实现智能问诊、图像识别辅助诊断等功能。
-
移动化:提供完善的移动端支持,实现随时随地的服务。
-
平台化:构建宠物医疗服务平台,连接更多宠物医院和宠物主人。
-
数据驱动:通过大数据分析,为医院运营和医疗决策提供支持。
参考文献
1\] 周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)\[M\]. 机械工业出版社, 2019. \[2\] 尤雨溪. Vue.js设计与实现\[M\]. 人民邮电出版社, 2022. \[3\] Craig Walls. Spring Boot实战(第2版)\[M\]. 人民邮电出版社, 2020. \[4\] Spring Framework Documentation. Spring Boot Reference Guide\[EB/OL\]. https://spring.io/projects/spring-boot, 2023. \[5\] Vue.js Official Documentation. Vue 3 Guide\[EB/OL\]. https://vuejs.org/guide/, 2023. \[6\] Element Plus Documentation. Element Plus Component Library\[EB/OL\]. https://element-plus.org/, 2023. \[7\] MyBatis-Plus Documentation. MyBatis-Plus Guide\[EB/OL\]. https://baomidou.com/, 2023. \[8\] MySQL Documentation. MySQL 8.0 Reference Manual\[EB/OL\]. https://dev.mysql.com/doc/refman/8.0/en/, 2023. *** ** * ** *** ### 致谢 本论文的完成离不开指导老师的悉心指导和同学们的帮助支持。在系统开发过程中,导师给予了宝贵的建议和指导,使我对系统架构设计和技术选型有了更深入的理解。 感谢开源社区提供的优秀框架和工具,Spring Boot、Vue、Element Plus等开源项目为本系统的开发提供了强大的技术支撑。 感谢我的家人在学习期间给予的支持和理解。 最后,向所有给予我帮助和支持的老师、同学、朋友表示衷心的感谢! 像识别辅助诊断等功能。 2. **移动化**:提供完善的移动端支持,实现随时随地的服务。 3. **平台化**:构建宠物医疗服务平台,连接更多宠物医院和宠物主人。 4. **数据驱动**:通过大数据分析,为医院运营和医疗决策提供支持。 *** ** * ** *** ### 参考文献 \[1\] 周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)\[M\]. 机械工业出版社, 2019. \[2\] 尤雨溪. Vue.js设计与实现\[M\]. 人民邮电出版社, 2022. \[3\] Craig Walls. Spring Boot实战(第2版)\[M\]. 人民邮电出版社, 2020. \[4\] Spring Framework Documentation. Spring Boot Reference Guide\[EB/OL\]. https://spring.io/projects/spring-boot, 2023. \[5\] Vue.js Official Documentation. Vue 3 Guide\[EB/OL\]. https://vuejs.org/guide/, 2023. \[6\] Element Plus Documentation. Element Plus Component Library\[EB/OL\]. https://element-plus.org/, 2023. \[7\] MyBatis-Plus Documentation. MyBatis-Plus Guide\[EB/OL\]. https://baomidou.com/, 2023. \[8\] MySQL Documentation. MySQL 8.0 Reference Manual\[EB/OL\]. https://dev.mysql.com/doc/refman/8.0/en/, 2023. *** ** * ** *** ### 致谢 本论文的完成离不开指导老师的悉心指导和同学们的帮助支持。在系统开发过程中,导师给予了宝贵的建议和指导,使我对系统架构设计和技术选型有了更深入的理解。 感谢开源社区提供的优秀框架和工具,Spring Boot、Vue、Element Plus等开源项目为本系统的开发提供了强大的技术支撑。 感谢我的家人在学习期间给予的支持和理解。 最后,向所有给予我帮助和支持的老师、同学、朋友表示衷心的感谢!