云计算百科
云计算领域专业知识百科平台

X140-基于Java的中药材科普识别系统的设计与实现

 博主介绍: 同学们好,本人从事计算机毕业设计多年服务很多届学生,精通Java、SSM、SpringBoot、Python、微信小程序、安卓APP等。我有上千套Java项目成品,也可根据同学们的需求去按需定制

以下毕设均可提供远程部署安装服务,上方有微信联系方式有需要的可以扫码添加

🌟文末有微信名片获取源码+数据库(上千套毕设+配套论文,白嫖勿扰)🌟 🌟计算机毕设定制(包加功能以及后期修改功能)🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

👇🏻 精彩专栏 推荐订阅👇🏻 Java毕业设计项目精品实战案例《3000套》https://blog.csdn.net/a1g45/category_12324117.html

👇🏻 毕设演示视频👇🏻

X140-基于Java的中药材科普识别系统的设计与实现

摘    要

基于Java的中药材科普识别系统旨在让用户更方便地了解中药材知识、药膳食疗及养生文化内容,并让管理端能对相关信息进行集中管理。系统以Spring Boot为后台框架,Vue为前端展示方式,配合MySQL完成数据存储,在保持结构清晰的同时,也方便后续维护与扩展。系统面向管理员和普通用户两个群体,管理员可管理用户、中药材常识、药材类别、药膳食谱、食材类型、养生文化、行业资讯、公告信息、轮播图以及药材识别结果,并提供个人中心修改密码等基础操作。用户可完成登录与注册,浏览养生文化、药膳食谱、行业资讯、中药材常识与公告信息,并能使用药材识别功能获取相关信息,还能在个人中心查看收藏内容与进行信息管理。系统的设计思路是通过稳定的技术框架实现内容管理、展示和识别功能的结合,使中药材知识呈现更集中、内容获取更方便,提升信息阅读体验,为学习与获取中药材相关知识提供可靠的工具。

关键词:中药材科普识别系统;Spring Boot;Vue;MySQL;Java

ABSTRACT

The popular science identification system of Chinese medicinal materials based on Java aims to make users more convenient to understand the knowledge of Chinese medicinal materials, Tonic Diet and health culture, and to enable the management end to centrally manage relevant information. The system uses Spring Boot as the backend framework, Vue as the frontend display method, and MySQL to complete data storage. While maintaining a clear structure, it is also convenient for subsequent maintenance and expansion. The system is open to administrators and ordinary users. Administrators can manage users, common knowledge of traditional Chinese medicine, medicine categories, Tonic Diet recipes, food material types, health culture, industry information, announcement information, broadcast maps and medicine identification results, and provide basic operations such as personal center password modification. Users can complete login and registration, browse health culture, Tonic Diet recipes, industry information, common sense of Chinese medicinal materials and announcement information, obtain relevant information using the medicinal material identification function, and view the collection content and conduct information management in the personal center. The design concept of the system is to combine content management, display, and recognition functions through a stable technical framework, making the presentation of traditional Chinese medicine knowledge more centralized and content acquisition more convenient, enhancing the information reading experience, and providing reliable tools for learning and acquiring knowledge related to traditional Chinese medicine.

Key Words: Traditional Chinese Medicine Popular Science Recognition System; Spring Boot; Vue; MySQL; Java

目  录

1章 绪论………………………………………………………. 1

1.1 研究背景和意义…………………………………………… 1

1.1.1 研究的背景…………………………………………… 1

1.1.2 研究的意义…………………………………………… 1

1.2 国内外发展现状…………………………………………….. 2

1.2.1 国内发展现状…………………………………………. 2

1.2.2 国外发展现状…………………………………………. 2

1.3 研究的内容………………………………………………… 2

1.4 论文组织结构………………………………………………. 3

2章 关键技术…………………………………………………… 4

2.1 Java语言………………………………………………….. 4

2.2 Vue框架…………………………………………………… 4

2.3 Spring Boot框架……………………………………………. 4

2.4 MySQL数据库……………………………………………….. 5

2.5 开发环境及其应用软件……………………………………….. 5

3章 系统分析…………………………………………………… 6

3.1 性能需求分析………………………………………………. 6

3.2 可行性分析………………………………………………… 6

3.2.1 经济可行性…………………………………………… 6

3.2.2 操作可行性…………………………………………… 6

3.2.3 技术可行性…………………………………………… 7

3.3 系统用例分析………………………………………………. 7

3.4 系统流程分析………………………………………………. 8

3.4.1 登录流程分析…………………………………………. 8

3.4.2 注册流程分析…………………………………………. 9

3.4.3 中药材常识管理流程分析……………………………….. 10

3.4.4 养生文化管理流程分析…………………………………. 11

4章 系统设计………………………………………………….. 13

4.1 系统整体架构设计………………………………………….. 13

4.2 数据库设计……………………………………………….. 13

4.2.1 数据库E-R………………………………………… 13

4.2.2 数据库表……………………………………………. 18

5章 系统实现………………………………………………….. 26

5.1 管理员功能模块实现………………………………………… 26

5.1.1 用户管理……………………………………………. 26

5.1.2 药材类别管理………………………………………… 27

5.1.3 行业资讯管理………………………………………… 28

5.1.4 公告信息管理………………………………………… 30

5.2 用户功能模块实现………………………………………….. 31

5.2.1 养生文化……………………………………………. 32

5.2.2 药膳食谱……………………………………………. 32

5.2.3 中药材常识………………………………………….. 32

5.2.4 药材识别……………………………………………. 33

6章 系统测试………………………………………………….. 34

6.1 测试目的…………………………………………………. 34

6.2 测试方法…………………………………………………. 34

6.3 测试结果…………………………………………………. 34

6.3.1 管理员功能测试结果…………………………………… 34

6.3.2 用户功能测试结果…………………………………….. 36

结  论…………………………………………………………. 37

参考文献…………………………………………………………. 38

  …………………………………………………………. 39

附录A 基于Java的中药材科普识别系统的设计与实现的主要功能实现代码………. 1

第1章 绪论

1.1 研究的背景和意义

1.1.1 研究的背景

中药材在日常生活中被广泛接触,但很多人对其外观特征、常见用途、食用方式、养生价值等内容了解并不多,获取信息的渠道也比较分散。中药材的品类多、叫法杂,同一种药材在不同地区可能存在不同称呼,使普通用户在查阅知识时容易出现混淆。中药材知识多依靠传统经验积累,很多描述以文字为主,没有统一的图文整理方式,学习过程略显零散。随着信息量不断增加,人们在获取中药材知识时常常需要在书籍、网络和视频之间来回切换,这给用户带来一定困扰,特别是一些想了解药材性状、来源和养生文化内容的用户,缺乏一个相对集中、便于查阅的平台[1]。与此同时,中药材与日常饮食、养生习惯联系紧密,不少药材在食疗中有较多应用,但这些知识散落在不同资料中,缺乏统一呈现。部分用户在接触药膳或养生文化内容时想进一步了解药材属性,却难以快速获取到准确易懂的信息。再加上移动端普及,人们更偏向在一个较方便的平台中查看图文知识、资讯、食疗方法等内容,因此对一个能集中展示中药材常识、药膳食谱、养生文化、资讯内容的平台有一定需求。基于这一现状,需要将分散的中药材科普资源以更直观方式呈现,让药材知识的查询更轻松,让用户在学习中药材时少绕弯路,为了解中药材基础知识提供便利[2]。

1.1.2 研究的意义

开展中药材科普相关系统的建设,有助于让用户更轻松地接触和理解中药材基础知识,将原本分散的中药材常识、药膳信息、养生文化内容通过一个统一平台呈现,使用户可以根据自己的兴趣进行查阅。中药材在日常饮食与养生中出现频率较高,很多人希望通过可靠内容来了解其特点、常见食用方式和文化背景,一个集成度较高的平台能让学习过程变得简单,减少查找信息时的重复步骤。通过集中展示图文信息,用户能够更直观地认识药材外观和基本属性,也能更容易分辨一些相似度较高的药材,对日常辨识和学习有一定帮助。中药材相关内容跨越常识、养生、药膳、资讯等多个方面,普通用户往往难以系统梳理,通过一个统一的平台把这些内容串联起来,有助于形成较为清晰的知识结构。对于喜欢药膳食疗的群体,系统呈现的药膳食谱和食材类型信息,也能让他们在生活中更方便地参考。对于想了解养生文化的用户,通过图文化的展示方式能更容易理解相关内容。构建这样的平台,不仅能让中药材知识变得更易获取,也让用户在日常生活中遇到药材相关问题时有一个可靠的查询入口,为人们认识与了解中药材提供一定帮助[3]。

