基于微信小程序的健康饮食推荐系统-计算机毕设 附源码 62549
基于微信小程序的健康饮食推荐系统
摘 要
随着人们健康意识的提升和生活方式的转变,对健康饮食的需求日益增长。本研究聚焦于基于微信小程序的健康饮食推荐系统的设计与实现。该系统旨在为用户提供便捷、个性化的健康饮食推荐服务,以满足不同用户群体在饮食健康方面的多样化需求。通过微信小程序这一平台,整合了丰富的饮食数据资源,包括各类食材的营养成分、不同食谱的制作方法以及针对各种健康状况和目标的饮食建议等。
通过使用Java技术,该系统能够快速构建企业级应用程序,并且具有强大的依赖管理功能和模块化设计,以满足不同用户的需求,系统根据用户的个人信息(如年龄、性别、身体状况、饮食偏好等)进行精准的健康饮食推荐。同时,系统还具备多种功能模块,如首页、系统用户、口味偏好管理、人群类型管理、健康食谱管理、健康食材管理、咨询反馈管理、系统管理、网站公告管理、资源管理等,以增强用户体验和互动性。
本健康饮食推荐系统具有便捷性、个性化、实时性等特点,有望帮助用户更好地管理饮食,改善健康状况,促进健康饮食理念的传播和应用,为提升全民健康水平做出积极贡献。
关键词:健康饮食推荐;Spring Boot;Java;MySQL
Abstract
With the increasing awareness of health and changes in lifestyle, the demand for healthy eating is growing day by day. This study focuses on the design and implementation of a healthy diet recommendation system based on WeChat mini programs. The system aims to provide users with convenient and personalized healthy diet recommendation services to meet the diverse needs of different user groups in terms of dietary health. Through the WeChat mini program platform, rich dietary data resources have been integrated, including the nutritional composition of various ingredients, the preparation methods of different recipes, and dietary recommendations for various health conditions and goals.
By using Java technology, the system can quickly build enterprise level applications and has powerful dependency management capabilities and modular design to meet the needs of different users. The system provides accurate healthy diet recommendations based on users' personal information, such as age, gender, physical condition, dietary preferences, etc. At the same time, the system also has multiple functional modules, such as homepage, system users, taste preference management, crowd type management, healthy recipe management, healthy ingredient management, consultation feedback management, system management, website announcement management, resource management, etc., to enhance user experience and interactivity. This healthy diet recommendation system has the characteristics of convenience, personalization, and real-time performance, which is expected to help users better manage their diet, improve their health status, promote the dissemination and application of healthy diet concepts, and make positive contributions to improving the overall health level of the people.
Keywords:Recommended healthy diet; Spring Boot;Java;MySQL
1 前 言
1.1 选题背景
1.2 研究意义
1.3 国内外研究现状
1.3.1 国内研究现状
1.3.2 国外研究现状
1.4 系统的特点
1.5 论文结构与章节安排
2 关键技术
2.1 Java
2.2 MySQL
2.3 Spring Boot框架
2.4 B/S模式
2.5 uni-app
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 操作可行性
3.1.4 社会可行性
3.2 功能需求分析
3.3 系统性能分析
3.4 系统流程分析
3.4.1 程序操作流程
3.4.2 登录流程
3.4.3 注册流程
4 系统设计
4.1 总体设计
4.1.1 框架设计
4.1.2 功能模块设计
4.2 数据库设计
4.2.1 E-R图
4.2.1 数据库表结构设计
5 系统实现
5.1 系统环境分析
5.2 注册用户模块
5.2.1 用户登录界面
5.2.2 用户注册界面
5.2.3 首页界面
5.2.4 健康知识界面
5.2.5 健康食谱界面
5.2.6 健康食材界面
5.3 后台管理员模块
5.3.1 系统用户界面
5.3.2 口味偏好管理界面
5.3.3 人群类型管理界面
5.3.4 系统管理界面
5.3.5 网站公告管理界面
5.3.6 资源管理界面
6 系统测试
6.1 测试目的与意义
6.2 测试用例
6.3 测试分析
7 结束语
参考文献
致 谢
在现代社会,随着人们生活节奏的加快和饮食习惯的变化,健康问题日益突出,成为了个体和社会关注的焦点。许多研究显示,科学合理的饮食不仅能有效预防各种慢性病,还能提升个体的生活质量和幸福感。然而,面对市场上琳琅满目的饮食信息,消费者往往感到无从选择,难以判断哪些饮食建议真正符合自己的健康需求。再加上大多数人难以获得个性化的饮食指导,造成了健康饮食与日常生活之间的脱节。
在这样的背景下,基于微信小程序的健康饮食推荐系统应运而生。该系统旨在通过高效的信息传递和智能化的推荐算法,为用户提供个性化的饮食建议,帮助他们实现健康饮食目标。通过用户注册功能,系统能够收集用户的基本信息和健康需求,从而生成适配的饮食方案。结合健康知识普及、食谱推荐等多项功能,用户不仅能获取科学的饮食指导,还能增加对健康饮食的认识和理解,形成良好的生活习惯,进而推动整体社会向健康发展迈进。
此外,考虑到微信作为一种广泛使用的社交媒体平台,利用其遍及的用户基础和便捷的操作体验,可以更好地将健康饮食理念传播给大众,实现更广泛的影响。在这样的背景下,健康饮食推荐系统不仅仅是一个工具,它更是促进社会健康意识提升的重要载体。通过利用现代科技手段,结合日常饮食的实际需求,系统希望打造一个更加健康、谐和的饮食文化环境,最终实现“让健康饮食成为一种生活方式”。
基于微信小程序的健康饮食推荐系统的选题意义在于响应了现代社会对健康饮食日益增长的需求。随着生活节奏的加快和快餐文化的盛行,许多人面临着饮食结构不合理和营养失衡的问题,这不仅影响了个人的身体健康,还可能导致慢性疾病的增加。通过构建一个健康饮食推荐系统,可以为用户提供科学、个性化的饮食建议,帮助他们在繁忙的生活中更好地管理自己的饮食习惯。
与此同时,微信作为一种广受欢迎的社交媒体平台,其庞大的用户基础和便捷的使用体验使得本系统能够更高效地传播健康饮食的理念,提升公众的健康意识。不同于传统的营养咨询方式,此系统通过智能化的算法能够实时调整推荐内容,以适应用户的个体需求,从而解决了以往个性化饮食指导不足的问题。此外,随着人们对健康生活方式的重视,基于微信小程序的形式可以方便用户随时随地获取饮食信息,增强其对健康饮食的参与感和主动性。
这种创新性的推荐系统不仅利于个体健康的改善,也有助于推动整个社会的健康发展,促进文明饮食文化的形成。它在信息化时代背景下,结合了科技与饮食营养的深度融合,为人们的健康生活提供了一条崭新的路径,符合当代社会对健康和幸福生活的追求。因此,搭建这样一个系统不仅具有重要的现实意义,也为未来的健康饮食研究与实践提供了新的视角和方法。
技术实现:国内一些研究者利用小程序的开发框架,实现了健康饮食推荐的基础功能。例如,通过使用微信开发者工具,开发包含饮食记录、膳食建议以及营养分析的小程序。比如,“膳食助手”小程序不仅提供饮食推荐,还允许用户记录每日饮食情况。
用户体验:在用户体验方面,研究者们通常着眼于界面的友好性与信息传递的有效性。例如,开发以用户为中心的界面设计,使用户能快速找到所需建议。一些研究表明,增加社区功能能够增强用户的参与感,通过用户评价和分享激励用户。
个性化推荐算法:目前国内一些小程序开始引入机器学习技术,根据用户历史饮食记录和营养需求进行个性化推荐。比如,某些程序通过用户的体重、身高、活动量等信息,给出个性化的卡路里摄入建议。
市场应用:在市场应用方面,如“好食期”小程序与很多餐厅合作,为用户提供菜品推荐,结合用户的口味偏好和健康需求进行精准匹配。“微饮食”,通过小程序收集用户的年龄、性别、身体状况及饮食偏好,然后利用简单的算法给出每日饮食建议。同时,用户可以获得营养师的在线咨询服务,这种模式提高了用户的参与感和满足感。
技术实现:国外研究通常采用更为成熟的技术栈,如使用Python和Flask等进行后端服务处理。一些应用,如“Lifesum”,提供个性化的饮食方案与食物追踪功能,用户可以记录饮食与锻炼情况,以获取营养建议。
用户体验:一些国外应用通过用户行为分析来持续优化界面与功能,例如“Yummly”,采用直观的搜索界面和丰富的过滤选项,使用户能够轻松找到符合其饮食需求的食谱。
个性化推荐算法:国外有很多研究应用深度学习模型进行饮食推荐,如“PlateJoy”利用用户输入的生活方式和饮食偏好,推荐个性化的每周膳食计划,并自动生成购物清单。
市场应用:在市场应用方面,像“MyFitnessPal”则结合社交元素,通过用户之间的互动与挑战提高参与度,同时提供饮食和运动数据的跟踪功能,支持用户更好地管理健康。如“Fooducate”,该应用通过扫描食物条形码,给用户提供其营养成分的详细分析,并结合用户的健康目标提供个性化的替代建议。用户可以利用应用内的论坛与其他用户进行健康讨论。
基于微信小程序的健康饮食推荐系统在国内外都得到了关注,展示了其在技术实现和用户体验等方面的持续发展。未来,随着机器学习和数据分析技术的不断进步,个性化饮食推荐的准确性与实用性将不断提高。
(1)健康饮食推荐系统中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的Spring Boot框架,它减少Java配置代码,简化编程代码,目前Spring Boot框架也是很多企业选择的框架之一。
(2)健康饮食推荐系统中的前端使用的是uni-app框架,它是使用Vue.js 开发所有前端应用的框架,可应用多平台,性能优秀,周边生态丰富且开发学习成本低。
(3)健康饮食推荐系统中数据库用的MySQL,它执行效率高,运行速度快,安全性能也很高,同时无平台限制。
1.5论文结构与章节安排
本文共分为七章,章节内容安排如下:
第一章:引言,主要介绍健康饮食推荐系统领域研究的背景和意义,概述研究的现状和系统特点。
第二章:关键技术,主要探讨和说明实现健康饮食推荐系统的关键技术。
第三章:系统分析,主要从健康饮食推荐系统的可行性、功能、性能等方面进行分析,为后续系统设计提供理论支持。
第四章:系统设计,主要对健康饮食推荐系统功能模块、数据库进行功能设计。
第五章:系统实现,主要介绍了健康饮食推荐系统各个顾客用户的功能、系统界面的实现。
第六章:系统测试,主要对健康饮食推荐系统进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。
第七章:结束语。总结全文研究内容,提出对健康饮食推荐系统领域未来发展的展望和建议,指出研究的不足和可优化之处,为相关领域的进一步探索提供参考。
Java是一种跨平台的编程语言,广泛用于开发各种类型的应用程序,包括Web应用、移动应用和大型软件系统。在健康饮食推荐系统中,Java通常用于后端开发,提供强大的处理能力和稳定性。同时Java是一种面向对象的编程语言,支持封装、继承和多态等特性,使代码更易于维护和重用。还拥有丰富的标准库和第三方框架,如Spring、Hibernate等,可以大大提高开发效率。
MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在健康饮食推荐系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。
Spring Boot是一个用于构建微服务的Java框架,简化了Spring应用程序的开发和部署过程。Spring Boot通过自动配置和约定优于配置的理念,简化了Spring应用程序的开发过程,使开发者可以更快地构建和部署应用程序;拥有丰富的生态系统,如Spring Cloud、Spring Security等,可以满足各种企业级应用的需求。在健康饮食推荐系统中,Spring Boot可以帮助开发团队快速搭建后端服务,并实现各种功能模块的集成和管理。
B/S模式(Browser/Server模式)是一种网络应用架构,其中浏览器(Browser)作为客户端与服务器(Server)进行通信。这种模式使用户可以通过普通的Web浏览器访问应用程序,而无需安装额外的客户端软件。用户通过浏览器发送请求,服务器接收并处理这些请求,然后将结果返回给浏览器显示给用户。在健康饮食推荐系统中,uni-app结合B/S模式B/S模式的优势包括跨平台的兼容性,用户可以在不同操作系统和设备上访问应用程序。此外,维护和部署也更为简便,并且能够实现较高的安全性,因为服务器端控制了应用程序和数据的访问权限。
uni-app是一个跨平台的应用开发框架,可以同时用于开发微信小程序、H5应用、Android和iOS应用等,减少了开发成本和时间。uni-app提供了丰富的组件库和插件,可以快速构建各种功能模块,提高开发效率。通过优化渲染引擎和网络请求,提高了应用程序的性能和用户体验。App端支持原生渲染,可支撑更流畅的用户体验。小程序端的性能优于市场其他框架。同时基于通用的前端技术栈,采用vue语法+微信小程序api,无额外学习成本。
3.1可行性分析
3.1.1技术可行性
从技术角度来看,Spring Boot作为一种轻量级、快速构建的Java框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。同时,MySQL作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。
考虑到Springboot、Vue、MyBatis Plus及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著提升度假管理的效率和用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。
系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。
基于微信小程序的健康饮食推荐系统在社会上是可行的。微信拥有庞大的用户基础,有助于传播健康饮食知识。该系统能够根据用户的个体需求提供个性化的饮食建议,帮助他们实现健康目标。用户之间的互动和分享可以提升社区的健康意识,增强参与感,并促进健康饮食习惯的养成。整体来看,这一系统具备良好的实际应用潜力。
从技术、经济、操作和社会四个维度来看,健康饮食推荐系统的开发均具备高度的可行性。
本系统可以分为:注册用户和管理员两大角色。
注册用户主要包括首页、健康知识、健康食谱、健康食材、咨询反馈、网站公告、我的(基本信息、咨询反馈、收藏)等功能。
管理员可登录系统具有后台首页、系统用户、口味偏好管理、人群类型管理、健康食谱管理、健康食材管理、咨询反馈管理、系统管理、网站公告管理、资源管理等功能。
(一)注册用户角色用例如下图所示。

