摘 要
在开发宠物医院管理系统时,选择Servlet框架作为后端核心与HTML框架结合使用,可以高效实现系统的各项功能需求。通过Servlet框架,能够处理来自客户端的请求,并动态生成对应内容,为系统提供了强大的数据处理能力。同时,前端利用HTML框架构建用户界面,确保了良好的用户体验和界面友好性。这样的架构设计不仅提高了开发效率,还增强了系统的可维护性和扩展性。后端的Servlet负责业务逻辑的处理和数据库交互,而前端的HTML框架则专注于展示层的设计,两者相辅相成,共同为用户提供了一个流畅、直观的操作体验。
在具体实施过程中,该系统涵盖了预约管理、病例记录、药品库存管理等多个模块,每个模块都紧密围绕着提升宠物医院运营效率和服务质量这一目标进行设计。此外,考虑到安全性和数据保护的重要性,系统采用了多种措施来保障用户信息的安全。整个项目的成功实施,证明了Servlet框架与HTML框架结合使用的有效性,为类似项目提供了一种可行的技术解决方案。
随着宠物医疗需求的不断增长,宠物医院迫切需要更高效的管理系统,以提供优质的服务。平台旨在为宠物医院的管理人员、医生和注册用户提供一个全面、便捷的在线服务与管理系统,从而提升管理效率和患者体验。平台前端设计简洁直观,用户能够轻松操作,查看宠物健康知识、预约挂号、查询处方记录等功能。后台管理系统为管理员提供了高效的管理方式,以确保系统的正常运行和数据准确性。系统的推广应用对于推动宠物医疗行业的数字化转型和服务升级具有重要意义。
关键词****:**** 宠物医院管理系统;Servlet框架;HTML框架;系统设计。
ABSTRACT
When developing a pet hospital management system, choosing the Servlet framework as the backend core and combining it with the HTML framework can efficiently meet the various functional requirements of the system. Through the Servlet framework, it is possible to process requests from clients and dynamically generate corresponding content, providing the system with powerful data processing capabilities. Meanwhile, the front-end utilizes HTML framework to construct the user interface, ensuring a good user experience and user-friendly interface. This architecture design not only improves development efficiency, but also enhances the maintainability and scalability of the system. The Servlet in the backend is responsible for processing business logic and database interaction, while the HTML framework in the frontend focuses on the design of the presentation layer. The two complement each other and provide users with a smooth and intuitive operating experience.
In the specific implementation process, the system covers multiple modules such as appointment management, case recording, and drug inventory management, each designed closely around the goal of improving the operational efficiency and service quality of pet hospitals. In addition, considering the importance of security and data protection, the system has adopted various measures to ensure the security of user information. The successful implementation of the entire project has demonstrated the effectiveness of combining Servlet framework with HTML framework, providing a feasible technical solution for similar projects.
With the continuous growth of pet medical demand, pet hospitals urgently need more efficient management systems to provide high-quality services. The platform aims to provide a comprehensive and convenient online service and management system for pet hospital managers, doctors, and registered users, thereby improving management efficiency and patient experience. The front-end design of the platform is simple and intuitive, allowing users to easily operate functions such as viewing pet health knowledge, scheduling appointments, and querying prescription records. The backend management system provides efficient management methods for administrators to ensure the normal operation of the system and data accuracy. The promotion and application of the system is of great significance for promoting the digital transformation and service upgrading of the pet medical industry.
Keywords: Pet hospital management system; Servlet framework; HTML framework; systems design.
目 录
[第1章 绪论](#第1章 绪论)
[1.1 研究背景和意义](#1.1 研究背景和意义)
[1.2 国内外研究现状](#1.2 国内外研究现状)
[第2章 相关技术介绍](#第2章 相关技术介绍)
[2.1 servlet框架](#2.1 servlet框架)
[2.2 HTML技术](#2.2 HTML技术)
[2.3 JSP 技术](#2.3 JSP 技术)
[2.4 MySQL数据库](#2.4 MySQL数据库)
[第3章 系统分析](#第3章 系统分析)
[3.1 可行性分析](#3.1 可行性分析)
[3.2 功能需求分析](#3.2 功能需求分析)
[3.2.1 功能性分析](#3.2.1 功能性分析)
[3.2.2 非功能性分析](#3.2.2 非功能性分析)
[3.3 系统用例分析](#3.3 系统用例分析)
[3.4 系统的流程分析](#3.4 系统的流程分析)
[第4章 系统总体设计](#第4章 系统总体设计)
[4.1 系统架构设计](#4.1 系统架构设计)
[4.4.1 数据库概念结构设计](#4.4.1 数据库概念结构设计)
[第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.3.1 公共管理界面](#5.3.1 公共管理界面)
[5.3.3 资讯管理界面](#5.3.3 资讯管理界面)
[5.3.4 药品信息界面](#5.3.4 药品信息界面)
[第6章 系统测试](#第6章 系统测试)
[第7章 总结](#第7章 总结)
[致 谢](#致 谢)
- 绪论
1.1 研究背景和意义
随着信息技术的迅速发展,传统的宠物医院管理模式逐渐无法满足日益增长的服务需求。为了解决这一问题,宠物医院管理系统的设计与实现显得尤为重要。该系统利用Servlet框架的技术优势,通过实现对宠物医院各项业务的数字化管理,能够有效提高医院的运营效率和服务质量,减少人工操作的错误,提高整体管理的透明度和便捷性[1]。系统不仅为宠物主人提供便捷的医疗资讯、医生查询、药品信息等服务,还能通过账户管理、预约挂号、资讯评论等功能,提升用户体验。
在设计过程中,系统根据不同用户的需求进行了角色划分,分别提供管理员、医生和注册用户的专属功能。管理员能够高效管理用户信息、医疗资讯、权限等内容;医生可以方便地管理诊疗信息、药品信息和挂号排队等;宠物主人则通过系统可以查看相关资讯、预约挂号、获取医生信息等,为宠物的健康保驾护航。通过这一综合管理平台,医院的资源得到了更合理的分配,服务质量也得到了显著提高[2]。
1.2 国内外研究现状
随着宠物行业的迅猛发展,尤其是宠物医疗需求的逐年增加,全球范围内已经涌现出大量有关宠物医院管理系统的研究和应用实践。国外的宠物医疗行业起步较早,系统化已经在多个国家实现了广泛应用[3]。欧美等发达国家的宠物医院通常采用综合性的管理系统,这些系统涵盖了预约挂号、病历管理、药品库存、医生排班等多个模块,并且支持多种功能的集成。比如,部分系统已经融入了先进技术,通过宠物健康数据的挖掘,提供个性化的医疗建议与健康预测,有效提升了治疗效果和医院的运营效率[4]。
国外的一些领先技术应用也为宠物医院管理系统的发展指明了方向。随着大数据技术的成熟,宠物医院能够通过数据分析发现潜在的健康风险,并及时做出预警[5]。同时对宠物的历史健康记录进行分析,帮助医生做出更加精准的诊断和治疗决策[6]。
在国内,宠物医疗行业尽管起步较晚,但近年来随着人们宠物健康意识的不断提高,宠物医院的管理模式也逐渐向信息化发展[7]。目前,国内一些大型宠物医院已经开始使用集成化的管理系统,涵盖了预约挂号、病例管理、药品库存、在线支付等多个功能,极大地提高了医院的工作效率和用户体验。许多中小型宠物医院依然采用传统的手工管理方式,存在信息分散、数据难以共享、人工操作冗余等问题[8]。
研究并设计符合国内需求的宠物医院管理系统,显得尤为重要。这不仅能促进宠物医疗行业的技术进步,提升医院的运营效率,还能为宠物主人提供更加便捷、高效的医疗服务,推动整个行业的健康发展。同时,系统的特性也能帮助医院提升管理效率,减少人工干预,降低运营成本,具有重要的社会价值和经济效益。
- 相关技术介绍
2.1 servlet框架
Servlet(ServerApplet)是 Java Servlet的简称,称为小服务程序或服务连接器用 Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。
狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java的应用服务器中。从原理上讲,Servlet 可以回复任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。最早支持 Servlet 标准的是 JavaSoft 的 Java Web Server,此后,一些其它的基于 Java 的 Web 服务器开始支持标准的 Servlet。
2.2 HTML技术
HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础技术之一。它通过一系列预定义的标签和属性来描述网页的内容结构,如标题、段落、列表、链接、图像等元素。HTML使得网页内容可以通过浏览器进行解析和展示,为互联网的信息传播提供了基础框架。
HTML5引入了更多具有明确含义的标签,这些标签不仅有助于搜索引擎优化,还能提高代码的可读性和维护性,还支持直接嵌入音频和视频元素,无需依赖第三方插件,简化了多媒体内容的集成过程。提供丰富的表单控件,包括文本框、下拉菜单、单选按钮、HTML文档可以在任何支持Web标准的设备上运行,无论是桌面电脑、平板还是智能手机,都能保持良好的显示效果。
HTML通常与CSS(层叠样式表)和JavaScript结合使用,以实现更丰富和动态的用户体验。CSS用于控制页面布局和视觉呈现,而JavaScript则负责添加交互功能,在现代Web开发中,HTML也经常与后端技术如Servlet框架结合,以实现数据驱动的动态网页。
2.3 JSP 技术
Sun Microsystems 公司开发的 JSP 技术是一种快速、简洁的动态 Web 网页开发技术,现已得到很多大公司的支持和赞助,基于JSP实现的许多企业级框架在各种 web 开发技术中遥遥领先。JSP 是一种将 Java 代码与普通静态网页相结合的编程技术,可以充分利用 Java的跨平台优点,实现JSP 功能的一次开发多平台部署的特性。将 JSP 和 Java Servlet 相结合,分别完成前台页面的展示和后台业务的处理,将展现和处理分开符合 MVC 和面向对象的思想,并且具有跨平台、安全性高、简单明了、容易开发等优点。非常便于部署和维护,用户只要拥有一个浏览器就可以很方便地进行浏览和访问。
2.4 MySQL数据库
MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。
- 系统 分析
3.1 可行性分析
3.1.1技术可行性
开发宠物医院管理系统所需的技术在当前完全可行。系统开发将使用成熟的技术框架和工具,如Java、Servlet等进行开发,具备良好的稳定性和扩展性。
数据库管理:使用MySQL或PostgreSQL等常见数据库,能够高效存储宠物医院的各类数据。
系统安全:采用加密技术保护用户和医院数据,确保数据安全。
扩展性:系统架构支持后期扩展,如增加分析、健康数据挖掘等功能。
从技术角度来看,现有技术能够支持系统的开发和实施。
3.1.2经济可行性
从经济角度看,开发和运营宠物医院管理系统是可行的。
开发成本:开发所需的技术资源和开发工具大多为开源或低成本工具,开发成本相对可控。
运营成本:系统维护、服务器费用、技术支持等日常运营成本合理。
收益预期:通过提升医院管理效率和用户满意度,系统将有助于提高医院收入,回收开发成本并获得持续盈利。
总体来说,投资该系统是具备经济回报的
3.1.3操作可行性
系统的操作简便,符合医院员工和宠物主人的使用习惯。
用户体验:系统界面友好,操作流程简化,宠物主人和医院员工能快速上手。
医院员工适应性:医院员工无需过多培训,系统的功能和界面直观易懂,能够有效提高工作效率。
技术支持:系统投入使用后,专业团队提供日常维护和技术支持,确保系统长期稳定运行。
因此,从操作角度来看,系统的实施和日常运营是可行的。
3.2 功能需求分析
3.2.1 功能性分析
按照宠物医院管理系统的角色,划分为了注册用户模块、医生用户模块和管理员模块这三大部分。
(一)注册用户功能需求分析:
- 注册登录:用户通过注册登录进入页面完成预约挂号等所需业务。
- 首页:查看平台的最新信息和重要内容。
- 通知公告:查看平台发布的公告和重要通知。
- 医疗资讯:获取宠物健康相关的新闻和资讯。
- 医生信息:浏览医院的科室和各科室医生信息。
- 药品信息:浏览各类药品相关信息。
- 我的账户:管理个人信息和账户设置。
- 个人中心:展示用户的个人资料和操作快捷入口,管理宠物的基本信息,方便就诊和服务,进行宠物的预约挂号操作,查看宠物的处方记录。管理收藏的文章或服务以及查看和管理自己的评论记录。
(二)医生用户功能需求分析
- 注册登录:医生用户注册登录账号进行日常工作。
- 首页管理:查看平台的整体数据,了解当前的工作状态和任务。
- 预约挂号管理:处理和查看用户的预约挂号信息,管理就诊安排。
- 诊疗信息管理:管理和配置医院的科室与服务,确保诊疗流程顺畅。
- 处方开具管理:管理和查看宠物的处方记录,确保开具处方的准确性。
- 药品信息管理:查看和更新平台中的药品库存、价格和其他相关信息。
- 留言管理:查看和回复患者的反馈与留言,及时解决患者需求。
(三)管理员功能需求分析
- 登录:管理员登录账号,管理用户信息。
- 公共管理:展示轮播图,方便查看整体数据和快捷操作。
- 用户管理:管理平台用户账号,包括注册、删除等。
- 资讯管理:管理宠物健康相关的新闻和资讯添加、删改;发布和管理平台的公告、重要通知等。
- 权限管理:管理平台用户权限,包括添加、删除权限。
- 科室名称:查询、重置、删除、新增各个科室名称及信息。
- 宠物信息:管理各用户的宠物基础信息,便于医生对患者的了解。
- 医生信息:管理医院内医生的信息,方便用户选择。
- 预约挂号:处理用户的预约挂号信息,查看预约情况并进行调整。
- 诊疗信息:管理医院的诊疗科室与服务设置,确保顺畅的就诊流程。
- 处方开具:管理患者的处方记录,确保数据准确、便于查询。
- 药品信息:管理平台中药品的相关数据,包括库存、价格等。
- 留言管理:管理患者的反馈和留言,及时回应需求。
3.2.2 非功能性分析
宠物医院管理系统的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1宠物医院管理系统非功能需求表
|------|-------------------------------------------|
| 安全性 | 主要指宠物医院管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指宠物医院管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响宠物医院管理系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着宠物医院管理系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 宠物医院管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3 系统用例分析
通过3.2功能的分析,得出了系统的用例图:
注册用户用例图如下所示。

图3-1 注册用户用例图
医生用户用例图如下所示。

图3-2 医生用户用例图
管理员用例图如下所示。

图3-3 管理员用例图
3.4 系统的流程分析
3.4.1登录流程
系统登录流程图,如下图所示:

图3-4登录流程图
3.4.2添加信息流程
添加信息流程图,如下图所示:

图3-5添加信息流程图
3.4.3删除信息流程
删除信息流程图,如下图所示:

图3-6删除信息流程图
- 系统总体设计
4.1 系统架构设计
宠物医院管理系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。它强制性的把应用程序的输入、输出和处理全部分开,将其分为三个核心部分,这三个部分分别有不同的功能。

图4-1系统架构图
视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。
模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。由于 Model 的主要内容是数据、方法和行为,其也是 MVVM 中逻辑最为复杂,代码量最多的部分,其中包含了许多应用中需要用到的业务逻辑,因此模型层的开发也变得尤为重要,后期一般不会对模型层进行大规模改动,也是 MVVM最稳定的部分。控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。
4.2开发流程设计
宠物医院管理系统的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从宠物医院管理系统的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图4-2所示。

图4-2开发系统流程图
4.3系统功能模块设计
通过对宠物医院管理系统的功能需求分析以及用例分析,得出了宠物医院管理系统的功能模块图如图4-3所示。

图4-3宠物医院管理系统功能模块图
4.4数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.4.1 数据库概念结构设计
下面是整个宠物医院管理系统中主要的数据库表总E-R实体关系图。

图4-4 系统总体ER图
4.4.2数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表access_token (登陆访问时长)
|----|-------------|-----------|-------|------|------|------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | | 是 | 是 | 临时访问牌ID |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | | 是 | 否 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 6 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 7 | user_id | int | | 是 | 否 | 用户编号 |
表 4-2-article(文章)
|----|-------------|-----------|------------|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | | 是 | 是 | 文章id |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | | 是 | 否 | 点击数 |
| 5 | praise_len | int | | 是 | 否 | 点赞数 |
| 6 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 7 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
|----|-------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | | 是 | 是 | 分类ID |
| 2 | display | smallint | | 是 | 否 | 显示顺序 |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | | 是 | 否 | 上级分类ID |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 9 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
|----|----------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | | 是 | 是 | 授权ID |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | | 是 | 否 | 父级菜单排序 |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | | 是 | 否 | 是否可增加 |
| 12 | del | tinyint | | 是 | 否 | 是否可删除 |
| 13 | set | tinyint | | 是 | 否 | 是否可修改 |
| 14 | get | tinyint | | 是 | 否 | 是否可查看 |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 22 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-5-charging_information(收费信息)
|----|-------------------------|-----------|-------|------|------|-----------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | charging_information_id | int | | 是 | 是 | 收费信息ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | doctor_account | int | | 否 | 否 | 医生账号 |
| 9 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 10 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 11 | registration_fee | double | | 否 | 否 | 挂号费用 |
| 12 | diagnostic_costs | double | | 否 | 否 | 诊断费用 |
| 13 | inspection_fees | double | | 否 | 否 | 检查费用 |
| 14 | treatment_costs | double | | 否 | 否 | 治疗费用 |
| 15 | drug_expenses | double | | 否 | 否 | 药品费用 |
| 16 | total_cost | varchar | 64 | 否 | 否 | 总费用 |
| 17 | memo | text | 65535 | 否 | 否 | 备注信息 |
| 18 | pay_state | varchar | 16 | 是 | 否 | 支付状态 |
| 19 | pay_type | varchar | 16 | 否 | 否 | 支付类型: 微信、支付宝、网银 |
| 20 | create_time | datetime | | 是 | 否 | 创建时间 |
| 21 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 22 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 23 | source_id | int | | 否 | 否 | 来源ID |
| 24 | source_user_id | int | | 否 | 否 | 来源用户 |
表 4-6-code_token(验证码)
|----|---------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | | 是 | 是 | 验证码ID |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | | 是 | 否 | 失效时间 |
| 5 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 6 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-7-collect(收藏)
|----|--------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | | 是 | 是 | 收藏ID |
| 2 | user_id | int | | 是 | 是 | 收藏人ID |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | | 是 | 否 | 来源ID |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 9 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-8-comment(评论)
|----|--------------|-----------|------------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | | 是 | 是 | 评论ID |
| 2 | user_id | int | | 是 | 是 | 评论人ID |
| 3 | reply_to_id | int | | 是 | 否 | 回复评论ID |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | | 是 | 否 | 来源ID |
表 4-9-department_name(科室名称)
|----|--------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | department_name_id | int | | 是 | 是 | 科室名称ID |
| 2 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 3 | create_time | datetime | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-10-diagnosis_and_treatment_information(诊疗信息)
|----|----------------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | diagnosis_and_treatment_information_id | int | | 是 | 是 | 诊疗信息ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | doctor_account | int | | 否 | 否 | 医生账号 |
| 9 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 10 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 11 | time_of_appointment | datetime | | 否 | 否 | 预约时间 |
| 12 | appointment_number | varchar | 64 | 否 | 否 | 预约单号 |
| 13 | queue_number | double | | 否 | 否 | 排队序号 |
| 14 | pet_diseases | text | 65535 | 否 | 否 | 宠物病症 |
| 15 | inspection_results | text | 65535 | 否 | 否 | 检验结果 |
| 16 | diagnostic_conclusion | text | 65535 | 否 | 否 | 诊断结论 |
| 17 | treatment_plan | text | 65535 | 否 | 否 | 治疗方案 |
| 18 | prescription_issuance_limit_times | int | | 是 | 否 | 处方限制次数 |
| 19 | create_time | datetime | | 是 | 否 | 创建时间 |
| 20 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 21 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 22 | source_id | int | | 否 | 否 | 来源ID |
| 23 | source_user_id | int | | 否 | 否 | 来源用户 |
表 4-11-doctor_information(医生信息)
|----|--------------------------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | doctor_information_id | int | | 是 | 是 | 医生信息ID |
| 2 | doctor_account | int | | 否 | 否 | 医生账号 |
| 3 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 4 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 5 | specializes_in_specific_fields | varchar | 64 | 否 | 否 | 擅长领域 |
| 6 | doctors_photo | varchar | 255 | 否 | 否 | 医生照片 |
| 7 | registration_fee | double | | 否 | 否 | 挂号费用 |
| 8 | doctor_introduction | text | 65535 | 否 | 否 | 医生简介 |
| 9 | hits | int | | 是 | 否 | 点击数 |
| 10 | praise_len | int | | 是 | 否 | 点赞数 |
| 11 | collect_len | int | | 是 | 否 | 收藏数 |
| 12 | comment_len | int | | 是 | 否 | 评论数 |
| 13 | make_an_appointment_for_registration_limit_times | int | | 是 | 否 | 挂号限制次数 |
| 14 | create_time | datetime | | 是 | 否 | 创建时间 |
| 15 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-12-doctor_users(医生用户)
|----|--------------------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | doctor_users_id | int | | 是 | 是 | 医生用户ID |
| 2 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 3 | doctors_gender | varchar | 64 | 否 | 否 | 医生性别 |
| 4 | doctors_phone_number | varchar | 16 | 否 | 否 | 医生电话 |
| 5 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 6 | specializes_in_specific_fields | varchar | 64 | 否 | 否 | 擅长领域 |
| 7 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 8 | user_id | int | | 是 | 否 | 用户ID |
| 9 | create_time | datetime | | 是 | 否 | 创建时间 |
| 10 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-13-drug_classification(药品分类)
|----|------------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | drug_classification_id | int | | 是 | 是 | 药品分类ID |
| 2 | drug_classification | varchar | 64 | 否 | 否 | 药品分类 |
| 3 | create_time | datetime | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-14-drug_information(药品信息)
|----|-------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | drug_information_id | int | | 是 | 是 | 药品信息ID |
| 2 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 3 | classification_of_drugs | varchar | 64 | 否 | 否 | 药品分类 |
| 4 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 5 | drug_pictures | varchar | 255 | 否 | 否 | 药品图片 |
| 6 | drug_prices | double | | 否 | 否 | 药品价格 |
| 7 | inventory_quantity | double | | 否 | 否 | 库存数量 |
| 8 | drug_efficacy | text | 65535 | 否 | 否 | 药品功效 |
| 9 | drug_details | text | 65535 | 否 | 否 | 药品详情 |
| 10 | hits | int | | 是 | 否 | 点击数 |
| 11 | praise_len | int | | 是 | 否 | 点赞数 |
| 12 | collect_len | int | | 是 | 否 | 收藏数 |
| 13 | comment_len | int | | 是 | 否 | 评论数 |
| 14 | create_time | datetime | | 是 | 否 | 创建时间 |
| 15 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-15-hits(用户点击)
|----|--------------|-----------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | | 是 | 是 | 点赞ID |
| 2 | user_id | int | | 是 | 否 | 点赞人 |
| 3 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |
表 4-16-make_an_appointment_for_registration(预约挂号)
|----|-----------------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | make_an_appointment_for_registration_id | int | | 是 | 是 | 预约挂号ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | doctor_account | int | | 否 | 否 | 医生账号 |
| 9 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 10 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 11 | registration_fee | double | | 否 | 否 | 挂号费用 |
| 12 | time_of_appointment | datetime | | 否 | 否 | 预约时间 |
| 13 | appointment_number | varchar | 64 | 否 | 否 | 预约单号 |
| 14 | appointment_details | text | 65535 | 否 | 否 | 预约详情 |
| 15 | registration_queue_limit_times | int | | 是 | 否 | 排号限制次数 |
| 16 | create_time | datetime | | 是 | 否 | 创建时间 |
| 17 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 18 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 19 | source_id | int | | 否 | 否 | 来源ID |
| 20 | source_user_id | int | | 否 | 否 | 来源用户 |
表 4-17-notice(公告)
|----|-------------|-----------|------------|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | | 是 | 是 | 公告ID |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 5 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-18-pet_information(宠物信息)
|----|--------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | pet_information_id | int | | 是 | 是 | 宠物信息ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_breeds | varchar | 64 | 否 | 否 | 宠物品种 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 9 | pet_details | text | 65535 | 否 | 否 | 宠物详情 |
| 10 | create_time | datetime | | 是 | 否 | 创建时间 |
| 11 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-19-praise(点赞)
|----|--------------|-----------|-----|------|------|----------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | | 是 | 是 | 点赞ID |
| 2 | user_id | int | | 是 | 是 | 点赞人 |
| 3 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |
| 8 | status | tinyint | | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-20-prescription_issuance(处方开具)
|----|----------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | prescription_issuance_id | int | | 是 | 是 | 处方开具ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | doctor_account | int | | 否 | 否 | 医生账号 |
| 9 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 10 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 11 | appointment_number | varchar | 64 | 否 | 否 | 预约单号 |
| 12 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 13 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 14 | drug_prices | varchar | 64 | 否 | 否 | 药品价格 |
| 15 | issued_quantity | double | | 否 | 否 | 开具数量 |
| 16 | total_price_of_drugs | varchar | 64 | 否 | 否 | 药品总价 |
| 17 | prescription_details | text | 65535 | 否 | 否 | 处方详情 |
| 18 | charging_information_limit_times | int | | 是 | 否 | 收费限制次数 |
| 19 | create_time | datetime | | 是 | 否 | 创建时间 |
| 20 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 21 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 22 | source_id | int | | 否 | 否 | 来源ID |
| 23 | source_user_id | int | | 否 | 否 | 来源用户 |
表 4-21-registered_user(注册用户)
|----|--------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | registered_user_id | int | | 是 | 是 | 注册用户ID |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_phone_number | varchar | 16 | 否 | 否 | 用户电话 |
| 4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 5 | user_id | int | | 是 | 否 | 用户ID |
| 6 | create_time | datetime | | 是 | 否 | 创建时间 |
| 7 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-22-registration_queue(挂号排队)
|----|-------------------------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | registration_queue_id | int | | 是 | 是 | 挂号排队ID |
| 2 | user_account | int | | 否 | 否 | 用户账号 |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_phone_number | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
| 6 | pet_gender | varchar | 64 | 否 | 否 | 宠物性别 |
| 7 | pet_age | varchar | 64 | 否 | 否 | 宠物年龄 |
| 8 | doctor_account | int | | 否 | 否 | 医生账号 |
| 9 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 10 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 11 | registration_fee | double | | 否 | 否 | 挂号费用 |
| 12 | time_of_appointment | datetime | | 否 | 否 | 预约时间 |
| 13 | appointment_number | varchar | 64 | 否 | 否 | 预约单号 |
| 14 | queue_number | double | | 否 | 否 | 排队序号 |
| 15 | serial_number_details | text | 65535 | 否 | 否 | 序号详情 |
| 16 | diagnosis_and_treatment_information_limit_times | int | | 是 | 否 | 诊疗限制次数 |
| 17 | create_time | datetime | | 是 | 否 | 创建时间 |
| 18 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 19 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 20 | source_id | int | | 否 | 否 | 来源ID |
| 21 | source_user_id | int | | 否 | 否 | 来源用户 |
表 4-23-schedule(日程管理)
|----|----------------|----------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | | 是 | 是 | 日程ID |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | | 否 | 否 | 计划时间 |
| 4 | user_id | int | | 是 | 否 | 用户ID |
| 5 | create_time | datetime | | 否 | 否 | 创建时间 |
| 6 | update_time | datetime | | 否 | 否 | 更新时间 |
表 4-24-score(评分)
|----|--------------|-----------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | | 是 | 是 | 评分ID |
| 2 | user_id | int | | 是 | 否 | 评分人 |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | | 是 | 否 | 评分 |
| 5 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 6 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | | 是 | 否 | 来源ID |
表 4-25-slides(轮播图)
|----|-------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | | 是 | 是 | 轮播图ID |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | | 是 | 否 | 点击量 |
| 7 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |
表 4-26-upload(文件上传)
|----|-----------|---------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | | 是 | 是 | 上传ID |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | | 否 | 否 | 父级ID |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-27-user(用户账户)
|----|-------------|-----------|-----|------|------|-----------------------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | | 是 | 是 | 用户ID |
| 2 | state | smallint | | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | | 是 | 否 | 上次登录时间 |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | email | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | | 是 | 否 | 创建时间 |
表 4-28-user_group(用户组)
|----|--------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | | 是 | 是 | 用户组ID |
| 2 | display | smallint | | 是 | 否 | 显示顺序 |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |
| 8 | register | smallint | | 否 | 否 | 注册位置 |
| 9 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 10 | update_time | timestamp | | 是 | 否 | 更新时间 |
- 系统关键模块设计与实现
5.1 注册用户模块
5.1.1 用户注册界面
注册模块满足用户两部分,当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击"注册"按钮就会跳转到注册的界面,根据提示填写好账号、密码、昵称、邮箱、身份等注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其注册主界面展示如下图所示。

图5-1用户注册界面图
5.1.2 注册用户登录界面
注册用户在登录界面输入账号+密码,点击"登录"按钮,系统在用户数据库表中会对用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其登录主界面展示如下图所示。

图5-2注册用户登录界面图
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.1.3医疗资讯界面
用户可以查看新闻资讯信息。资讯内容按照类别进行组织,方便用户根据兴趣查看相关内容。系统提供搜索功能,用户可以按关键词查询特定的新闻资讯。在详情页可以点赞、收藏和评论。医疗资讯界面图如下图所示。

图5-3医疗资讯界面图
5.1.4医生信息界面
进入"医生信息"后,用户会看到所有医生信息列表。显示就诊中心照片、基本信息。用户点击具体就诊中心的照片后,将进入详细信息页面,用户可以查看更多详细描述。在详情页可以点赞、收藏和评论。就诊中心界面图如下图所示。

图5-4医生信息界面图
5.1.5药品信息界面
进入"药品信息"后,用户会看到所有药品信息列表。显示药品信息照片、基本信息。用户点击具体药品信息的照片后,将进入详细信息页面,用户可以查看更多详细描述。在详情页可以点赞、收藏和评论。药品信息界面图如下图所示。

图5-5药品信息界面图
5.2 医生用户模块
5.2.1 医生信息管理界面
医生用户点击"医生信息"这一菜单会显示就诊中心列表这个子菜单,点击"医生信息列表"可以查看医生信息详情,可以进行查询、重置等操作。医生信息管理界面如下图所示。

图5-6医生信息界面图
5.2.2预约挂号界面
医生用户点击"预约挂号"这一菜单会显示预约挂号信息列表这个子菜单,点击"预约挂号列表"可以查看用户信息详情,并对预约挂号排队编号处理,还可以进行查询、重置等操作。预约挂号如下图所示。

图5-7预约挂号界面图
5.2.3药品信息界面
医生用户点击"药品信息"这一菜单会显示药品信息列表这个子菜单,点击"药品信息列表"可以查看药品信息详情,可以进行查询和重置等操作。药品信息管理如下图所示。

图5-8药品信息界面图
5.3管理员功能模块
5.3.1 公共管理界面
管理员点击"公共管理"这一菜单会显示轮播图列表和通知公吿列表两个子菜单,管理员可以管理网站首页的轮播图,上传、编辑和删除图片内容。可设置轮播图的展示顺序和有效时间,使得平台首页内容保持最新和吸引用户。管理员可以通过通知公告发布医院相关公告信息。公共管理界面如下图所示。

图5-9轮播图界面图

图5-10通知公告界面图
5.3.2用户管理界面
在用户管理页面中可以对管理员、注册用户和医生用户三种角色进行管控,还可以对三种角色进行查询、重置、添加和删除。用户管理界面如下图所示。

图5-11用户管理界面图
系统用户管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.3.3 资讯管理界面
管理员点击"资讯管理"这一菜单会显示医疗资讯列表和资讯分类列表两个子菜单,点击"资讯列表"可以查看主题类型详情,可以进行查询、重置、删除等操作。点击"资讯分类",可以添加新的资讯频道名称。资讯管理界面如下图所示。

图5-12医疗资讯界面图

图5-13资讯分类界面图
5.3.4 药品信息界面
管理员点击"药品信息管理"这一菜单会显示药品信息列表这个子菜单,点击"药品信息列表"可以查看药品信息详情,可以进行查询、重置、删除等操作。药品信息界面如下图所示。

图5-14药品信息管理界面图
- 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
宠物医院管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在宠物医院管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2系统测试方法
在对宠物医院管理系统进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让宠物医院管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个宠物医院管理系统开发所牵扯的该问题都必须一一解决,提高宠物医院管理系统的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
6.3功能测试
用户登录测试:
|------|--------------------|----------------|----------------|------|
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
| 登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
| 登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除宠物信息测试:
|----------|------|-------------|-------------|------|
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 删除宠物信息模块 | 宠物信息 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
|--------|----------------------------|------------------|------------------|------|
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
| 修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
| 修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,宠物医院管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
- 总结
宠物医院管理系统的设计与实现,通过Servlet框架和HTML框架的有机结合,不仅实现了功能全面、操作便捷的系统目标,也为提升宠物医院的整体运营效率和服务质量提供了强有力的技术支持。在项目开发过程中,团队注重每一个细节的打磨,从前端用户界面的友好设计到后端数据处理逻辑的严谨性,都经过了反复测试与优化。这种前后端分离的设计模式,使得系统的维护变得更加简单,同时也为未来的功能扩展预留了充足的空间。通过采用现代的安全措施,如数据加密、访问控制等手段,有效保护了用户的敏感信息,增强了系统的安全性。
本项目的成功实施,展示了技术在推动行业进步中的重要作用。对于宠物医院而言,一个高效的信息管理系统能够极大地简化日常工作流程,减少人为错误的发生,并提高工作效率。在预约管理和病例记录方面,系统提供的自动化处理能力,使得医护人员可以更专注于对宠物的治疗和服务质量的提升。药品库存管理模块则确保了药品的有效管理和合理使用,避免了资源浪费。系统不仅满足了宠物医院日常运营的基本需求,还为管理者提供了决策支持的数据依据,助力宠物医院向更加专业化、科学化的方向发展。
参考文献
- 张又. 宠物题材纪录片引起观众共鸣的原因探析------以《宠物医院》为例 [J]. 喜剧世界(下半月), 2024, (10): 103-105.
- 王勇,周莹,张会丽. 基于单片机的宠物医院温湿度监测系统设计 [J]. 仪表技术, 2024, (05): 38-42.
- 李天顺,战晓燕,钟登科,等. 城市兽医公共卫生视域下宠物医院生物安全的管理 [J]. 上海畜牧兽医通讯, 2024, (02): 70-73.
- 孙佼佼,胡洪基,郭英之. 城市宠物医院空间分布及其影响因素------以上海为例 [J]. 经济地理, 2024, 44 (03): 86-96.
- 徐庆. XRP宠物医疗集团连锁经营管理改进研究[D]. 电子科技大学, 2024.
- 李滢雪. 《宠物医院》的年轻化叙事和价值传递 [J]. 视听, 2024, (01): 114-117.
- 孔学礼,陈婷婷,吴礼平,等. "双高"背景下宠物医疗技术专业人才需求调研报告 [J]. 中国动物保健, 2023, 25 (10): 127-128.
- 李晓辉. 宠物医院的管理制度研究 [J]. 畜牧业环境, 2023, (09): 116-117.
- 王慧. 一个宠物医院管理系统的设计与实现 [J]. 电脑知识与技术, 2023, 19 (10): 67-70.
- 宗海波. 宠物医院财务管理问题探究[C]// 中国国际科技促进会国际院士联合体工作委员会. 2023年财经与管理国际学术论坛论文集(四). 玉溪鹏爱宠物医院有限公司;, 2023: 3.
- 王眉宇. 瑞派宠物为何连续两年荣登独角兽企业榜单?[N]. 中国畜牧兽医报, 2022-06-19 (004).
- 石达友,陈义洲,吴玄光,等. 高校兽医专业宠物医疗人才培养的思考 [J]. 广东畜牧兽医科技, 2022, 47 (03): 1-3+30.
- 邓星燕. 宠物医院营收增长的逻辑分析 [J]. 广东畜牧兽医科技, 2022, 47 (03): 43-48+81.
- 张玉香. 进一步加强宠物医院管理[N]. 华兴时报, 2021-10-29 (003).
- 严涵,王欣. 宠物保险产品设计及风控管理 [J]. 中国保险, 2021, (10): 54-57.张又. 宠物题材纪录片引起观众共鸣的原因探析------以《宠物医院》为例 [J]. 喜剧世界(下半月), 2024, (10): 103-105.
- Wang Q ,Zheng L ,Hong R .Exploration on the Teaching Model of Java Programming and Practice for Students with No Programming Background[J].Advances in Educational Technology and Psychology,2024,8(6):
- 54-57.Zhou R ,Luo K ,Chen X , et al.Research on the Construction of Computer Courses Based on CBE-CDIO Engineering Education Concept: Taking the Course "JAVA Programming" as an Example[J].Contemporary Education Frontiers,2023,1(2):
- Davi V .Designing Hexagonal Architecture with Java:Build maintainable and long-lasting applications with Java and Quarkus[M].Packt Publishing Limited:2023-09-29.
- Wai H K ,Funabiki N,Aung T S, et al.Answer Code Validation Program with Test Data Generation for Code Writing Problem in Java Programming Learning Assistant System[J].Engineering Letters,2024,32(5):
- Ullenboom C .Java Programming Exercises:Volume Two: Java Standard Library[M].CRC Press:2024-03-30.
致 谢
这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设能够完成离不开老师的帮助。我对老师由衷的表示感谢,
其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。
由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。
点赞+收藏+关注 → 私信领取本源代码、数据库