1.2 国内外发展现状

1.2.1 国内发展现状

近几年国内在中药材信息化与识别方面的研究与应用逐步增多,学术界和企业都在尝试把图像处理、机器学习等技术用到中药材的分类、真伪鉴别与质量评价上。高校和研究机构发表了不少关于用深度学习识别中药材或饮片的论文,并提出把图像特征与化学指纹等多源信息结合的思路以提升鉴别准确率。与此同时,地方性的大规模中药资源普查与数字标本采集工作也在进行,积累了大量带经纬度和图片的样本数据,为后续建立可靠的图像库和训练集提供基础[4]。市场端出现了若干科普类与追溯类的移动应用,能提供中药材的图文查询、溯源或电子标本浏览功能,但在物种覆盖、图片标准化与数据库互通上仍有改进空间。总体来看,国内在数据采集、标准化和人工智能识别算法的探索上已形成若干成果,但从面向普通用户的科普呈现、数据集规模与识别模型的通用性方面还有提升空间。

1.2.2 国外发展现状

国外对药用植物或草本植物的识别研究以计算机视觉与迁移学习为主,许多工作侧重叶片、花序等部位的图像分类问题,研究者常用公开数据集与迁移学习方法来提高小样本下的识别能力[5]。部分国家的研究把焦点放在多物种识别系统和移动端识别工具上,目标是帮助非专业用户在野外或市场中快速辨识植物。近年来也有跨国团队把合成图像、集成深度学习框架与更大规模图像库结合,以提高模型在不同光照、角度和处理状态下的稳健性。国外在构建通用植物识别基线、数据共享与评价方法方面经验较多,但针对中药材特有的加工形式(如饮片、干燥切片)和地方命名差异的专项研究相对较少,因而在面向中药材科普的细化应用上仍有借鉴国内成果的空间[6]。

1.3 研究的内容

本课题的研究内容围绕中药材科普信息的整理、展示与识别展开,重点在于构建一个方便用户获取中药材常识、药膳食疗和养生文化内容的平台,并为管理员提供完整的信息管理入口。系统采用Java语言作为主要开发语言,以Spring Boot作为后台框架,用于实现中药材信息管理、药膳食谱管理、养生文化管理、行业资讯发布、公告管理、轮播图管理以及药材识别等功能;前端使用Vue框架呈现界面内容,配合MySQL完成数据的分类存储与调用。课题的研究范围覆盖管理员端和用户端两个部分,管理员负责用户管理、药材类别与常识维护、食材类型与药膳信息维护、文化类型与养生文化内容整理、行业资讯与公告发布,并在个人中心进行信息维护。用户部分的研究内容包含登录注册、浏览药膳食谱、中药材常识、行业资讯、公告和养生文化内容,并可以使用药材识别功能查看识别结果,还能在个人中心管理收藏内容与修改密码。课题研究旨在把分散的中药材知识通过统一结构整合起来,让内容查询更集中,通过技术框架实现图文展示与识别结合,从而达到科普类系统的建设目标,为用户获取中药材相关资料提供便利。

1.4 论文组织结构

本课题主要从中药材科普识别系统的相关研究背景以及技术分析、系统分析、系统设计、系统实现、系统测试六个方面进行分别论述。

第1章绪论,详细介绍了中药材科普识别系统的研究背景和意义、国内外发展现状、主要研究内容以及论文的组织结构。

第2章关键技术,主要介绍了中药材科普识别系统在本课题所用到的关键技术。

第3章系统分析,主要从性能需求分析、可行性分析、系统用例分析、系统流程分析四个方面进行介绍。

第4章系统设计,主要从中药材科普识别系统的整体架构设计和数据库设计来进行。

第5章系统实现,主要从管理员系统功能模块实现和用户系统功能模块实现两个方面来介绍,并通过截图对系统功能进行展示。

第6章系统测试,中药材科普识别系统测试与结果分析。

第2章 关键技术

2.1 Java语言

Java语言作为系统的主要开发语言,用在后台业务逻辑的构建、中药材信息处理、药膳食谱数据整理、识别结果的接收与展示等核心部分。Java语法相对稳定,结构清晰,适合搭建中型管理类系统,便于后续扩展与维护。中药材科普信息涉及类别划分、属性描述、内容检索、数据增删改查等多类操作,Java能通过面向对象的方式把这些内容拆分成独立模块,从而让药材类别管理、养生文化内容处理、资讯信息管理等部分稳定运行。Java生态丰富,和数据库、前端交互都有较成熟的解决方案,能保证数据在不同模块间顺畅传递。项目中的药材识别结果也需要在后台进行解析、处理和显示,Java能通过封装方法来保持逻辑干净明了。Java在长时间运行状态下表现较稳定,适合用在管理员端的持续管理工作中。选择Java是因为它的结构清晰、学习门槛适中、兼容性好,更容易把系统功能拆分成若干可维护的部分[7]。

2.2 Vue框架

Vue框架主要用于系统前端界面的构建,负责养生文化、中药材常识、药膳食谱、公告信息、行业资讯等内容的展示,也承担用户登录注册、个人中心管理和药材识别结果展示等界面的渲染工作。Vue采用数据驱动视图的方式,把页面内容与数据进行绑定,使页面更新更灵活,例如用户浏览中药材常识或药膳食谱时,页面能根据数据变化快速呈现。Vue的组件化结构能把不同模块拆分成独立界面,如药材类别列表、公告详情、行业资讯列表、收藏展示等,从而提高页面复用性。Vue的指令系统简洁,能让页面交互变得更直观,减少前端代码冗余。Vue在处理后台数据时配合Axios即可完成常识查询、药膳检索、资讯列表加载等功能,数据传输过程简单清晰。选择Vue是因为开发门槛适中,界面响应快,组件结构适合构建多页面的管理系统,能更好地呈现中药材科普内容[8]。

2.3 Spring Boot框架

Spring Boot承担系统后台框架的搭建工作,用于支撑中药材常识管理、药膳食谱管理、养生文化管理、公告资讯发布、用户管理、药材识别结果处理等功能。Spring Boot把一些繁琐的配置自动化,让后台开发变得更轻松,也让后台结构更整齐。框架内部的依赖注入机制能让模块之间的联系更自然,例如中药材类别管理、资讯类型管理、食材类型管理等功能都可以通过独立的控制层、服务层与数据层结构来实现,保持清晰的业务划分[9]。Spring Boot在数据交互上较稳定,能让管理员操作的数据在后台处理过程中保持流畅,有利于实现药材信息录入、编辑和展示等功能。框架的原理依赖于Spring体系的IOC和AOP,利用自动配置和嵌入式服务器,让项目搭建和部署更方便。选择Spring Boot是为了让后台功能更易扩展,结构更直观,并适配多类型功能模块的管理场景[10]。

2.4 MySQL数据库

MySQL负责系统所有数据的存储,包括中药材类别、药材常识、膳药食谱、食材类型、养生文化内容、行业资讯、公告信息、轮播图、用户资料、收藏记录以及识别结果等。MySQL结构整齐,适合做内容较多、类别较细的管理类系统,能通过表结构把不同类型的数据分开保存,使查询和更新更方便。中药材科普系统涉及图文内容、分类结构、资料展示等信息,数据库需要具备较好的稳定性来保证常规访问不中断[11]。MySQL的索引机制在查询大量资讯、药膳信息和药材常识内容时能提升速度,让用户端浏览体验更顺畅。其关系型特性适合构建清晰的数据关联关系,例如药材类别与中药材常识、食材类型与药膳食谱之间的对应结构。数据库的事务机制也能在管理员修改内容时保持数据完整。选择MySQL是因为其功能够用、结构清晰、维护成本低,能满足系统在多类内容管理上的需求[12]。

2.5 开发环境及其应用软件

主机:Intel i5-12400处理器,内存16GB

硬盘:512GB固态硬盘

显示器:23.8英寸,1920×1080分辨率

操作系统:Windows 11

软件:

IDEA用于Java后台业务开发与Spring Boot项目构建;

Visual Studio Code用于Vue前端页面开发与界面调试;