图3.1注册用户用例图
注册用户具体功能说明如下所示。
- 注册登录:游客可以通过注册成为系统用户,使用账号密码可登录系统前台,使用系统功能。
- 首页:展示个性化推荐的健康食谱、食材和最新公告。便捷的导航栏,允许用户快速访问不同模块。
- 健康知识:提供丰富的健康知识资源,包括饮食健康、营养成分、饮食禁忌等。可按关键词搜索健康知识,支持分类浏览,提升查找效率。用户可以点赞、评论知识内容,促进社区交流。
- 健康食谱:展示各种健康食谱,提供详细的营养信息、制作步骤和所需食材。根据用户的口味偏好与健康目标,进行智能食谱推荐。用户可以对食谱进行点赞和评论,提供反馈。
- 健康食材:提供健康食材的信息,包括营养成分、适用人群和食用建议。用户可以根据食材名称或类别进行搜索。用户可以收藏喜爱的食材,方便日后查阅。
- 咨询反馈:用户可以提交关于饮食和健康问题的咨询,或对系统提出建议与反馈。管理员可以回复用户的咨询,解答问题,提高用户满意度。提供用户咨询与反馈的统计数据,帮助优化系统。
- 网站公告:展示系统的公告信息,如活动通知、新功能上线等。用户可以在首页接收到最新公告的推送提醒,确保重要信息不被错过。
- 我的
- 基本信息:用户可以查看和编辑自己的个人信息,如昵称、头像、性别等。
- 咨询反馈:展示用户以往提交的咨询记录,方便用户查看历史问答。
- 收藏夹:用户可以查看和管理自己收藏的食谱和食材,便于快速找到喜爱的内容。
(二)管理员角色用例如下图所示。

