宠物医院管理系统论文
分类: Java vue 专栏: java vue 标签: 宠物医院管理系统
2025-09-18 15:40:22 189浏览
摘 要
随着人们生活水平的提升与宠物饲养数量的增加,对宠物就医需求日益增多。传统的宠物医院面临着预约挂号不便、信息管理混乱和服务质量低下等问题。本文基于Vue前端技术和SpringBoot后端技术,设计和实现了宠物医院管理系统的前后端,从而实现对宠物医院的高效管理和服务质量。系统采用前后端分离架构,包括宠物信息管理、医生管理、预约挂号管理、药品管理和就诊管理模块。宠物主人通过系统进行在线预约、查询宠物健康记录、购买药品、评价服务;医生管理就诊记录、开具处方;管理员全面掌握宠物医院运营状况。通过系统实现,优化了宠物医院的业务流程,提高了工作效率,提升了用户满意度,为宠物医疗服务的信息化、标准化、现代化提供了解决方案。
关键词:宠物医院管理系统;Vue;Spring Boot;前后端分离模式
Abstract
Traditional pet hospitals have been inundated with such management problems as inefficient patient appointments, chaotic patient information, and difficulties in quality control. With increasing wealth and the rising number of pets, the demand for pet care has been growing. The system adopts a front-end-back-end separation architecture, and the core functions are pet information management, doctor management, consultation management, medicine administration, and clinical records. The purpose of this work is to design and implement a comprehensive pet hospital management system based on Vue framework and Spring Boot technology, so as to improve the management efficiency and quality of the hospital. Veterinary information systems, not only can optimize the working process and improve efficiency, but also can effectively improve the quality of service, and provide a scientific and standard basis for the informatization, standardization, and modernization of veterinary care. The system enables pet owners to easily make appointments, check the health records, buy medicines, and give ratings. Doctors can quickly manage the operation of diagnoses and prescriptions. Management can see the whole hospital management.
Key words:Pet Hospital; Management System; Vue; SpringBoot; Frontend-Backend Separation
一、绪论
随着社会经济的快速发展和人民生活水平的日益提高,宠物逐渐成为许多人养儿防老、休闲娱乐的必需品,很多人愿意去饲养宠物,饲养宠物已经成为他们的一种精神寄托,宠物医疗服务需求量也随之而增大。宠物医院作为提供宠物医疗服务的服务企业,其管理水平的高低和质量的好坏,直接关系到宠物的健康和主人的满意度。而目前大部分宠物医院都沿用传统的由人工进行管理养殖的方式,这种养殖方式很难适应于宠物医院日益增加的业务量,宠物医院迫切需要一种便捷、高效的管理模式。
(一)项目背景及意义
1.项目背景
随着现代社会经济水平的不断发展,生活水平的不断提高,宠物逐渐成为人们家庭生活中必不可少的一员,宠物能够带给人情感上的陪伴和寄托,一定程度上丰富人们的情感生活。相关数据显示,我国的宠物市场规模近年来一直保持不断增长的趋势,宠物医疗是宠物服务行业重要的一环,宠物医疗服务的需求量也越来越高,但是传统的宠物医院管理模式还存在诸多问题,大多以电话挂号和现场挂号的形式为主,一方面增加了医院前台人员的工作量,另一方面宠物主人需要等待大量时间,纸质化的宠物健康档案管理方式存在信息丢失和查找困难等问题,不利于医生对宠物情况的连续跟踪诊断,容易出现库存管理不及时导致缺药或者过期浪费的情况。缺乏评价反馈机制,不利于医院及时了解用户需求,改进服务质量。
在信息技术快速发展的时代,通过现代化的信息管理体系,完善宠物医院经营管理,是解决上述问题的途径和手段。本文针对上述问题设计并实现一个基于前后端(Vue、SpringBoot)技术的宠物医院管理系统,使宠物医院借助信息化的技术,实现经营管理的便捷。
2.项目意义
本项目开发及使用具有较高的临床和社会价值,对宠物医院而言,系统的使用可以提高医院的管理水平,提升医院的服务质量;网上预约挂号,减少前台人员,优化医生的就诊时间;电子化的宠物健康档案,让医生快速准确的掌握宠物就诊的历史和病情,提高治疗成功率;库存预警,避免缺货、断货,降低成本;评分反馈,为医院提升服务质量提供依据。
从宠物主人的角度来说,本系统可以大大提升就诊效率。在线预约系统,宠物主人可以自主安排就诊的时间,不再耽误宠物就诊时间;宠物健康档案电子化系统,随时查阅宠物健康状态以及就诊记录;在线购药系统,随时购买自己需要的药品;评价反馈系统,宠主的意见可以第一时间得到解决。
从运用技术而言,运用了当前流行的vue前端开发技术与SpringBoot后端技术,前后端分离的系统设计在提高系统开发效率的同时,又提升系统的可维护性,为后续开发系统提供了参考价值。
(二)国内外研究现状
1.国外研究现状
在国外宠物医疗服务业发展较早的情况下,国外宠物医院管理市场相对发达,Tzer-ShyongChen等开发了兽医云医院平台,引入二维码技术、云技术,实现远程医疗业务共享、宠物溯源,提供在线医疗保健咨询,并提供健康知识信息库,实现医疗服务提醒、个性服务营销、提高服务效率,帮助行业联盟实现服务水平提升[1];D Gunaratne等针对宠物保健需求不断增长的现状,开发出基于预约、医疗保健记录、健康提醒的Web应用,实现传统宠物保健。运用科技赋能,提升资源匮乏地区的动物保健和宠物主管理水平,解决动物日常照顾服务中的问题[2]。美国的宠物医院、英国的宠物医院、日本的宠物医院都使用着较为专业、便捷、服务功能完善的宠物医院信息管理系统,为动物医疗服务。
美国的VetLogic、IDEXXBoundarystone、英国的RxWorks等都是国际上市场占有率很高的系统。这些系统除了基本的预约挂号、病例管理、药物管理等基础性功能之外,还可以提供实验室检查、病理资料、管理财务等较高层次的功能,是一整套完整的宠物诊所管理平台;特别在数据分析、辅助决策方面,可以根据历史数据提供各种统计报表、趋势等,为医院的管理提供建议。
2.国内研究现状
相对于国外,我国宠物医疗信息化起步较晚,但随着近几年宠物市场的蓬勃发展,信息化技术逐渐发展,宠物医院对信息化管理也越来越重视,逐渐引入宠物医院管理系统。田斌为了改善传统医院信息管理低效,以SSM作为开发框架,开发宠物医院管理系统,将客户/宠物档案管理、动物诊疗预约、疫苗追踪、处方管理等模块整合进宠物医院管理系统,简化就诊流程,提升服务效率和信息透明[3];王慧基于Java语言和MySQL数据库设计开发了宠物医院管理系统,包含宠物管理、预约挂号、档案管理等功能模块,流程正规化无纸化,系统运行稳定,操作便捷,提高宠物健康管理的效率[4]。
但是,国内宠物医院管理系统也存在着一些局限性,如系统功能深度广度不够、数据分析与辅助决策支持不足、用户体验不够简洁、系统界面不够简洁、系统可扩展性与兼容性不够,不能满足不同类型和规模的宠物医院的需求。
(三)本论文研究内容
1.系统模块
宠物医院管理以现代化宠物医疗服务需求为切入点,构建前后端分离、用户服务和医疗管理相结合的子平台和系统。用户服务搭建基于Web3.0技术框架的简单易用的UI界面,集宠物档案信息管理、在线预约挂号服务、诊断记录查询服务、诊断报告查阅服务等于用户服务子平台宠物主界面,方便宠物主获取服务。保证用户服务系统的数据安全,让用户方便地完成预约功能,同时能够清晰地显示预约流程,让用户即宠物主可以查看自己的预约状态、就诊流程等。提升其满意度。医疗管理搭建基于SpringBoot技术框架的医生和管理人员工作平台子平台等。医生排班服务医生出诊登记管理开处方服务通过其工作平台实现其医疗服务。子平台药物管理以数据库为数据源,实现其库存信息管理、预警提示等,避免造成不必要的损失。同时还具备数据分析功能,通过对就诊人数、疾病构成、用药量等进行数据分析后为医院管理提供参考,促进医院医疗资源的整合,促进医院服务水平的提高。
2.研究方法
2.1 调查法
调查法,通过调查表的形式进行宠物医院管理需求相关信息问卷调查和访谈,预约流程是否有良好的体验感、就医效率高不高、查询是否方便等。对部分宠物医院管理者和兽医在调查基础之上进行访谈,询问传统医院管理方式痛点,信息化建设需求点,宠物主普遍反映预约便捷,就诊便捷透明化。医生群体更加在意就诊流程、就诊记录详细。数据直接映射到产品功能设计,开发的重点更加契合实际需要,避免产品开发脱离用户需要,为后续系统功能开发打下基础。
2.2 实践法
“实践法”体现在医院管理系统开发全过程中,包括技术开发验证和功能完善。根据需求分析前后开发框架Vue和SpringBoot选择,在原型系统上验证技术开发方向,在系统功能上采用模块化开发,开发用户识别系统、宠物管理功能模块后,开发预约、挂号、就诊管理等功能模块。在系统开发后部署到系统环境,邀请目标用户加入系统,在实际操作中,收集反馈意见,包括界面交互、系统功能完备性、响应速度等,对数据库和业务逻辑进行完善,对前台界面设计和后端流程进行完善,不断测试,确保系统能够在实际中测试,让系统更贴合业务场景,满足用户需求,开发出符合技术要求与用户需求的宠物医院管理系统。
二、可行性分析
详细系统设计工作展开前,需对该宠物医院管理系统进行整体的系统可行性分析。可行性分析即分析系统开发是否可行,在技术上、经济上、操作上能否达到系统目的。本章将就宠物医院管理系统从技术可行、经济可行、进度可行三个方面进行可行性分析。
(一)技术可行性
技术可行性是评估系统开发所需技术是否成熟、可靠,以及开发者是否具备相应的技术能力。
从系统架构角度来看,本系统采用当前主流的前后端分离架构,这种架构模式已在众多成功项目中得到验证,具有开发效率高、维护成本低、扩展性好等优点。前端采用Vue.js框架,该框架具有组件化开发、响应式数据绑定、虚拟DOM等特性,能够有效提高前端开发效率和用户体验;后端采用SpringBoot技术,能够快速搭建Web应用程序的基本框架,大幅简化了配置文件;数据库采用MySQL,作为一种开源关系型数据库管理系统,MySQL具有性能稳定、易于使用和维护等特点,能够满足系统的数据存储和管理需求。
综上所述,从技术角度来看,开发宠物医院管理系统是完全可行的,现有的技术条件和资源能够满足系统开发的需求。
(二)经济可行性
经济可行性是评估系统开发和运行的成本与收益是否合理,投资是否能够获得预期的回报。对于本宠物医院管理系统,经济可行性主要体现在以下几个方面:
从开发成本角度来看,系统开发的主要成本包括人力成本、硬件设备成本和软件工具成本。人力成本主要根据项目规模和开发周期估算;硬件设备成本主要包括开发用计算机、测试设备和服务器等,这些设备大部分可以复用现有资源,新增投入有限;软件工具成本主要包括开发工具和环境的购置费用,由于系统采用的大多是开源技术和工具,软件工具成本相对较低。
对于系统带来的收益而言,系统实施所带来效益主要包括直接效益和间接效益,直接效益就是提高工作效率、节省人力、节省成本等,间接效益就是提高服务水平和满意度,增加医院竞争软实力等方面带来的收益。这些效益很难量化,但是长期而言,对于医院是很有价值的。
综上所述,从经济的角度来看,开发宠物医院管理系统从成本上看是合理的,开发出的系统运行之后,系统的预期收益大于开发成本和系统运行成本。
(三)进度可行性
进度可行性是指在计划的时间期限内,系统能否完成开发和实施。对本宠物医院管理系统来说,进度可行性体现在以下几个方面:
首先,在系统规模上,在系统规模上,本系统属于信息系统中小系统,系统功能模块简单,技术路线成熟,难度不高,在合理时间范围内可以完成开发。具体而言,系统开发周期预计为4个月,分为需求分析(3周)、系统设计(4周)、编码实现(8周)、系统测试(3周)和部署上线(2周)五个阶段。需求分析阶段将完成用户访谈、业务流程梳理和功能需求文档编写;系统设计阶段将完成数据库设计、架构设计和详细设计;编码实现阶段将按照前后台功能模块分别实现,包括登录注册、预约管理、宠物档案、药品管理等核心功能;系统测试阶段将进行单元测试、集成测试和用户验收测试;最后的部署上线阶段将完成系统部署、数据迁移和用户培训工作。
从资源供给来看,项目不仅能够为开发任务提供所需的资源供给,而且能够通过项目管理工具和协作平台的引入来促进协作,从而确保开发工作的高效推进。
综上所述,从进度角度来看,宠物医院管理系统在合理的时间内完成开发与实践,从规模、方法、资源、风险控制等方面都能满足进度达成。
三、需求分析
需求分析是系统开发不可或缺的步骤,也是影响系统功能设计和功能实现的重要因素,本章将通过对宠物医院管理系统进行系统需求分析,主要包括系统功能需求、系统非功能需求及角色职责描述、业务流程描述等内容,为系统的设计、实现奠定基础。
(一)功能需求
功能需求是系统应该实现的功能和提供的服务,是系统需要设计和实现的关键内容。在进一步调查了解宠物医院日常运行管理工作后,本系统的功能需求包括以下几个方面。
1. 用户管理功能
用户管理是所有系统的必备功能,包括用户注册、用户登录、用户信息管理等。系统支持3类用户:宠物主人、医生、管理员。不同类型的用户拥有不同的用户权限以及功能。
医生、管理员拥有单独的口令登录,通过用户名、密码进行认证,实现个人信息查看功能、修改功能;通过用户名、密码修改功能,修改个人密码。
1.%2 宠物主人(普通用户)
普通用户即初次使用宠物医院系统的用户,主要是以宠物主人、普通访客用户为主。以宠物个人信息管理、医疗服务信息获取为主要功能模块,普通用户可对医院系统在首页进行浏览,对医生预约信息进行管理,查看和管理个人预约订单情况,包括预约确认、取消和查看预约记录等。其中:宠物个人信息管理,普通用户可进行宠物信息添加、编辑和管理,对个人宠物基本信息、健康状况、所接种疫苗信息等进行记录。其中:宠物医疗服务信息获取,普通用户可查看宠物就诊病历,包括诊断结果、治疗建议等,对购买的宠物药品进行查看和管理,包括药品说明、购买记录等。同时,系统还提供了普通用户对医院服务评价功能,可对医院提供的医疗服务和医生进行评价反馈,促进医院服务发展。在个人账户管理中,普通用户可以进行账户充值,进行个人资料的修改以及账户密码的修改等操作,以确保账户的安全和自身信息的准确。总的来说,普通用户功能模块主要是为了方便获得医疗服务,对自己的宠物信息进行管理以及对个人账户进行管理的服务,为宠物主提供全方位与宠物相关的医疗健康服务。普通用户用例如下图1所示。

