springboot个性化药膳推荐系统-计算机毕业设计源码23033
摘 要
随着健康意识的增强和个性化需求的增长,个性化药膳推荐系统成为了一个重要的研究方向。本文提出了一个基于SpringBoot框架的个性化药膳推荐系统设计与实现方案。系统旨在通过分析用户的体质、健康状况和偏好,为用户提供定制化的药膳推荐,以达到预防疾病、促进健康的目的。
系统采用B/S架构,前端使用HTML、CSS和JavaScript构建用户友好的交互界面,后端则基于SpringBoot框架开发,结合MySQL数据库进行数据存储和管理。系统的核心功能模块包括用户管理、药膳信息管理、药膳知识管理、用户反馈等。通过集成机器学习算法,系统能够智能分析用户数据,提供精准的个性化饮食建议,帮助用户维持健康的生活方式。
此外,系统的设计考虑了实用性、可靠性、智能性和扩展性,以确保系统的高效运行和易用性。系统经过详细的测试,表现出良好的稳定性和用户体验,能够有效地满足不同用户的个性化药膳需求,为健康管理提供了新的解决方案。
关键词:个性化药膳推荐系统;SpringBoot;MySQL;
Design and implementation of personalized Tonic Diet recommendation system based on SpringBoot
Abstract
With the enhancement of health awareness and the growth of personalized demand, personalized Tonic Diet recommendation system has become an important research direction. This paper proposes a design and implementation scheme of personalized Tonic Diet recommendation system based on SpringBoot framework. The system aims to provide customized Tonic Diet recommendations for users by analyzing their physique, health status and preferences, so as to prevent diseases and promote health.
The system adopts a B/S architecture, with HTML, CSS, and JavaScript used to build a user-friendly interactive interface on the front-end, and SpringBoot framework developed on the back-end, combined with MySQL database for data storage and management. The core function modules of the system include user management, Tonic Diet information management, Tonic Diet knowledge management, user feedback, etc. By integrating machine learning algorithms, the system can intelligently analyze user data, provide accurate personalized dietary recommendations, and help users maintain a healthy lifestyle.
In addition, the design of the system considers practicality, reliability, intelligence, and scalability to ensure efficient operation and ease of use of the system. After detailed testing, the system shows good stability and user experience, can effectively meet the personalized Tonic Diet needs of different users, and provides a new solution for health management
Keywords: personalized Tonic Diet recommendation system; SpringBoot; MySQL;
第一章 绪 论
1.1选题背景和意义
随着现代生活节奏的加快和工作压力的增大,人们对健康养生的重视程度日益提高。养生药膳作为一种传统的中医养生方式,具有调理身体、增强免疫力、延缓衰老等多种功效,备受人们关注。然而,由于人们对中医药知识的了解程度不同,很多人在选择养生药膳时存在困惑,不知道如何搭配食材、制作方法以及适用人群等方面的问题。因此,开发一款养生药膳推荐系统,能够根据用户的需求和身体状况,提供个性化的药膳推荐和相关知识,对于帮助人们更好地进行养生保健具有重要意义。
该系统通过个性化推荐,能够分析用户的身体状况、喜好和需求,为每个人提供定制化的养生药膳方案。同时,系统还能提供相关的中医养生知识和食材搭配建议,让用户不仅能够了解药膳的功效和制作方法,还能够学习到更多关于中医养生的知识,提高自己的健康意识。此外,系统的便捷性和时效性使得用户可以随时随地获取到养生药膳的推荐和相关信息,无论是在家、在办公室还是在外出旅行,用户都可以方便地查找到适合自己的药膳药膳,为自己的健康保驾护航。通过养生药膳推荐系统的开发和推广,还可以促进中医药文化的传承和发展,让更多的人了解和使用养生药膳,有助于传统文化的弘扬和推广。
1.2国内外研究现状
在国内,养生药膳的研究和应用正经历着前所未有的发展态势。随着人们健康养生意识的日益提高,药膳逐渐成为药膳信息的新商机,药膳产业迎来发展窗口期。中国药膳行业市场规模逐年扩大,2023年市场规模已超过1699亿元,同比增长10.97%。药膳市场涉及多个细分领域,包括药膳餐饮、凉茶、药酒、固体药膏、中药冲剂、中成药保健品等,这些领域的企业数量众多,共同推动了药膳市场的繁荣。药膳行业增长较好,总体保持较高的增速,行业发展能力良好。药膳行业面临的挑战包括市场竞争激烈、原材料价格波动、消费者需求多样化等,但随着人们健康意识的提高和药膳市场的不断壮大,药膳行业也面临着巨大的发展机遇。
在国外,药膳研究和应用也得到了一定程度的关注和发展。一些国家和地区对中医药和药膳的兴趣增加,推动了药膳产品的国际化进程。西方国家一些医学机构也开始重视食疗药膳研究,食疗药膳在北美属于自然疗法的范畴,食疗药膳的传统预防获得越来越多的美国人的认可。
中国药膳融入世界文化是社会发展的必然趋势,为了增强中国药膳行业的竞争力,需要不断挖掘药膳文化,组织科研课题,建立相关宣传、推广组织,实时关注药膳行业在国际形势中的发展,最终形成统一的药膳管理和发展。
1.3本文的组织结构
第一章是绪论,本文章的开头部分,对本题目的研究背景意义和国内外研究现状等一些做文字性的描述。
第二章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第三章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第四章是系统的具体实现,介绍系统的各个模块的具体实现。
第五章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
第二章 系统分析
2.1可行性分析
2.1.1技术可行性
个性化药膳推荐系统采用了Java技术,开发了功能完备、使用简单的前端应用程序,并建立、维护了一个数据完整、安全、稳定性强的后台数据库系统。
系统使用Java技术和Mysql数据库作为设计工具,可简单易行地学习操作。用户角色之间的相结合开发一套个性化药膳推荐系统是值得尝试的,数据完整性和许多品质为数据的功能分配和管理提供了依据。它也是数据库安全平台的重要组成部分,是提高和增强数据安全性的重要手段。此外,为了提供更平滑,更智能和更有效的基本控制方法,定义了同时构建对安全计算环境的支持所需的步骤,并帮助维护安全性。因为在这两种开发工具中,功能强大且免费且界面良好,所以个性化药膳推荐系统在技术方面是可行的。
2.1.2经济可行性
个性化药膳推荐系统管理的开发是由开发者自己开发,不需要购买其他软件或者端口之类的,而且在个性化药膳推荐系统管理的开发之前所做的市场调研及其他的个性化药膳推荐系统,都是没有任何费用的,通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于个性化药膳推荐系统的开发在经济上是完全可行的,没有任何费用支出的。
使用Java技术是比较成熟的技术,所以个性化药膳推荐系统的开发在经济上是没有问题的。
2.1.3操作可行性
可操作性主要是对个性化药膳推荐系统系统设计完成后,用户的使用体验度,对于管理员可以通过系统随时管理相关的数据信息,并且对于管理员、普通用户、医生用户这三种用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户预约,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
2.2系统功能分析
按照个性化药膳推荐系统的角色,划分了普通用户管理模块、医生用户和管理员管理模块这三大部分。
1.注册用户管理模块:
注册登录:用户可以注册新账号并登录系统,以便享受系统提供的各项服务。
首页:首页是用户登录后看到的主界面,展示用户的基本信息和系统的主要功能入口。
交流论坛:用户可以在这里分享个人药膳体验、健康小贴士,或以健康问题进行讨论,构建起一个互助互学的健康交流环境。
通知公告:该功能模块用于向所有注册用户发布与药膳信息、系统更新或平台活动相关的公告。用户可以在首页或专门的公告页面查看这些信息,了解最新动态。
新闻资讯:新闻资讯模块为用户提供丰富的与健康、营养、药膳相关的文章和资源。内容可以根据用户的兴趣或分类等进行个性化推荐,帮助用户获取科学的饮食建议、健康生活方式等信息。用户可以浏览、分享或收藏自己感兴趣的文章。
药膳知识:提供丰富的药膳知识库,包括药膳的历史、文化、制作方法、食疗效果等,让用户深入了解药膳的精髓。并进行点赞、收藏和评论等操作。
药膳信息:提供详细的药膳成分分析、适宜人群、食用禁忌等,帮助用户做出更加科学的饮食选择。并进行点赞、收藏和评论等操作。
医生信息:展示医生的专业资质、擅长领域、患者评价等,帮助用户快速找到合适的医生进行咨询。
个人中心:该功能主要让用户管理自己的个人信息、咨询记录、健康档案和收藏等功能。
2.医生用户模块:
注册登录:医生用户注册新账号需要管理员审核并登录系统,以便享受系统提供的各项服务。
后台首页:提供医生个人工作台,展示最新咨询、医生信息等,方便医生快速了解工作动态。
医生信息管理:医生用户可以更新和管理自己的个人信息和专业背景,保持信息的最新状态,提升个人品牌形象。
咨询记录管理:医生用户可以查看自己回答过的咨询记录,方便跟踪患者的咨询历史和反馈,优化治疗方案。
3.管理员模块:
后台首页:提供系统概览,包括用户活跃度、最新咨询、系统状态等,帮助管理员快速把握系统运行情况。
系统用户:管理不同角色的用户账户,包括权限设置、账户审核、角色分配等,确保系统的安全性和用户管理的有效性。
药膳知识管理:维护和更新药膳知识库,确保提供给用户的信息是准确和权威的。药膳知识管理板块还提供内容审核功能,确保发布的内容符合法律法规和平台标准。并进行增删改查等操作。
知识分类管理:管理员可以的对药膳知识进行细致分类,提高信息检索效率,使用户能够快速找到所需内容。并进行增删改查等操作。
药膳信息管理:管理药膳数据库,包括新增、编辑、删除药膳信息,确保信息的时效性和准确性。药膳信息管理板块还提供数据备份和恢复功能,保障数据安全。
药膳分类管理:对药膳进行科学分类,帮助用户更加便捷地找到适合自己需求的药膳。药膳分类管理板块还提供分类推荐功能,根据用户行为和偏好进行智能推荐。
医生信息管理:管理医生信息,包括更新医生资料、审核医生资质等,为用户提供可靠的医生信息。医生信息管理板块还提供医生评价管理功能,收集和处理患者对医生的评价。
咨询记录管理:管理和审核医生与用户的咨询记录,确保服务质量,及时发现并解决咨询中的问题。咨询记录管理板块还提供咨询统计功能,帮助管理员了解咨询量和咨询热点。
健康档案管理:管理用户的健康档案,确保数据的安全性和隐私性,同时提供数据分析功能,帮助优化服务。健康档案管理板块还提供健康风险评估功能,根据用户健康数据进行风险预测。
系统管理(轮播图管理):系统的首页通常有轮播图,用于展示平台的重要信息或最新活动。管理员可以通过该模块管理轮播图的内容,包括上传新图片、设置图片的展示顺序以及链接到相应的页面。
通知公告管理:管理员可以发布、修改或删除通知公告。公告通常用于发布与系统相关的更新、平台活动。公告的内容将在用户的前端首页展示。
资源管理(新闻资讯、资讯分类):发布和管理新闻资讯,对资讯进行分类管理,提供丰富的资讯内容,满足用户的多元化信息需求。资源管理板块还提供资讯推荐功能,根据用户偏好进行个性化推荐。
交流管理(交流论坛,论坛分类):管理交流论坛的内容,包括帖子审核、论坛分类等,维护论坛秩序,促进健康讨论。交流管理板块还提供论坛活跃度分析功能,帮助管理员了解论坛的活跃情况和用户偏好。
2.2.2 非功能性分析
个性化药膳推荐系统的非功能性需求比如个性化药膳推荐系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1个性化药膳推荐系统非功能需求表
| 安全性 | 主要指个性化药膳推荐系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指个性化药膳推荐系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响个性化药膳推荐系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着个性化药膳推荐系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 个性化药膳推荐系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
通过2.2功能的分析,得出了个性化药膳推荐系统的用例图:

图2-1个性化药膳推荐系统注册用户角色用例图
后台管理上的管理员是维护整个个性化药膳推荐系统中所有数据信息的。管理员角色用例如图2-2所示。

图2-2个性化药膳推荐系统管理员角色用例图
医生用户角色用例如图2-3所示。

图2-3个性化药膳推荐系统用户角色用例图
2.4系统操作流程
2.4.1用户登录流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图2-4所示。

图2-4登录操作流程图
2.4.2信息添加流程
对于个性化药膳推荐系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图2-5所示。

图2-5信息添加流程图
2.4.3信息删除流程
不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图2-6所示。

图2-6信息删除流程图
第三章 系统设计与实现
3.1系统架构设计
本个性化药膳推荐系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图3-1 个性化药膳推荐系统架构设计图
表现层(UI):又称UI层,主要完成本个性化药膳推荐系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本个性化药膳推荐系统时的舒适度。UI的界面设计也要适应不同版本的个性化药膳推荐系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本个性化药膳推荐系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本个性化药膳推荐系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本个性化药膳推荐系统的数据存储和管理功能。
3.2开发流程设计
个性化药膳推荐系统的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从个性化药膳推荐系统的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图3-2所示。

图3-2开发系统流程图
3.3系统总体设计
个性化药膳推荐系统总体分为注册用户模块、医生用户和后台管理员模块。
三个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。