MySQL用于系统数据的存储与管理;

Navicat用于数据库表结构查看、数据管理与可视化操作。

第3章 系统分析

3.1 性能需求分析

稳定性分析:系统在日常使用中需要保持稳定,后台依托Java和Spring Boot完成中药材常识、药膳食谱、养生文化、行业资讯等内容的处理,结构较清晰,能保证功能在长时间运行下保持平稳。数据库采用MySQL进行信息管理,表结构简单明了,便于减少异常情况。管理员在进行数据增删改查时,系统需要保持正常执行,不出现内容丢失或无法访问的情况,确保用户浏览药材信息、食谱内容和资讯内容时顺畅可靠[13]。

数据加载分析:系统的数据来源较多,包括中药材类别、常识内容、药膳食谱、养生文化、资讯和公告等,访问时需要保持加载过程自然顺畅。后台通过清晰的业务逻辑处理用户的查询请求,把对应的数据整理好再传给前端。前端页面在展示列表或图文内容时,需要在不同栏目间保持加载流程平稳,让用户浏览药材介绍、查看食谱详情或阅读资讯内容时不会受到过多等待影响,保持整体阅读体验一致。

界面需求分析:系统界面基于Vue构建,页面布局需要简洁、分类清楚,方便用户查看不同模块的内容。用户在浏览中药材常识、养生文化、药膳食谱和资讯公告时,需要界面操作直观,文字和图像呈现清晰。管理员界面需要保证信息管理入口明确,让药材类别管理、食谱管理、文化内容管理等功能能快速找到。界面要求在不同分栏间保持风格一致,操作步骤容易理解,满足日常科普类平台的阅读习惯[14]。

3.2 可行性分析

3.2.1 经济可行性

系统在经济层面具备较高可行性,所使用的技术如Java、Spring Boot、Vue和MySQL均为免费开源工具,能够满足开发需求而不增加额外成本。开发环境中的IDEA社区版、Visual Studio Code、Navicat等工具也有可免费使用的版本,可支持编码、调试与数据库管理。硬件与操作系统为常见配置,无需额外投入专用设备。整体来看,系统建设不需要额外采购付费软件,日常学习环境即可满足项目开发和运行要求,经济负担较小。

3.2.2 操作可行性

系统在使用体验上具有可行性,界面由Vue构建,内容分类清楚,用户可以轻松浏览中药材常识、药膳食谱、公告和资讯。操作步骤简单,符合日常阅读类系统的使用习惯。管理员端的功能入口整齐,方便进行数据管理。后台结构稳定,在内容增删查改过程中能保持流畅,不会影响用户阅读体验。页面设计以图文展示为主,操作方式直接,用户在使用药材识别、内容收藏或信息浏览时都能较快上手,整体操作负担较小。

3.2.3 技术可行性

系统使用的技术结构成熟,Java、Spring Boot、Vue和MySQL在各类管理系统和信息展示平台中应用广泛,相关学习资料充足,自身对这些技术的掌握也能够支撑项目开发。Java适合处理中药材常识、药膳食谱和资讯内容的业务逻辑,Spring Boot对模块拆分清晰,Vue在界面构建上灵活,MySQL可稳定保存中药材类别、食谱和文化信息。这些技术组合结构简单,便于实现中药材科普和识别相关功能,技术风险较低[15]。

3.3 系统用例分析

管理员系统功能模块包括登录、管理员管理(轮播图、管理员)、用户、中药信息管理(药材类别、中药材常识)、膳药食疗管理(药膳食谱、食材类型)、养生文化管理(文化类型、养生文化)、药材识别、行业资讯管理(资讯类型、行业资讯)、公告信息、菜单、个人中心(修改密码)等。管理员用例图如图3-1所示。

图3-1 管理员用例图

用户系统功能模块包括登录、注册、养生文化、药膳食谱、公告信息、行业资讯、中药材常识、系统后台、个人中心(修改密码、中药材常识、药膳食谱、养生文化、药材识别、我的收藏)等。用户用例图如图3-2所示。

图3-2 用户用例图

3.4 系统流程分析

3.4.1 登录流程分析

登录功能提供给用户和管理员进入系统的入口。用户访问登录界面后输入账号与密码,系统会把输入内容送往后台比对,把账号在数据库中查找,并核对密码是否一致。信息匹配成功后,根据账号身份跳转到对应的页面,普通用户进入中药材科普相关模块,可浏览常识、食谱、文化内容等;管理员进入后台管理界面,用于处理中药材类别、养生文化、公告和资讯内容。若输入内容有误,系统会给出提示,让用户重新输入。整个流程围绕账号验证展开,确保用户能进入各自的功能范围,保证后续操作顺利完成。登录流程图如图3-3所示。

图3-3 登录流程图

3.4.2 注册流程分析

注册功能用于创建新的用户账号。用户进入注册界面后,根据页面提示填写账号、密码、姓名、性别、手机号码、邮箱等信息,同时上传头像。系统会对这些内容进行格式检查,确认账号是否重复、手机号和邮箱格式是否正确。当用户申请验证码时,系统会生成一组验证码并展示输入框,用户填写后系统比对验证是否一致。所有信息符合要求后,后台将新用户的数据写入数据库,创建完整的用户档案。注册完成后用户可以直接用账号登录,进入个人中心浏览内容或进行设置。整个流程以信息录入与验证为主,保证账号资料完整可靠。注册流程图如图3-4所示。

图3-4 注册流程图

3.4.3 中药材常识管理流程分析

中药材常识管理功能服务于管理员,用于处理平台内的常识内容。管理员进入该模块后,可看到系统中已存在的常识记录,包括名称、类别、图文介绍、审核状态等信息。管理员可通过药材名称或审核状态进行检索,让内容查找更方便。进入某条记录后可查看其详细内容,对描述不清、格式不规范或信息需要更新的部分进行修改,保存后系统会重新写入数据库。管理员也可以对不合规的内容做删除处理,使展示内容保持整洁。评论区内容也可查看,帮助管理员了解用户反馈。审核通过后,该常识内容才会在用户端展示。中药材常识管理流程图如图3-5所示。

图3-5 中药材常识管理流程图

3.4.4 养生文化管理流程分析

养生文化管理功能让管理员对文化类内容进行处理与审核。进入模块后,系统会列出所有文化文章,包括文化名称、类别、图文介绍、审核状态与发布时间等信息。管理员可按文化名称或审核状态进行筛选,快速定位需要处理的条目。点击某条记录后可以查看其内容,若有文字描述不清、配图不合适或内容不完整,可对相关部分进行修改。管理员也可以删除不符合展示要求的内容,维护内容质量。评论信息同样能够查看,用于判断文章是否存在偏差或误解。审核通过的文化内容会显示在用户端,便于用户阅读与收藏。养生文化管理流程图如图3-6所示。

图3-6 养生文化管理流程图

第4章 系统设计

4.1 系统整体架构设计

系统功能结构围绕管理员和普通用户两个角色展开。管理员通过登录进入后台,可完成管理员管理、用户管理、中药信息管理、膳药食疗管理、养生文化管理、药材识别内容管理、行业资讯管理、公告信息管理和菜单管理,并能在个人中心修改密码。普通用户登录或注册后,可浏览养生文化、药膳食谱、公告信息、行业资讯和中药材常识,也能进入个人中心查看收藏内容、管理个人资料、使用药材识别功能,并查看自己保存的常识、食谱和文化内容。系统把不同功能按角色划分,让管理端专注内容维护,用户端专注内容阅读与识别体验,使整体结构清晰易懂。系统功能模块图如图4-1所示。

图4-1 系统功能模块图

4.2 数据库设计

4.2.1 数据库E-R图

基于Java的中药材科普识别系统的设计与实现的数据库设计核心实体包括用户、管理员、中药材常识、药膳食谱、养生文化、药材识别、行业资讯。用户实体记录用户注册登录及个人相关信息,方便用户使用系统功能;管理员实体用于管理系统各类数据和用户权限,保障系统有序运行;中药材常识实体存储药材相关知识,满足用户了解药材的需求;药膳食谱实体记录食谱详情,为用户提供食疗参考;养生文化实体整合养生相关内容,供用户学习养生知识;药材识别实体保存药材识别记录,辅助用户识别药材;行业资讯实体发布行业相关信息,让用户了解行业动态。这些实体覆盖系统主要功能,支撑系统正常运转。