图1 普通用户用例图
2.%2 医生
医生是宠物医院系统中的服务提供者,医生模块主要提供的是医疗服务和患者管理等功能。医生用户具备普通用户的所有功能,还具备服务功能,如在预约管理中,作为医生可以查看和受理对自己预约的订单,包括确认、修改和取消等,同时,医生还可以作为用户来服务其他医生,对自己专业信息进行修改、更新等,包括专业简介、擅长疾病、经验和出诊时间等,直接显示在医生页面上,方便患者查看。在诊疗服务里,可以为患者宠物开处方用药,医生根据自己的诊断结果,开药给患者宠物,同时,记录用药建议、注意事项等。医生可以管理宠物就诊的病历,可以新建、查看和更新。诊断、治疗和管理是由医生负责的,包括诊断记录、治疗方案和后续建议等。像普通用户一样,医生可以管理自己的账号,包括对账号进行充值、查看自己发布的评论、编辑个人资料、修改密码等;其次,可以管理自己的宠物,查询自己宠物的就诊历史,一体系统,医生的功能模块总体来说主要是提供专业医疗服务和管理患者预约和维护专业资料,为医生提供一个完善的平台和服务工具,医生系统功能模块如图2。

图2 医生用例图
3.%2 管理员
管理员是宠物医院系统中的最高权限,系统各个功能模块的设计围绕着系统全局管理、业务监督展开。管理员拥有最高系统管理权限,可以对系统进行各类操作,例如:用户管理:可以对其他管理员、医生、普通用户等用户进行增加、删除、禁用、重置等管理操作;医生管理:对医生资质进行管理,对医生提交的各种专业化信息、资质是否有效等进行管理,审核通过的医生才能进入系统;评论管理:对不符合要求的评论进行审核、编辑、删除等操作,维护系统的良好秩序;订单管理:查看和管理所有的服务订单和药品订单,修改订单状态,问题订单、订单统计等;药品管理:作为管理员还有一项重要的工作,就是添加新药品、修改药品信息、库存管理和药价制定等。管理员可以查看所有宠物的就诊病历,进行督察和质检。管理员同样拥有个人中心,包括管理自己的账号信息、查看自己的预约列表和购买列表、管理自己的宠物信息等。管理员功能模块主要关注的是对系统的全局性控制、业务流程控制和业务质量控制的实现,对医院业务提供全面的管理支持和业务决策。管理员用例如图3所示。