图3.2管理员用例图
系统后台管理端管理员具体功能说明如下所示。
- 登录:管理员账号密码由系统生成,可使用账号密码可进行登录系统后台,使用系统功能进行管理,并可对自己的个人信息和密码进行管控。
- 系统用户:管理员可对注册用户和管理员等用户信息进行管控,包括进行增删改查操作,可点击详情进行查阅。
- 口味偏好管理:管理员可以添加、编辑和删除不同类型的口味偏好,供用户选择。根据用户的口味偏好调整推荐的健康食谱。
- 人群类型管理:添加不同人群类型及其特定饮食需求。根据人群类型提供更精准的健康饮食建议。
- 健康食谱管理:管理员可创建、编辑和删除健康食谱,食谱可包含营养成分、制作步骤、所需食材等信息。支持用户评论、点赞,管理员可根据反馈调整食谱内容。
- 健康食材管理:对系统中的食材进行管理,包括添加新食材、编辑食材信息(如营养价值、适用人群等)。根据食材的种类、来源等进行分类,方便用户查找。
- 咨询反馈管理:查看用户提交的咨询与反馈,可以进行回复、处理和统计分析。分析用户反馈,优化系统功能与内容。
- 系统管理:上传、编辑和删除首页轮播图,展示最新活动、促销或健康饮食知识。通过有吸引力的图片吸引用户关注,提高用户留存率。
- 网站公告管理:发布、编辑和删除公告信息,向用户传达重要信息或活动。确保用户及时获得系统更新和重要通知。
- 资源管理:管理健康知识库,包括添加、编辑和删除健康相关知识,支持分类管理。为用户提供丰富的健康知识资源,提高其健康意识。
对于健康饮食推荐系统的设计与实现,下面是系统性能分析表:
表3.1性能需求表
|
项目 |
内容 |
|
响应时间 |
系统对用户请求的响应时间需在500ms以内 |
|
并发用户数 |
系统需要支持1000个并发用户同时访问 |
|
吞吐量 |
系统每秒需要处理1000个请求 |
|
可用性 |
系统需要保证每月99.9%的可用性 |
|
数据安全 |
用户敏感数据需要加密存储,并支持数据库备份和恢复 |
|
数据一致性 |
系统中的数据操作需保证ACID特性,确保数据一致性 |
|
扩展性 |
系统需要支持水平扩展,能够方便地增加服务器节点以应对高请求量 |
|
可维护性 |
系统代码需要清晰易懂、结构良好,方便团队成员维护和修改 |
|
日志记录 |
系统需要记录用户操作日志、异常日志以及系统运行日志 |
|
监控报警 |
系统需要实时监控运行状态,当系统异常时能够及时发送警报通知相关人员 |
|
缓存设置 |
针对频繁使用的数据,系统需要进行合适的缓 |
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