用户实体包括主键、创建时间、用户账号、用户密码、用户姓名、头像、性别、手机号码、邮箱、最大密码输错次数、用户锁定状态等,用户实体属性图如图4-2所示。

图4-2 用户实体属性图

管理员实体包括主键、创建时间、用户名、密码、角色等,管理员实体属性图如图4-3所示。

图4-3 管理员实体属性图

中药材常识实体包括主键、创建时间、药材名称、图片、药材类别、来源、视频、主治功效、储存条件、药材功效、禁忌、药材介绍、收藏数量、赞、踩、评论数、用户账号、用户id、是否审核、回复内容等,中药材常识实体属性图如图4-4所示。

图4-4 中药材常识实体属性图

药膳食谱实体包括主键、创建时间、食谱名称、食材类型、养生功效、季节、图片、烹饪过程、配方、适应人群、食用方式、相关内容、赞、踩、收藏数、评论数、用户账号、用户id、是否审核、回复内容等,药膳食谱实体属性图如图4-5所示。

图4-5 药膳食谱实体属性图

养生文化实体包括主键、创建时间、文化名称、文化类型、图片、视频、实操方式、养生理念、文化详情、赞、踩、收藏数、评论数、用户账号、用户id、是否审核、回复内容等,养生文化实体属性图如图4-6所示。

图4-6 养生文化实体属性图

药材识别实体包括主键、创建时间、药材名称、药材类型、功效、图片、用户账号、用户姓名、识别时间等,药材识别实体属性图如图4-7所示。

图4-7 药材识别实体属性图

行业资讯实体包括主键、创建时间、资讯标题、资讯类型、封面、视频、简介、内容、发布日期、收藏数、评论数、赞、踩等,行业资讯实体属性图如图4-8所示。

图4-8 行业资讯实体属性图

系统总体E-R图如图4-9所示。

图4-9 系统总体E-R图

4.2.2 数据库表

基于Java的中药材科普识别系统的设计与实现总共由12张表组成,分别为行业资讯评论表(discussxingyezixun)、养生文化评论表(discussyangshengwenhua)、药膳食谱评论表(discussyaoshanshipu)、中药材常识评论表(discusszhongyaocaichangshi)、公告信息表(news)、管理员表(users)、行业资讯表(xingyezixun)、养生文化表(yangshengwenhua)、药材识别表(yaocaishibie)、药膳食谱表(yaoshanshipu)、用户表(yonghu)、中药材常识表(zhongyaocaichangshi)。

行业资讯评论表主要存储行业资讯的评论相关信息,行业资讯评论表字段包括id、addtime、refid、userid、avatarurl、nickname、content、reply、thumbsupnum、crazilynum、istop、tuserids、cuserids,行业资讯评论表如表4-1所示。

表4-1 discussxingyezixun 行业资讯评论表

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

refid

bigint

关联表id

4

userid

bigint

用户id

5

avatarurl

longtext

头像

6

nickname

varchar

(200)

用户名

7

content

longtext

评论内容

8

reply

longtext

回复内容

9

thumbsupnum

int

10

crazilynum

int

11

istop

int

置顶

12

tuserids

longtext

赞用户ids

13

cuserids

longtext

踩用户ids

养生文化评论表主要存储养生文化的评论相关信息,养生文化评论表字段包括id、addtime、refid、userid、avatarurl、nickname、content、reply、thumbsupnum、crazilynum、istop、tuserids、cuserids,养生文化评论表如表4-2所示。

表4-2 discussyangshengwenhua 养生文化评论表

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

续表4-2 discussyangshengwenhua 养生文化评论表

序号

列名

数据类型

长度

主键

列说明

2

addtime

timestamp

创建时间

3

refid

bigint

关联表id

4

userid

bigint

用户id

5

avatarurl

longtext

头像

6

nickname

varchar

(200)

用户名

7

content

longtext

评论内容

8

reply

longtext

回复内容

9

thumbsupnum

int

10

crazilynum

int

11

istop

int

置顶

12

tuserids

longtext

赞用户ids

13

cuserids

longtext

踩用户ids

药膳食谱评论表主要存储药膳食谱的评论相关信息,药膳食谱评论表字段包括id、addtime、refid、userid、avatarurl、nickname、content、reply、thumbsupnum、crazilynum、istop、tuserids、cuserids,药膳食谱评论表如表4-3所示。

表4-3 discussyaoshanshipu 药膳食谱评论表

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

userid

bigint

用户id

4

avatarurl

longtext

头像

5

nickname

varchar

(200)

用户名

6

content

longtext

评论内容

7

reply

longtext

回复内容

8

thumbsupnum

int

9

crazilynum

int

10

istop

int

置顶

11

tuserids

longtext

赞用户ids

12

cuserids

longtext

踩用户ids

中药材常识评论表主要存储中药材常识的评论相关信息,中药材常识评论表字段包括id、addtime、refid、userid、avatarurl、nickname、content、reply、thumbsupnum、crazilynum、istop、tuserids、cuserids,中药材常识评论表如表4-4所示。

表4-4 discusszhongyaocaichangshi 中药材常识评论表

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

refid

bigint

关联表id

4

userid

bigint

用户id

5

avatarurl

longtext

头像

6

nickname

varchar

(200)

用户名

7

content

longtext

评论内容

8

reply

longtext

回复内容

9

thumbsupnum

int

10

crazilynum

int

11

istop

int

置顶

12

tuserids

longtext

赞用户ids

13

cuserids

longtext

踩用户ids

公告信息表主要存储公告相关信息,公告信息表字段包括id、addtime、title、introduction、picture、content,公告信息表如表4-5所示。

表4-5 news 公告信息

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

title

varchar

(200)

标题

4

introduction

longtext

简介

5

picture

longtext

图片

6

content

longtext

内容

管理员表主要存储管理员相关信息,管理员表字段包括id、addtime、username、password、role,管理员表如表4-6所示。

表4-6 users 管理员

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

username

varchar

(200)

用户名

4

password

varchar

(200)

密码

5

role

varchar

(200)

角色

行业资讯表主要存储行业资讯相关信息,行业资讯表字段包括id、addtime、zixunbiaoti、zixunleixing、fengmian、shipin、jianjie、neirong、faburiqi、storeup_number、discuss_number、thumbsup_number、crazily_number,行业资讯表如表4-7所示。

表4-7 xingyezixun 行业资讯

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

zixunbiaoti

varchar

(200)

资讯标题

4

zixunleixing

varchar

(200)

资讯类型

5

fengmian

longtext

封面

6

shipin

longtext

视频

7

jianjie

longtext

简介

8

neirong

longtext

内容

9

faburiqi

date

发布日期

10

storeup_number

int

收藏数

11

discuss_number

int

评论数

12

thumbsup_number

int

13

crazily_number

int

养生文化表主要存储养生文化相关信息,养生文化表字段包括id、addtime、wenhuamingcheng、wenhualeixing、tupian、shipin、shicaofangshi、yangshenglinian、wenhuaxiangqing、thumbsup_number、crazily_number、storeup_number、discuss_number、yonghuzhanghao、userid、sfsh、shhf,养生文化表如表4-8所示。

表4-8 yangshengwenhua 养生文化

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

wenhuamingcheng

varchar

(200)

文化名称

4

wenhualeixing

varchar

(200)

文化类型

5

tupian

longtext

图片

6

shipin

longtext

视频

7

shicaofangshi

varchar

(200)

实操方式

8

yangshenglinian

varchar

(200)

养生理念

9

wenhuaxiangqing

longtext

文化详情

10

thumbsup_number

int

11

crazily_number

int

12

storeup_number

int

收藏数

13

discuss_number

int

评论数

14

yonghuzhanghao

varchar

(200)

用户账号

15

userid

bigint

用户id

16

sfsh

varchar

(200)

是否审核

17

shhf

longtext

回复内容

药材识别表主要存储药材识别相关信息,药材识别表字段包括id、addtime、yaocaimingcheng、yaocaileixing、gongxiao、tupian、yonghuzhanghao、yonghuxingming、shibieshijian,药材识别表如表4-9所示。

表4-9 yaocaishibie 药材识别

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

yaocaimingcheng

varchar

(200)

药材名称

4

yaocaileixing

varchar

(200)

药材类型

5

gongxiao

varchar

(200)

功效

6