图3 管理员用例图
2. 宠物信息管理功能
宠物信息是系统最基本的功能,主要有宠物信息查询、信息登记、信息修改等功能。
系统提供宠物信息登记服务,用户可以对自己的宠物建立电子档案,记录宠物的基本信息和健康状况;提供宠物信息查询服务,用户可以根据自己的需求查看自己宠物的基本信息和健康状况;提供宠物信息修改服务,用户可以根据自己的需求修改宠物信息。
表1 宠物信息管理用例表
用例编号 | CW1 |
用例名称 | 宠物信息管理 |
用例概述 | 对宠物信息的基本管理 |
主参与者 | 所有用户 |
前置条件 | 用户登录成功,切换到我的宠物页面,点击对宠物信息进行管理 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW1a.用户管理宠物的信息 CW1b.系统根据用户操作对宠物信息进行更改并进行验证 CW1c.系统返回出结果 |
扩展事件流 | CW1b1.系统验证没有满足条件的宠物信息,要求重新输入 CW1b2.系统验证输入的格式错误,要求重新输入 |
3. 预约挂号功能
预约挂号系统实现功能预约挂号,即:预约挂号在线,预约号查询,预约挂号管理。
系统实现预约在线功能,用户根据自身情况与医生排班情况匹配,自主选医生、选时间进行预约;实现预约查询功能,用户可以查询自身预约状态情况;实现预约修改功能,用户可以在预约确认前对预约状态进行修改和取消。
对于管理员,系统提供预约管理功能,管理员可以查看、管理、修改全部的预约记录;提供预约统计功能,管理员可以对预约数据进行分析统计,了解医院预约情况,了解医院预约发展状况。
表2 预约挂号用例表
用例编号 | CW2 |
用例名称 | 预约挂号 |
用例概述 | 用户进行预约挂号 |
主参与者 | 普通用户 |
前置条件 | 用户登录成功,首页点击医生信息框,进入相应的医生界面 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW2a.用户填写预约的信息 CW2b.系统根据用户的预约信息进行验证 CW2c.系统保存预约信息 CW2d.系统返回出结果 |
扩展事件流 | CW2b1.系统验证没有满足条件的预约信息,要求重新输入 |
4. 医生管理功能
医生管理功能主要包括管理员对医生信息的管理、审核等功能。
对于管理员而言,系统提供每个医生的详细信息查询,即可以查询到个人的档案情况,并对其资质进行核对审核。
表3 医生管理用例表
用例编号 | CW3 |
用例名称 | 审核医生 |
用例概述 | 用户对医生进行审核 |
主参与者 | 管理员 |
前置条件 | 用户登录成功,点击审核管理,进入审核界面 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW3a.用户选中某个医生,点击审核按钮 CW3b.系统展示相应医生的详细信息 CW3c.用户点击审核按钮通过/不通过审核 CW3d.系统返回出结果 |
5. 药品管理功能
药品管理功能主要包括药品信息管理、库存管理、销售管理等功能。
对于医生,系统实现有药品查询,通过药品基本信息的查询,库存信息的查询,为医生开处方提供依据;通过开处方,医生根据诊断结果,开具宠物药品处方,给出药品、用量、用法。
表4 药品管理用例表
用例编号 | CW4 |
用例名称 | 药品信息管理 |
用例概述 | 对药品信息的基本管理 |
主参与者 | 管理员 |
前置条件 | 用户登录成功,切换到药品管理页面 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW4a.用户管理药品的信息 CW4b.系统根据用户操作对药品信息进行更改并进行验证 CW4c.系统返回出结果 |
扩展事件流 | CW4b1.系统验证没有满足条件的宠物信息,要求重新输入 CW4b2.系统验证输入的格式错误,要求重新输入 |
6. 就诊记录管理功能
就诊记录管理功能主要包括就诊记录创建、查询、统计等功能。
提供就诊记录管理功能,医生可以创建诊断和治疗过程中的病史就诊记录,记录宠物症状、诊断结果、诊疗方案等;提供就诊记录查询功能,医生可以查询宠物就诊的宠物历史,查询宠物的健康状况、治疗情况等;提供就诊记录统计功能,系统对就诊数据进行统计、分析,便于医院管理和医学科学研究。
表5 就诊记录管理用例表
用例编号 | CW5 |
用例名称 | 就诊记录信息管理 |
用例概述 | 对就诊记录信息的基本管理 |
主参与者 | 管理员 |
前置条件 | 用户登录成功,切换到就诊记录页面,点击对就诊记录进行管理 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW4a.用户管理药品的信息 CW4b.系统根据用户操作对药品信息进行更改并进行验证 CW4c.系统返回出结果 |
7. 评价反馈功能
评价反馈功能主要包括服务评价、意见反馈、评价管理等功能。
系统实现系统服务评价功能,用户可以对医生,对院环境评价、打分;实现意见反馈功能,用户可以对医院的服务提出自己的意见和建议;实现评价查询功能,可以查看自己提交的评价和反馈,医院的回复。
针对管理员,系统提供了评价管理功能,管理员可以查看、回复、管理所有的评价和反馈;提供评价统计功能,管理员可以统计和分析评价数据,了解医院的服务质量和用户体验满意度。
表6 评价反馈用例表
用例编号 | CW6 |
用例名称 | 评价反馈信息管理 |
用例概述 | 对评价信息的基本管理 |
主参与者 | 管理员 |
前置条件 | 用户登录成功,切换到评价管理页面 |
后置条件 | 系统中显示出本次操作的状态 |
基本事件流 | CW6a.用户管理评价信息 CW6b.系统根据用户操作对评价信息进行管理并进行验证 CW6c.系统返回出结果 |
(二)非功能需求
非功能需求是指系统除实现功能需求之外需要满足的其他方面需求,例如,性能、安全、可靠、易用等。对于宠物医院管理系统而言,非功能的需求包括以下几个方面:
1. 系统安全性需求
安全性是信息系统的生命线。对于一个宠物医院管理系统而言,系统安全性要求包括以下几个方面。
数据安全:系统应确保数据安全,也就是数据的机密性、完整性、可用性。系统应该采用加密算法对敏感数据进行保护,如用户的口令、支付数据等;应该建立备份、恢复等机制,防止数据的丢失;应该建立访问控制机制,防止数据被访问和更改。
审计跟踪:系统应当记录用户的重要操作和系统的重要事件,形成审计日志,以便出现安全问题时,可以跟踪审计。
2. 界面操作与响应需求
界面操作与响应是影响用户使用体验的关键因素,对于宠物医院管理系统,界面操作和响应需要满足以下需求:
响应速度:系统要有一定的响应速度,用户操作要有一定的反馈。通常系统的响应时间在1-3秒之内为佳,复杂的操作不能超过5秒,如果操作时间较长,系统要给出提示,避免使用户紧张。
一致性:系统界面应该符合设计风格一致、操作方式一致等原则,即颜色、字体、图标、按钮等等的一致性,操作流程、反馈方式的一致性,让用户快速适应、简单高效地操作。
3. 安装部署及兼容性需求
安装部署与兼容性是系统安装以及运行的重要保障,对于宠物医院管理系统安装部署和兼容性的要求包括以下几个方面:
安装部署及兼容性是系统安装以及运行的重要保障。
浏览器兼容:作为一款Web应用系统,宠物医院管理系统应兼容大部分的Web浏览器,例如Chrome、FFmpeg、Edge等,确保使用这些浏览器的用户都能访问宠物医院管理系统。
四、概要设计
概要设计是将系统开发中需求分析的结果进行系统整体设计和模块设计,作为系统详细设计和系统实施设计的依据,本章将从技术选型、技术架构设计以及模块设计方面对宠物医院管理系统进行概述。
(一)技术选型
1. 前端技术
1.1 Vue.js
Vue是一个用于构建用户界面的JavaScript框架,基于标准的HTML、CSS和JavaScript开发[5]。以其轻量级、高性能的标签,成为搭建现代交互式web界面的理想选择。Vue具有响应式数据绑定、组件化开发、虚拟DOM等特性,使得构建交互式和高性能的Web应用程序变得更加简单和高效[6]。其中,响应式绑定数据,自动追踪依赖关系,智能更新dom,无需开发者手动操作页面。宠物医院管理系统采用vue.js构建整个前端的用户界面,采用组件化开发的架构将复杂的界面抽象成一个个独立的组件,例如预约表格、宠物卡片、就诊记录列表等等,使得系统开发简单易维护。采用vue路由来管理单页应用的路径,实现页面平滑切换,无需刷新;采用vueex管理应用状态,解决跨组件通信,跨组件共享数据的问题;配合Element UI的组件库,快速统一美观地构建用户界面。Vue.js的模板语法和渐进式引入使得项目需求可以灵活的引入到系统中,在保证性能的情况下,让宠物主人和医院工作人员在体验上有一个良好的使用效果。
1.2 Element-ui
Element UI是基于vue的桌面应用组件库。它提供了统一的设计、组件和文档。ElementUI提供丰富的组件,统一的设计。Element UI包括近100个预定义组件,如表单组件、导航组件、数据展示、警告消息等,每一个组件的设计都非常讲究,为性能进行了优化。Element UI为宠物医院管理系统实现了全部系统前端界面的设计和实现,具有整体整齐美观的外形。系统应用Element UI中的栅格进行响应式布局。让应用系统能完美地展示于各个不同尺寸大小的设备上;应用系统中的表单组件来展示宠物记录、预约记录等结构化的数据,表单组件提供了排序、筛选、分页等操作;应用表单组件及验证功能对预约信息及宠物信息的数据采集和验证。系统还充分运用了Element UI提供的窗口、提示框、进度等组件,让系统操作者能够及时得到操作反馈,让系统的操作更加干净利落。Element UI组件的灵活定制性也使得系统开发人员能够根据宠物医院品牌特征对窗口色调和细节进行修改,打造自己系统的窗口。选用Element UI不仅是基于其技术层面的优势,还有其活跃的论坛讨论和频繁更新对系统日后维护和界面完善提供了良好的基础。
2.后端技术
2.1 Java
Java作为一种老牌的面向对象的、一次编写、到处运行、企业级应用强的语言,成为宠物医院管理系统后端开发的技术选型的首选技术。Java作为一种高级的面向对象的程序设计语言,具有面向对象、分布式、多线程等特点,因此其应用领域十分广泛[7]。Java可以满足医疗信息高并发、复杂的业务逻辑处理需求。系统中所有的业务逻辑均用Java来实现,包括用户认证、预约管理、就诊记录管理、药品库存管理等。系统充分利用了Java面向对象的特性,构建了良好的领域模型,将宠物、用户、预约、就诊记录等业务实体抽象成了相互联系的类,实现了业务逻辑的高度内聚和低耦合。Java强大的异常处理机制,保证了系统在出现异常时能够优雅地降级,保证了重要医疗信息的完整性和一致性。此外,在Java标准类库和第三方的开源社区中,有大量现成可用的工具类、模块,例如,数据校验、日期处理、安全加密等,能够极大地提高开发质量和编码质量。选择Java作为后期开发语言,不单单是技术方面的考虑,更多的是Java有成熟的企业应用经验和技术稳定性,能够为宠物医院管理系统的稳定运行和后期迭代提供保障。
2.2 SpringBoot
SpringBoot作为Java生态圈中轻量级的开发框架,以“约定优于配置”的设计理念降低了企业级应用程序的开发与配置复杂度。引入了Spring框架的核心功能,支持自动配置、内嵌服务器、健康检测等功能,使开发者可以迅速构建独立生产级别的应用程序。SpringBoot框架具有自动化配置和快速启动的特点,内部集成了多个工具和插件,有助于提高程序编写的效率[8]。SpringBoot框架作为宠物医院管理系统中的后端服务的核心框架,是处理HTTP请求、管理业务逻辑、调度数据访问的核心,引入SpringBoot框架通过利用Spring框架注入依赖实现松耦合组件设计,服务模块之间使用接口而非实现,提供可测试和维护的代码。基于Spring MVC的RESTful API提供统一数据访问接口,接受Vue前端的各种请求:登录认证、宠物信息管理、预约挂号、就诊记录等。基于SpringBoot的事务管理,确保预约状态修改、药品库存更新等操作事务原子性,避免数据不一致。基于Spring security实现角色的访问控制,为宠物主人(宠物)和医者、管理者提供不同的角色,确保系统安全。基于SpringBoot开箱即用,丰富的stater组件,整个项目聚焦业务逻辑实现,降低底技术实现细节,提升开发效率和系统质量。
3.数据库技术
3.1 MySQL
MySQL是一款被广泛应用的关系型数据库管理系统[9]。MySQL是一个高性能、可靠的、易用的数据库,非常符合宠物医院管理系统数据永久化存储的需要。MySQL基于客户端-服务器模型并以多用户功能进行操作,可很好地满足于解决宠物医院日常经营的数据操作问题。由于MySQL数据库具有开源的特性,对于开发人员来说使用非常方便,因此得以广泛应用[10]。系统中所有的核心业务数据包括用户信息,宠物档案,预约记录,就诊记录,药品库存等,都通过MySQL进行存储和管理。规范了数据库的设计,通过设置主外键关系约束,维护用户与宠物的绑定关系,与记录的绑定关系(就诊记录)等等,保证了数据的完整性和可信度。MySQL的事务处理能力也提供了系统具有ACID特性的保证,保证了多用户同时预约,或同时更新药品库存时的一致性和可靠性。数据的原子性、一致性、隔离性、持久性。系统采用MySQL自带的索引机制,对常用查询的字段添加索引,如:用户ID、宠物ID、预约日期等。索引的添加可以提升查询的性能。利用MySQL中的存储过程与触发器实现复杂的逻辑,例如:检测预约冲突、库存预警等。MySQL的应用不仅是因为MySQL的自身优势,MySQL拥有广泛的社区以及庞大的运维生态,能够保障系统的长久稳定与数据的安全。
(二)架构设计
整个系统的架构是采用了前后端分离的架构模式,整体架构清晰、逻辑清楚,是现代化软件工程设计的体现。系统的前端架构,采用以组件化设计为基础、Vue.js框架设计为核心的设计理念,将界面拆分成不同模块,提高代码的复用性以及可维护性。前端主要分为管理端admin和用户端front,分别通过路由的方式,实现不同功能页面的跳转和访问控制。管理端包含管理员、医生等功能,例如:医生管理、药品管理、订单管理等。用户端主要包含普通用户的功能,例如医院信息浏览、医生预约、在线咨询等。
后端部分采用SpringBoot模式构建高效服务层。后端架构采用MVC模式进行构建,明确MVC层次,划分了Controller层、Service层、Dao层,层次职责分明,耦合程度低。采用MySQL作为数据库,实现数据持久化,通过数据库架构,实现了包括用户信息、宠物信息、医疗信息、医药信息、预约下单等业务信息的数据管理;实现角色访问,区分角色,实现权限控制。
前后端采用RESTful API接口进行通信,采用HTTP协议。前后端接口命名和返回规范一致,易于扩展和维护,并内置文件上传模块,能够存储和管理宠物照片、医生证照等功能。在部署时,前后端静态资源和动态服务分离,增加了系统的可扩展性和负载能力。总体来讲,宠物医院管理在系统架构上比较合理,技术选用比较先进,满足了当前的业务需求,也考虑到了未来的功能扩展和系统优化,是一个比较优秀的软件工程案例。系统架构图如图4所示。

