目 录
摘 要
中医舌象辅助分析系统采用SpringBoot和Java技术构建,整合了患者、医生与管理员三方用户的功能需求,形成一套高效便捷的中医辅助诊断平台。系统通过模块化设计实现了中医资讯展示、病症指标管理、病例评估与诊断报告生成等功能。医生用户可以在线查看患者病例并进行诊断,患者用户能够添加病例信息并与医生实时沟通,管理员则负责整体系统的用户权限、资源分配及内容维护。系统的开发遵循现代化软件工程规范,确保功能的可扩展性与数据的安全性。
借助SpringBoot框架的优势,系统具备高效的运行性能与灵活的部署能力。通过Java语言实现后端逻辑处理,结合前端交互设计,为用户提供流畅的操作体验。系统在病症类型管理与病症指标管理方面进行了深度优化,支持病症指标的动态调整与多维度查询,帮助医生快速定位问题并提供精准建议。资源管理模块实现了中医资讯分类配置,方便管理员对内容进行统一维护。整个系统的设计与实现注重实用性与易用性,为中医诊疗的数字化发展提供了有力支持。
关键词:中医舌象辅助分析系统;SpringBoot框架;Java语言
Abstract
The TCM Tongxiang Auxiliary Analysis System is built using SpringBoot and Java technologies, integrating the functional needs of patients, doctors, and administrators to form an efficient and convenient TCM auxiliary diagnostic platform. The system achieves modular design for functions such as TCM information display, symptom indicator management, case evaluation, and diagnostic report generation. Doctor users can view patient cases online and conduct diagnoses, while patient users can add case information and communicate with doctors in real time. Administrators are responsible for overall user permissions, resource allocation, and content maintenance. The development of the system adheres to modern software engineering standards, ensuring the scalability of functions and data security.
Leveraging the advantages of the SpringBoot framework, the system boasts efficient operational performance and flexible deployment capabilities. The backend logic is implemented using Java, combined with front-end interaction design to provide users with a smooth user experience. The system has undergone in-depth optimization in disease type management and disease indicator management, supporting dynamic adjustments and multi-dimensional queries of disease indicators, helping doctors quickly pinpoint issues and offer precise recommendations. The resource management module realizes categorized configuration of traditional Chinese medicine information, facilitating unified maintenance by administrators. The design and implementation of the entire system emphasize practicality and ease of use, providing strong support for the digital development of traditional Chinese medicine diagnosis and treatment.
Keywords: TCM tongue image auxiliary analysis system; SpringBoot framework; Java language
第一章 绪 论
1.1研究背景及意义
中医作为中华民族几千年传承下来的瑰宝,在现代医学领域占据着独特而重要的位置。然而,传统中医诊断方式依赖医生个人经验与知识积累,这在一定程度上限制了中医的发展与普及。面对现代社会快节奏的生活方式和人们对健康需求的日益增长,如何将传统中医理论与现代信息技术相结合,成为推动中医现代化发展的重要课题。中医舌象分析系统通过整合现代软件工程技术与中医舌诊理论,为患者提供了一种全新的自我健康管理途径,也为医生提供了更高效、准确的辅助诊断工具。这一系统的开发有助于提高中医诊断的客观性和科学性,促进中医诊疗技术的进步。
构建中医舌象分析系统不仅有助于改善医疗服务效率,也对中医学术研究有着积极的推动作用。系统通过标准化的数据收集与处理流程,能够有效支持病例资料的整理与分析,为后续的研究工作奠定坚实基础。对于广大患者而言,这种数字化平台的出现极大地方便了他们获取专业医疗建议,特别是那些地处偏远地区或无法及时就医的人群,可以借此机会得到专业的中医指导。而对于医生来说,该系统提供了一个便捷的渠道来管理和评估患者病情,优化了医患沟通机制,提高了诊疗质量。系统还特别强调用户数据的安全性和隐私保护,确保每一位用户的个人信息得到妥善管理,增强了用户信任感和满意度,为中医服务模式创新提供了新的思路和方法。
1.2国内外研究现状
在国内,关于中医舌象的研究历史悠久且成果丰富。传统中医理论中,舌象是诊断疾病的重要依据之一,相关文献记载了大量基于舌象特征进行病症判断的经验法则。近年来,随着现代科学技术的发展,国内学者对舌象分析进行了多方面的探索,尝试将传统医学知识与现代检测技术相结合。例如,有研究通过图像处理技术来量化舌象的颜色、纹理等特征,并建立了相应的数据库用于辅助诊断。一些科研团队还开展了关于特定病症与舌象变化关系的专项研究,试图揭示不同疾病状态下舌象的具体表现形式及其规律。这些研究为中医现代化进程提供了有力支持,也为临床诊疗提供了科学依据。
在国外,中医舌象作为东方医学的一部分,同样引起了广泛的关注和研究兴趣。西方学者倾向于从跨文化交流的角度出发,探讨中医舌象在国际背景下的应用价值和接受程度。国外研究不仅关注于如何借鉴中医舌象分析的方法来改善当地医疗服务,而且注重比较东西方医学体系之间的差异与共通之处。部分研究聚焦于开发适合非中文环境使用的标准化舌象评估工具,以促进中医诊断方法在全球范围内的推广。与此同时,也有不少国际合作项目致力于建立跨国界的中医研究网络,共享研究成果,推动中医舌象研究向国际化方向发展。这种跨文化的交流与合作对于增进世界对中国传统医学的理解具有重要意义,同时也促进了全球健康事业的进步。
1.3论文组织结构
本论文共分为七个主要章节,具体结构如下:
1. 绪论:介绍研究背景与意义,回顾国内外研究现状,并概述论文的组织结构。
2. 相关技术介绍:详细介绍与本研究相关的技术,包括Java语言、B/S框架、SpringBoot框架、MVC框架、Vue技术和MySQL数据库。
3. 需求分析:对系统的功能需求和非功能需求进行分析,明确用户和管理员的需求,并进行可行性分析,包括技术、操作和经济可行性。
4. 系统设计:涵盖系统架构设计、系统模块设计,并进行数据库的概念设计与表设计。
5. 系统实现:具体描述各个功能模块的实现过程,展示系统如何根据需求进行开发。
6. 系统测试:阐述测试的目的,分析测试结果并得出结论,以验证系统的稳定性和功能完整性。
7. 总结:总结研究的主要成果和贡献,指出存在的不足及未来的研究方向。
第二章 关键技术
2.1 B/S框架
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式。它以Web浏览器作为客户端,服务器端通过Web技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序[1]。在B/S架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S(Browser/Server)架构是一种网络架构模型,其主要特点是客户端通过浏览器与服务器进行通信,所有的业务逻辑和数据处理都在服务器端完成,客户端仅负责展示数据[2]。B/S架构本质上是一种客户端-服务器模式的变体,它通过将传统的C/S(Client/Server)架构中的客户端功能移到浏览器中,简化了客户端的开发和维护工作。在B/S架构中,用户通过浏览器发送请求,浏览器负责展示从服务器获取的数据,服务器则处理请求并返回响应。该架构避免了安装和配置客户端软件的麻烦,也减少了对客户端硬件的依赖,适合于需要大规模部署和跨平台支持的应用系统。
B/S模式三层结构图如图2-1所示。