tupian

longtext

图片

7

yonghuzhanghao

varchar

(200)

用户账号

续表4-9 yaocaishibie 药材识别

序号

列名

数据类型

长度

主键

列说明

8

yonghuxingming

varchar

(200)

用户姓名

9

shibieshijian

datetime

识别时间

药膳食谱表主要存储药膳食谱相关信息,药膳食谱表字段包括id、addtime、shipumingcheng、shicaileixing、yangshenggongxiao、jijie、tupian、pengrenguocheng、peifang、shiyingrenqun、shiyongfangshi、xiangguanneirong、thumbsup_number、crazily_number、storeup_number、discuss_number、yonghuzhanghao、userid、sfsh、shhf,药膳食谱表如表4-10所示。

表4-10 yaoshanshipu 药膳食谱

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

shipumingcheng

varchar

(200)

食谱名称

4

shicaileixing

varchar

(200)

食材类型

5

yangshenggongxiao

varchar

(200)

养生功效

6

jijie

varchar

(200)

季节

7

tupian

longtext

图片

8

pengrenguocheng

longtext

烹饪过程

9

peifang

longtext

配方

10

shiyingrenqun

varchar

(200)

适应人群

11

shiyongfangshi

varchar

(200)

食用方式

12

xiangguanneirong

longtext

相关内容

13

thumbsup_number

int

14

crazily_number

int

15

storeup_number

int

收藏数

16

discuss_number

int

评论数

17

yonghuzhanghao

varchar

(200)

用户账号

18

userid

bigint

用户id

19

sfsh

varchar

(200)

是否审核

20

shhf

longtext

回复内容

用户表主要存储用户相关信息,用户表字段包括id、addtime、yonghuzhanghao、yonghumima、yonghuxingming、touxiang、xingbie、shoujihaoma、email、max_password_wrong、is_locked,用户表如表4-11所示。

表4-11 yonghu 用户

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

yonghuzhanghao

varchar

(200)

用户账号

4

yonghumima

varchar

(200)

用户密码

5

yonghuxingming

varchar

(200)

用户姓名

6

touxiang

longtext

头像

7

xingbie

varchar

(200)

性别

8

shoujihaoma

varchar

(200)

手机号码

9

email

varchar

(200)

邮箱

10

max_password_wrong

int

最大密码输错次数

11

is_locked

int

用户锁定状态

中药材常识表主要存储中药材常识相关信息,中药材常识表字段包括id、addtime、yaocaimingcheng、tupian、yaocaileibie、laiyuan、shipin、zhuzhigongxiao、chucuntiaojian、yaocaigongxiao、jinji、yaocaijieshao、storeup_number、thumbsup_number、crazily_number、discuss_number、yonghuzhanghao、userid、sfsh、shhf,中药材常识表如表4-12所示。

表4-12 zhongyaocaichangshi 中药材常识

序号

列名

数据类型

长度

主键

列说明

1

id

bigint

主键

2

addtime

timestamp

创建时间

3

yaocaimingcheng

varchar

(200)

药材名称

4

tupian

longtext

图片

5

yaocaileibie

varchar

(200)

药材类别

6

laiyuan

varchar

(200)

来源

7

shipin

longtext

视频

8

zhuzhigongxiao

varchar

(200)

主治功效

9

chucuntiaojian

varchar

(200)

储存条件

10

yaocaigongxiao

varchar

(200)

药材功效

续表4-12 zhongyaocaichangshi 中药材常识

序号

列名

数据类型

长度

主键

列说明

11

jinji

varchar

(200)

禁忌

12

yaocaijieshao

longtext

药材介绍

13

storeup_number

int

收藏数量

14

thumbsup_number

int

15

crazily_number

int

16

discuss_number

int

评论数

17

yonghuzhanghao

varchar

(200)

用户账号

18

userid

bigint

用户id

19

sfsh

varchar

(200)

是否审核

20

shhf

longtext

回复内容

第5章 系统实现

5.1 管理员功能模块实现

5.1.1 用户管理

在用户管理页面后可以看到全部注册用户的列表内容,可按用户名进行搜索,并能查看某个用户的详细资料。管理员能在新增页面里录入新的用户信息,填写基本资料并保存,用来补充系统用户。修改页面允许调整用户的部分信息,避免资料出现错误。删除按钮提供移除不用账号的操作,让列表保持整洁。用户详情页面展示用户的基础信息,让管理员了解账号的使用情况。整体页面布局比较直观,适合日常管理使用。用户管理页面如图5-1所示。用户新增页面如图5-2所示。用户修改页面如图5-3所示。用户详情页面如图5-4所示。

图5-1 用户管理页面

图5-2 用户新增页面

图5-3 用户修改页面

图5-4 用户详情页面

5.1.2 药材类别管理

在药材类别管理页面后可以查看已录入的各类药材分类信息,通过类别名称搜索能快速找到要处理的类别。新增页面支持填写类别名称并保存,用来补全分类内容。管理员在修改页面中可重新编辑名称,方便在分类调整时及时更新。删除按钮可删除不再继续使用的类别,让分类结构保持简洁。类别详情页面展示该分类下的相关说明,使管理员能更清楚掌握分类内容。这个功能主要帮助整理药材信息的结构。药材类别管理页面如图5-5所示。类别新增页面如图5-6所示。类别修改页面如图5-7所示。类别详情页面如图5-8所示。

图5-5 药材类别管理页面

图5-6 药材类别新增页面

图5-7 药材类别修改页面

图5-8 药材类别详情页面

5.1.3 行业资讯管理

在行业资讯管理页面后可以浏览全部发布的资讯内容,支持通过标题或资讯类型进行搜索,使管理员能更快找到对应的新闻或内容。新增页面用于录入资讯标题、分类、正文及配图,让资讯内容更完整。修改页面能再次编辑已发布的内容,用来修正文稿或调整展示方式。查看详情页面能看到资讯正文,并能管理用户评论,了解用户对资讯的看法。删除操作用于移除过期或不合适的资讯。行业资讯管理页面如图5-9所示。资讯新增页面如图5-10所示。资讯修改页面如图5-11所示。资讯详情页面如图5-12所示。

图5-9 行业资讯管理页面

图5-10 行业资讯新增页面

图5-11 行业资讯修改页面

图5-12 行业资讯详情页面

5.1.4 公告信息管理

在公告信息管理页面后可以看到所有已发布的公告内容,并能按标题关键词搜索需要查看的公告。新增页面允许填写公告标题、简介、正文,并上传展示图片,使公告内容更直观。修改页面能再次编辑已发布的公告内容,用来更新某些说明。管理员进入公告详情页面后能完整查看公告展示结构,便于检查排版效果。删除功能用来移除不再需要的公告。公告信息管理页面如图5-13所示。公告新增页面如图5-14所示。公告修改页面如图5-15所示。公告详情页面如图5-16所示。

图5-13 公告管理页面

图5-14 公告新增页面

图5-15 公告修改页面

5.2 用户功能模块实现

5.2.1 养生文化

在养生文化页面后可以按文化名称搜索感兴趣的内容,也能查看系统整理的文化列表,点开某条信息后会展示文化背景、介绍内容、图片等资料。用户可对喜欢的文化内容进行收藏,也可点赞支持或取消点赞。评论区提供留言入口,让用户能发表自己的看法。收藏的文化会记录在个人中心中,用户能随时打开查看。整体内容以文字、图片为主,适合浏览和积累相关知识。养生文化页面如图5-16所示。

图5-16 养生文化页面

5.2.2 药膳食谱

在药膳食谱页面后可以根据食谱名称、季节或食材类型进行搜索,让用户能快速找到适合自己的菜品。进入食谱详情页后会展示制作步骤、使用的食材说明以及养生效果,帮助用户理解制作方式。用户能对喜欢的食谱进行收藏,也能点赞或取消点赞,并能在评论区分享口味评价或自己的制作体验。页面布局偏向图文形式,方便用户查看做法内容。药膳食谱页面如图5-17所示。

图5-17 药膳食谱页面

5.2.3 中药材常识

在中药材常识页面后用户可以按药材名称或药材类别搜索,快速查看某个药材的基础信息。进入详情页后会展示药材的图片、来源、使用方式等内容,并能进行收藏、点赞或踩的操作。用户还可以在新增药材常识页面上传图片或视频,并填写药材的介绍,让更多资料得到补充。评论区允许用户发表意见,分享自己的使用体验。这个功能内容较丰富,图文展示较多。中药材常识页面如图5-18所示。