图4 系统架构图
(三)功能模块设计
1. 前台功能模块
1.1 登录注册模块
给用户使用系统提供入口,为用户提供了注册用户与登录用户,注册用户选择用户名个人信息与用户名(医生),用户名进行注册,表单核对,注册成功。登录用户输入用户名密码,登录账号,根据用户名角色不同跳转到不同页面。密码进行加密保存,账号进行保存。此步骤为登录,是使用系统第一步,此页面简洁清晰明了,简单易行。
1.2 我的预约订单模块
模块集中显示用户待审核、通过、完成、取消所有预约,可以看到预约的医生、宠物信息、预约时间、服务内容、金额等内容。支持取消未完成的预约,并自动退款。预约状态变更,随时查看预约状态。该部分与医生端构成服务闭环,即预约服务闭环。
1.3 已购买的药品模块
该模块保存用户所购所有药品内容,包括药品名称、型号、数量、单价、购买时间、用药说明等内容,查看药品内容,了解药品用法注意事项,保存购药历史,便于用户、医生查考用药。该模块与药品管理模块相互关联,确保药品内容正确。
1.4 我的宠物就诊病例模块
该模块集中展示用户宠物的所有就诊记录和病历信息。用户可以查看详细的诊断结果、治疗方案、用药建议和复诊安排等。病例按时间顺序排列,形成完整的医疗档案,便于追踪宠物健康状况的变化。系统支持按宠物筛选病例,方便多宠物家庭管理。该模块为用户提供了宠物健康状况的全面视图,增强了医疗服务的透明度。
1.5 我的宠物模块
该模块可以对自己宠物进行管理(新增宠物,编辑宠物资料,上传宠物照片等)。可以对自己宠物的基本信息(宠物品种、年龄、体重等)、免疫疫苗接种情况、过敏史等重要的健康信息记录,系统为每只宠物自动建立电子档案,关联就诊记录。该模块是预约和就诊的前提,保证患者就诊时有针对性的对宠物进行诊治,准确获取宠物基本信息。
1.6 我发布的评论模块
该模块用于查看并编辑自己发布过的评价,包括对医生服务的评价及对药物的评价,用户可以编辑和删除自己发布的评价,评价可以自动更新,由用户点评的星级评价及对药物或服务的文字点评构成,给其他用户选择医生提供参考。此模块帮助医院收集意见,提升医院服务,增加用户粘度,给用户话语权。
1.7 个人设置模块
此模块包括用户个人信息的管理编辑和修改登录密码,修改用户信息如联系方式、地址等信息,方便系统正确获取用户信息,修改用户的个人密码,验证原密码确保账户安全。这个模块是管理用户个人信息的基础,确保用户信息的真实性和安全性,为其他功能提供数据支持。
2. 后台功能模块
2.1 用户管理模块
本模块是用户管理,包括修改用户、查新用户、用户封禁。管理员查看用户列表,对用户进行筛选(普通用户、医生用户)查看用户详细信息,对用户进行添加,用户信息修改,用户密码修改,问题账户禁用。用户数据统计,包括用户注册情况统计,用户分布情况统计等信息,帮助系统管理员管理用户。用户管理是本模块核心,维护系统用户数据,保证系统安全。
2.2 审核管理模块
该模块是对该系统需要审核的内容进行审核,包括医生审核和评论管理两个子模块,医生审核支持管理员对医生申请的资格、认证的专业资格以及背景信息进行审核,并对医生进行通过审核和不通过审核的操作。评论管理支持对用户评论进行审核,删除违规评论,维持系统秩序。该模块是对系统内容审核的关键模块,维护整个医疗系统的服务质量和用户之间的良性互动。
2.3 订单管理模块
该模块综合管理系统包含的交易订单分为服务订单和药品订单,管理员可查看订单所有数据,包括订单状态、订单支付、订单用户等,该模块对订单状态进行增、删、退款操作,订单数据分析功能包括销售趋势、热销服务、收入分布等,便于经营决策。该模块是系统业务流程管理的核心模块,确保交易成功进行、问题及时解决。
2.4 其他管理模块
药品管理子模块实现药品的添加、编辑、删除,设定药价,管理库存,支持上传药品图片,添加药品说明,分类管理药品目录,宠物就诊病历子模块支持病例的全球查询、管理,管理员可以查看所有动物的就诊记录,实现质量控制和质量监管,此模块实现了系统专业性功能的管理,实现医疗服务、医药供应的规范化、专业化。
2.5 个人中心模块
它是管理员个人设置的账户,修改个人的资料、密码。此模块和前台个人设置模块相同,但权限大于前台设置,可设置更多系统级的设置。管理员可以查看系统日志,系统参数设置,通知模板管理等。它是管理员个人操作空间,方便管理员系统管理操作,确保了管理员账户的安全和个性化设定。
这些功能模块共同构成了宠物医院管理系统的业务流程。其中,前台模块侧重于用户体验和服务获取,后台模块负责数据管理和业务监控,前后台模块共同支撑了整个医院的运营和服务提供。宠物医院管理系统总功能模块图如下所示,图5。

图5 系统功能模块图
五、数据库设计
数据库设计是系统设计的关键,决定着系统是否性能可靠,是否容易扩展。数据库良好的设计有助于系统功能的实现,满足用户的各项要求。本章从概念模型设计和逻辑结构设计两方面,对宠物医院管理系统数据库进行设计。
(一)概念模型设计
数据库概念模型
实体设计
该系统实体分为用户、宠物、医生、药品、预约服务、开药记录、就诊病例、评价、评论和账单实体。
(1) 用户实体
用户实体有用户ID、注册手机号、密码、头像、昵称、状态、禁用原因、注册时间、性别、个性签名、角色、学校、专业等属性,用户实体图如图6所示。

图6 用户实体图
(2) 宠物实体
宠物实体有用户ID、用户ID、年龄、宠物名字、宠物类型、宠物照片、宠物性别、简介、体重、创建时间等属性,宠物实体图如图7所示。

图7 宠物实体图
(3) 医生实体
医生实体有ID、电子照、擅长领域、审核状态、审核原因不通过、个人简介、性别、年龄、真实姓名、毕业院校、学历、是否发布、总评分、评价人数等属性宠物实体图如图8所示。

图8 医生实体图
(4) 预约服务实体
预约服务实体有ID、患者用户ID、医生ID、创建时间、是否接受预约、预约日期、预约时间、问题描述、是否完成、是否评价、项目服务、服务地址、价格等属性,预约服务实体图如图9所示。

图9 预约服务实体图
(5) 开药记录实体
开药记录实体有ID、患者用户ID、医生ID、药品单价、药品ID、购买数量、创建时间、退款状态、药品名称、批准文号、实际支付金额、宠物ID、宠物名字等属性,预约服务实体图如图10所示。

图10 开药记录实体图
(6) 药品实体
药品实体有ID、药品图片、有效期、批准问号、生产厂家、库存数量、价格、药品名称等属性,预约服务实体图如图11所示。

图11 药品实体图
(7) 就诊病例实体
就诊病例实体有ID、患者用户ID、医生ID、创建时间、宠物ID、宠物名字、病情描述、诊疗方案等属性,预约服务实体图如图12所示。

图12 就诊病例实体图
(8) 账单实体
账单实体有ID、用户ID、金额类型、金额、创建时间、描述等属性,账单实体图如图13所示。

图13 账单实体图
(9) 评论实体
账单实体有ID、用户ID、评论内容、评论时间、回复评论ID、回复用户ID、关联帖子ID、保留字段、点赞数量等属性,评论实体图如图14所示。

图14 评论实体图
(10) 评价实体
评价实体有ID、用户ID、评分、创建时间、医生ID、关联预约ID、评语等属性,评论实体图如图15所示。

图15 评价实体图
综上所述,总E-R图如下图20所示。