图2-1B/S模式三层结构图
2.2 SpringBoot框架
SpringBoot是一个用于简化Spring应用开发的开源框架,通过减少开发人员配置和依赖的复杂性,使得开发者能够快速构建基于Spring的生产级应用。SpringBoot基于Spring框架之上,提供了一种自配置的方式,使得开发者可以以最少的配置来启动和开发Spring应用[3]。它通过约定优于配置的原则,将常见的配置预设,使得开发人员能够聚焦于业务逻辑的实现,而不必过多关注繁琐的配置和环境搭建。
SpringBoot框架的核心特点之一是其自动配置功能。它能够根据项目中已存在的类和库,自动推断出开发环境的配置需求,减少了手动配置的工作量。SpringBoot还提供了嵌入式Web服务器支持(如Tomcat、Jetty等),使得应用可以以独立的Java应用形式运行,不再依赖外部的Web容器。这种特性使得SpringBoot特别适合于微服务架构的构建。SpringBoot还通过其提供的启动器(Starters)简化了常见功能的集成,例如数据库连接、消息队列、缓存、认证与授权等,从而提升了开发效率[4]。
2.3 Vue技术
Vue.js是一款用于构建用户界面的渐进式JavaScript框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面[5]。Vue.js通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的UI拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js具备数据绑定和虚拟DOM的特性。数据绑定意味着当数据变化时,Vue会自动更新与之绑定的DOM元素,从而实现视图的实时更新。虚拟DOM则是Vue.js的一种优化手段,通过将对DOM的操作抽象为一个虚拟的DOM树来提高性能,减少实际DOM操作的开销[6]。Vue还提供了丰富的插件和工具,如Vue Router用于路由管理,Vuex用于状态管理,方便开发者构建复杂的前端应用。Vue的灵活性和简洁性使其成为现代Web开发中常用的前端框架之一。
2.4 MySQL数据库
MySQL是一种开源的关系型数据库管理系统(RDBMS),基于SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL具有高度的性能、可扩展性和可靠性。MySQL使用表格结构来存储数据,每个表由多个列和行组成,数据通过SQL查询语言进行操作[7]。MySQL支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性。
MySQL支持ACID事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中InnoDB是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性。
2.5 Java语言
Java语言是一种广泛使用的高级编程语言,具有平台无关性、面向对象特性和丰富的标准库。Java通过Java虚拟机(JVM)实现跨平台运行,开发者可以编写一次代码,在任何支持JVM的环境中执行[8]。Java的面向对象特性使得代码复用和模块化变得更加容易,促进了软件的维护和扩展。Java支持多线程编程,允许开发者在同一程序中同时执行多个任务,提升了应用程序的性能。
Java语言的语法结构简洁且易于理解,吸引了大量开发者。Java的标准库包含数据结构、输入输出处理、网络编程等众多功能模块。这使得开发者在构建应用程序时能够高效利用已有工具,减少重复劳动。Java广泛应用于企业级应用、移动应用、Web开发和大数据处理等领域。
2.6 MVC框架
MVC(Model-View-Controller)框架是一种软件设计模式,它将应用程序划分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种分离的关注点有助于提升系统的可维护性、可扩展性和灵活性。
模型负责处理应用程序的数据逻辑和业务规则。它管理应用程序的状态和数据,并响应视图和控制器的请求。模型通常与数据库交互,执行数据的增删改查操作,以及业务逻辑的处理。模型是应用程序的核心部分,封装了数据相关的操作,使得数据管理和业务逻辑的处理更加独立和模块化。
视图负责展示应用程序的用户界面。它从模型中获取数据,并将其呈现给用户。视图不关心数据的来源和处理逻辑,只负责数据的展示和用户的交互。视图通常使用HTML、CSS和JavaScript等技术构建,以提供丰富的用户体验。在MVC框架中,视图是可替换的,允许开发者在不改变业务逻辑的情况下,修改用户界面的设计。
控制器作为模型和视图之间的中介,负责接收用户的请求,调用相应的模型组件处理请求,并选择适当的视图组件来展示结果。控制器处理用户输入,将其转换为对模型的调用,并将模型处理的结果传递给视图进行展示。控制器还负责用户的导航,根据用户的请求和应用程序的状态,决定展示哪个视图。
MVC框架通过将应用程序划分为三个独立的组件,实现了关注点分离。这种结构使得开发者能够独立地开发、测试和维护每个组件,提高了开发效率和代码质量。MVC框架还提供了灵活的用户界面设计、可扩展的业务逻辑处理和清晰的组件间通信机制,使得应用程序更加易于维护和扩展。
第三章 系统分析
3.1系统可行性分析
3.1.1技术可行性
从技术可行性角度来看,所选技术能够充分满足当前应用需求。B/S架构具有良好的跨平台特性,借助浏览器端渲染与服务器端处理,能够实现不同操作系统和设备上的无缝访问。SpringBoot框架基于成熟的Spring生态,自动配置机制降低了开发与部署的复杂度,支持高效开发和微服务架构的实现。Vue.js作为前端技术,其数据绑定和虚拟DOM优化使得大规模应用的构建与维护更加高效。MySQL数据库在数据存储、查询优化方面具有强大能力,其ACID事务特性与高并发支持能够保证数据一致性与系统稳定性,且广泛应用于多种行业,具备可扩展性和高效性。
3.1.2经济可行性
从经济可行性角度,所有选用的技术均为开源软件,降低了开发与部署成本。B/S架构减少了客户端软件的安装和更新需求,减轻了IT维护成本。SpringBoot框架通过减少配置和自动化部署,降低了开发和运营的时间成本。Vue.js提供了快速开发的能力,减少了前端开发的人员需求。MySQL作为开源数据库,不仅在授权成本上具有优势,而且通过其高效的查询与事务处理能力,可以在保证性能的同时降低硬件资源的投入,实现资源的高效利用。
3.1.3操作可行性
从操作可行性角度,所有选用的技术都有良好的文档支持和广泛的开发社区。B/S架构的实施依赖于常见的Web技术,技术栈成熟,操作流程规范,适合企业级应用的快速部署与运维。SpringBoot框架简化了Spring应用的配置与开发,集成了嵌入式Web服务器,使得开发者能够快速启动项目,减少了对开发环境和部署环境的依赖。Vue.js以组件化、的设计思想,极大提升了前端开发的效率与代码复用性,操作简便。MySQL数据库提供了易于管理的用户界面,操作界面直观,支持多种操作系统,适合日常的数据库管理和维护工作。
3.2系统性能需求分析
1.可用性需求
系统必须具备高可用性,以确保其在各种使用场景下能够稳定运行。为满足可用性要求,系统应当具备自恢复能力和冗余机制,避免因单点故障而导致的服务中断。具体而言,系统的部署架构应支持负载均衡和集群配置,通过多个实例的协作提高整体系统的可用性。系统应提供详尽的监控与告警机制,能够实时追踪系统运行状态,及时发现潜在问题并触发自动恢复操作或通知管理员。在用户体验方面,系统需要提供清晰的错误提示信息,并能够在发生异常时通过回滚操作或其他容错机制,保证用户的操作不受到严重影响。
2.可靠性需求
可靠性要求系统在长时间运行中保持稳定,能够有效应对各种可能的故障和压力。系统设计应支持高可用的数据库架构,采用数据库主从复制、分片等技术以实现数据的可靠存储与访问。应用层应具备容错能力,在面对硬件故障、网络中断等意外情况时,能够保持系统的正常服务或在故障恢复后迅速恢复数据和业务流程。系统应具备日志记录功能,能够全面记录操作过程和异常信息,从而为问题追踪与系统优化提供数据支持。系统的可靠性还需要通过压力测试和稳定性测试来验证,确保在大规模用户访问及高并发场景下能够正常运行,不发生崩溃或数据丢失现象。
3.安全性需求
系统的安全性需求必须得到高度重视,确保系统和用户数据的保密性、完整性和可用性。为实现数据安全,系统应采用加密技术,特别是在用户认证、敏感数据传输和存储过程中,采用SSL/TLS协议进行加密通信,确保数据在传输过程中不被窃取或篡改。系统应支持用户身份验证与授权管理,采用如OAuth、JWT等安全机制防止未授权访问。访问控制应细化到资源级别,确保不同角色的用户只能访问其权限范围内的功能。为了防止恶意攻击,系统还应加强对常见攻击方式(如SQL注入、XSS攻击、CSRF攻击等)的防护,通过输入验证、输出转义、会话管理等技术措施提高系统的安全性。系统应定期进行安全审计与漏洞扫描,及时发现并修补可能的安全漏洞,保障系统的长期安全运营。
3.2.1功能性分析
前端患者用户模块:
- 注册登录:患者用户可以通过注册功能创建个人账户,输入必要的信息如姓名、手机号码、邮箱等,并设置密码。登录功能允许已注册的患者通过输入用户名和密码进入个人账户,进行后续的健康管理和咨询。
- 首页:网站的首页为患者提供了一个直观的界面,展示最新的网站公告、中医相关的资讯、病症指标等信息。页面右侧有一个悬浮的头像图标,患者点击后可以与医生进行在线咨询,获取专业的医疗建议。
- 网站公告:此部分展示最新的网站公告信息,包括活动通知、系统更新、政策变动等,确保患者能够及时了解平台的最新动态。同时,页面还提供了关于我们、联系方式、网站介绍等信息,方便患者了解平台背景和获取帮助。
- 中医资讯:患者可以浏览各类中医相关的资讯文章,并通过点赞、收藏、评论等功能与内容互动,分享自己的观点和经验,增加平台的互动性和用户粘性。
- 病症指标:该模块提供各种病症的指标信息,帮助患者了解不同病症的特征和注意事项。患者同样可以通过点赞、收藏、评论等功能对内容进行互动,与他人分享自己的见解。
- 我的账户:患者可以在此模块修改个人资料,如联系方式、地址等,以及修改账户密码,保证账户的安全性。此模块为患者提供了账户管理的基本功能,确保个人信息的准确性和安全性。
- 个人中心:个人中心是患者管理个人健康信息的核心区域,包括个人首页、添加患者病例、评估报告、医生诊断、收藏、评论管理等。患者可以在这里查看自己的病例记录、保存喜欢的文章或资讯、管理与医生的交流记录,以及查看医生的诊断结果和建议,实现对个人健康状况的全面跟踪和管理。
前端医生用户模块:
- 注册登录:该模块允许医生进行注册,但注册后需要等待管理员审核才能获得登录权限。审核流程确保了平台的专业性和安全性,只有经过验证的医生才能访问和使用系统。
- 首页:医生登录后的首页展示网站的最新公告、中医相关的资讯、病症指标等重要信息。页面右侧有一个悬浮的头像,医生可以通过点击该头像来回复用户的咨询,方便快捷地与患者进行互动。
- 网站公告:此部分提供最新的网站公告信息,包括关于我们、联系方式、网站介绍等,帮助医生了解平台的最新动态和相关政策。
- 中医资讯:医生可以在这里浏览最新的中医资讯,并对感兴趣的内容进行点赞、收藏和评论。这有助于医生持续学习和了解行业动态。
- 病症指标:医生可以查看和学习各种病症的指标信息,并对这些内容进行点赞、收藏和评论。这有助于医生在诊断和治疗时参考最新的医学数据。
- 我的账户:医生可以在此模块中修改个人资料和密码,确保个人信息的安全性和准确性。
- 个人中心:医生可以在此管理自己的患者病例详情,医生还可以进行诊断的撰写,确保患者得到准确及时的医疗建议。为了方便医生回顾和管理自己感兴趣的内容,个人中心还提供了查看收藏和评论管理的功能。通过这些功能,医生可以轻松地访问和整理自己之前标记为重要或有趣的病例和资料,从而提高工作效率和质量。
后端管理员模块:
- 登录:管理员通过输入用户名和密码进入后台管理系统,确保只有授权的用户可以访问敏感数据和执行管理操作。
- 后台首页:管理员登录后,可以点击个人头像查看和编辑个人信息,包括修改密码,以便于进行个人账户的维护和安全设置。
- 系统用户管理:在本系统中,管理员拥有对不同用户账户进行管理的权限,这包括添加新的用户账户、删除不再需要的账户,以及查询现有用户的信息。用户类型涵盖了系统管理员、患者用户以及审核医生用户等多种角色。管理员能够详细查看每位用户的个人信息,这有助于进行更为细致和精确的用户管理。
- 患者病例管理:本模块为管理员提供了全面的患者病例管理工具,允许管理员添加新的患者病例记录,以及对已有的病例进行删除或查询操作。管理员同样可以深入查看病例的详细信息,进行必要的评估和诊断工作,确保患者病例信息的准确性和及时性,从而为患者提供更好的医疗服务。
- 评估报告管理:管理员可以执行对评估报告的管理任务,包括删除不再需要的报告和查询特定报告。管理员还可以查看报告的详细内容,以便于监控和评估患者的健康状况,确保评估报告的质量和时效性。
- 医生诊断管理:管理员在此模块中可以对医生的诊断记录进行管理,包括删除和查询操作。管理员还可以下载诊断报告,便于进行存档和后续的审核工作,确保诊断记录的完整性和准确性。
- 病症类型管理:管理员在本模块中可以添加新的病症类型,并执行删除和查询操作。管理员还可以查看病症类型的详细信息,这有助于维护和更新系统的病症数据库,确保病症信息的准确性和及时更新。
- 病症指标管理:管理员可以在此模块中添加、删除和查询病症指标,并查看相关的评论。这些操作有助于管理员监控和评估病症指标的准确性和相关反馈,从而对病症指标进行有效的管理和调整。
- 系统管理:管理员在本模块中可以管理轮播图,包括添加新的轮播图、删除不再适用的轮播图以及查询轮播图信息。管理员还可以查看轮播图的详细内容,这有助于管理员维护网站的视觉展示效果,并及时更新宣传内容。
- 网站公告管理:管理员在本模块中可以添加、删除和查询网站公告,以及查看公告的详细内容。这有助于管理员及时发布和更新重要信息,确保用户和患者能够接收到最新的通知和公告。
- 资源管理:管理员在本模块中可以管理中医资讯和资讯分类,包括添加新的资讯、删除不再需要的资讯、查询资讯内容以及查看资讯评论。这有助于管理员维护和更新网站提供的资源和信息,确保内容的准确性和时效性,为用户提供高质量的资讯服务。
3.2.2系统用例分析
中医舌象辅助分析系统的完整UML用例图分别是图3-1、3-2、3-3。
患者用户角色用例如下图所示。
图3-1中医舌象辅助分析系统患者用户角色用例图
医生用户角色用例如下图所示。