图5-18 中药材常识页面

5.2.4 药材识别

在药材识别页面后可以看到自己上传过的识别记录,列表展示识别时间与药材名称,方便用户按需查看。用户能进入新增识别页面上传药材图片,并填写名称、类型、功效等内容,使识别记录更完整。上传后可保存到记录列表中,便于之后对比使用。识别详情页展示录入的药材信息,让用户能明确自己上传的内容。药材识别页面如图5-19所示。

图5-19 药材识别页面

第6章 系统测试

6.1 测试目的

在系统测试阶段的目的在于检查中药材科普识别系统在日常使用中的表现,通过对页面操作、功能流程和数据展示进行反复试用,确认功能是否能顺畅完成。测试内容会围绕用户管理、药材类别、行业资讯、公告信息、养生文化、药膳食谱、中药材常识及药材识别等模块展开,观察页面跳转是否正常,数据填写、保存、修改、删除等操作是否稳定,图文内容是否能正确加载。测试过程也会关注系统在不同条件下的使用表现,判断页面内容是否清晰,用户输入是否能被正常处理。通过这些试用方式,能帮助发现功能细节上的问题,保证系统在实际使用中更贴合日常操作习惯。

6.2 测试方法

黑盒测试在本系统中主要用来检查功能是否按正常流程运行,不关注代码结构,只从用户角度操作页面来判断功能是否可靠。测试内容会围绕登录、注册、用户管理、药材类别、行业资讯、公告信息、养生文化、药膳食谱、中药材常识和药材识别等模块展开,通过输入不同数据、点击不同按钮、执行增删改查等操作,观察系统是否给出正确反馈。黑盒方式更贴近日常使用场景,能帮助发现流程不顺、数据出错、页面跳转异常等问题,对保证系统在普通用户手中的使用效果有较明显的帮助。

单元测试在本系统中主要针对代码级别的功能块进行验证,通过对单个方法或单个接口进行调用测试,判断逻辑是否能在不同输入条件下保持稳定。开发过程中会对用户信息保存、药材数据处理、分类查询、内容审核、识别记录保存等关键方法进行单独检查,通过模拟输入来确认每个方法的返回结果是否正确。单元测试的好处在于能更早发现逻辑错误,让后续模块组合时更顺畅,对系统核心功能的稳定性有较可靠的支撑作用。

6.3 测试结果

6.3.1 管理员功能测试结果

管理员端测试围绕轮播图、用户、药材类别、中药材常识、药膳食谱、食材类型、养生文化、文化类型、药材识别、资讯、公告、菜单和个人中心等模块展开。页面操作能在不同输入条件下得到正确反馈,增删改查过程顺畅。图片上传在轮播图、公告、药膳食谱等模块中展示完整,内容审核状态更新准确。搜索功能在管理员、用户、行业资讯、中药材常识、文化内容、食材类型与类别管理中表现稳定,能准确匹配到目标记录。药材识别记录加载正常,字段展示完整。菜单的新增、修改、排序调整无异常,保存后能在页面正常展示,个人中心的密码修改也能正确保存。整体来看,管理员端各模块逻辑清晰,数据处理稳定,能满足后台管理场景的日常操作需求。管理员功能测试结果表如表6-1所示。

表6-1 管理员功能测试结果

测试模块

预计测试功能

测试结果

登录

输入账号和密码、检查错误输入提示、检测禁用账号登录情况、验证登录跳转是否正常

一致

轮播图管理

新增轮播图、上传图片、编辑标题、删除轮播图、检查首页展示是否同步更新

一致

管理员管理

按账号搜索管理员、新增管理员、修改信息、删除账号、验证数据保存是否正常

一致

用户管理

搜索用户、新增用户、修改资料、删除用户、查看用户详情展示情况

一致

药材类别管理

新增类别、修改类别名称、删除类别、按名称搜索类别、验证页面展示情况

一致

中药材常识管理

查看常识内容、审核常识、编辑信息、删除记录、查看评论、按名称与状态搜索

一致

药膳食谱管理

搜索食谱、新增食谱、查看详情、上传图片、修改内容、删除记录、查看评论

一致

食材类型管理

新增食材类型、修改名称、删除类型、按名称搜索、验证页面同步情况

一致

养生文化管理

查看文化内容、审核文化信息、编辑内容、删除记录、查看评论、按名称搜索

一致

文化类型管理

新增文化类型、修改名称、删除记录、搜索类型、检查展示是否正确

一致

药材识别管理

查看识别记录、检查药材名称展示、验证列表分页、查看识别时间等字段

一致

行业资讯管理

新增资讯、上传图片、修改内容、删除资讯、查看评论、按标题与类型搜索

一致

资讯类型管理

新增类型、修改名称、删除记录、按标题搜索类型、检查列表同步情况

一致

公告信息管理

新增公告、上传图片、编辑内容、删除公告、按标题搜索公告、检查前台展示

一致

菜单管理

新增菜单、修改名称、调整顺序、删除菜单、验证页面展示是否同步更新

一致

个人中心

修改个人信息、保存密码、验证修改信息是否生效

一致

6.3.2 用户功能测试结果

用户端测试覆盖登录注册、养生文化、药膳食谱、行业资讯、公告、中药材常识、药材识别、个人中心等模块。输入验证在登录与注册中表现可靠,错误格式能得到提示,头像上传能正确展示。内容浏览类功能如公告、资讯、文化、食谱等加载顺畅,图片、文字及评论都能完整显示。收藏、点赞、取消点赞、评论等交互操作反应正常。搜索功能在文化、食谱、公告、中药材常识和行业资讯中均能准确匹配。中药材常识新增功能的图片、视频上传正常,内容保存后能正确展示。药材识别功能中上传图片、填写名称与功效后能保存成功,识别记录展示正常。个人中心能正确加载收藏、资料修改和密码修改等内容。整体流程清楚,页面操作体验自然。用户功能测试结果表如表6-2所示。

表6-2 用户功能测试结果

测试模块

预计测试功能

测试结果

登录

输入账号密码、校验格式、错误提示、验证禁用账号、检测跳转是否成功

一致

注册

填写资料、上传头像、验证码输入、检测重复账号、检查注册后资料展示情况

一致

忘记密码

输入账号与邮箱、验证是否匹配、检测重置流程、检查新密码能否登录

一致

养生文化

搜索文化名称、查看详情、收藏、点赞、取消点赞、发布评论、查看评论展示情况

一致

药膳食谱

按名称、季节、食材类型搜索、查看食谱详情、收藏、点赞、评论、加载图片展示情况

一致

公告信息

按标题搜索、查看公告详情、检测图片与内容展示情况

一致

行业资讯

按标题搜索、查看资讯详情、收藏资讯、发布评论、查看评论展示情况

一致

中药材常识

搜索药材名称或类别、查看详情、收藏、点赞、踩、评论、新增常识、上传图片视频、保存内容

一致

药材识别

上传药材图片、填写名称类型功效、保存识别信息、查看识别记录展示情况

一致

个人中心

查看个人资料、修改密码、查看收藏内容、按名称搜索收藏、资料保存是否正常

一致

结  论

本课题围绕中药材知识分散、内容阅读不便、识别记录不易保存等问题开展研究,以系统功能设计为基础,构建了面向管理员和用户的中药材科普识别平台。研究过程中,在理论层面梳理了中药材科普信息的基本结构,将分类、常识、药膳、文化、资讯等内容按照易于浏览的方式重新整合;在实践层面通过Java、Spring Boot、Vue及MySQL等技术实现了内容管理、信息展示、药材识别记录保存、内容互动和账号管理等功能,从而使零散资料能够被集中管理,用户也能更方便地获取中药材相关知识。项目的实现解决了用户难以系统性了解中药材和不便存档识别信息的问题,也让后台管理工作更加有条理。通过多角色、多模块的整合,系统在数据呈现、内容上传、评论互动、收藏管理和信息搜索等方面都表现稳定,能够满足日常使用场景。在研究与开发的过程中,理论梳理与功能落地相互支撑,使得本课题既有明确的结构性认识,也有可实际运行的系统成果。总体来说,本课题较好地完成了中药材知识管理与识别辅助的研究目标,为该类系统的设计与实现提供了一种具有参考价值的实现方式。