图16 总体E-R图
(二)逻辑结构设计
1.数据库逻辑结构
1.1 表设计
(1) 预约服务表
预约服务管理用户的预约信息,包括医生选择、时间、支付状态及宠物关联。预约服务表如下表7所示。
表7 预约服务表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 预约 ID | 否 | int | - | 是 | id | 预约 ID |
patuid | 患者用户 ID | 是 | int | - | 否 | patuid | 患者用户 ID |
docuid | 医生 ID | 是 | int | - | 否 | docuid | 医生 ID |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
isaccept | 是否接受预约(0,1,-1) | 是 | varchar | 255 | 否 | isaccept | 是否接受预约(0,1,-1) |
appdate | 预约日期 | 是 | varchar | 255 | 否 | appdate | 预约日期 |
appts | 预约时间 | 是 | varchar | 255 | 否 | appts | 预约时间 |
pdesc | 问题描述 | 是 | varchar | 255 | 否 | pdesc | 问题描述 |
isend | 是否完成(0,1) | 是 | varchar | 255 | 否 | isend | 是否完成(0,1) |
iseval | 是否评价(0,1) | 是 | varchar | 255 | 否 | iseval | 是否评价(0,1) |
apros | 项目服务 | 是 | varchar | 255 | 否 | apros | 项目服务 |
workaddress | 服务地址 | 是 | varchar | 255 | 否 | workaddress | 服务地址 |
price | 价格 | 是 | decimal(10,2) | - | 否 | price | 价格 |
ispay | 是否支付(0,1) | 是 | varchar | 255 | 否 | ispay | 是否支付(0,1) |
payts | 支付时间 | 是 | varchar | 255 | 否 | payts | 支付时间 |
isr | 是否退款(0,1) | 是 | varchar | 255 | 否 | isr | 是否退款(0,1) |
rts | 退款时间 | 是 | varchar | 255 | 否 | rts | 退款时间 |
petid | 宠物 ID | 是 | int | - | 否 | petid | 宠物 ID |
petname | 宠物名字 | 是 | varchar | 255 | 否 | petname | 宠物名字 |
(2) 开药记录表
开药记录表记录用户购买的药品信息,包括数量、价格、退款状态及订单详情。开药记录表如下表8所示。
表8 开药记录表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 记录 ID | 否 | int | - | 是 | id | 记录 ID |
patuid | 患者用户 ID | 是 | int | - | 否 | patuid | 患者用户 ID |
docuid | 医生 ID | 是 | int | - | 否 | docuid | 医生 ID |
price | 药品单价 | 是 | decimal(10,2) | - | 否 | price | 药品单价 |
did | 药品 ID | 是 | int | - | 否 | did | 药品 ID |
buynum | 购买数量 | 是 | int | - | 否 | buynum | 购买数量 |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
isr | 退款状态 | 是 | varchar | 255 | 否 | isr | 退款状态 |
dname | 药品名称 | 是 | varchar | 255 | 否 | dname | 药品名称 |
approval_number | 批准文号 | 是 | varchar | 255 | 否 | approval_number | 批准文号 |
paymoney | 实际支付金额 | 是 | decimal(10,2) | - | 否 | paymoney | 实际支付金额 |
petid | 宠物 ID | 是 | int | - | 否 | petid | 宠物 ID |
petname | 宠物名字 | 是 | varchar | 255 | 否 | petname | 宠物名字 |
ispay | 是否支付(0,1) | 是 | varchar | 255 | 否 | ispay | 是否支付(0,1) |
payts | 支付时间 | 是 | varchar | 255 | 否 | payts | 支付时间 |
rts | 退款时间 | 是 | varchar | 255 | 否 | rts | 退款时间 |
rmoney | 退款金额 | 是 | decimal(10,2) | - | 否 | rmoney | 退款金额 |
rmsg | 退款备注 | 是 | varchar | 255 | 否 | rmsg | 退款备注 |
orderno | 订单号 | 是 | varchar | 255 | 否 | orderno | 订单号 |
rnum | 退货数量 | 是 | int | - | 否 | rnum | 退货数量 |
(3) 就诊病例表
就诊病例表存储宠物的病情描述、诊疗方案及关联医生与患者信息。就诊病例表如下表9所示。
表9 就诊病例务表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 病历 ID | 否 | int | - | 是 | id | 病历 ID |
patuid | 患者用户 ID | 是 | int | - | 否 | patuid | 患者用户 ID |
docuid | 医生 ID | 是 | int | - | 否 | docuid | 医生 ID |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
petid | 宠物 ID | 是 | int | - | 否 | petid | 宠物 ID |
petname | 宠物名字 | 是 | varchar | 255 | 否 | petname | 宠物名字 |
cdesc | 病情描述 | 是 | varchar | 255 | 否 | cdesc | 病情描述 |
cdeal | 诊疗方案 | 是 | varchar | 255 | 否 | cdeal | 诊疗方案 |
(4) 评论表
评论表支持用户发表评论、回复及点赞,用于社交互动或服务反馈。开药记录表如下表10所示。
表10 评论表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 评论 ID | 否 | int | - | 是 | id | 评论 ID |
uid | 用户 ID | 是 | int | - | 否 | uid | 用户 ID |
context | 评论内容 | 是 | longtext | - | 否 | context | 评论内容 |
cts | 评论时间 | 是 | varchar | 255 | 否 | cts | 评论时间 |
hf_id | 回复评论 ID | 是 | int | - | 否 | hf_id | 回复评论 ID |
hf_uid | 回复用户 ID | 是 | int | - | 否 | hf_uid | 回复用户 ID |
fid | 关联帖子 ID | 是 | int | - | 否 | fid | 关联帖子 ID |
ctype | 保留字段 | 是 | varchar | 255 | 否 | ctype | 保留字段 |
hitlikenum | 点赞数量 | 是 | int | - | 否 | hitlikenum | 点赞数量 |
(5) 医生表
医生表记存储医生资质信息,如擅长领域、评分、科室及服务项目。开药记录表如下表11所示。
表11 医生表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 医生 ID(与用户表一致) | 否 | int | - | 是 | id | 医生 ID(与用户表一致) |
photo | 电子照 | 是 | varchar | 255 | 否 | photo | 电子照 |
advantage | 擅长领域 | 是 | varchar | 255 | 否 | advantage | 擅长领域 |
sh | 审核状态(0,1,-1) | 是 | varchar | 255 | 否 | sh | 审核状态(0,1,-1) |
msg | 审核不通过原因 | 是 | varchar | 255 | 否 | msg | 审核不通过原因 |
udesc | 个人简介 | 是 | longtext | - | 否 | udesc | 个人简介 |
sex | 性别 | 是 | varchar | 255 | 否 | sex | 性别 |
age | 年龄 | 是 | int | - | 否 | age | 年龄 |
realname | 真实姓名 | 是 | varchar | 255 | 否 | realname | 真实姓名 |
school | 毕业学校 | 是 | varchar | 255 | 否 | school | 毕业学校 |
educational | 学历 | 是 | varchar | 255 | 否 | educational | 学历 |
ispub | 是否发布(0,1) | 是 | varchar | 255 | 否 | ispub | 是否发布(0,1) |
eval | 总评分 | 是 | float(10,1) | - | 否 | eval | 总评分 |
evalnum | 评价人数 | 是 | int | - | 否 | evalnum | 评价人数 |
avgeval | 平均评分 | 是 | float(10,1) | - | 否 | avgeval | 平均评分 |
workaddress | 工作地址 | 是 | varchar | 255 | 否 | workaddress | 工作地址 |
dept | 科室 | 是 | varchar | 255 | 否 | dept | 科室 |
pros | 服务项目 | 是 | longtext | - | 否 | pros | 服务项目 |
(6) 药品表
药品表管理药品库存及信息,包括名称、价格、有效期及生产厂家。开药记录表如下表12所示。
表12 药品表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 药品 ID | 否 | int | - | 是 | id | 药品 ID |
dname | 药品名称 | 是 | varchar | 255 | 否 | dname | 药品名称 |
price | 价格 | 是 | decimal(10,2) | - | 否 | price | 价格 |
num | 库存数量 | 是 | int | - | 否 | num | 库存数量 |
supplier_name | 生产厂家 | 是 | varchar | 255 | 否 | supplier_name | 生产厂家 |
approval_number | 批准文号 | 是 | varchar | 255 | 否 | approval_number | 批准文号 |
expiration_date | 有效期 | 是 | varchar | 255 | 否 | expiration_date | 有效期 |
dimg | 药品图片 | 是 | varchar | 255 | 否 | dimg | 药品图片 |
(7) 评价表
评论表记录用户对医生的评分与评语,关联具体预约订单。开药记录表如下表13所示。
表13 评价表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 评价 ID | 否 | int | - | 是 | id | 评价 ID |
eval | 评分 | 是 | float(10,1) | - | 否 | eval | 评分 |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
uid | 用户 ID | 是 | int | - | 否 | uid | 用户 ID |
docuid | 医生 ID | 是 | int | - | 否 | docuid | 医生 ID |
app_id | 关联预约 ID | 是 | int | - | 否 | app_id | 关联预约 ID |
econt | 评语 | 是 | varchar | 255 | 否 | econt | 评语 |
(8) 宠物表
宠物表维护宠物的基本信息,如类型、年龄、体重及所属用户。开药记录表如下表14所示。
表14 宠物表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 宠物 ID | 否 | int | - | 是 | id | 宠物 ID |
uid | 用户 ID | 是 | int | - | 否 | uid | 用户 ID |
age | 年龄 | 是 | varchar | 255 | 否 | age | 年龄 |
pname | 宠物名字 | 是 | varchar | 255 | 否 | pname | 宠物名字 |
ptype | 宠物类型 | 是 | varchar | 255 | 否 | ptype | 宠物类型 |
pphoto | 宠物照片 | 是 | varchar | 255 | 否 | pphoto | 宠物照片 |
sex | 宠物性别 | 是 | varchar | 255 | 否 | sex | 宠物性别 |
pdesc | 简介 | 是 | varchar | 255 | 否 | pdesc | 简介 |
pweight | 体重 | 是 | varchar | 255 | 否 | pweight | 体重 |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
(9) 账单表
账单表跟踪用户的资金变动,记录支付、退款及交易描述。开药记录表如下表15所示。
表15 账单表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 记录 ID | 否 | int | - | 是 | id | 记录 ID |
uid | 用户 ID | 是 | int | - | 否 | uid | 用户 ID |
mtype | 金额类型(+/-) | 是 | varchar | 255 | 否 | mtype | 金额类型(+/-) |
money | 金额 | 是 | decimal(10,2) | - | 否 | money | 金额 |
cts | 创建时间 | 是 | varchar | 255 | 否 | cts | 创建时间 |
msg | 描述 | 是 | varchar | 255 | 否 | msg | 描述 |
(10) 用户表
用户表管理用户账户信息,包括角色权限、联系方式及余额。开药记录表如下表16所示。
表16 用户表
字段名称 | 字段意义 | 为空要求 | 字段类型 | 字段长度 | 主键 | 字段名称 | 字段意义 |
id | 用户 ID | 否 | int | - | 是 | id | 用户 ID |
phone | 注册手机号 | 是 | varchar | 255 | 否 | phone | 注册手机号 |
upass | 密码 | 是 | varchar | 255 | 否 | upass | 密码 |
faceimg | 头像 | 是 | varchar | 255 | 否 | faceimg | 头像 |
nickname | 昵称 | 是 | varchar | 255 | 否 | nickname | 昵称 |
state | 状态(1启用0禁用) | 是 | varchar | 255 | 否 | state | 状态(1启用0禁用) |
msg | 禁用原因 | 是 | varchar | 255 | 否 | msg | 禁用原因 |
cts | 注册时间 | 是 | varchar | 255 | 否 | cts | 注册时间 |
sex | 性别 | 是 | varchar | 255 | 否 | sex | 性别 |
ulike | 个性签名 | 是 | varchar | 255 | 否 | ulike | 个性签名 |
role | 角色(admin/pt/doc) | 是 | varchar | 255 | 否 | role | 角色(admin/pt/doc) |
school | 学校 | 是 | varchar | 255 | 否 | school | 学校 |
major | 专业 | 是 | varchar | 255 | 否 | major | 专业 |
age | 年龄 | 是 | int | - | 否 | age | 年龄 |
邮箱 | 是 | varchar | 255 | 否 | 邮箱 | ||
realname | 真实姓名 | 是 | varchar | 255 | 否 | realname | 真实姓名 |
money | 余额 | 是 | float(10,0) | - | 否 | money | 余额 |
六、详细设计与系统实现
详细设计与系统实现,是将系统需求及概要设计的结果转化为系统实现功能,是系统开发的核心。本章将分别从服务接口设计、安全认证设计、业务功能设计和权限管理设计4个方面,具体介绍宠物医院管理系统设计与实现。
(一)服务接口
1. 服务接口规范
为了确保前后端的稳定性和可维护性,本系统制定了统一的接口规范,具体包括:
请求方法规范:使用HTTP标准方法,如GET代表获取,POST代表创建,PUT代表更新,DELETE代表删除。如GET users表示获取用户列表,POST users表示创建,PUT users={id}表示更新用户,DELETE={id}表示删除用户。
错误处理规范:当请求处理出错时,接口返回统一格式的错误信息,包含错误码和错误消息,便于前端进行错误处理和提示。系统定义了一系列标准错误码,如400表示请求参数错误,401表示未授权,404表示资源不存在,500表示服务器内部错误等。
2. 服务接口适配器
服务接口适配器是连接前端请求和后端服务的中间层,负责请求的接收、参数验证、权限检查和响应封装等工作。本系统采用Spring MVC框架实现接口适配器,主要包括以下几个组件:
异常处理器(ExceptionHandler):负责捕获和处理系统中的异常,将异常转换为统一格式的错误响应返回给前端。系统实现了全局异常处理器GlobalExceptionHandler,能够处理各种类型的异常,如参数验证异常、业务逻辑异常、系统运行异常等。
3. 服务接口实现
服务接口的实现是将接口规范转化为具体代码的过程。本系统基于Spring Boot框架,使用注解方式定义和实现RESTful接口。以用户管理模块为例,其主要接口实现如下:
@PostMapping("/login")
public Result login(@RequestBody UserLoginDTO userLoginDTO) {
// 参数验证
if (StringUtils.isEmpty(userLoginDTO.getUsername()) || StringUtils.isEmpty(userLoginDTO.getPassword())) {
return Result.error(ResultCode.PARAM_ERROR, "用户名和密码不能为空");
}
// 调用服务
try {
String token = userService.login(userLoginDTO);
return Result.success(token);
} catch (BusinessException e) {
return Result.error(e.getCode(), e.getMessage());
}
}
通过以上服务接口设计与实现,完成了系统前后台的分离和交互,系统各模块以统一、规范的形式对系统中的数据进行访问。
(二)安全认证
1. 用户认证
认证是用户身份鉴别,认证是用户身份鉴别,用户认证是用户身份鉴别用户身份鉴别。将用户的身份鉴别是本用户的过程,本系统是采用JWT(JSON Web Token)进行认证,主要经过以下几个过程:
JWT的生成:JWT由三个部分组成,分别是头部(Header)、载荷(Payload)以及签名(Signature)。其中,头部(Header)涵盖了令牌类型、签名算法等信息;载荷(Payload)包含用户ID、用户名、角色等内容;签名(Signature)则是运用密钥对头部和载荷进行加密与校验。
令牌刷新:JWT令牌有效期短暂,为了安全起见,令牌即将到期,设置了令牌刷新机制,刷新令牌,获取新的令牌,无需再次登录。
2. 权限认证
权限认证是在用户认证的前提下,根据用户的角色、权限,控制用户对该系统中的资源进行权限范围的访问,使用基于角色的RBAC模型,主要分以下几方面。
角色:定义了用户角色(用户user)、医生角色(DOctor)、管理员(Admin)。
权限认证的具体实现如下:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresRole {
String value();
}
通过以上安全认证机制的实现和设计,系统实现了对用户的可信任认证和授权,完成了对资源的授权和认证,保障了系统的安全,也保障了数据的真实安全。
(三)业务流程描述
1. 用户注册登录流程
用户访问系统首页,点击“登录”按钮,进入登录页面;输入用户名和密码;点击“登录”按钮,系统验证用户的身份;如果验证通过,系统允许用户登录,并根据用户类型跳转到相应的首页;如果验证不通过,系统返回错误提示,用户需要重新输入用户名和密码。用户注册登录流程如图17所示。