图3-3 系统功能结构图
3.4数据库设计
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
3.4.1实体ER图
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。
概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是数据库实体的E-R图如图3-4所示:

图3-4实体的E-R图
3.4.2数据表
我们可以根据数据结构的详细分析要求,我们根据输入和输出数据量的要求进行分析,确定什么表表,结构之间的关系,我们可以验证,调整和完善,查询和浏览过程,可以实现数据库,以使用户对数据和功能有更多要求。
基于系统使用的数据库管理系统的特点,对数据库的概念模型进行了转换和构建。但是,这个系统只需要充分考虑个性化药膳推荐系统的功能,而且组织比较清晰。
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
| 3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
| 4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
| 5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
| 9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
| 10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
| 12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
| 13 | description | text | 65535 | 0 | Y | N | 文章描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
| 3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
| 7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 18 | option | text | 65535 | 0 | Y | N | 配置: | |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表classification_of_tonic_diet (药膳分类)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | classification_of_tonic_diet_id | int | 10 | 0 | N | Y | 药膳分类ID | |
| 2 | classification_of_tonic_diet | varchar | 64 | 0 | Y | N | 药膳分类 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | code_token_id | int | 10 | 0 | N | Y | ||
| 2 | token | varchar | 255 | 0 | Y | N | ||
| 3 | code | varchar | 255 | 0 | Y | N | 验证码 | |
| 4 | expire_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 失效时间 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
| 3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 6 | title | varchar | 255 | 0 | Y | N | 标题: | |
| 7 | img | varchar | 255 | 0 | Y | N | 封面: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
| 3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
| 4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
| 5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
| 6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | consultation_records_id | int | 10 | 0 | N | Y | 咨询记录ID | |
| 2 | consultation_title | varchar | 64 | 0 | Y | N | 咨询标题 | |
| 3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
| 4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
| 5 | consulting_users | int | 10 | 0 | Y | N | 0 | 咨询用户 |
| 6 | consultation_content | text | 65535 | 0 | Y | N | 咨询内容 | |
| 7 | doctors_reply | text | 65535 | 0 | Y | N | 医生回复 | |
| 8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | doctor_information_id | int | 10 | 0 | N | Y | 医生信息ID | |
| 2 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
| 3 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
| 4 | doctors_title | varchar | 64 | 0 | Y | N | 医生职称 | |
| 5 | doctors_are_good_at | varchar | 64 | 0 | Y | N | 医生擅长 | |
| 6 | on_duty_time | varchar | 64 | 0 | Y | N | 在岗时间 | |
| 7 | doctors_photo | varchar | 255 | 0 | Y | N | 医生照片 | |
| 8 | doctor_introduction | longtext | 2147483647 | 0 | Y | N | 医生简介 | |
| 9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | doctor_users_id | int | 10 | 0 | N | Y | 医生用户ID | |
| 2 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
| 3 | doctors_gender | varchar | 64 | 0 | Y | N | 医生性别 | |
| 4 | doctors_phone_number | varchar | 16 | 0 | Y | N | 医生电话 | |
| 5 | doctors_title | varchar | 64 | 0 | Y | N | 医生职称 | |
| 6 | doctors_are_good_at | varchar | 64 | 0 | Y | N | 医生擅长 | |
| 7 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
| 8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
| 3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
| 4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
| 6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
| 7 | title | varchar | 125 | 0 | N | N | 标题 | |
| 8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
| 9 | description | varchar | 255 | 0 | Y | N | 描述 | |
| 10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
| 11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
| 12 | img | text | 65535 | 0 | Y | N | 封面图 | |
| 13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
| 17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | health_records_id | int | 10 | 0 | N | Y | 健康档案ID | |
| 2 | file_names | varchar | 64 | 0 | Y | N | 档案名称 | |
| 3 | user_information | int | 10 | 0 | Y | N | 0 | 用户信息 |
| 4 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 5 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 6 | contact_number | varchar | 64 | 0 | Y | N | 联系电话 | |
| 7 | archive_attachments | varchar | 255 | 0 | Y | N | 档案附件 | |
| 8 | archive_content | text | 65535 | 0 | Y | N | 档案内容 | |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表knowledge_classification (知识分类)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | knowledge_classification_id | int | 10 | 0 | N | Y | 知识分类ID | |
| 2 | knowledge_classification | varchar | 64 | 0 | Y | N | 知识分类 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表knowledge_of_tonic_diet (药膳知识)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | knowledge_of_tonic_diet_id | int | 10 | 0 | N | Y | 药膳知识ID | |
| 2 | knowledge_title | varchar | 64 | 0 | Y | N | 知识标题 | |
| 3 | knowledge_classification | varchar | 64 | 0 | Y | N | 知识分类 | |
| 4 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
| 5 | video_attachments | varchar | 255 | 0 | Y | N | 视频附件 | |
| 6 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
| 7 | knowledge_content | longtext | 2147483647 | 0 | Y | N | 知识内容 | |
| 8 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
| 2 | title | varchar | 125 | 0 | N | N | 标题: | |
| 3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
| 4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | ordinary_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 4 | contact_number | varchar | 16 | 0 | Y | N | 联系电话 | |
| 5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | content | varchar | 255 | 0 | Y | N | 内容: | |
| 4 | url | varchar | 255 | 0 | Y | N | 链接: | |
| 5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
| 6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表tonic_diet_information (药膳信息)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | tonic_diet_information_id | int | 10 | 0 | N | Y | 药膳信息ID | |
| 2 | name_of_tonic_diet | varchar | 64 | 0 | Y | N | 药膳名称 | |
| 3 | classification_of_tonic_diet | varchar | 64 | 0 | Y | N | 药膳分类 | |
| 4 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
| 5 | raw_materials_of_tonic_diet | varchar | 64 | 0 | Y | N | 药膳原料 | |
| 6 | efficacy_of_tonic_diet | varchar | 64 | 0 | Y | N | 药膳功效 | |
| 7 | tonic_diet_pictures | varchar | 255 | 0 | Y | N | 药膳图片 | |
| 8 | introduction_to_tonic_diet | longtext | 2147483647 | 0 | Y | N | 药膳介绍 | |
| 9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
个性化药膳推荐系统的详细设计与实现主要是根据前面的个性化药膳推荐系统的需求分析和个性化药膳推荐系统的总体设计来设计页面并实现业务逻辑。主要从个性化药膳推荐系统界面实现、业务逻辑实现这两部分进行介绍。
4.1.1 前台首页界面
当进入个性化药膳推荐系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是新闻资讯,其主界面展示如下图所示。
图4-1 前台首页界面图
4.1.2 用户注册界面
个性化药膳推荐系统的游客和用户时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册用户注册界面展示如下图所示。
图4-2注册界面图
注册的关键代码如下:
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;
}
个性化药膳推荐系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到个性化药膳推荐系统的首页中;否则将会提示相应错误信息,用户登录界面如下图所示。
图4-3用户登录界面图
登录代码如下:
package com.project.demo.interceptor;
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
private String tokenName = "x-auth-token";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader(this.tokenName);
setHeader(request, response);
log.info("[请求接口] - {} , [请求类型] - {}",request.getRequestURL().toString(),request.getMethod());
if (request.getRequestURL().toString().contains("/api/user/login")){
return true;
}
else if (request.getRequestURL().toString().contains("/api/user/state")){
return true;
}
else if (request.getRequestURL().toString().contains("/api/user/register")){
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
//更新token
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
private void failure(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setHeader("Content-type", "application/json;charset=UTF-8");
response.setStatus(401);
response.sendRedirect("https://www.baidu.com");
}
private void setHeader(HttpServletRequest request, HttpServletResponse response) {
//跨域的header设置
response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers"));
response.setHeader("Access-Control-Max-Age", "1800");
//防止乱码,适用于传输JSON数据
response.setHeader("Content-Type", "application/json;charset=UTF-8");
response.setStatus(HttpStatus.OK.value());
}
}
当用户点击右上角点击“我的账户”可以对个人的资料、登录系统的密码的信息进行设置管理,我的账户界面和密码修改界面如下图所示。
图4-4我的账户界面图
图4-5密码修改界面图
修改密码如下:
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
4.1.5 通知公告界面
当用户点击个性化药膳推荐系统中导航栏上的“通知公告”后将会进入到该“通知公告”的界面,然后选择想要看的公告,点击进入到详细界面进行查看。通知公告界面如下图所示。
图4-6通知公告界面图
4.1.6 新闻资讯界面
当用户点击“ 新闻资讯”这一菜单按钮,会显示管理员在后台发布的所有的新闻资讯信息,支持通过关键词对资讯进行搜索,选择需要的资讯信息点击可以进入到资讯信息详细的介绍界面,同时可以进行点赞、收藏和评论等操作, 新闻资讯界面如下图所示。
图4-7新闻资讯详情界面图
4.1.7 药膳信息界面
药膳信息:提供详细的药膳成分分析、适宜人群、食用禁忌等,帮助用户做出更加科学的饮食选择。并进行点赞、收藏和评论等操作。药膳信息界面如下图所示。
4.1.8 医生信息管理界面
医生信息管理:医生用户可以更新和管理自己的个人信息和专业背景,保持信息的最新状态,提升个人品牌形象。医生信息界面如下图所示。
图4-9医生信息详情界面图
咨询记录管理:医生用户可以查看自己回答过的咨询记录,方便跟踪患者的咨询历史和反馈,优化治疗方案。咨询记录界面如下图所示。
图4-10咨询记录详情界面图
管理员点击“系统用户”这一菜单会显示管理员、注册用户和医生用户这三个子菜单,管理员可以对这三个角色的信息进行增删改查操作。界面如下图所示。
图4-11系统用户管理界面图
添加的关键代码如下:
public function add()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
删除的关键代码如下:
public function del()
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
管理员点击“药膳分类管理”会显示出药膳分类列表和药膳分类添加,支持输入药膳类型等进行查询、重置、和删除的操作。如果想要添加新的药膳分类,点击“添加”按钮,同时可以选择某一条药膳分类,点击“删除”进行删除。药膳分类列表界面如下图所示。
图4-12药膳分类列表管理界面图
管理员负责审核、添加或修改系统中的药膳信息推荐方案。管理员可以根据用户的需求更新药膳信息库,并确保所有推荐的药膳符合科学的营养标准。药膳信息管理界面如下图所示。
图4-13药膳信息管理界面图
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图管理界面如下图所示。
图4-14 系统管理界面图
轮播图上传的关键代码如下:
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
发布和管理新闻资讯,对资讯进行分类管理,提供丰富的资讯内容,满足用户的多元化信息需求。资源管理板块还提供资讯推荐功能,根据用户偏好进行个性化推荐。界面如下图所示。
图4-15 新闻资讯界面图
第五章 系统的测试
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些错误,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
系统测试包括:用户登录功能测试、新闻资讯查看功能测试、添加药膳分类、药膳信息搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
表5-1 用户登录功能测试表
| 用例名称 | 用户登录系统 |
| 目的 | 测试用户通过正确的用户名和密码可否登录功能 |
| 前提 | 未登录的情况下 |
| 测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
| 预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
| 实际结果 | 实际结果与预期结果一致 |
新闻资讯查看功能测试:
表5-2 新闻资讯查看功能测试表
| 用例名称 | 新闻资讯查看 |
| 目的 | 测试新闻资讯查看功能 |
| 前提 | 用户登录 |
| 测试流程 | 点击新闻资讯列表 |
| 预期结果 | 可以查看到所有新闻资讯 |
| 实际结果 | 实际结果与预期结果一致 |
管理员添加药膳分类界面测试:
表5-3 管理员添加药膳分类界面测试表
| 用例名称 | 药膳分类发布测试用例 |
| 目的 | 测试药膳分类发布功能 |
| 前提 | 用户正常登录情况下 |
| 测试流程 | 1)点击药膳分类管理,然后点击添加后并填写信息。 2)点击进行提交。 |
| 预期结果 | 提交以后,页面首页会显示新的药膳分类 |
| 实际结果 | 实际结果与预期结果一致 |
药膳信息搜索功能测试:
表5-4药膳信息搜索功能测试表
| 用例名称 | 药膳信息搜索测试 |
| 目的 | 测试药膳信息搜索功能 |
| 前提 | 无 |
| 测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
| 预期结果 | 页面显示包含有搜索关键字的药膳信息 |
| 实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
| 用例名称 | 密码修改测试用例 |
| 目的 | 测试管理员密码修改功能 |
| 前提 | 管理员用户正常登录情况下 |
| 测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
| 预期结果 | 使用新的密码可以登录 |
| 实际结果 | 实际结果与预期结果一致 |
通过编写个性化药膳推荐系统的测试用例,已经检测完毕用户登录功能测试、新闻资讯查看功能测试、添加药膳分类、药膳信息搜索、密码修改功能测试,通过这些测试为个性化药膳推荐系统的后期推广运营提供了强力的技术支撑。
结 论
在这个设计中,我花了大量的时间去理解系统开发中使用的知识,经过这段时间的努力工作最终完成了系统设计。通过这一阶段的学习,我发现了自己的不足,充分掌握了必要的应用技能,进一步的学习使我充实了自己的知识基础,完成了这个艰巨的任务。当遇到问题时,我很及时的寻求老师的帮助,通过专业的网站和论坛来解决,他们的帮助让我一步一步的成功克服了困难的问题。系统设计过程不容易,你需要不断充实自己,有勇气克服困难。系统开发的一些功能还不完善,需要继续改善后,通过用户体验来修改设计完美的系统,让用户得到更好的体验,我觉得很高兴,因为这是我第一次通过自己的努力实现这个系统,但绝不是我的最后一个,在未来我将努力实现更多的优秀的系统。
在一些编程语言的系统实现中,对词汇表不太熟悉,导致了开发的困难,但是我通过了合适的字典软件来解决这个大问题。由此,我学会了自己的英语缺陷。在那之后,我不断地提高自己的英语知识,这样我就不会有任何未来的工作和生活。毕业设计过程我感觉很深刻,从一开始就不熟悉开发技术,一步一步的使用,接触到文献和信息,不难理解,系统是一次又一次的实现,系统本身对于在线学习是有用的。我从这个设计中获益良多,论文的编写需要有自己的意愿去实现一点,学习生活中所有的问题的勇气,学习的过程就是学习的过程。毕业设计,我学会了将理论知识应用于实践。让我知道该怎么做,我们必须认真对待。勇于克服困难,相信未来,我会做得更好。
参考文献
[1]Zhu Y .Contract Management System Based on SpringBoot and Vue[J].Advances in Computer, Signals and Systems,2024,8(5):
[2]周晓睿,杨磊,宋欣,等.基于Vue+Springboot的中草药病害识别管理系统研究[J].天津农学院学报,2024,31(03):78-84.DOI:10.19640/j.cnki.jtau.2024.03.014.
[3]周玉光,赵海涛,樊继慧,等.基于SpringBoot的消防站健身房系统建设[J].电脑知识与技术,2024,20(17):75-77.DOI:10.14004/j.cnki.ckt.2024.0927.
[4]Liu Y .Design and Implementation of a Student Attendance Management System based on Springboot and Vue Technology[J].Frontiers in Computing and Intelligent Systems,2024,8(1):91-97.
[5]汤鑫,杨贞萍,杨灿,等.基于SpringBoot和Vue的图书馆座位预约系统的设计与实现[J].电脑知识与技术,2024,20(11):87-90.DOI:10.14004/j.cnki.ckt.2024.0519.
[6]王培培.基于SpringBoot的网上商城管理系统设计与实现[J].现代计算机,2024,30(07):117-120.
[7]王晓东,刘海燕,王迎,等.基于SpringBoot的气象信息资源管理系统设计与实现[J].电脑编程技巧与维护,2024,(03):79-82.DOI:10.16184/j.cnki.comprg.2024.03.028.
[8]杨晟.基于SpringBoot的火车票售票管理系统设计[J].无线互联科技,2024,21(05):61-63.
[9]雷欣,马宏琳,郑霖,等.基于SpringBoot的域名信息系统设计与实现[J].电脑知识与技术,2024,20(05):44-47.DOI:10.14004/j.cnki.ckt.2024.0188.
[10]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[11]李芳.居民药膳食疗行为影响因素问卷的编制及初步应用[D].湖南中医药大学,2023.DOI:10.27138/d.cnki.ghuzc.2023.000549.
[12]唐双林.基于Vue和SpringBoot架构的智能推荐农产品团购销售系统[D].重庆三峡学院,2023.DOI:10.27883/d.cnki.gcqsx.2023.000390.
[13]叶长青.一种基于SpringBoot的影视内容推荐系统的设计与实现[J].电脑知识与技术,2023,19(01):85-87.DOI:10.14004/j.cnki.ckt.2023.0015.
[14]Yang Y .Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
[15]闫文静.健忘中医食疗药膳组方规律研究[D].山东中医药大学,2022.DOI:10.27282/d.cnki.gsdzu.2022.000932.
[16]Hejing W .Commerce Middle Office Management System Based on Springboot[J].International Journal of Advanced Network, Monitoring and Controls,2022,7(2):32-45.
[17]彭馨瑶.药膳餐饮现存问题及对策浅析[C]//中国药膳研究会.2021中国药膳学术研讨会论文集.北京中医药大学;,2021:4. DOI:10.26914/c.cnkihy.2021.073509.
[18]方晓,孙慧婷.药膳大数据的平台构建与实现[J].长春大学学报,2021,31(02):23-29.
[19]Chen G ,Xu J .Design and implementation of efficient Learning platform based on SpringBoot Framework[J].Journal of Electronics and Information Science,2020,6(1):
[20]陈丽如.常用饮食药膳推荐[J].保健医苑,2020,(02):61-63.
致 谢
基于SpringBoot的个性化药膳推荐系统的完成,如何实现的更好,其中付出的努力是很大的,这段时光将会终身难忘。
个性化药膳推荐系统的设计可以顺利完成,首先,我要感谢我的指导老师,他在我遇到设计问题时及时帮助了我,并在我对设计感到困惑时给了我充分的指导。在他的帮助下,我可以完成高质量的毕业设计。在个性化药膳推荐系统的设计和开发中,指导老师提出了许多实用的意见和建议,并为我提供了大量相关的研究资料,使我对设计有了更深入的了解。只有在老师的指导下,才能在毕业设计中取得成功。在此,我要向指导老师表示深深的谢意。
在此,我还要感谢我的同学们,他们为我的设计提供了许多参考意见,并与我讨论了设计中的问题,从而使我的设计一步一步走向成熟。
点赞+收藏+关注 → 私信领取本源代码、数据库
更多推荐
所有评论(0)