本课题虽已完成主要功能,但仍存在一些不足。在内容组织方面,当前的知识结构还可以做得更细一些,部分内容的展示方式比较单一,用户在阅读时的体验还有提升空间。在识别记录方面,系统虽然实现了记录保存和展示,但用户在上传图片时的使用场景较多,页面交互仍可进一步优化,使记录管理更加轻松。在后台管理上,数据量增多后可能会带来查询延迟,未来有必要在数据处理方式上做更细的调整,使内容管理更灵活。在整个系统的使用过程中,一些功能的提示与反馈虽然已经完整,但仍可以让页面逻辑更顺滑,让用户操作更省力。未来可以围绕中药材内容结构、食谱呈现方式、评论区互动体验等方面继续补充,也可以在系统稳定性、内容更新方式和界面友好度上做更多尝试。整体方向以简单、实用为主,在当前功能的基础上做适度完善,使系统在持续使用中保持良好的体验。

参考文献

  • 陈晓慧,陶健林,赵宇,等.基于HoloLens的江豚科普系统设计与研究[J].科教文汇,2024,(11):192-194.
  • 王世庆.基于深度学习的甘肃中药材识别研究与实现[D].兰州大学,2024.
  • 周晓睿,杨磊,宋欣,等.基于Vue+Springboot的中草药病害识别管理系统研究[J].天津农学院学报,2024,31(03):78-84.
  • 张果.外场试验数据管理系统知识科普与设计应用[J].科技视界,2023,(05):45-48
  • Zhang Z ,Xiao J ,Wang S , et al. Origin Intelligent Identification ofAngelica sinensisUsing Machine Vision and Deep Learning[J].Agriculture,2023,13(9):
  • Chen Z ,Chen T,Zeng Z, et al.Chronic Kidney Disease Management: Construction of “3 Groups and 5 Dimensions” Precise Kidney Health Science Popularization System[J].Practical Medical Research,2024,2(3):
  • 卢惠,刘薇薇.英语在线科普教育平台的内容创作与传播策略探究[J].成才,2024,(17):117-119.
  • 童彦婷,李玲娜.基于劝导理论的东周楚服数字科普平台交互设计策略研究[J].包装与设计,2025,(02):166-168.
  • 韦智浪,李芳.一个汉服文化科普平台小程序的设计与实现[J].电脑知识与技术,2023,19(14):36-38+41.
  • 刘东林,毛环,刘红杏.基于微信小程序构建中医药知识科普平台[J].健康必读,2024,(21):9.
  • 崔岩.基于电子信息化平台的科普教育资源共享机制研究[J].中国信息化,2024,(11):103-104.
  • 王泽浩.中药材粉末显微图像的识别研究与应用[D].北方工业大学,2025.
  • 徐金婵.基于交互式体验的校园植物科普小程序开发与应用研究[D].广东技术师范大学,2025.
  • 李城名.基于信息抽取的中草药知识图谱构建研究[D].浙江科技学院,2022.
  • Tang S .Development and Evaluation of a Gesture Recognition-Based Artificial Intelligence Science Popularization System[J].Advances in Educational Technology and Psychology,2023,7(7):
  • 致  谢

    在本论文的研究与写作过程中,我的指导老师给予了细致的指导和耐心的帮助。在选题、系统设计、技术实现以及论文撰写的每一个环节,指导老师都提出了许多宝贵的意见和建议,让我能够明确研究思路,合理规划系统功能,并在开发过程中解决了许多技术难题。感谢指导老师在整个毕业设计期间的悉心指导与鼓励,让我在学习和实践中不断提升自己的能力。

    同时,我要感谢同学们在研究与开发过程中给予的支持和帮助。在系统测试、功能完善以及前后端调试中,同学们提供了许多有益的讨论和建议,使系统实现更加顺利,提升了研究的效率和质量。大家在资料查找、代码调试和功能测试方面的互助,让整个过程充满了协作的氛围,也让我体会到互相交流的重要性。

    最后,我要感谢我的家人对我学习和生活的理解与支持。在论文撰写和系统开发期间,家人给予了我良好的学习环境和精神上的鼓励,使我能够专心投入研究。正是有了家人的支持,我才能顺利完成毕业设计的各项工作。谨以此致谢表达对所有在毕业设计过程中给予帮助和关心的人由衷的感谢。

    附录A 基于Java的中药材科普识别系统的设计与实现的主要功能实现代码

    用户

    /**  * 登录  */ @IgnoreAuth @RequestMapping(value = "/login") public R login(String username, String password, String captcha, HttpServletRequest request) {     YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));        if(u!=null && u.getIsLocked().intValue()==1) {            return R.error("账号已锁定,请联系管理员。");        }        if(u==null || !u.getYonghumima().equals(password)) {        if(u!=null) {            u.setMaxPasswordWrong(u.getMaxPasswordWrong()+1);            if(u.getMaxPasswordWrong()>=5) {                u.setIsLocked(1);            }                yonghuService.updateById(u);        }            return R.error("账号或密码不正确");        }     String token = tokenService.generateToken(u.getId(), username,"yonghu",  "用户" );     return R.ok().put("token", token); } /**     * 注册     */ @IgnoreAuth    @RequestMapping("/register")    public R register(@RequestBody YonghuEntity yonghu, @RequestParam(required = false) String emailcode){     //ValidatorUtils.validateEntity(yonghu);                            YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));                                                                                                                if(u!=null) {        return R.error("注册用户已存在");     }                //校验邮箱验证码                u =yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("email", yonghu.getEmail()));                if(u!=null) {                        return R.error("邮箱已被注册");                }                List<EmailregistercodeEntity> emailregistercodeList = emailregistercodeService.selectList(                                                                                new EntityWrapper<EmailregistercodeEntity>().eq("role", "用户")                                                                                .eq("email", yonghu.getEmail()).orderBy("addtime", false));                boolean emailValidate = false;                if(emailregistercodeList!=null && emailregistercodeList.size()>0) {                        if(emailregistercodeList.get(0).getCode().equals(emailcode)) {                                emailValidate = true;                        }                }                if(!emailValidate) return R.error("邮箱验证码不正确");     Long uId = new Date().getTime();     yonghu.setId(uId);        yonghuService.insert(yonghu);        return R.ok();    }    /**     * 发送邮件     */    @IgnoreAuth    @RequestMapping("/sendemail")    public R sendemail(@RequestParam String email){        String code = CommonUtil.getRandomNumber(4);        EmailregistercodeEntity emailregistercode = new EmailregistercodeEntity();        emailregistercode.setCode(code);        emailregistercode.setRole("用户");        emailregistercode.setEmail(email);        emailregistercodeService.insert(emailregistercode);        CommonUtil.sendEmail(email, "用户注册","您的注册验证码是【"+code+"】,请不要把验证码泄漏给其他人,如非本人请勿操作。");        return R.ok();    }    /**     * 发送邮件     */    @RequestMapping("/sendemail/content")    public R sendEmailMessage(String email, String title, String content) {        org.springframework.util.Assert.hasLength(email, "邮箱不能为空");        org.springframework.util.Assert.hasLength(title, "标题不能为空");        org.springframework.util.Assert.hasLength(content, "内容不能为空");        CommonUtil.sendEmail(email, title, content);        return R.ok();    } /**  * 退出  */ @RequestMapping("/logout") public R logout(HttpServletRequest request) {     request.getSession().invalidate();     return R.ok("退出成功"); } /**     * 获取用户的session用户信息     */    @RequestMapping("/session")    public R getCurrUser(HttpServletRequest request){     Long id = (Long)request.getSession().getAttribute("userId");        return R.ok().put("data", yonghuService.selectView(new EntityWrapper<YonghuEntity>().eq("id", id)));    }

    资讯类型

     /**     * 后台列表     */    @RequestMapping("/page")    public R page(@RequestParam Map<String, Object> params,ZixunleixingEntity zixunleixing,                                            HttpServletRequest request){                                    EntityWrapper<ZixunleixingEntity> ew = new EntityWrapper<ZixunleixingEntity>();                                                                             PageUtils page = zixunleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zixunleixing), params), params));        return R.ok().put("data", page);    }    /**     * 前端列表     */ @IgnoreAuth    @RequestMapping("/list")    public R list(@RequestParam Map<String, Object> params,ZixunleixingEntity zixunleixing,     HttpServletRequest request){        EntityWrapper<ZixunleixingEntity> ew = new EntityWrapper<ZixunleixingEntity>();     PageUtils page = zixunleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zixunleixing), params), params));        return R.ok().put("data", page);    } /**     * 列表     */    @RequestMapping("/lists")    public R list( ZixunleixingEntity zixunleixing){         EntityWrapper<ZixunleixingEntity> ew = new EntityWrapper<ZixunleixingEntity>();         ew.allEq(MPUtil.allEQMapPre( zixunleixing, MPUtil.camelToSnake("zixunleixing")));        return R.ok().put("data", zixunleixingService.selectListView(ew));    }  /**     * 查询     */    @RequestMapping("/query")    public R query(ZixunleixingEntity zixunleixing){        EntityWrapper< ZixunleixingEntity> ew = new EntityWrapper< ZixunleixingEntity>();        ew.allEq(MPUtil.allEQMapPre( zixunleixing, MPUtil.camelToSnake("zixunleixing")));     ZixunleixingView zixunleixingView =  zixunleixingService.selectView(ew);     return R.ok("查询资讯类型成功").put("data", zixunleixingView);    }    /**     * 后端详情     */    @RequestMapping("/info/{id}")    public R info(@PathVariable("id") Long id){        ZixunleixingEntity zixunleixing = zixunleixingService.selectById(id);     zixunleixing = zixunleixingService.selectView(new EntityWrapper<ZixunleixingEntity>().eq("id", id));        return R.ok().put("data", zixunleixing);    }    /**     * 前端详情     */ @IgnoreAuth    @RequestMapping("/detail/{id}")    public R detail(@PathVariable("id") Long id){        ZixunleixingEntity zixunleixing = zixunleixingService.selectById(id);     zixunleixing = zixunleixingService.selectView(new EntityWrapper<ZixunleixingEntity>().eq("id", id));        return R.ok().put("data", zixunleixing);    }       /**     * 后端保存     */    @RequestMapping("/save")    public R save(@RequestBody ZixunleixingEntity zixunleixing, HttpServletRequest request){        if(zixunleixingService.selectCount(new EntityWrapper<ZixunleixingEntity>().eq("zixunleixing", zixunleixing.getZixunleixing()))>0) {            return R.error("资讯类型已存在");        }     //ValidatorUtils.validateEntity(zixunleixing);        zixunleixingService.insert(zixunleixing);        return R.ok().put("data",zixunleixing.getId());    }       /**     * 前端保存     */    @RequestMapping("/add")    public R add(@RequestBody ZixunleixingEntity zixunleixing, HttpServletRequest request){        if(zixunleixingService.selectCount(new EntityWrapper<ZixunleixingEntity>().eq("zixunleixing", zixunleixing.getZixunleixing()))>0) {            return R.error("资讯类型已存在");        }     //ValidatorUtils.validateEntity(zixunleixing);        zixunleixingService.insert(zixunleixing);        return R.ok();    }    /**     * 修改     */    @RequestMapping("/update")    @Transactional    public R update(@RequestBody ZixunleixingEntity zixunleixing, HttpServletRequest request){        //ValidatorUtils.validateEntity(zixunleixing);        zixunleixingService.updateById(zixunleixing);//全部更新        return R.ok();    }       /**     * 删除     */    @RequestMapping("/delete")    public R delete(@RequestBody Long[] ids){        zixunleixingService.deleteBatchIds(Arrays.asList(ids));        return R.ok();    }

    药材识别

     @RequestMapping("/page")    public R page(@RequestParam Map<String, Object> params,YaocaishibieEntity yaocaishibie,                                                                                                                    HttpServletRequest request){                    String tableName = request.getSession().getAttribute("tableName").toString();                                                                                                                                                            if(tableName.equals("yonghu")) {                    yaocaishibie.setYonghuzhanghao((String)request.getSession().getAttribute("username"));                                    }                                                                                                                        EntityWrapper<YaocaishibieEntity> ew = new EntityWrapper<YaocaishibieEntity>();                                                                                                                                                                                                     PageUtils page = yaocaishibieService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaocaishibie), params), params));        return R.ok().put("data", page);    }    /**     * 前端列表     */ @IgnoreAuth    @RequestMapping("/list")    public R list(@RequestParam Map<String, Object> params,YaocaishibieEntity yaocaishibie,     HttpServletRequest request){        EntityWrapper<YaocaishibieEntity> ew = new EntityWrapper<YaocaishibieEntity>();     PageUtils page = yaocaishibieService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaocaishibie), params), params));        return R.ok().put("data", page);    } /**     * 列表     */    @RequestMapping("/lists")    public R list( YaocaishibieEntity yaocaishibie){         EntityWrapper<YaocaishibieEntity> ew = new EntityWrapper<YaocaishibieEntity>();         ew.allEq(MPUtil.allEQMapPre( yaocaishibie, MPUtil.camelToSnake("yaocaishibie")));        return R.ok().put("data", yaocaishibieService.selectListView(ew));    }  /**     * 查询     */    @RequestMapping("/query")    public R query(YaocaishibieEntity yaocaishibie){        EntityWrapper< YaocaishibieEntity> ew = new EntityWrapper< YaocaishibieEntity>();        ew.allEq(MPUtil.allEQMapPre( yaocaishibie, MPUtil.camelToSnake("yaocaishibie")));     YaocaishibieView yaocaishibieView =  yaocaishibieService.selectView(ew);     return R.ok("查询药材识别成功").put("data", yaocaishibieView);    }    /**     * 后端详情     */    @RequestMapping("/info/{id}")    public R info(@PathVariable("id") Long id){        YaocaishibieEntity yaocaishibie = yaocaishibieService.selectById(id);     yaocaishibie = yaocaishibieService.selectView(new EntityWrapper<YaocaishibieEntity>().eq("id", id));        return R.ok().put("data", yaocaishibie);    }    /**     * 前端详情     */ @IgnoreAuth    @RequestMapping("/detail/{id}")    public R detail(@PathVariable("id") Long id){        YaocaishibieEntity yaocaishibie = yaocaishibieService.selectById(id);     yaocaishibie = yaocaishibieService.selectView(new EntityWrapper<YaocaishibieEntity>().eq("id", id));        return R.ok().put("data", yaocaishibie);    }       /**     * 后端保存     */    @RequestMapping("/save")    public R save(@RequestBody YaocaishibieEntity yaocaishibie, HttpServletRequest request){     //ValidatorUtils.validateEntity(yaocaishibie);        yaocaishibieService.insert(yaocaishibie);        return R.ok().put("data",yaocaishibie.getId());    }       /**     * 前端保存     */    @RequestMapping("/add")    public R add(@RequestBody YaocaishibieEntity yaocaishibie, HttpServletRequest request){     //ValidatorUtils.validateEntity(yaocaishibie);        yaocaishibieService.insert(yaocaishibie);        return R.ok();    }    /**     * 修改     */    @RequestMapping("/update")    @Transactional    public R update(@RequestBody YaocaishibieEntity yaocaishibie, HttpServletRequest request){        //ValidatorUtils.validateEntity(yaocaishibie);        yaocaishibieService.updateById(yaocaishibie);//全部更新        return R.ok();    }       /**     * 删除     */    @RequestMapping("/delete")    public R delete(@RequestBody Long[] ids){        yaocaishibieService.deleteBatchIds(Arrays.asList(ids));        return R.ok();    }        /**     * 通用物体和场景识别     */    @RequestMapping("/baidu/advancedGeneral")    @IgnoreAuth    public R baiduAdvancedGeneral(@RequestParam("fileName") String fileName,HttpServletRequest request) {        JSONObject jb = null;        try {            File path = new File(ResourceUtils.getURL("classpath:static").getPath());            if(!path.exists()) {                path = new File("");            }            File upload = new File(path.getAbsolutePath(),"/file/");            if(!upload.exists()) {                upload.mkdirs();            }            File file = new File(upload.getAbsolutePath()+"/"+fileName);            if(file.exists()){                jb = BaiduUtil.advancedGeneral(file.getAbsolutePath());            }        } catch (FileNotFoundException e) {            e.printStackTrace();        }        return R.ok().put("data", com.alibaba.fastjson.JSONObject.parseObject(jb.getJSONArray("result").get(0).toString()));    }

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » X140-基于Java的中药材科普识别系统的设计与实现
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!