图17 登陆注册流程图
2. 宠物信息管理流程
用户登录系统后,进入宠物管理页面,点击“添加宠物”按钮,填写宠物信息,包括名称、品种、年龄、性别、体重等,点击“提交”按钮,系统验证用户输入的信息,如果验证通过,系统创建宠物档案,并返回添加成功提示,如果验证不通过,系统返回错误提示,用户需要修改信息重新提交。宠物信息管理流程如图18所示。

图18 宠物信息管理流程图
3. 预约挂号流程
医生登录系统后,进入预约管理页面,查看待确认的预约记录,选择需要确认的预约,查看详细信息,如果同意预约,点击“确认”按钮,系统更新预约状态为“已确认”,并通知用户,如果不同意预约,点击“拒绝”按钮,填写拒绝原因,系统更新预约状态为“已拒绝”,并通知用户。预约挂号管理流程如图19所示。

图19 预约挂号流程图
4. 就诊管理流程
医生登录系统后,进入就诊管理页面,选择当前预约的宠物,点击“创建就诊记录”按钮,填写就诊信息,包括症状、诊断结果、治疗方案等,点击“提交”按钮,系统验证医生输入的信息,如果验证通过,系统创建就诊记录,并返回创建成功提示;如果验证不通过,系统返回错误提示,医生需要修改信息重新提交。就诊管理流程如图20所示。

图20 就诊管理流程图
(四)业务模块
1. 用户管理模块
用户管理模块,系统用户管理,包括:用户注册、登录、管理等功能。用户管理页面如图21所示:

图21 用户管理界面图
该模块的时序图如图22所示。

图22 用户管理时序图
该模块的主要实现代码如下:
@Override
public void register(UserRegisterDTO userRegisterDTO) throws BusinessException {
// 检查用户名是否已存在
User existUser = userMapper.selectByUsername(userRegisterDTO.getUsername());
if (existUser != null) {
throw new BusinessException(ResultCode.USER_EXIST, "用户名已存在");
}
// 创建用户对象
User user = new User();
user.setUsername(userRegisterDTO.getUsername());
user.setPassword(DigestUtils.md5DigestAsHex(userRegisterDTO.getPassword().getBytes())); // 密码加密
user.setName(userRegisterDTO.getName());
user.setGender(userRegisterDTO.getGender());
user.setAge(userRegisterDTO.getAge());
user.setPhone(userRegisterDTO.getPhone());
user.setEmail(userRegisterDTO.getEmail());
user.setAddress(userRegisterDTO.getAddress());
user.setRole("USER"); // 默认角色为普通用户
user.setStatus("NORMAL"); // 默认状态为正常
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
// 保存用户
userMapper.insert(user);
}
@Override
public String login(UserLoginDTO userLoginDTO) throws BusinessException {
// 查询用户
User user = userMapper.selectByUsername(userLoginDTO.getUsername());
if (user == null) {
throw new BusinessException(ResultCode.USER_NOT_EXIST, "用户不存在");
}
// 验证密码
String encryptPassword = DigestUtils.md5DigestAsHex(userLoginDTO.getPassword().getBytes());
if (!user.getPassword().equals(encryptPassword)) {
throw new BusinessException(ResultCode.PASSWORD_ERROR, "密码错误");
}
// 检查用户状态
if (!"NORMAL".equals(user.getStatus())) {
throw new BusinessException(ResultCode.USER_DISABLED, "用户已禁用");
}
// 生成令牌
return JwtUtil.generateToken(user);
}
}
2. 个人编辑资料模块
用户可以修改头像、姓名、性别、年龄、手机号、邮箱、职业、爱好等个人简介。个人资料界面如图23所示。

图23 个人资料界面图
该模块的时序图如图24所示。

图24 个人中心时序图
该模块的主要实现代码如下:
@RequestMapping("/save")
public MessUntil save(CwUsers o) {
MessUntil mess=new MessUntil();
if(o.getPhone()==null || o.getPhone().trim().length()==0)return mess.error("请输入手机号");
CwUsers ol=usersService.getByPhone(o.getPhone());
if(o.getId()==null){
if(ol!=null)return mess.error("手机号已存在");
if(o.getUpass()==null||o.getUpass().trim().length()==0)o.setUpass(MD5Until.getMD5( Sys.pwd ) );
o.setState("1");
o.setFaceimg(Sys.Upimg.noimg);
o.setMoney(0f);
usersService.save(o);
}else{
if(ol!=null&&!ol.getId().equals(o.getId()))return mess.error("手机号已存在");
usersService.updateById(o);
}
return mess.succ();
}
3. 预约挂号模块
预约挂号模块负责预约挂号的管理,包括在线预约、预约查询、预约管理等功能。预约挂号界面图如图25所示。

图25 预约挂号界面图
该模块的时序图如图26所示。

图26 预约挂号时序图
该模块的主要实现代码如下:
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwApp u ) {
MessUntil mess=new MessUntil();
PageHelper.startPage(pageNo,pageSize," id desc ");
List<CwApp> li=appService.getListJoin(u);
PageInfo<CwApp> pageInfo = new PageInfo(li,pageSize);
for(CwApp a:pageInfo.getList()){
List<CwPet> petli =new ArrayList<>();
if(a.getPetid()!=null ){
CwPet pp=petService.getIdJoin(a.getPetid());
if(pp!=null)petli.add(pp);
}
a.setPetli(petli);
}
return mess.succ(pageInfo);
}
4. 药品管理模块
药品管理模块实现药品信息的增删改查,包括药品名称、价格、库存管理和药品订单处理。药品管理界面图如图27所示。

图27 药品管理界面图
该模块的时序图如图28所示。