图3.3程序操作流程图
用户访问平台的网站,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。

图3.4登录流程图
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。

图3.5注册流程图
B/S架构,即浏览器/服务器架构,是一种基于Web的分布式计算范式。在此架构中,应用程序的逻辑被巧妙地区分为客户端和服务器两部分。具体而言,客户端借助广泛使用的浏览器界面,进行应用访问与操作;而服务器端则肩负起业务逻辑处理、数据存储及管理的核心职责。值得一提的是,客户端无需安装特定的软件,用户仅需通过浏览器输入相应的URL地址,即可轻松访问应用程序,这一特性极大地提升了用户的使用便捷性和系统的维护效率。服务器端通常采用高性能的计算机和数据库系统,能够处理大量并发请求和复杂的业务逻辑。B/S架构的优势在于其跨平台性和易于维护性,开发者可以通过更新服务器端的代码来实现整个系统的升级和维护,而无需逐一更新客户端。

图4.1系统架构图
功能模块设计是系统开发过程中的重要阶段,它旨在将系统划分为不同的模块,每个模块负责完成特定的功能或任务。健康饮食推荐系统由多个功能模块组成,每个模块下又包含具体的功能操作。功能模块图如下图所示。

图4.2系统架构图
E-R图有助于理清系统中的数据结构和关系,为后续的数据库表结构设计提供指导。在进行数据库设计之前,首先需要先绘制实体-关系(E-R)图。E-R图将帮助我们理清业务中的实体(Entity)及它们之间的关系(Relationship),从而为后续的数据库表设计提供基础。根据前文可以得出本健康饮食推荐系统拥有多个实体,在此列举主要实体,各个实体之间联系总E-R图如下图所示。