图3-2中医舌象辅助分析系统医生用户角色用例图
管理员角色用例如下图所示。

图3-3中医舌象辅助分析系统管理员角色用例图
3.3系统总体流程设计
3.3.1数据开发流程
系统开发流程的主要步骤,从需求分析到系统完成的全过程。流程包括需求分析、总体设计(结构、功能、数据)、详细设计(模块、编码)、模块整合与调用,以及测试、扩展和完善,最终完成系统的开发。本系统的开发流程如下图所示

图3-4系统开发流程图
3.3.2用户登录流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如下图所示。

图3-5登录流程图
3.3.3系统操作流程
用户首先进入系统登录界面,输入用户名和密码后,系统验证信息是否正确。若验证失败,返回登录界面重新输入,若验证成功,则进入功能界面,执行相应功能处理后结束操作流程。操作流程如下图所示。

图3-6系统操作流程图
3.3.4添加信息流程
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如下图所示。

图3-7添加信息流程图
3.3.5修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入,若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如下图所示。

图3-8修改信息流程图
3.3.6删除信息流程
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节,若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如下图所示。

图3-9删除信息流程图
第四章 总体设计
本章主要讨论的内容包括中医舌象辅助分析系统的系统结构设计、功能模块设计、数据库系统设计。
4.1系统架构设计
系统采用SpringBoot 框架开发,该系统分为VIEW层、Controller层、Model层、DAO层和持久化数据存储层,VIEW层支持电脑浏览器访问系统。VIEW 层与 Controller 层紧密结合并系协同工作,共同完成前台页面的数据展示;Controller层为控制层,通过接收前端请求的参数进行业务处理,返回指定的路径或数据;Model层主要是服务层,用于业务逻辑处理;DAO 和持久化层,主要用于访问数据库和持久化数据[9]。整个系统架构如图下所示。