图28 药品管理时序图
该模块的主要实现代码如下:
@GetMapping("/list")
public List<Drug> list() {
return drugService.findAll();
}
@PostMapping("/add")
public Result add(@RequestBody Drug drug) {
drugService.save(drug);
return Result.success();
}
@PostMapping("/update")
public Result update(@RequestBody Drug drug) {
drugService.update(drug);
return Result.success();
}
@DeleteMapping("/delete/{id}")
public Result delete(@PathVariable Integer id) {
drugService.deleteById(id);
return Result.success();
}
}
5. 宠物就诊病例模块
宠物就诊记录模块,用于记录宠物就诊记录,如症状、诊断、方案、医嘱、医生建立病历,查看病历。宠物就诊病例界面如图29所示。

图29 宠物就诊界面图
该模块的时序图如图30所示。

图30 宠物就诊病例时序图
该模块的主要实现代码如下:
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwCase u) {
MessUntil mess = new MessUntil();
PageHelper.startPage(pageNo, pageSize, " id desc ");
List<CwCase> li = caseService.getListJoin(u);
PageInfo<CwCase> pageInfo = new PageInfo(li, pageSize);
for(CwCase a : pageInfo.getList()) {
List<CwPet> petli = new ArrayList<>();
if(a.getPetid() != null) {
CwPet pp = petService.getIdJoin(a.getPetid());
if(pp != null) petli.add(pp);
}
a.setPetli(petli);
}
return mess.succ(pageInfo);
}
@RequestMapping("/save")
public MessUntil save(CwCase a) {
MessUntil mess = new MessUntil();
if(a.getId() == null) {
a.setCts(DateUtils.getNowDateString());
}
caseService.saveOrUpdate(a);
return mess.succ("操作成功");
}
@RequestMapping("del")
public MessUntil del(Integer id) {
MessUntil mess = new MessUntil();
if(id == null) return mess.error("参数错误");
try {
caseService.removeById(id);
} catch (Exception e) {
return mess.error("删除失败,请先删除关联数据");
}
return mess.succ();
}
}
6. 宠物医生审核管理
宠物医生审核管理,审核宠物医生资质,包括专业审核、资质认证、医生服务,宠物医生审核界面如图31所示。

图31 宠物医生审核界面图
该模块的时序图如图32所示。

图32 宠物医生审核时序图
该模块的主要实现代码如下:
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwDoctor u) {
MessUntil mess = new MessUntil();
String orderby = " id desc ";
if(u.getOrderby() != null) {
if(u.getOrderby().equals("rand")) orderby = " rand() ";
}
PageHelper.startPage(pageNo, pageSize, orderby);
List<CwDoctor> li = doctorService.getlist(u);
PageInfo<CwDoctor> pageInfo = new PageInfo(li, pageSize);
return mess.succ(pageInfo);
}
@RequestMapping("/update")
public MessUntil update(CwDoctor o) {
MessUntil mess = new MessUntil();
CwDoctor ol = doctorService.getById(o.getId());
if(ol == null || ol.getIspub() == null) {
o.setIspub("2");
o.setSh("0");
}
doctorService.saveOrUpdate(o);
return mess.succ();
}
@RequestMapping("/info")
public MessUntil info(Integer id) {
MessUntil mess = new MessUntil();
CwDoctor ol = doctorService.getById(id);
return mess.succ(ol);
}
@RequestMapping("/detail")
public MessUntil detail(Integer id) {
MessUntil mess = new MessUntil();
CwDoctor o = doctorService.getById(id);
if(o != null && o.getSh() != null && o.getSh().equals("1") && o.getIspub() != null && o.getIspub().equals("1")) {
return mess.succ(o);
}
return mess.error("该数据不存在或待审核");
}
}
7. 评论管理
评论管理功能为用户提供对医生服务评价反馈,支持对医生服务评论的发布、查看、管理功能,管理员可以对不合理评论进行审核、处理,确保平台评论环境的健康。评论界面如图33所示。

图33 评论管理界面图
该模块的时序图如图34所示。

图34 评论管理时序图
该模块的主要实现代码如下:
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwEval u) {
MessUntil mess = new MessUntil();
PageHelper.startPage(pageNo, pageSize, " id desc ");
List<CwEval> li = evalService.getListJoin(u);
PageInfo<CwEval> pageInfo = new PageInfo(li, pageSize);
return mess.succ(pageInfo);
}
@RequestMapping("/save")
public MessUntil save(CwEval o) {
MessUntil mess = new MessUntil();
o.setCts(DateUtils.getNowDateTsString());
evalService.saveOrUpdate(o);
// 更新预约状态为已评价
CwApp a = new CwApp();
a.setIseval("1");
a.setId(o.getAppId());
appService.updateById(a);
// 更新医生评分
CwDoctor l = doctorService.getById(o.getDocuid());
Float eval = (l.getEval() == null ? 0 : l.getEval()) + o.getEval();
Integer evalnum = (l.getEvalnum() == null ? 0 : l.getEvalnum()) + 1;
l.setEval(eval);
l.setEvalnum(evalnum);
l.setAvgeval(eval / evalnum);
doctorService.updateById(l);
return mess.succ(o);
}
@RequestMapping("info")
public MessUntil info(CwEval u) {
MessUntil mess = new MessUntil();
List<CwEval> li = evalService.getListJoin(u);
return mess.succ(li);
}
@RequestMapping("del")
public MessUntil del(Integer id) {
MessUntil mess = new MessUntil();
if(id == null) return mess.error("参数错误");
try {
evalService.removeById(id);
} catch (Exception e) {
return mess.error("删除失败,请先删除关联数据");
}
return mess.succ();
}
8. 服务订单管理
服务订单管理包括服务订单的预约、服务订单的接收、服务订单处理、服务订单监控、服务订单异常管理。服务订单管理包括用户查看服务订单状态查看、历史服务订单、医生服务订单接受、接收服务订单预约申请、管理员服务订单查看全量、管理服务订单异常。实现订单状态实时查询,订单包括状态待确认、已接收、已完成、已取消。服务订单管理界面图如图35所示。

图35 服务订单管理界面图
该模块的时序图如图36所示。

图36 服务订单时序图
该模块的主要实现代码如下:
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwApp u) {
MessUntil mess = new MessUntil();
PageHelper.startPage(pageNo, pageSize, " id desc ");
List<CwApp> li = appService.getListJoin(u);
PageInfo<CwApp> pageInfo = new PageInfo(li, pageSize);
// 关联宠物信息
for(CwApp a : pageInfo.getList()) {
List<CwPet> petli = new ArrayList<>();
if(a.getPetid() != null) {
CwPet pp = petService.getIdJoin(a.getPetid());
if(pp != null) petli.add(pp);
}
a.setPetli(petli);
}
return mess.succ(pageInfo);
}
9. 我的宠物管理
我的宠物功能提供宠物信息管理功能,创建、修改、编辑宠物信息,包括品种、年龄、体重等信息,宠物管理UI界面如图37所示。

图37 我的宠物管理界面图
该模块的时序图如图38所示。

图38 我的宠物时序图
该模块的主要实现代码如下:
@RequestMapping("/list")
public MessUntil page(CwPet u) {
MessUntil mess = new MessUntil();
List<CwPet> li = petService.getListJoin(u);
return mess.succ(li);
}
@RequestMapping("/page")
public MessUntil page(@RequestParam(value="pageNo",defaultValue="1")int pageNo,
@RequestParam(value="pageSize",defaultValue="10")int pageSize, CwPet u) {
MessUntil mess = new MessUntil();
PageHelper.startPage(pageNo, pageSize, " id desc ");
List<CwPet> li = petService.getListJoin(u);
PageInfo<CwPet> pageInfo = new PageInfo(li, pageSize);
return mess.succ(pageInfo);
}
(四)权限管理
1. 角色管理
角色管理是权限管理的基础,它决定了系统中角色权限的类型,本系统实现了角色的新增、修改、删除、查询,其中核心的代码如下。
角色服务接口:
public interface RoleService {
// 添加角色
void addRole(RoleAddDTO roleAddDTO) throws BusinessException;
// 获取角色信息
RoleVO getRoleById(Integer id) throws BusinessException;
// 更新角色信息
void updateRole(RoleUpdateDTO roleUpdateDTO) throws BusinessException;
// 删除角色
void deleteRole(Integer id) throws BusinessException;
// 获取角色列表
List<RoleVO> listRoles();
// 获取角色的权限列表
List<PermissionVO> listPermissionsByRoleId(Integer roleId);
// 分配角色权限
void assignPermissions(RolePermissionDTO rolePermissionDTO) throws BusinessException;
}
2. 用户管理
用户管理也是权限管理的另一个方面,用户管理包括创建用户、编辑用户、删除用户、给用户分配角色等等,在本系统中用户管理功能也是完整的,用户管理功能的核心代码如下:
@Override
public void assignRole(UserRoleDTO userRoleDTO) throws BusinessException {
// 检查用户是否存在
User user = userMapper.selectById(userRoleDTO.getUserId());
if (user == null) {
throw new BusinessException(ResultCode.USER_NOT_EXIST, "用户不存在");
}
// 检查角色是否存在
Role role = roleMapper.selectById(userRoleDTO.getRoleId());
if (role == null) {
throw new BusinessException(ResultCode.ROLE_NOT_EXIST, "角色不存在");
}
// 检查是否已分配
UserRole existUserRole = userRoleMapper.selectByUserIdAndRoleId(userRoleDTO.getUserId(), userRoleDTO.getRoleId());
if (existUserRole != null) {
throw new BusinessException(ResultCode.USER_ROLE_EXIST, "用户已分配该角色");
}
// 创建用户角色对象
UserRole userRole = new UserRole();
userRole.setUserId(userRoleDTO.getUserId());
userRole.setRoleId(userRoleDTO.getRoleId());
userRole.setCreateTime(new Date());
// 保存用户角色
userRoleMapper.insert(userRole);
}
}
七、软件测试
软件测试是指使用软件系统对软件的功能和质量等进行测试,从而发现软件中的问题并改正,使其达到质量与需求的过程。本章对宠物医院管理系统从功能测试和性能测试两个方面进行测试分析。
(一)测试目的
本次测试的目标是验证宠物医院管理系统的业务功能流是否满足系统需求、是否安全及可用。通过对宠物医院医生准入系统、宠物医院药品管理、宠物就诊病例管理、宠物预约管理、宠物登录注册等系统的测试,主要测试系统是否满足系统用户需求文档中的系统功能,如:系统医生审核管理权限控制,系统药品种类动态管理和预警,宠物就诊病例及预约完整性和追溯性,宠物预约冲突与同步管理、宠物登录注册认证管理;系统在大量数据并发时能否稳定运行,数据的交互是否准确;系统的界面操作是否便捷,反应速度是否迅速,能够为宠物医院运营提供可靠、便捷、安全的系统平台,为后期系统功能的完善与用户体验的改善提供依据。
(二)测试环境
1. 测试环境
软件环境:
操作系统:Windows10
应用服务器:Tomcat 9.0.37
数据库:MySQL 8.0.21
JDK版本:OpenJDK 11.0.8
2. 测试用例
2.1 登录注册测试
用户首次登入系统时需要注册,注册后方可使用系统功能。登陆注册功能操作表如表17所示。其功能结果如图39、40所示。
表17 登录注册测试用例表
功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
登录功能 | 输入不存在的账号 | 登录失败,页面跳转失败,弹出提示“请输入正确的账号和密码” | 与预期结果相同 | 通过 |
输入不正确的密码 | 登陆失败,页面跳转失败,弹出提示“请输入正确的账号和密码” | 与预期结果相同 | 通过 | |
输入正确手机号和密码 | 登录成功,页面跳转到系统主页面 | 与预期结果相同 | 通过 | |
注册功能 | 输入不符合校验的注册信息 | 输入框提示输入规范,弹窗显示“请按提示填写表单” | 与预期结果相同 | 通过 |
输入符合校验的注册信息 | 界面跳转至个人信息界面 | 与预期结果相同 | 通过 |
登录注册测试功能结果图如下:

图39 登录注册测试结果图

图40 登录注册测试结果图
2.2 预约管理测试
用户登入系统后进入预约页面,填写相关预约信息并提交后等待医生查看该预约。登陆注册功能操作表如表18所示。其功能结果如图41所示。
表18 预约管理测试用例表
功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
预约管理功能 | 进入相应的医生预约页面 | 展示医生信息并显示预约填写单信息 | 与预期结果相同 | 通过 |
填写相应预约信息 | 提交后跳转至提示页面(等待医生查看预约) | 与预期结果相同 | 通过 |
预约管理测试功能结果图如下:

图41 预约管理测试结果图
2.3 宠物就诊病例测试
管理员登入系统后进入宠物就诊病例页面,查看所有的宠物就诊病例记录,并允许对其中的内容进行删除。宠物就诊病例功能操作表如表19所示。其功能结果如图42、43所示。
表19 宠物就诊病例测试用例表
功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
宠物就诊病例功能 | 进入宠物就诊病例记录页面 | 展示病例记录 | 与预期结果相同 | 通过 |
选中某一条记录进行删除 | 弹窗显示“删除成功”并刷新页面 | 与预期结果相同 | 通过 |
宠物就诊病例管理测试功能结果图如下:

图42 宠物就诊病例测试结果图

图43 宠物就诊病例测试结果图
2.4 药品管理测试
管理员登入系统后进入宠物就诊病例页面,查看所有的宠物就诊病例记录,并允许对其中的内容进行删除。宠物就诊病例功能操作表如表20所示。其功能结果如图44、45所示。
表20 药品管理测试用例表
功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
宠物就诊病例功能 | 添加药品信息 | 显示新的药品数据 | 与预期结果相同 | 通过 |
编辑药品信息 | 显示更新的药品数据 | 与预期结果相同 | 通过 | |
删除药品信息 | 弹窗显示“删除成功”并刷新页面 | 与预期结果相同 | 通过 |
药品管理测试功能结果图如下:

图44 药品管理测试结果图

图45 药品管理测试结果图
2.5 宠物医生审核测试
管理员登入系统后进入宠物医生审核页面,查看所有的医生信息,并对医生的信息进行审核,确保其符合规范。宠物医生审核功能操作表如表21所示。其功能结果如图46所示。
表21 药品管理测试用例表
功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
宠物就诊病例功能 | 查看医生信息列表 | 显示新的药品数据 | 与预期结果相同 | 通过 |
审核宠物医生信息 | 审核通过/不通过后显示弹窗“操作成功” | 与预期结果相同 | 通过 |

图46 宠物医生审核测试结果图
(三)测试结果
对于宠物医院管理系统测试,在功能上都测试正常,没有出现业务问题。医生审核模块中,管理员对于医生提交审核的医生身份可以快速审核,审批状态可以自动修改并在系统消息中显示,医生审核没有通过自动取消医生账号对医生服务权限的使用,保障医疗的专业安全,确保医生审批的真实性,提高审批效率;增删改药模块中,增删改药响应快速,库存药品数量根据采购/退库动态变化;宠物就诊病例模块中,医生可以快速对宠物添加就诊病例,如症状、诊断、治疗,病例与宠物、医生等信息关联,对历史就诊病例进行快速查阅与导出,确保完整性和持续性;预约模块中,用户可以快捷方便的进行预约,根据医生排班显示预约时间,对预约状态在用户端和医生端都可以进行修改,节省沟通时间。登录注册模块测试结果表明,用户注册流程规范,手机号格式正确,登录采用加密登录,使用JWT令牌登录,无安全隐患和数据异常,总体上各模块功能均能达标,宠物医院运营能够具备比较好的技术支撑。
八、结论与展望
本文通过对宠物医院管理系统使用SpringBoot开发、设计的详细介绍、分析和阐述,从需求分析、可行性分析和论证、系统设计、系统开发与实现、系统设计等方面对系统的开发进行了介绍和阐述,通过本文的分析、阐述我们得出以下结论:结论如下:
(一)研究成果
通过本次论文的研究,最终成果是完成了一个完整的、稳定可靠,功能齐全的宠物医院管理系统,其特点是:
采用前后端分离开发部署,前端基于Vue,后端基于SpringBoot,数据库使用MySQL,完成系统的快速构建开发。
第二,完成用户管理、宠物信息管理、预约挂号、医生管理、药品管理、就诊管理、评价反馈、统计分析等模块功能实现,满足宠物医院日常营运管理的需求。
其中基于JWT的安全认证和基于RBAC的权限控制模型,确保了安全性,保障数据的安全性。
宠物医院,通过本系统的实现,可以实现业务流程的信息化、自动化,提升医院的工作效率和服务水平,为宠物主人们更加方便、优质的服务。
(二)创新点
本研究的主要创新点包括:
1.响应式设计:系统支持响应式设计,无论在何种尺寸的显示屏和设备上,系统都能提供一致的使用体验,无论是PC还是平板,用户都能方便使用系统的各项功能。
2.安全认证机制:系统使用JWT安全认证机制,基于RBAC权限控制模型,有效鉴别和验证用户的身份并控制用户对资源进行有效访问。
这些创新之处,使得本系统在功能、性能、用户体验等方面更加具有竞争力,更好地满足宠医管理的需求。
(三)展望
虽然本系统已经实现了预期的功能和性能,但仍然存在着不足,需要在接下来的工作中进行进一步的改进和完善:
1. 功能方面的不足
系统功能不完善,在宠物健康档案,医生评价分析、库存预警、病历模板管理、评价激励管理、数据可视化等方面还不完善,需要增加更多的相关功能和特征,增加系统的实用性和完整性。
系统没有移动App,不能满足用户随时随地使用系统的需求,需要开发移动App,提供便捷服务。
2. 未来展望
在技术上考虑采用微服务化,将系统拆分成多个小系统,提高系统的可扩展性、可维护性,采用Docker等技术将系统容器化,简化部署运维;采用人工智能、机器学习等技术,提高系统的智能化,包括智能诊断、智能推荐等。
通过上述改进与展望,相信宠物医院管理系统一定会变得越来越成熟与强大,能够满足宠物医院管理的需求,为宠物主人提供更加优质的医疗照顾,为宠物医院建设提供更好的支撑。
(四)总结
尽管系统还存在一些不足之处,如功能的完整性、性能的优化等,但通过未来的持续改进和完善,我们相信系统将更加强大和实用,能够为宠物医院的信息化建设和服务提升做出更大的贡献。
参考文献
[1] Chen T S, Chen T L, Chung Y F, et al. Implementation of online veterinary hospital on cloud platform[J]. Journal of medical systems, 2016, 40: 1-7.
[2] Gunaratne D, Bandara S, Sooriyabandara H, et al. Implementation of a pet care management system[J]. International Journal Of Engineering And Management Research, 2022, 12(5): 157-163.
[3] 田斌.基于SSM框架的宠物医院系统设计[J].无线互联科技,2023,20(14):69-71.
[4] 王慧.一个宠物医院管理系统的设计与实现[J].电脑知识与技术,2023,19(10):67-70.DOI:10.14004/j.cnki.ckt.2023.0505.
[5] 王蕾,刘佳杰,许美玲,等.高校数据挖掘竞赛管理系统的设计与实现[J].福建电脑,2025,41(05):63-67.DOI:10.16707/j.cnki.fjpc.2025.05.012.
[6] 付博.基于WebGIS的上海市景点客流量预测系统的设计和实现[J].科技与创新,2025,(04):76-79.DOI:10.15913/j.cnki.kjycx.2025.04.020.
[7] 赵乌吉斯古楞.Java程序设计课程项目实践教学模式研究[J].赤峰学院学报(自然科学版),2025,41(02):105-108.DOI:10.13398/j.cnki.issn1673-260x.2025.02.025.
[8] 王嘉辉.基于改进RBF神经网络的编组站运营指标短时预测[D].北京交通大学,2023.DOI:10.26944/d.cnki.gbfju.2023.001874.
[9] 冯赛赛,郝婷.影院管理系统的设计与实现[J].福建电脑,2025,41(05):68-72.DOI:10.16707/j.cnki.fjpc.2025.05.013.
[10] 闵亮,胡晓丽,刘嘉乐,等.学生“三证”自助填报系统的设计与实现[J].信息技术,2024,(08):79-85.DOI:10.13274/j.cnki.hdzj.2024.08.012.
致谢
时间过的很快,一转眼即将完成在上海开放大学两年半的学习历程,在这里我想对很多人表示最忠心的感谢!首先,我要感谢我的指导老师沈老师,在毕业论文完成的过程中,您一次次的悉心指导才使我能够顺利完成论文的撰写。
同时,我要感谢我的同学们,感谢你们在学习期间给予我的帮助,感谢你们提出的宝贵意见,让我在论文完成的过程中有了更多的思路。
其次我要感谢我的家人们,家人们的鼓励和支持让我能够顺利的完成学业。
最后,我还要感谢所有参加论文评审和答辩的老师们,感谢你们提出的宝贵意见,这些对我今后的学习至关重要。
再一次感谢所有给与我支持和帮助的人,祝你们一切顺遂,生活幸福。
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论









java
vue
springboot
Mysql
ssm
小程序
uniapp
js和jquery