图4.3总E-R图
在E-R图确定后,接下来可以根据实体和关系的属性设计数据库表结构。在E-R图明确了实体和它们之间的关系后,接下来可以开始设计数据库表结构。每个实体对应一个数据库表,每个属性对应表中的字段。如下列表格所示,在此列举主要数据表。
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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_feedback_id |
int |
10 |
0 |
N |
Y |
咨询反馈ID | |
|
2 |
registered_user |
int |
10 |
0 |
Y |
N |
0 |
注册用户 |
|
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 | |
|
4 |
user_age |
varchar |
64 |
0 |
Y |
N |
用户年龄 | |
|
5 |
consultation_number |
varchar |
64 |
0 |
Y |
N |
咨询编号 | |
|
6 |
submission_time |
datetime |
19 |
0 |
Y |
N |
提交时间 | |
|
7 |
consultation_content |
text |
65535 |
0 |
Y |
N |
咨询内容 | |
|
8 |
official_reply |
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 |
healthy_ingredients_id |
int |
10 |
0 |
N |
Y |
健康食材ID | |
|
2 |
food_ingredient_name |
varchar |
64 |
0 |
Y |
N |
食材名称 | |
|
3 |
food_display |
varchar |
255 |
0 |
Y |
N |
食材展示 | |
|
4 |
suitable_for_the_target_audience |
varchar |
64 |
0 |
Y |
N |
适合人群 | |
|
5 |
functional_components |
text |
65535 |
0 |
Y |
N |
功能成分 | |
|
6 |
benefits_of_consumption |
text |
65535 |
0 |
Y |
N |
食用好处 | |
|
7 |
food_taboos |
text |
65535 |
0 |
Y |
N |
食用禁忌 | |
|
8 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
9 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
|
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
healthy_recipes_id |
int |
10 |
0 |
N |
Y |
健康食谱ID | |
|
2 |
recipe_name |
varchar |
64 |
0 |
Y |
N |
食谱名称 | |
|
3 |
recipe_display |
varchar |
255 |
0 |
Y |
N |
食谱展示 | |
|
4 |
taste_preference |
varchar |
64 |
0 |
Y |
N |
口味偏好 | |
|
5 |
calories_of_dishes |
varchar |
64 |
0 |
Y |
N |
菜肴热量 | |
|
6 |
ingredients_and_ingredients |
text |
65535 |
0 |
Y |
N |
食材配料 | |
|
7 |
cooking_steps |
text |
65535 |
0 |
Y |
N |
烹饪步骤 | |
|
8 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
9 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
|
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
12 |
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: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
population_type_id |
int |
10 |
0 |
N |
Y |
人群类型ID | |
|
2 |
type_name |
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 |
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 |
registered_user_id |
int |
10 |
0 |
N |
Y |
注册用户ID | |
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 | |
|
3 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用户性别 | |
|
4 |
user_age |
int |
10 |
0 |
Y |
N |
0 |
用户年龄 |
|
5 |
users_mobile_phone |
varchar |
16 |
0 |
Y |
N |
用户手机 | |
|
6 |
weight_kg |
int |
10 |
0 |
Y |
N |
0 |
体重KG |
|
7 |
height_cm |
int |
10 |
0 |
Y |
N |
0 |
身高CM |
|
8 |
taste_preference |
varchar |
64 |
0 |
Y |
N |
口味偏好 | |
|
9 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通过 |
审核状态 |
|
10 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID |
|
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
taste_preference_id |
int |
10 |
0 |
N |
Y |
口味偏好ID | |
|
2 |
preferred_name |
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 |
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 |
更新时间: |
考虑到健康饮食推荐系统主要面对部分人群,网站的访问量不大。系统处理、统计分析工作简单,Tomcat服务器能够满足中小型网络用户的数据处理,通过互联网Internet 接入及MySQL 5.6以上的数据库应用的需求点。系统具体开发环境如下表所示:
表5.1系统环境表
|
项目 |
开发环境 |
|
操作系统 |
Windows 11、Windows 10、Windows 8、Windows 7 |
|
开发语言 |
Java |
|
使用框架 |
Spring Boot、uni-app |
|
体系结构 |
三层B/S体系结构 |
|
开发工具 |
IDEA(2020版)/MyEclipse(2017)/Eclipse、Vs Code |
|
数据库 |
MySQL 5.6以上 |
|
数据库管理工具 |
Navicat |
|
JDK版本 |
Java 1.8 |
|
Maven |
apache-maven 3.6.1-bin |
|
Tomcat |
apache-tomcat-7.0.88 |
|
移动端 |
iOS、Android、Web(响应式)、以及各种小程序 |
用户输入用户名和密码后,系统首先对这些输入进行基本的格式验证,确保用户名和密码符合系统设定的格式要求(如长度、特殊字符要求等)。系统接收到用户输入后,会根据用户名查找系统中存储的用户信息数据库或者其他持久化存储方式。系统需要验证密码的正确性,验证成功即可成功登录。