图4-1系统架构图
4.2系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本中医舌象辅助分析系统中的用例。那么接下来就要开始对本中医舌象辅助分析系统的架构、主要功能和数据库开始进行设计。中医舌象辅助分析系统根据前面章节的需求分析得出,中医舌象辅助分析系统的功能模块图如下图所示。

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

图4-3中医舌象辅助分析系统总E-R关系图
下面根据中医舌象辅助分析系统的数据库总E-R关系图可以得出中医舌象辅助分析系统需要多个E-R图,在此罗列出来一些主要的数据库E-R模型图,如图以下所示:

图4-4患者用户E-R关系图

图4-5患者病例E-R关系图

图4-6医生诊断E-R关系图

图4-7医生用户E-R关系图
4.3.2数据库逻辑结构设计
通过上一小节中中医舌象辅助分析系统中总E-R关系图上得出一共需要创建多个数据表。在此主要罗列几个主要的数据库表结构设计。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 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-assessment_report(评估报告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | assessment_report_id | int | 是 | 是 | 评估报告ID | |
| 2 | patient_user | int | 否 | 否 | 患者用户 | |
| 3 | patient_gender | varchar | 64 | 否 | 否 | 患者性别 |
| 4 | patient_name | varchar | 64 | 否 | 否 | 患者姓名 |
| 5 | phone_number | varchar | 64 | 否 | 否 | 手机号码 |
| 6 | patient_age | double | 否 | 否 | 患者年龄 | |
| 7 | tongue_image_picture | varchar | 255 | 否 | 否 | 舌象图片 |
| 8 | assessment_report | varchar | 255 | 否 | 否 | 评估报告 |
| 9 | evaluation_time | date | 否 | 否 | 评估时间 | |
| 10 | assessment_details | text | 65535 | 否 | 否 | 评估详情 |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | 否 | 否 | 来源ID | |
| 15 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-5-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-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-disease_index(病症指标)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | disease_index_id | int | 是 | 是 | 病症指标ID | |
| 2 | disease_name | varchar | 64 | 否 | 否 | 病症名称 |
| 3 | disease_number | varchar | 64 | 否 | 否 | 病症编号 |
| 4 | type_of_illness | varchar | 64 | 否 | 否 | 病症类型 |
| 5 | tongue_image_picture | varchar | 255 | 否 | 否 | 舌象图片 |
| 6 | disease_details | text | 65535 | 否 | 否 | 病症详情 |
| 7 | hits | int | 是 | 否 | 点击数 | |
| 8 | praise_len | int | 是 | 否 | 点赞数 | |
| 9 | collect_len | int | 是 | 否 | 收藏数 | |
| 10 | comment_len | int | 是 | 否 | 评论数 | |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-doctor_diagnosis(医生诊断)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | doctor_diagnosis_id | int | 是 | 是 | 医生诊断ID | |
| 2 | doctor_user | int | 否 | 否 | 医生用户 | |
| 3 | patient_user | int | 否 | 否 | 患者用户 | |
| 4 | patient_name | varchar | 64 | 否 | 否 | 患者姓名 |
| 5 | patient_gender | varchar | 64 | 否 | 否 | 患者性别 |
| 6 | phone_number | varchar | 64 | 否 | 否 | 手机号码 |
| 7 | patient_age | double | 否 | 否 | 患者年龄 | |
| 8 | diagnostic_report | varchar | 255 | 否 | 否 | 诊断报告 |
| 9 | diagnosis_time | date | 否 | 否 | 诊断时间 | |
| 10 | diagnostic_details | text | 65535 | 否 | 否 | 诊断详情 |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | 否 | 否 | 来源ID | |
| 15 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-11-doctor_user(医生用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | doctor_user_id | int | 是 | 是 | 医生用户ID | |
| 2 | doctors_name | varchar | 64 | 否 | 否 | 医生姓名 |
| 3 | doctors_job_number | varchar | 64 | 是 | 是 | 医生工号 |
| 4 | contact_number | varchar | 16 | 否 | 否 | 联系电话 |
| 5 | qualification_certificate | varchar | 255 | 否 | 否 | 资质证书 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-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-13-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-patient_cases(患者病例)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | patient_cases_id | int | 是 | 是 | 患者病例ID | |
| 2 | patient_user | int | 否 | 否 | 患者用户 | |
| 3 | patient_name | varchar | 64 | 否 | 否 | 患者姓名 |
| 4 | patient_gender | varchar | 64 | 否 | 否 | 患者性别 |
| 5 | phone_number | varchar | 64 | 否 | 否 | 手机号码 |
| 6 | patient_age | double | 否 | 否 | 患者年龄 | |
| 7 | tongue_image_picture | varchar | 255 | 否 | 否 | 舌象图片 |
| 8 | creation_time | date | 否 | 否 | 创建时间 | |
| 9 | patient_history | varchar | 64 | 否 | 否 | 患者病史 |
| 10 | patient_details | text | 65535 | 否 | 否 | 患者详情 |
| 11 | assessment_report_limit_times | int | 是 | 否 | 评估限制次数 | |
| 12 | doctor_diagnosis_limit_times | int | 是 | 否 | 诊断限制次数 | |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-patient_user(患者用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | patient_user_id | int | 是 | 是 | 患者用户ID | |
| 2 | patient_name | varchar | 64 | 否 | 否 | 患者姓名 |
| 3 | patient_gender | varchar | 64 | 否 | 否 | 患者性别 |
| 4 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 5 | patient_age | double | 否 | 否 | 患者年龄 | |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-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-17-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-18-type_of_illness(病症类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_of_illness_id | int | 是 | 是 | 病症类型ID | |
| 2 | type_of_illness | varchar | 64 | 否 | 否 | 病症类型 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-19-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-20-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 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-21-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注册模块图
5.1.3登录模块
中医舌象辅助分析系统中的前台上注册后的用户是可以通过自己的用户名+密码进行登录的,当用户输入完整的自己的用户名+密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的用户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到中医舌象辅助分析系统的首页中,否则将会提示相应错误信息,登录模块如下图所示。

图5-3登录模块图
5.1.4网站公告模块
此部分展示最新的网站公告信息,包括活动通知、系统更新、政策变动等,确保患者能够及时了解平台的最新动态。同时,页面还提供了关于我们、联系方式、网站介绍等信息,方便患者了解平台背景和获取帮助。模块如下图所示:

图5-4网站公告模块图
5.1.5中医资讯模块
患者可以浏览各类中医相关的资讯文章,并通过点赞、收藏、评论等功能与内容互动,分享自己的观点和经验,增加平台的互动性和用户粘性。模块如下图所示。

图5-5中医资讯模块图
5.1.6病症指标模块
该模块提供各种病症的指标信息,帮助患者了解不同病症的特征和注意事项。患者同样可以通过点赞、收藏、评论等功能对内容进行互动,与他人分享自己的见解。模块如下图所示。

图5-6病症指标详情模块图
5.1.7个人中心模块
个人中心是患者管理个人健康信息的核心区域,包括个人首页、添加患者病例、评估报告、医生诊断、收藏、评论管理等。患者可以在这里查看自己的病例记录、保存喜欢的文章或资讯、管理与医生的交流记录,以及查看医生的诊断结果和建议,实现对个人健康状况的全面跟踪和管理。模块如下图所示。

图5-7个人中心模块图
5.2前端医生用户功能模块
5.2.1首页模块
医生登录后的首页展示网站的最新公告、中医相关的资讯、病症指标等重要信息。页面右侧有一个悬浮的头像,医生可以通过点击该头像来回复用户的咨询,方便快捷地与患者进行互动。模块如下图所示。

图5-8首页模块图
5.2.2个人中心模块
医生可以在此管理自己的患者病例详情,医生还可以进行诊断的撰写,确保患者得到准确及时的医疗建议。为了方便医生回顾和管理自己感兴趣的内容,个人中心还提供了查看收藏和评论管理的功能。通过这些功能,医生可以轻松地访问和整理自己之前标记为重要或有趣的病例和资料,从而提高工作效率和质量。模块如下图所示。

图5-9个人中心模块图
5.3后端管理员功能模块
5.3.1系统用户模块
管理员可以查看和管理所有用户的信息,包括患者用户、管理员和医生用户账户。可以进行用户信息的添加、删除、查询和编辑操作。流程图如下所示。

图5-10系统用户流程图
系统用户模块如下图所示。

图5-11系统用户模块图
5.3.2患者病例管理模块
本模块为管理员提供了全面的患者病例管理工具,允许管理员添加新的患者病例记录,以及对已有的病例进行删除或查询操作。管理员同样可以深入查看病例的详细信息,进行必要的评估和诊断工作,确保患者病例信息的准确性和及时性,从而为患者提供更好的医疗服务。模块如下图所示。

图5-12患者病例管理模块图
5.3.3医生诊断管理模块
管理员在此模块中可以对医生的诊断记录进行管理,包括删除和查询操作。管理员还可以下载诊断报告,便于进行存档和后续的审核工作,确保诊断记录的完整性和准确性。模块如下图所示。

图5-13医生诊断管理模块图
5.3.4病症指标管理模块
管理员可以在此模块中添加、删除和查询病症指标,并查看相关的评论。这些操作有助于管理员监控和评估病症指标的准确性和相关反馈,从而对病症指标进行有效的管理和调整。模块如下图所示。

图5-14病症指标管理添加模块图
5.3.5资源管理模块
管理员在本模块中可以管理中医资讯和资讯分类,包括添加新的资讯、删除不再需要的资讯、查询资讯内容以及查看资讯评论。这有助于管理员维护和更新网站提供的资源和信息,确保内容的准确性和时效性,为用户提供高质量的资讯服务。模块如下图所示。

图5-15中医资讯管理模块图
第六章 系统测试
6.1系统测试的目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
6.2测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例[10]。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
6.3测试用例
6.3.1用户登录功能测试
表6-1 用户登录功能测试表
| 用例名称 | 用户登录系统 |
| 目的 | 测试用户通过正确的用户名和密码可否登录功能 |
| 前提 | 未登录的情况下 |
| 测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
| 预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
| 实际结果 | 实际结果与预期结果一致 |
6.3.2创建数据测试
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如表6-2 所示。
表6-2 创建数据测试用例
| 测试用例编号 | YL_05 | |
| 测试用例名称 | 系统使用者进行创建数据 | |
| 测试用例描述 | 使用者输入要创建的数据 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
6.3.3修改数据测试
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如表6-3所示。
表6-3 修改数据测试用例
| 测试用例编号 | YL_06 | |
| 测试用例名称 | 系统使用者进行修改数据 | |
| 测试用例描述 | 使用者对可修改的数据项进行修改 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
| 将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
6.3.4查询数据测试
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如表6-4所示。
表6-4 查询数据测试用例
| 测试用例编号 | YL_05 | |
| 测试用例名称 | 系统使用者进行查询数据 | |
| 测试用例描述 | 全部查询以及输入关键词查询 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 界面自动查询全部 | 显示对应所有记录 | 预期结果 |
| 输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
| 输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
6.4测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
结 论
通过SpringBoot和Java技术的运用,成功构建了一个全面且高效的中医舌象辅助分析系统。该系统实现了用户注册登录、病例管理、医生诊断、评估报告生成以及资源管理等多种功能模块,支持患者与医生之间的即时通讯,极大提升了医疗服务效率和质量。开发过程中,深入理解了中医舌诊理论与现代信息技术融合的可能性,探索出一套适用于数字化中医诊疗的工作流程。
在完成这个项目的过程中,积累了丰富的软件开发经验,特别是在知识结合方面取得了显著进展。对于未来的发展,期望能够进一步优化系统的用户体验,增强数据处理能力,并扩大应用范围至更广泛的健康管理和疾病预防领域。随着技术的进步和研究的深入,有理由相信,这样的系统将为传统中医的现代化转型提供强有力的支持,并在全球范围内促进中医知识和技术的传播与发展。
参考文献
- 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
- 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
- 陈倩怡,何军.Vue+Springboot+MyBatis技术应用解析[J].电脑编程技巧与维护,2020,(01):14-15+28.
- 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
- Java Sunrise Coffee: Better Beans, and Better Coffee [J]. M2 Presswire, 2025,
- Salunke V S ,Ouda A . A Performance Benchmark for the PostgreSQL and MySQL Databases [J]. Future Internet, 2024, 16 (10): 382-382.
- Shao W ,Liu K . Design and Implementation of Online Ordering System Based on SpringBoot [J]. Journal of Big Data and Computing, 2024, 2 (3):
- 汤鸿浩,周会林,李立宾.中医舌象采集及其数据编码格式的标准化研究和探讨[J].中国标准化,2022,(19):112-119.
- 赵凌昊.基于多特征融合的中医舌象分类系统设计与实现[D].河南科技大学,2022.
- 王艺陵.面向便携采集设备的中医舌象分割方法研究[D].河南科技大学,2022.
- 刘波,刘伟,唐波,等.智能中医药数据分析系统的设计与实现[J].电脑知识与技术,2022,18(07):51-53.
- 张岳,唐年亚.“互联网+手机端中医舌诊疾病分析系统”在中医诊断实践教学中的应用[J].卫生职业教育,2021,39(05):104-106.
- 任应秋,任廷革.中医舌诊[M].中国中医药出版社:202007.136.
- 尚一凡.中医舌脉象信息提取与分析及辅助诊断系统的设计[D].郑州大学,2020.
致 谢
中医舌象辅助分析系统设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!
此外,中医舌象辅助分析系统设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。
对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。
最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。
代码:
连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
项目启动文件Application.java,代码如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
修改数据代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
获取某个组下面的数量,代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));
return success(value);
}
注册页登录代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
登录页代码如下:
/**
* 登录
* @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;
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<>()));
}
找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
1719

被折叠的 条评论
为什么被折叠?