图5.1用户登录界面设计
登录关键代码如下:
/**
* 登录
* @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<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
用户注册时,系统要求用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。

图5.2用户注册界面设计
注册关键代码如下:
/**
* 注册
* @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);
}
注册用户登录系统后,进入首页界面,可查看健康知识、健康食谱、健康食材、咨询反馈、网站公告等信息和其他功能导航栏。
例如,注册用户首页主界面图如下所示。

图5.3首页主界面设计
提供丰富的健康知识资源,包括饮食健康、营养成分、饮食禁忌等。可按关键词搜索健康知识,支持分类浏览,提升查找效率。用户可以点赞、评论知识内容,促进社区交流。
注册用户健康知识主界面图如下所示。

图5.4健康知识主界面设计
展示各种健康食谱,提供详细的营养信息、制作步骤和所需食材。根据用户的口味偏好与健康目标,进行智能食谱推荐。用户可以对食谱进行点赞和评论,提供反馈。
注册用户健康食谱主界面图如下所示。

图5.5健康食谱主界面设计
提供健康食材的信息,包括营养成分、适用人群和食用建议。用户可以根据食材名称或类别进行搜索。用户可以收藏喜爱的食材,方便日后查阅。
注册用户健康食材主界面图如下所示。

图5.6健康食材主界面设计
管理员可对注册用户和管理员等用户信息进行管控,包括进行增删改查操作,可点击详情进行查阅。
系统用户主界面图如下所示。

图5.7系统用户界面设计
添加系统用户信息关键代码:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
管理员可以添加、编辑和删除不同类型的口味偏好,供用户选择。根据用户的口味偏好调整推荐的健康食谱。
口味偏好管理主界面图如下所示。

图5.8口味偏好管理界面设计
添加不同人群类型及其特定饮食需求。根据人群类型提供更精准的健康饮食建议。
人群类型管理界面如下所示。

图5.9人群类型管理详情界面设计
上传、编辑和删除首页轮播图,展示最新活动、促销或健康饮食知识。通过有吸引力的图片吸引用户关注,提高用户留存率。
系统管理界面如下所示。

图5.10系统管理界面设计
管理员可以发布公告信息,所有注册用户都可以查看公告信息。同时,管理员还需要能够查看和管理所有公告信息。
网站公告管理界面如下所示。

图5.11网站公告管理界面设计
上传图片关键代码如下:
@PostMapping("/upload")
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, "上传失败");
管理健康知识库,包括添加、编辑和删除健康相关知识,支持分类管理。为用户提供丰富的健康知识资源,提高其健康意识。
资源管理界面如下所示。

图5.12资源管理界面设计
在软件开发生命周期中,系统测试占据着举足轻重的地位。通过进行全面而系统的测试,我们能够确保软件在实际使用环境中具备稳定运行的能力,从而满足用户的多样化需求,并显著提升软件的整体质量与可靠性。这一过程不仅有助于识别并修复潜在问题,还能为软件的持续优化提供有力支撑。
随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。图6-1就是纠错测试流程。

图6.1测试与纠错信息流程
在系统的功能验证阶段,我们将对全部的功能界面进行全面测试。具体而言,我们将模拟用户行为,输入各类数据并进行提交操作,随后仔细观察和分析每个页面的响应反馈。这一过程旨在验证系统的功能完整性,确保页面所呈现的功能与预期相符,并能够完全实现预设的交互逻辑。通过这种全面细致的测试方法,我们将确保系统在实际应用中能够稳定、准确地响应用户需求。
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6.1系统登录功能测试用例
|
功能描述 |
用于系统登录 | |
|
测试目的 |
检测登录时的合法性检查 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的用户名和密码带有非法字符 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名或者密码为空 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名和密码不存在 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入正确的用户名和密码 |
登录成功 |
与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6.2注册功能测试用例
|
功能描述 |
用于用户注册 | |
|
测试目的 |
检测用户注册时的合法性检查 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的手机号不合法 |
提示请输入正确的手机号码 |
与预期结果一致 |
|
输入的字段为空 |
提示必填项不能为空 |
与预期结果一致 |
|
输入的密码少于6位 |
提示密码必须为6-12位 |
与预期结果一致 |
|
输入的密码大于12位 |
提示密码必须为6-12位 |
与预期结果一致 |
下表是口味偏好管理功能的测试用例,检测了对口味偏好的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;登录系统。
表6.3口味偏好管理的测试用例
|
功能描述 |
用于口味偏好 | |
|
测试目的 |
检测口味偏好时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加口味偏好,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
|
点击添加口味偏好,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改口味偏好,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改口味偏好,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除口味偏好,选择口味偏好删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索口味偏好,输入存在的口味偏好名 |
查找出相应口味偏好 |
与预期结果一致 |
|
点击搜索口味偏好,输入不存在的口味偏好名 |
不显示口味偏好 |
与预期结果一致 |
下表是人群类型管理功能的测试用例,检测了人群类型管理中对人群类型的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;登录系统。
表6.4人群类型管理的测试用例
|
功能描述 |
用于人群类型 | |
|
测试目的 |
检测人群类型时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加人群类型,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
|
点击添加人群类型,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改人群类型,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改人群类型,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除人群类型,选择人群类型删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索人群类型,输入存在的人群类型名 |
查找出相应人群类型 |
与预期结果一致 |
|
点击搜索人群类型,输入不存在的人群类型名 |
不显示人群类型 |
与预期结果一致 |
下表是健康食谱管理功能的测试用例,检测了健康食谱管理中对健康食谱的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;登录系统。
表6.5健康食谱管理的测试用例
|
功能描述 |
用于健康食谱 | |
|
测试目的 |
检测健康食谱时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加健康食谱,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
|
点击添加健康食谱,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改健康食谱,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改健康食谱,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除健康食谱,选择健康食谱删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索健康食谱,输入存在的健康食谱名 |
查找出相应健康食谱 |
与预期结果一致 |
|
点击搜索健康食谱,输入不存在的健康食谱名 |
不显示健康食谱 |
与预期结果一致 |
下表是系统公告管理功能的测试用例,检测了系统公告管理中对系统公告的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;登录系统。
表6.6系统公告管理的测试用例
|
功能描述 |
用于系统公告 | |
|
测试目的 |
检测系统公告时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加系统公告,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
|
点击添加系统公告,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改系统公告,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改系统公告,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除系统公告,选择系统公告删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索系统公告,输入存在的系统公告名 |
查找出相应系统公告 |
与预期结果一致 |
|
点击搜索系统公告,输入不存在的系统公告名 |
不显示系统公告 |
与预期结果一致 |
本健康饮食推荐系统开发与设计满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及会员能够方便操作。系统的主要特点和优点归纳如下:
(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给客户带来了极大的方便。
(2)该健康饮食推荐系统开发与设计内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因客户的马虎操作而出现的失误,其操作方便,会员界面友好,能够上网的人都可以很好的进行操作。
经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进健康饮食推荐系统的发展,发展前景广阔。
通过开发健康饮食推荐系统,我深刻体会到软件开发的完整流程。首先,在确定开发目标后,我进行了详细的需求分析,明确了系统所需的各项功能。接下来,我设计了系统的功能框架和数据库结构,包括实体和数据表的设计。随后,我实现了各个功能模块的详细界面,并进行了全面的功能测试。尽管在这个过程中遇到了各种挑战,但通过反复分析和深入思考,借助相关文献和解决方案,我成功地解决了这些问题,最终使健康饮食推荐系统顺利运行。
虽然该系统在功能上基本满足了用户的需求,但仍有许多需要改进的地方。在接下来的开发阶段,我计划进行以下改进:
用户界面设计:目前的操作页面虽然满足了简易操作的要求,但在多样化设计方面还有提升空间。我将考虑引入更多丰富的设计元素,使界面更加美观和用户友好。
安全性能优化:针对系统安全性能的增强,需要进一步优化系统的整体防护能力。具体而言,将要对程序退出的安全性进行加强,确保在退出过程中不存在数据泄露或系统不稳定的风险。同时,对系统的并发处理能力进行升级,以确保在高并发场景下系统能够保持稳定的运行状态。这些改进措施将共同提升系统的安全性能,确保在各种使用场景下,系统都能为用户提供安全、可靠的服务。
性能优化:在性能优化方面,将着重于对程序的数据结构和代码逻辑进行精细化调整。通过优化,旨在确保系统能在高负载下保持稳定且高效的运行状态。优化后的系统应具备快速处理大量事务的能力,显著缩短事务处理时间,从而提高整体工作效率。同时,致力于降低服务器资源的占用率,以实现资源的高效利用和成本的有效控制。这些优化措施将共同提升系统的整体性能,为用户提供更加流畅、高效的服务体验。
通过这些改进,我希望能够进一步提升健康饮食推荐系统的用户体验和性能,使其更加贴合实际需求。
[1]龙 艳彬,邓 凯文.基于 Java 程序设计的综合性项目实验研究[J].教育与研究,2024,6(6):
[2]Zhang J .Teaching Reform of Java Program Design Based on Vocational Education Cloud Platform[J].Journal of Higher Education Teaching,2024,1(5):
[3]贾琼.分层教学法在Java程序设计课程教学中的应用研究[J].数字通信世界,2024,(07):250-252.
[4]Wai H K ,Funabiki N,Aung T S, et al.Answer Code Validation Program with Test Data Generation for Code Writing Problem in Java Programming Learning Assistant System[J].Engineering Letters,2024,32(5):
[5]李娜.高职院校专业课《Java面向对象程序设计》课程实施课程思政的实践研究[J].国际教育学,2024,2(3):
[6]武杰.基于深度学习的饮食推荐算法的研究与应用[D].黑龙江大学,2024.DOI:10.27123/d.cnki.ghlju.2024.001369.
[7]Aung T S ,Aung H L,Funabiki N, et al.An Implementation of Web-based Personal Platform for Programming Learning Assistant System with Instance File Update Function[J].Engineering Letters,2024,32(2):
[8]Liu H .Comparative Application of Teaching Methods in C Language and JAVA Programming Courses[J].International Journal of New Developments in Education,2024,6(1):
[9]Zhou R ,Luo K ,Chen X , et al.Research on the Construction of Computer Courses Based on CBE-CDIO Engineering Education Concept: Taking the Course “JAVA Programming” as an Example[J].Contemporary Education Frontiers,2023,1(2):
[10]刘忠起.劝导设计在健康饮食类APP界面中的设计研究[D].江苏大学,2023.DOI:10.27170/d.cnki.gjsuu.2023.002206.
[11]张新宇.基于知识图谱的健康饮食推荐系统研究与开发[D].天津科技大学,2023.DOI:10.27359/d.cnki.gtqgu.2023.000631.
[12]赖世文.基于Garrett用户体验要素模型视角下个性化饮食推荐APP设计研究[D].江西财经大学,2023.DOI:10.27175/d.cnki.gjxcu.2023.000830.
[13]李尚霏.健康饮食领域知识图谱构建及推荐系统研究[D].华南理工大学,2023.DOI:10.27151/d.cnki.ghnlu.2023.000373.
[14]刘庆.面向慢病管理的个性化饮食推荐研究与实现[D].哈尔滨工业大学,2022.DOI:10.27061/d.cnki.ghgdu.2022.002748.
[15]王粤.基于多特征的健康饮食推荐系统的设计与实现[D].重庆邮电大学,2021.DOI:10.27675/d.cnki.gcydx.2021.000832.
[16]耿化聪.基于知识图谱与协同过滤的饮食推荐算法研究[D].青岛科技大学,2021.DOI:10.27264/d.cnki.gqdhc.2021.000896.
[17]雷振风.面向健康饮食营养挖掘与推荐关键技术研究[D].厦门大学,2021.DOI:10.27424/d.cnki.gxmdu.2021.000054.
[18]刘宇豪,刘佳.基于微信小程序的健康饮食软件设计与实现[J].电脑编程技巧与维护,2020,(07):69-71.DOI:10.16184/j.cnki.comprg.2020.07.024.
[19]董洪伟.基于知识图谱的菜品推荐系统[D].北京林业大学,2020.DOI:10.26949/d.cnki.gblyu.2020.001353.
[20]苏嘉.面向心血管疾病风险因素的饮食推荐技术研究[D].哈尔滨工业大学,2020.DOI:10.27061/d.cnki.ghgdu.2020.004780.
这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设施能够完成离不开老师的帮助。我对老师由衷的表示感谢,
其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。
最后,我要感谢我的家人和同学们。感谢父母在物质与精神上给予我无限的支持和鼓励。感谢我的同学们,在论文写作期间,你们给予了我许多宝贵的建议和帮助,让我在学术研究的道路上不再孤单。
再次感谢所有在我大学生活中给予我帮助和支持的人们。您们的关怀和鼓励将永远铭刻在我的心中,成为我未来前行的动力。
由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。
请关注点赞+私信博主,免费领取项目源码
更多推荐

所有评论(0)