前言
📌博主简介:本人为在职全栈开发工程师,深耕毕设指导多年。熟练掌握 Java、Python、C#、PHP、Node.js 以及 Uni‑App 跨平台开发,精通多语言项目落地搭建与整体架构设计。日常持续分享毕设源码资源、开题写作思路、技术选型方案以及职场避坑心得。秉持工程化编码思维,助力大家把毕业设计打磨成高质量求职作品集。
👇🏻 精彩专栏 推荐订阅👇🏻
精选100个热门Java毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门Python毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门微信小程序/安卓APP毕业设计项目|适配2026‑2027届选题参考✅
✅获取源码私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
1.1研究背景
全民健身战略持续推进,健康中国建设不断深化,饮食管理在体重控制、体能提升与慢病风险干预中的作用愈发突出。健身目标人群在实际生活中面临饮食信息来源分散、营养结构难以量化、计划执行缺乏连续监督、阶段效果难以直观评估等现实困境。移动互联网普及带来线上健康服务快速增长,围绕食谱查询、饮食打卡、健康知识阅读与社群交流的应用形态日益丰富,但不同功能之间常存在割裂现象,导致记录与指导无法形成连贯闭环。营养服务供给侧同样存在标准不一、内容质量参差、管理流程不统一等问题,难以支撑稳定、长期的个体化饮食管理需求。基于 Django、Python、MySQL 与 Vue 的开发技术路线具备成熟度高、工程实现稳定、维护成本可控等优势,能够支撑多角色协同、业务流程管理与数据化留痕,为健身饮食管理场景提供可靠实现基础。围绕健身目标人群构建集推荐、计划、记录、建议与管理于一体的饮食服务平台,已成为健康管理数字化发展的现实方向。
1.2研究意义
健身目标人群饮食推荐平台的建设具有明显的实践价值与应用价值。通过统一入口整合食谱资源、饮食计划、健康记录与交流互动,能够改善信息检索效率,降低饮食决策成本,帮助使用者形成更清晰的目标导向与更稳定的执行节律。引入营养师参与内容维护与建议输出,可增强指导的专业性与可持续性,推动饮食管理从经验驱动转向规则化、流程化。后台审核与权限管理机制有助于保障内容质量与数据安全,提升平台治理能力与运营规范水平。面向管理环节沉淀的统计信息,可为食谱优化、计划调整、服务改进提供客观依据,增强健康服务的可评估性。对于高校毕业设计与同类项目实践而言,基于 Django/Python/MySQL/Vue 的实现路径兼顾工程可行性与教学适配性,能够完整覆盖需求分析、架构设计、功能开发、测试验证等关键环节,具有良好的技术训练价值与推广参考意义。
1.3研究现状
1.3.1国内研究现状
国内健身与饮食管理平台研究起步较早,发展路径大致经历了信息展示、工具集成、流程管理三个阶段。早期成果以食谱查询、热量换算、基础打卡为主,功能聚焦于单点服务,能够满足入门用户的日常记录需求,但在个体差异适配、长期行为引导与专业服务衔接方面仍显不足。随着健康管理理念普及,研究与应用逐步转向多角色协同,围绕普通用户、营养师、平台管理人员构建分层功能框架,强调食谱维护、计划审核、建议反馈、社区互动与后台监管的联动关系。
在技术实现层面,国内高校与企业项目普遍采用 Django、Spring Boot、Vue、MySQL 等成熟技术栈,关注开发效率、部署稳定性与运维可控性。数据库设计方面,常见做法是围绕用户档案、食谱分类、计划执行、打卡记录、健康指标、评论互动建立关联模型,以支持全过程留痕与统计分析。权限控制方面,多数研究引入基于角色的访问控制机制,实现前台业务与后台管理的边界隔离。
现有成果已在功能完整性与工程落地性方面取得明显进展,但仍存在若干共性问题:推荐逻辑多依赖显式标签或点击行为,个体化程度有待提高;饮食计划与运动目标之间的联动规则仍不够细化;论坛内容治理、建议质量评估、跨周期效果对比等模块在不少平台中仍偏薄弱。整体来看,国内研究正从“可用”向“好用、易用、可持续使用”推进,重点逐渐转向服务闭环质量与运营精细化。
1.3.2国外研究现状
国外在数字健康与营养管理领域形成了较为成熟的产品生态与研究体系,商业平台与学术研究之间联动紧密。相关应用通常将饮食记录、营养分析、体重管理、行为追踪与社区支持整合到统一服务框架中,强调长期使用体验与循证营养理念的结合。研究重点集中在饮食行为干预机制、依从性提升路径、可解释的营养建议表达方式以及多场景下的数据一致性维护。
在功能形态上,国外平台普遍重视目标分层管理,支持减脂、增肌、体重维持等不同方向的阶段化计划安排,并通过连续打卡、进度可视化、周期复盘强化执行反馈。专业服务方面,营养师参与内容审核与个案指导的机制较为常见,能够在通用方案之外提供更具针对性的干预建议。社区模块建设相对完善,围绕经验分享、同伴监督、挑战活动形成较强的用户黏性。
从工程实现看,国外研究更强调标准化接口、模块解耦与可扩展架构,便于后续接入第三方数据源和多终端服务。数据治理层面重视隐私保护与合规要求,围绕访问控制、审计日志、数据最小化使用形成较完整的管理规范。与此同时,国外成果也面临现实挑战,如高质量内容持续供给成本较高、不同人群文化与饮食习惯差异导致通用方案迁移难度增大、长期行为改变效果存在波动。总体而言,国外研究在服务链路完整性、专业支撑体系与平台治理规范方面具有较强借鉴价值。
1.4论文章节安排
本文将围绕健身目标人群饮食推荐系统设计与实现展开全面论述,各章节内容紧密相连,逻辑清晰。
第一章为绪论,主要介绍了研究背景、研究意义、国内外研究现状以及论文章节安排,为全文的研究奠定基础。
第二章为相关技术介绍,分别对B/S架构、Django框架、Python语言和MySQL数据库进行了详细阐述,说明这些技术在本系统开发中的作用和优势。
第三章为系统分析,包括系统可行性分析、系统功能性分析和系统用例分析,从技术、经济、操作、市场等方面论证了系统开发的可行性,明确了系统的功能需求和用例场景。
第四章为系统设计,涉及系统架构设计、系统功能模块设计、系统流程设计和数据库设计,确定了系统的整体架构和各模块的功能,设计了系统的主要流程和数据库表结构。
第五章为系统实现,详细介绍了前台用户功能和后台管理员功能的实现过程,包括注册登录、交流论坛、网站公告、健康知识、健康食谱、饮食计划等功能的具体实现方法。
第六章为系统测试,阐述了测试目的,设计了系统功能性测试用例和性能测试用例,并对测试结果进行了分析,验证了系统的功能和性能。
第七章为总结与展望,总结了本系统的开发成果和存在的不足,对系统的未来发展方向进行了展望。
2相关技术介绍
2.1B/S架构
B/S(Browser/Server,浏览器/服务器)架构是一种基于互联网的软件架构模式,它由客户端、服务器端和数据库三部分组成[1]。客户端无需安装专门的软件,只需通过浏览器(如Chrome、Firefox、Edge等)即可访问服务器端提供的服务。服务器端负责处理业务逻辑、数据存储和交互等工作,数据库则用于存储系统所需的各种数据。
B/S架构具有诸多优势,首先,它简化了客户端的部署和维护,用户只需安装浏览器就能使用系统,降低了对客户端设备的要求,也减少了系统升级和维护的成本。其次,系统的扩展性强,当用户数量增加或业务需求变化时,只需对服务器端进行升级和调整,无需修改客户端,方便系统的扩展和升级。此外,B/S 架构支持跨平台操作,无论用户使用的是Windows、Mac还是Linux操作系统,只要有浏览器就能访问系统,提高了系统的通用性和灵活性[2]。
在本健身目标人群饮食推荐系统中,采用B/S架构使得用户可以通过任何联网的设备访问系统,无需安装额外的客户端软件,极大地提高了系统的易用性和便捷性,符合现代用户对网络服务的使用习惯。
2.2Django框架
Django是基于Python的高级Web框架,采用MVT(Model-View-Template)架构模式,将数据模型、视图逻辑和模板分离[3]。模型借助内置强大的ORM系统与数据库交互,开发者用Python代码就能操作数据库,无需复杂SQL语句,提升开发效率和代码可维护性。视图负责处理业务逻辑,根据URL路由调用模型方法,并把结果传给模板渲染。模板通过模板语言定义HTML页面结构和样式,实现前后端分离。
Django提供自动管理后台,开发者能快速创建管理界面[4]。它还内置多种安全机制,防止SQL注入等攻击。同时支持插件式开发,有丰富第三方库。在本系统开发中,其MVT架构使代码结构清晰,分工协作更高效。ORM简化数据库操作,自动管理后台方便管理员管理数据,安全机制保障系统安全,第三方库能快速集成功能,加快开发进程。
2.3Python语言
Python是高级、解释型、面向对象的编程语言,语法简洁,用缩进来表示代码块,避免复杂符号,代码结构清晰,易于编写和理解[5]。比如定义函数,使用def关键字即可,减少代码冗余。它拥有强大标准库,涵盖文件操作、网络通信等多个领域,像os模块用于操作系统任务,json模块处理JSON数据,http.server模块提供简单HTTP服务器用于本地测试。而且Python社区活跃,不断有新库和工具涌现,如Django、Flask等Web框架,NumPy、Pandas等数据分析库。
Python与Django框架结合开发时优势尽显[6]。Python简洁语法和强大表达能力,让开发者用Django实现业务逻辑更高效,减少开发时间和工作量。其丰富库和模块能与Django结合扩展系统功能,如用Pillow库处理图片,requests库与外部API交互。Python的跨平台特性还让基于Django开发的系统可在不同操作系统运行,提高通用性和可移植性。
2.4MySQL数据库
MySQL是一种开源的关系型数据库管理系统(RDBMS),由Oracle公司开发和维护[7]。它具有体积小、速度快、成本低、开源免费等特点,被广泛应用于Web应用开发中。
MySQL支持多用户、多线程操作,能够处理大量的数据,具有良好的性能和稳定性。它采用结构化查询语言(SQL)进行数据操作,提供了丰富的数据类型和函数,支持事务处理、索引、存储过程、触发器等高级功能,能够满足各种复杂的数据管理需求[8]。
在本系统中,MySQL 数据库用于存储用户信息、健康食谱、借阅记录、留言信息等数据,为系统的正常运行提供数据支持,保证了数据的安全性和完整性。
2.5协同过滤算法
协同过滤算法根据用户行为数据挖掘兴趣偏好。通过分析历史行为来计算出用户的相似度,基于用户的协同过滤就是通过找到与自己喜好相近的用户来进行推荐[9]。而基于项目的协同过滤则是通过项目之间的属性类似来进行推荐。
该算法用用户 - 项目评分矩阵表示交互数据,相似性度量往往选用余弦相似度或者皮尔逊相关系数作为关键指标[10]。协同过滤属于一种典型的信息过滤方法,它既可精准挖掘用户的潜在需求,又可以明显减轻信息过载现象,在推荐系统领域有着非常重要的应用价值。它的基本原理可以用下面这个公式来说明。

3系统分析
3.1系统可行性分析
3.1.1技术可行性
本系统基于Django、Python和MySQL等技术开发。Django采用MVT架构,让开发高效、代码结构清晰、可维护性强;Python语法简洁、库丰富、功能强大,有庞大社区支持;MySQL能高效存储和管理各类数据,提供快速查询和更新操作。B/S架构方便用户访问与系统部署维护。协同过滤算法是推荐系统的重要部分,在有关理论研究中已被证实有效,并被广泛应用于各类推荐场景下实现个性化需求匹配的任务当中。这些技术成熟、应用广泛,为系统开发运行提供可靠支持,技术层面可行。
3.1.2经济可行性
开发成本上,Django、Python和MySQL是开源技术,降低软件成本,普通硬件设备即可,还减少硬件成本。运行维护成本方面,B/S架构减少维护工作量,MySQL维护成本低,社区支持可降低技术维护成本。收益上,系统能提高健康管理效率,减少人工成本,提升服务质量带来潜在经济效益,经济层面可行。
3.1.3操作可行性
系统采用B/S架构符合用户操作习惯,无需复杂培训即可上手。界面设计简洁直观,功能模块布局合理、操作流程清晰,还有操作提示和帮助文档,对错误操作有友好提示和处理,操作便捷可行。
3.2系统功能性分析
3.2.1用户功能需求分析
本系统为“健身目标人群饮食推荐系统”,面向普通用户、营养师用户和管理员三类角色,围绕“饮食推荐—计划执行—健康记录—互动反馈—后台监管”构建完整业务流程。系统需满足个性化推荐、计划管理、数据记录与内容审核等核心需求。
1.普通用户功能描述:
普通用户是系统主要服务对象,功能覆盖账户使用、饮食管理、健康记录和社区互动等方面。
(1)登录注册
系统需提供用户注册、登录、退出与身份校验功能,支持基础信息录入与合法性校验,保障账户安全访问。
(2)首页
首页用于聚合核心内容,需包含:轮播图展示、健康食谱推荐,根据用户点击过的食谱类型进行动态排序,提高推荐匹配度和使用粘性。
(3)交流论坛
支持用户发帖、浏览帖子、评论互动、点赞收藏等行为,满足经验分享与同伴激励需求,形成良好交流氛围。
(4)网站公告
用于查看系统发布的通知、活动信息与维护说明,确保用户及时获取平台动态。
(5)健康知识
提供饮食营养、健身科普、体重管理等内容浏览功能,帮助用户提升健康认知与自我管理能力。
(6)健康食谱
支持食谱列表浏览、分类筛选、详情查看、收藏点赞等操作,便于用户按目标选择适配饮食内容。
(7)饮食计划
用户可查看并执行系统/营养师制定的饮食计划,支持按日期查看、阶段执行与进度跟踪。
(8)我的账户
支持个人资料维护(头像、昵称、联系方式、密码等),确保账户信息可管理、可更新。
(9)个人中心
个人中心用于汇总用户行为与健康管理数据,包括:
任务计划:制作编辑个人任务安排;
打卡信息:记录每日执行打卡状态;
健康记录:记录体重、体脂、围度等健康数据;
饮食记录:记录每日饮食摄入情况;
饮食建议:查看营养建议与反馈内容;
交流论坛:管理本人发帖与互动记录;
收藏记录、点赞记录、评论管理:统一管理互动行为与历史痕迹。
2. 营养师用户功能需求
营养师用户主要承担专业内容生产与个性化指导职责,强调“可维护、可跟踪、可调整”。
(1)后台首页
展示营养师常用入口、待处理事项与关键提示信息,便于快速进入业务管理。
(2)健康食谱管理
营养师可新增、编辑、删除、查询食谱信息,包括食材、热量、营养成分、适用目标人群等,保证食谱内容专业、完整。
(3)饮食计划管理
支持按用户目标(减脂、增肌、塑形等)制定和维护阶段性饮食计划,支持计划调整与版本更新。
(4)饮食记录管理
查看用户提交的饮食记录,了解执行偏差与饮食习惯,为后续建议提供依据。
(5)饮食建议管理
基于用户记录和目标生成个性化建议,支持新增、修改、删除与查询,形成持续指导机制。
3. 管理员功能需求
管理员负责平台全局配置、数据监管、内容审核与权限控制,保障系统规范运行。
(1)后台首页
展示用户规模、食谱发布量、计划审核量、打卡活跃度等图表数据,为运营决策提供支持。
(2)系统用户管理
管理平台用户信息及状态,支持查询、维护、角色分配与异常账号处理。
(3)食谱类型管理
维护食谱分类体系(如减脂餐、增肌餐、低GI等),保证前台筛选和推荐结构清晰。
(4)健康食谱管理
对营养师提交的食谱内容进行审核发布,确保内容质量与规范性。
(5)饮食计划管理
对饮食计划进行审核与状态管理,保证计划科学性与适用性。
(6)任务计划管理
对系统任务模板、周期任务进行统一维护,支撑用户执行与打卡环节。
(7)打卡信息管理
查看与管理用户打卡数据,支持统计分析和异常检查。
(8)健康记录管理
监管用户健康数据记录情况,保证数据结构规范、可统计。
(9)饮食记录管理
统一查看用户饮食记录,支持筛查与数据分析。
(10)饮食建议管理
管理营养建议内容,确保建议信息有效、可追踪。
(11)轮播图管理
维护首页轮播资源,实现平台活动与重点内容展示。
(12)网站公告管理
发布和维护系统公告,保障平台信息触达及时。
(13)资源管理(健康知识、知识分类)
对健康知识内容及其分类进行增删改查,构建结构化知识库。
(14)交流管理(交流论坛、论坛分类)
管理论坛内容与分类,维护社区秩序与内容质量。
(15)权限管理
配置角色权限和菜单权限,确保不同角色访问边界清晰、系统安全可控。
(16)通知发布
面向不同角色定向发布通知,提高平台管理效率和信息传达效果。
3.2.2系统性能需求分析
为保证系统的良好运行和用户体验,本系统需要满足以下性能需求:
(1)响应时间:系统在处理用户请求时,如查询健康食谱、提交健康记录等,响应时间应控制在合理范围内,一般不超过3秒,确保用户操作的流畅性。
(2)并发处理能力:系统应能够支持一定数量的用户同时在线操作,在多用户并发访问时,仍能保持稳定的性能,不出现卡顿或崩溃现象。
(3)数据准确性:系统在处理和存储数据时,应保证数据的准确性和完整性,避免出现数据丢失、错误或重复的情况。
(4)安全性:系统应具备一定的安全防护能力,防止用户信息泄露、非法登录和恶意攻击等安全问题,采用密码加密存储、权限控制等安全措施。
(5)可扩展性:系统应具有良好的可扩展性,能够根据用户需求的变化和业务的发展,方便地添加新的功能模块或对现有功能进行升级和扩展。
(6)易用性:系统界面友好,操作简单直观,用户无需进行复杂的培训就能熟练使用系统。
3.3系统用例分析
3.3.1普通用户用例分析
普通用户作为平台的核心服务对象,其用例覆盖“进入平台—获取推荐—执行计划—过程记录—互动反馈—个人管理”的完整链路。用户通过登录注册完成身份校验后进入首页,查看轮播图、网站公告与健康食谱推荐,其中首页推荐按点击偏好进行排序,满足个体化内容获取需求。在业务使用过程中,普通用户可浏览健康知识与健康食谱、查看详情并进行点赞、收藏、评论,也可在交流论坛发帖互动,形成经验分享与同伴监督。围绕日常管理,用户可查看和执行饮食计划,完成任务计划与打卡信息填报,持续维护健康记录、饮食记录,并接收饮食建议反馈。个人中心集中呈现任务计划、打卡信息、健康记录、饮食记录、饮食建议、论坛参与、收藏记录、点赞记录和评论管理,支持全过程状态追踪与历史留痕,满足健身饮食管理中的持续化、精细化使用需求。
普通用户用例图如图3.1所示。

图3.1 普通用户用例图
3.3.2营养师用户用例分析
营养师用户作为专业服务提供者,其用例重点体现在内容生产、方案制定与指导闭环。营养师登录后台后,可在首页查看待处理事项并进入业务模块,对健康食谱进行新增、编辑、删除与查询,确保食谱内容的专业性与可用性;对饮食计划进行新增、编辑、删除与查询,面向不同健身目标形成分阶段安排;通过饮食记录管理掌握用户执行情况与偏差特征;在饮食建议管理中完成建议内容的新增、编辑、删除与查询,实现从记录观察到干预反馈的连续指导过程。相关用例共同构成“食谱—计划—记录—建议”的专业服务路径,为用户长期饮食管理提供稳定支撑。
营养师用户用例图如图3.2所示。

图3.2营养师用户用例图
3.3.3管理员用例分析
管理员作为平台治理与运行保障角色,其用例覆盖全局监管、内容审核、资源维护与权限控制。管理员进入后台首页后可查看统计图表,掌握用户活跃、内容发布与业务处理等运行态势;在系统用户与权限管理中维护账户状态和角色边界;在食谱类型管理、健康食谱审核、饮食计划审核中保障内容规范与发布质量;在任务计划、打卡信息、健康记录、饮食记录、饮食建议等模块中实现业务数据监管与过程追踪;在轮播图、网站公告、健康知识及知识分类、交流论坛及论坛分类等模块中完成平台内容运营与社区秩序维护;通过通知发布实现信息统一下发与管理协同。上述用例共同支撑平台安全、稳定、有序运行。
管理员用例图如图3.3所示。

图3.3管理员用例图
4.1系统架构设计
本系统采用基于B/S架构的三层架构设计,分别为表示层、业务逻辑层和数据访问层,如图4.1所示。

图4.1 系统架构图
表示层:即用户界面层,负责与用户进行交互,展示系统信息并接收用户输入。对于普通用户,表现为浏览器中的网页界面,包括首页、功能模块信息页、个人中心等;对于管理员,表现为后台管理界面。表示层通过HTML、CSS、JavaScript 等技术实现页面的布局和交互效果,将用户的请求传递给业务逻辑层,并展示业务逻辑层返回的处理结果。
业务逻辑层:位于表示层和数据访问层之间,负责处理系统的核心业务逻辑,该层接收表示层传递的请求,进行相应的业务处理,如验证用户登录信息、计算推荐列表等,然后将处理结果传递给数据访问层进行数据操作,或直接返回给表示层。
数据访问层:负责与数据库进行交互,执行数据的查询、插入、更新、删除等操作。该层通过Django的ORM机制实现对MySQL数据库的访问,将业务逻辑层的操作转换为对数据库的操作,并将数据库返回的结果传递给业务逻辑层。
这种三层架构的设计使得系统的各层职责分明,降低了各层之间的耦合度,便于系统的开发、维护和扩展。当需要修改系统的界面时,只需调整表示层,而不影响业务逻辑层和数据访问层;当业务逻辑发生变化时,只需修改业务逻辑层,无需改动表示层和数据访问层。
4.2系统功能模块设计
系统功能模块设计是将系统需求转化为可实现、易维护的功能单元的关键步骤,它通过合理划分模块,提升系统的逻辑性与扩展性。系统功能模块设计是系统开发的核心环节,它将复杂的系统需求拆解为多个独立且相互协作的功能单元,不仅便于开发与维护,还能有效提升系统的扩展性和稳定性。
基于此,本系统的功能模块分为前台用户模块和后台管理员模块两大部分:前台用户模块涵盖登录注册、首页、交流论坛、网站公告、健康知识、健康食谱、饮食计划、我的账户、个人中心(任务计划、打卡信息、健康记录、饮食记录、饮食建议、交流论坛、收藏记录、点赞记录、评论管理)等功能,全方位满足用户日常使用需求;后台管理员和营养师用户模块则包含后台首页、系统用户、食谱类型管理、健康食谱管理、饮食计划管理、任务计划管理、打卡信息管理、健康记录管理、饮食记录管理、饮食建议管理、轮播图管理、网站公告管理、资源管理(健康知识、知识分类)、交流管理(交流论坛、论坛分类)、权限管理、通知发布等功能。
系统功能模块图如图4.2所示。

图4.2 系统功能模块图
4.3系统流程设计
4.3.1用户登录流程分析
用户登录流程为:用户在登录页面输入用户名和密码后,系统先进行数据验证,确保信息不为空;验证通过则对密码加密,与数据库中对应加密密码比对;若一致,创建session记录登录状态并跳转首页,若不一致或用户名不存在,提示 “用户名或密码错误”,返回登录页面供用户重新输入。
用户登录流程图如图4.3所示。

图4.3 用户登录流程图
4.3.2用户注册流程分析
用户点击注册按钮进入注册页面,填写用户名、密码、确认密码、邮箱等信息。系统对输入信息严格验证,包括用户名唯一性、密码长度合规性、密码一致性及邮箱格式正确性。若验证失败,系统反馈对应错误提示,引导用户重新填写;验证通过后,系统加密密码,将注册信息存入数据库用户表。注册成功后,系统提示 “注册成功”,并跳转至登录页面供用户登录。
用户注册流程图如图4.4所示。

图4.4 用户注册流程图
4.3.3数据添加流程分析
用户成功登录系统后,即可进行添加数据操作。添加的数据具有一个由系统自动生成的特定编号,用户可根据提示输入其余信息并提交,系统会对提交信息进行验证,验证通过则显示添加数据成功。数据添加流程如下图所示。

图4.5数据添加流程图
4.3.4数据修改流程分析
用户成功登录系统后,可进行修改数据操作,流程与添加数据操作相似,数据修改流程如下图所示。

图4.6 数据修改流程图
4.3.5数据删除流程分析
当系统里面存在一些无效或过期的数据信息,系统支持相关的管理人员对这些数据进行删除操作,数据修改流程如下图所示。

图4.7 数据删除流程图
4.3.6数据搜索流程图
用户可以通过输入关键字方式在系统大量的数据中检索所需的信息,在搜索框输入关键字确认查询后,系统会自动检索数据库并显示特定的数据信息,数据搜索流程如下图所示。

图4.8 数据搜索流程图
4.4.系统流程设计
4.4.1数据库概念结构设计
数据库概念结构设计作为健身目标人群饮食推荐系统开发的核心环节,通过E-R图将用户、健康食谱、健康记录、在线作业等关键实体及其属性进行可视化呈现,以直观的图形化方式清晰界定系统组成要素。同时,精准梳理实体间的逻辑关系,为数据库的逻辑设计与物理实现奠定坚实基础。这一设计不仅确保数据存储结构科学合理,还能提升数据操作效率,从根本上保障数据完整性与一致性,极大增强系统运行的稳定性和可靠性,对系统的高效运转与长期发展具有不可替代的重要意义。
系统E-R图如图4.9所示。

图4.9系统ER图
4.4.2数据库表结构设计
根据数据库概念结构设计,将 E-R 图转换为具体的数据库表结构,以下是主要表的结构设计:
表 4-1-access_token(登陆访问时长)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-badge_record(徽章记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | badge_record_id | int | 是 | 是 | 徽章记录ID | |
| 2 | badge_name | varchar | 64 | 否 | 否 | 徽章名称 |
| 3 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 4 | pictures_of_badges | varchar | 255 | 否 | 否 | 徽章图片 |
| 5 | date_acquired | date | 否 | 否 | 获得日期 | |
| 6 | note_information | text | 65535 | 否 | 否 | 备注信息 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | create_by | int | 是 | 否 | 创建用户ID | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID | |
| 12 | hidden | tinyint | 否 | 否 | 是否隐藏 | |
| 13 | sticky | tinyint | 否 | 否 | 是否置顶 |
表 4-9-diet_plan(饮食计划)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | diet_plan_id | int | 是 | 是 | 饮食计划ID | |
| 2 | plan_name | varchar | 64 | 否 | 否 | 计划名称 |
| 3 | target_population | varchar | 64 | 否 | 否 | 目标人群 |
| 4 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 5 | daily_meals | varchar | 64 | 否 | 否 | 每日餐次 |
| 6 | meal_energy | varchar | 64 | 否 | 否 | 餐次能量 |
| 7 | nutritionist_user | int | 否 | 否 | 营养师用户 | |
| 8 | applicable_period | varchar | 64 | 否 | 否 | 适用周期 |
| 9 | plan_specificss | longtext | 4294967295 | 否 | 否 | 计划详情 |
| 10 | praise_len | int | 是 | 否 | 点赞数 | |
| 11 | collect_len | int | 是 | 否 | 收藏数 | |
| 12 | comment_len | int | 是 | 否 | 评论数 | |
| 13 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | create_by | int | 是 | 否 | 创建用户ID | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-diet_record(饮食记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | diet_record_id | int | 是 | 是 | 饮食记录ID | |
| 2 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | nutritionist_user | int | 否 | 否 | 营养师用户 | |
| 5 | record_date | date | 否 | 否 | 记录日期 | |
| 6 | diet_specificss | text | 65535 | 否 | 否 | 饮食详情 |
| 7 | dietary_recommendations_limit_times | int | 是 | 否 | 建议限制次数 | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | create_by | int | 是 | 否 | 创建用户ID | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-dietary_recommendations(饮食建议)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | dietary_recommendations_id | int | 是 | 是 | 饮食建议ID | |
| 2 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | nutritionist_user | int | 否 | 否 | 营养师用户 | |
| 5 | health_status | varchar | 64 | 否 | 否 | 健康状态 |
| 6 | record_date | date | 否 | 否 | 记录日期 | |
| 7 | recommended_optimization | text | 65535 | 否 | 否 | 建议优化 |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | create_by | int | 是 | 否 | 创建用户ID | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 11 | extra | text | 65535 | 否 | 否 | 额外信息 |
| 12 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 13 | source_id | int | 否 | 否 | 来源ID | |
| 14 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-12-follow(用户关注)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | follow_id | int | 是 | 是 | 用户关注ID | |
| 2 | follower_id | int | 是 | 是 | 关注人ID | |
| 3 | follower_avatar | varchar | 255 | 否 | 否 | 关注人头像 |
| 4 | follower_nickname | varchar | 255 | 否 | 否 | 关注人昵称 |
| 5 | followed_id | int | 是 | 是 | 被关注人ID | |
| 6 | followed_avatar | varchar | 255 | 否 | 否 | 被关注人头像 |
| 7 | followed_nickname | varchar | 255 | 否 | 否 | 被关注人昵称 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-forum(论坛)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | forum_id | mediumint | 是 | 是 | 论坛ID | |
| 2 | display | smallint | 是 | 否 | 排序 | |
| 3 | user_id | mediumint | 是 | 否 | 用户ID | |
| 4 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 5 | praise_len | int | 否 | 否 | 点赞数 | |
| 6 | hits | int | 是 | 否 | 访问数 | |
| 7 | title | varchar | 125 | 是 | 否 | 标题 |
| 8 | keywords | varchar | 125 | 否 | 否 | 关键词 |
| 9 | description | varchar | 255 | 否 | 否 | 描述 |
| 10 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 11 | tag | varchar | 255 | 否 | 否 | 标签 |
| 12 | img | text | 65535 | 否 | 否 | 封面图 |
| 13 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 16 | avatar | varchar | 255 | 否 | 否 | 发帖人头像 |
| 17 | type | varchar | 64 | 是 | 否 | 论坛分类 |
| 18 | istop | int | 是 | 否 | 是否置顶 |
表 4-14-forum_type(论坛分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 3 | description | varchar | 255 | 否 | 否 | 描述 |
| 4 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 5 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 6 | icon | varchar | 255 | 否 | 否 | 分类图标 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-health_records(健康记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | health_records_id | int | 是 | 是 | 健康记录ID | |
| 2 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_weight | double | 否 | 否 | 用户体重 | |
| 5 | user_body_fat | double | 否 | 否 | 用户体脂 | |
| 6 | diet_calories | double | 否 | 否 | 饮食热量 | |
| 7 | amount_of_exercise | double | 否 | 否 | 运动量 | |
| 8 | record_date | date | 否 | 否 | 记录日期 | |
| 9 | note_information | text | 65535 | 否 | 否 | 备注信息 |
| 10 | create_time | datetime | 是 | 否 | 创建时间 | |
| 11 | create_by | int | 是 | 否 | 创建用户ID | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-healthy_recipes(健康食谱)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | healthy_recipes_id | int | 是 | 是 | 健康食谱ID | |
| 2 | recipe_name | varchar | 64 | 否 | 否 | 食谱名称 |
| 3 | recipe_type | varchar | 64 | 否 | 否 | 食谱类型 |
| 4 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 5 | applicable_scenarios | varchar | 64 | 否 | 否 | 适用场景 |
| 6 | nutritionist_user | int | 否 | 否 | 营养师用户 | |
| 7 | release_date | date | 否 | 否 | 发布日期 | |
| 8 | nutritional_value | text | 65535 | 否 | 否 | 营养价值 |
| 9 | specificss_of_ingredients | longtext | 4294967295 | 否 | 否 | 食材详情 |
| 10 | hits | int | 是 | 否 | 点击数 | |
| 11 | praise_len | int | 是 | 否 | 点赞数 | |
| 12 | collect_len | int | 是 | 否 | 收藏数 | |
| 13 | comment_len | int | 是 | 否 | 评论数 | |
| 14 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 15 | recommend | int | 是 | 否 | 智能推荐 | |
| 16 | create_time | datetime | 是 | 否 | 创建时间 | |
| 17 | create_by | int | 是 | 否 | 创建用户ID | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-18-message_inform(通知记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | inform_id | int | 是 | 是 | 通知ID | |
| 2 | user_id | int | 是 | 是 | 通知人ID | |
| 3 | title | varchar | 255 | 否 | 否 | 标题 |
| 4 | state | varchar | 255 | 否 | 否 | 状态 |
| 5 | type | varchar | 64 | 否 | 否 | 分类 |
| 6 | content | varchar | 255 | 否 | 否 | 内容 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-19-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-nutritionist_user(营养师用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | nutritionist_user_id | int | 是 | 是 | 营养师用户ID | |
| 2 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
| 3 | age_of_personnel | varchar | 64 | 否 | 否 | 人员年龄 |
| 4 | gender_of_staff | varchar | 64 | 否 | 否 | 人员性别 |
| 5 | qualification_certificate | varchar | 255 | 否 | 否 | 资质证明 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | create_by | int | 是 | 否 | 创建用户ID | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-21-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | user_age | varchar | 64 | 否 | 否 | 用户年龄 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | create_by | int | 是 | 否 | 创建用户ID | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-22-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 | |
| 9 | img | varchar | 255 | 否 | 否 | |
| 10 | title | varchar | 255 | 否 | 否 |
表 4-23-punch_in_information(打卡信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | punch_in_information_id | int | 是 | 是 | 打卡信息ID | |
| 2 | title_name | varchar | 64 | 否 | 否 | 标题名称 |
| 3 | target_type | varchar | 64 | 否 | 否 | 目标类型 |
| 4 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 5 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 6 | clock_in_time | datetime | 否 | 否 | 打卡时间 | |
| 7 | clock_in_remarks | text | 65535 | 否 | 否 | 打卡备注 |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | create_by | int | 是 | 否 | 创建用户ID | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 11 | extra | text | 65535 | 否 | 否 | 额外信息 |
| 12 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 13 | source_id | int | 否 | 否 | 来源ID | |
| 14 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-24-recipe_type(食谱类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | recipe_type_id | int | 是 | 是 | 食谱类型ID | |
| 2 | recipe_type | varchar | 64 | 否 | 否 | 食谱类型 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | create_by | int | 是 | 否 | 创建用户ID | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-25-releasing_notices(通知发布)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notices_id | int | 是 | 是 | 通知ID | |
| 2 | title | varchar | 255 | 否 | 否 | 通知标题 |
| 3 | type | varchar | 64 | 否 | 否 | 通知方式 |
| 4 | content | varchar | 255 | 否 | 否 | 通知内容 |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-26-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-27-task_plan(任务计划)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | task_plan_id | int | 是 | 是 | 任务计划ID | |
| 2 | title_name | varchar | 64 | 否 | 否 | 标题名称 |
| 3 | target_type | varchar | 64 | 否 | 否 | 目标类型 |
| 4 | ordinary_user | int | 否 | 否 | 普通用户 | |
| 5 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 6 | target_cycle | varchar | 64 | 否 | 否 | 目标周期 |
| 7 | target_content | text | 65535 | 否 | 否 | 目标内容 |
| 8 | punch_in_information_limit_times | int | 是 | 否 | 打卡限制次数 | |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | create_by | int | 是 | 否 | 创建用户ID | |
| 11 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-28-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-29-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 否 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-30-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
5系统实现
5.1前台普通用户功能实现
5.1.1注册登录
注册功能实现:用户在注册页面填写相关信息后,前端通过JavaScript进行表单验证,如检查密码长度、确认密码是否一致等。验证通过后,将数据发送到后端的注册接口。后端接收数据后,首先查询数据库判断用户名和邮箱是否已存在,若存在则返回错误信息;若不存在,对密码进行加密处理,然后创建用户对象并保存到数据库,返回注册成功信息。
登录功能实现:用户输入用户名和密码后,前端将数据发送到后端登录接口。后端使用Django的认证系统进行验证,若验证通过,调用login函数创建session,记录用户登录状态,并返回登录成功信息和用户基本信息;若验证失败,返回错误信息。登录成功后,前端跳转到首页。
注册页面如图5.1所示。

图5.1 注册页面图
登录页面如图5.2所示。

图5.2 登录页面图
5.1.2系统首页
首页是系统的主界面,展示平台的核心内容,包括轮播图、最新公告信息、健康知识等。首页还设置健康食谱喜好推荐排序,根据用户点击过的食谱类型进行动态排序。用户可以通过首页快速访问各个功能模块,还可以根据关键词搜索相关内容,首页页面如图5.3所示。

图5.3 首页页面图
5.1.3交流论坛
用户点击首页“交流论坛”按钮,会进入交流论坛列表,支持通过文章名称进行搜索,用户点击可查看其他用户的帖子内容,可以进行点赞、收藏、评论等操作点击“发布内容”,用户可以进行发帖。交流论坛列表界面如下图5.4所示。

图5.4 交流论坛列表页面图
5.1.4健康知识
点击系统导航栏上的“健康知识”菜单按钮,将进入健康知识列表,用户可以查看系统发布的所有健康知识内容。点击某健康知识后进入详情页,可以查看该知识的详细内容,用户可以点赞、收藏、评论等。健康知识列表页面如图5.5所示。

图5.5 健康知识列表页面图
5.1.5健康食谱
点击系统导航栏上的“健康食谱”菜单按钮,将进入健康食谱列表,用户可以浏览所有的健康食谱,支持根据关键词搜索和下拉搜索、排序。点击某条食谱可查看该食谱的详细内容,用户可以进行点赞、收藏、评论等操作。健康食谱列表如图5.6所示。

图5.6 健康食谱列表页面图
5.1.6饮食计划
点击系统导航栏上的“饮食计划”菜单按钮,将进入饮食计划列表,用户可以浏览所有的饮食计划,支持根据关键词搜索和下拉搜索、排序。点击某条饮食计划可查看该计划的详细内容,用户可以进行点赞、收藏、评论等操作。饮食计划列表如图5.7所示。

图5.7 饮食计划列表页面图
5.1.7卡路里消耗
点击系统导航栏上的“卡路里消耗”菜单按钮,用户可以输入相关数值,系统自动生成卡路里消耗数值。卡路里消耗如图5.8所示。

图5.8 卡路里消耗页面图
5.1.8个人中心
个人中心页面是用户管理个人信息和相关记录的地方,包含务计划、打卡信息、健康记录、饮食记录、饮食建议、交流论坛、收藏记录、点赞记录、评论管理等子模块。每个子模块通过后端查询相应的数据表,将结果传递给前端进行展示,并提供相应的操作按钮和功能。相关页面如下图所示。

图5.9 任务计划添加页面图

图5.10 提交打卡信息页面图

图5.11 健康记录页面图

图5.12饮食记录页面图
5.2后台管理员功能实现
5.2.1用户管理
管理员登录后台后,进入用户管理页面,可查看所有用户的列表,包括用户名、联系电话、性别等信息,管理员可以点击“详情”按钮进入修改用户的联系电话和性别,也可以点击“删除”按钮删除用户。
系统用户管理页面如图5.13所示。

图5.13 系统用户管理页面图
5.2.2轮播图管理
管理员点击“轮播图管理”菜单,可以对前台展示的轮播图进行设置,界面如下图5.14所示。

图5.14 轮播图管理页面图
5.2.3网站公告管理
管理员点击“网站公告管理”这个菜单,可以对系统中的网站公告信息进行管理,包括网站公告信息的增删改查等操作。网站公告管理界面如图5.11所示。

图5.15 网站公告管理页面图
5.2.4资源管理
管理员点击“资源管理”菜单,管理员可以上传、编辑或删除系统的资源,如文章、图片、视频等。这些资源可用于健康知识模块的展示。管理员还可以对知识分类和标签化,方便用户查找和使用,界面如下图所示。

图5.16 资源管理页面图
5.2.5健康食谱管理
管理员点击“健康食谱管理”这一菜单会显示健康食谱列表和健康食谱添加两个子菜单,点击“健康食谱列表”可以查看和审核营养师用户发布的健康食谱,可以查看历史健康菜谱记录和用户评论,还可以进行重置、查询、删除等操作。点击“健康食谱添加”,管理员可以添加新的健康食谱。健康食谱审核页面如图5.17所示。

图5.17 健康食谱审核页面图
5.2.6饮食计划管理
管理员点击“饮食计划管理”这一菜单会显示饮食计划列表和饮食计划添加两个子菜单,点击“饮食计划列表”可以查看和审核营养师用户发布的饮食计划,可以查看历史饮食计划记录和用户评论,还可以进行重置、查询、删除等操作。点击“饮食计划添加”,管理员可以添加新的饮食计划。饮食计划审核页面如图5.18所示。

图5.18 饮食计划审核页面图
5.3后台营养师用户功能实现
5.3.1健康食谱管理
营养师用户点击“健康食谱管理”这一菜单会显示健康食谱列表和健康食谱添加两个子菜单,点击“健康食谱列表”可以查看历史健康食谱记录和用户评论,还可以进行重置、查询、删除等操作。点击“健康食谱添加”,营养师可以添加新的健康食谱。健康食谱添加页面如图5.19所示。

图5.19 健康食谱添加页面图
5.3.2饮食计划管理
营养师用户点击“饮食计划管理”这一菜单会显示饮食计划列表和饮食计划添加两个子菜单,点击“饮食计划列表”可以查看历史饮食计划记录和用户评论,还可以进行重置、查询、删除等操作。点击“饮食计划添加”,营养师可以添加新的饮食计划。饮食计划添加页面如图5.20所示。

图5.20 饮食计划添加页面图
5.3.3饮食建议管理
营养师用户点击“饮食建议管理”这一菜单会显示饮食建议列表,可以基于用户记录和目标录入合理的饮食建议,还可以进行重置、查询、修改等操作。饮食建议录入页面如图5.21所示。

图5.21 饮食建议录入页面图
6系统测试
6.1测试目的
系统测试的目的是验证本健身目标人群饮食推荐系统是否能够满足设计需求,确保系统的功能完整、性能稳定、操作便捷和数据安全。通过测试发现系统中存在的缺陷和漏洞,并及时进行修复,提高系统的质量和可靠性,为系统的正式上线和使用提供保障。
具体来说,测试目的包括:
验证系统的各项功能是否按照需求规格说明书正确实现,如用户注册登录、管理员的信息管理等功能是否正常工作。
检查系统的性能是否达到预期指标,如响应时间、并发处理能力等。
确保系统的数据处理准确无误,数据的存储、查询、更新和删除等操作是否正确。
测试系统的安全性,防止出现用户信息泄露、非法登录等安全问题。
检验系统的易用性,用户界面是否友好,操作是否简便。
6.2测试用例
6.2.1系统功能性测试用例
- 用户注册功能测试
表6.1 注册功能测试用例
| 编号 | 测试目的 | 测试步骤 | 预期结果 | 测试结果 |
| TC001 | 验证用户注册成功流程 | 1. 进入注册页面。2. 输入合法的用户名、邮箱、手机号和密码。3. 点击“注册”按钮。 | 注册成功并跳转至登录页面 | 与预期一致 |
| TC002 | 验证用户名重复注册 | 1. 进入注册页面。2. 输入已存在的用户名。3. 提交注册信息。 | 显示“用户名已被占用”提示信息 | 与预期一致 |
| TC003 | 验证邮箱格式合法性 | 1. 进入注册页面。2. 输入格式不正确的邮箱地址。3. 提交注册信息。 | 显示“邮箱格式不正确”提示信息 | 与预期一致 |
| TC004 | 验证手机号重复注册 | 1. 进入注册页面。2. 输入已注册的手机号。3. 提交注册信息。 | 显示“该手机号已被注册”提示信息 | 与预期一致 |
- 用户登录功能测试
表6.2 登录功能测试用例
| 编号 | 测试目的 | 测试步骤 | 预期结果 | 测试结果 |
| TC001 | 验证用户登录成功 | 1. 进入登录页面。2. 输入正确的用户名和密码。3. 点击“登录”按钮。 | 登录成功并跳转至系统首页 | 与预期一致 |
| TC002 | 验证错误密码登录失败 | 1. 进入登录页面。2. 输入正确的用户名和错误的密码。3. 点击“登录”按钮。 | 显示“密码错误”提示信息 | 与预期一致 |
| TC003 | 验证用户名不存在 | 1. 进入登录页面。2. 输入不存在的用户名。3. 输入任意密码并提交。 | 显示“用户名不存在”提示信息 | 与预期一致 |
| TC004 | 验证空用户名登录 | 1. 进入登录页面。2. 不输入用户名,输入密码并提交。 | 显示“请输入用户名”提示信息 | 与预期一致 |
- 健康食谱管理功能测试
表6.3 健康食谱管理功能测试用例
| 编号 | 测试目的 | 测试步骤 | 预期结果 | 测试结果 |
| TC001 | 验证新增健康食谱功能 | 1. 管理员登录系统。2. 进入健康食谱管理界面。3. 点击“新增”按钮,填写健康食谱并提交。 | 健康食谱成功添加并显示在列表中 | 与预期一致 |
| TC002 | 验证编辑健康食谱功能 | 1. 管理员登录系统。2. 进入健康食谱管理界面。3. 选择一条记录,点击“编辑”按钮修改信息并提交。 | 健康食谱更新成功并在列表中更新显示 | 与预期一致 |
| TC003 | 验证删除健康食谱功能 | 1. 管理员登录系统。2. 进入健康食谱管理界面。3. 选择一条记录,点击“删除”按钮。 | 健康食谱成功删除,列表中不再显示 | 与预期一致 |
| TC004 | 验证健康食谱搜索功能 | 1. 管理员登录系统。2. 进入健康食谱管理界面。3. 在搜索框中输入食谱类型或适用场景并搜索。 | 显示与搜索关键词匹配的健康食谱 | 与预期一致 |
- 健康知识管理功能测试
表6.4 健康知识管理功能测试用例
| 编号 | 测试目的 | 测试步骤 | 预期结果 | 测试结果 |
| TC001 | 验证新增健康知识功能 | 1. 管理员登录系统。2. 进入资源管理界面。3. 点击“新增”按钮,填写健康知识并提交。 | 健康知识成功添加并显示在列表中 | 与预期一致 |
| TC002 | 验证编辑健康知识功能 | 1. 管理员登录系统。2. 进入健康知识管理界面。3. 选择一条记录,点击“编辑”按钮修改信息并提交。 | 健康知识更新成功并在列表中更新显示 | 与预期一致 |
| TC003 | 验证删除健康知识功能 | 1. 管理员登录系统。2. 进入健康知识管理界面。3. 选择一条记录,点击“删除”按钮。 | 健康知识成功删除,列表中不再显示 | 与预期一致 |
| TC004 | 验证健康知识搜索功能 | 1. 管理员登录系统。2. 进入健康知识管理界面。3. 在搜索框中输入文章标题并搜索。 | 显示与搜索关键词匹配的健康知识 | 与预期一致 |
- 健康食谱发布功能测试
表6.5 健康食谱发布功能测试用例
| 编号 | 测试目的 | 测试步骤 | 预期结果 | 测试结果 |
| TC001 | 验证营养师用户发布健康食谱 | 1. 营养师用户登录系统。2. 进入健康食谱管理界面。3. 点击“健康食谱添加”,填写相关信息并提交。 | 健康食谱提交成功,状态为“待审批”。 | 与预期一致 |
| TC002 | 验证管理员审批健康食谱 | 1. 管理员登录系统。2. 进入健康食谱管理界面。3. 选择待审批记录并点击“通过”或“拒绝”。 | 健康食谱状态更新为“已通过”或“未通过”。 | 与预期一致 |
| TC003 | 验证健康食谱查询功能 | 1. 营养师用户登录系统。2. 进入健康食谱管理界面。3. 输入食谱类型或适用场景进行搜索。 | 显示符合条件的健康食谱信息 | 与预期一致 |
| TC004 | 验证无效信息提交 | 1. 营养师用户登录系统。2. 进入健康食谱管理界面。3. 输入无效的食谱类型或适用场景并提交。 | 系统提示“请填写有效信息” | 与预期一致 |
6.2.2系统性能测试用例
表6.6 系统性能测试用例表
| 测试功能 | 测试环境 | 测试步骤 | 预期结果 | 实际结果 | 测试结果 |
| 页面响应时间 | 普通PC,网络环境良好 | 访问首页、健康食谱列表页、健康食谱详情页,记录页面加载完成时间 | 各页面响应时间均小于3秒 | 首页1.2秒,健康食谱列表页:1.5秒,健康食谱详情页:1.8秒 | 通过 |
| 并发用户登录 | 测试服务器,使用 LoadRunner工具 | 模拟50个用户同时登录系统,记录登录成功情况和响应时间 | 所有用户登录成功,平均响应时间小于5秒 | 50个用户均登录成功,平均响应时间3.2秒 | 通过 |
| 健康食谱查询性能 | 数据库中存10000条健康食谱记录 | 进行健康食谱名称模糊查询,记录查询响应时间 | 查询响应时间小于2 秒 | 查询响应时间1.3秒 | 通过 |
| 系统稳定性 | 持续运行 24小时,模拟10个用户进行常规操作(评论、点赞、浏览等) | 观察系统是否出现崩溃、数据错误等情况 | 系统稳定运行,无崩溃和数据错误 | 系统稳定运行24小时,无异常 | 通过 |
6.3测试结果
通过对系统的功能性测试和性能测试,大部分测试用例都通过了测试,系统的主要功能都能够正常实现,性能也基本达到了预期指标。
在功能性测试中,用户注册登录、健康食谱管理、健康知识管理、健康食谱发布等核心功能都能正确工作,边界情况如用户名已存在、密码错误等也能得到正确处理。
在性能测试中,系统页面响应时间、并发用户登录响应时间和健康食谱查询响应时间都在合理范围内,系统能够稳定运行 24 小时,满足日常使用的需求。
但测试过程中也发现了一些问题,例如:在健康食谱评论功能中,当评论内容过长时(超过1000字),前端没有进行限制,导致后端存储时出现数据截断;在轮播图管理中,上传大尺寸图片时,页面加载速度较慢。针对这些问题,已经进行了修复,对评论内容长度进行了限制,对上传的图片进行压缩处理。
总体来说,本系统通过了测试,具备了上线使用的条件。
👇🏻 精彩专栏 推荐订阅👇🏻
精选100个热门Java毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门Python毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门微信小程序/安卓APP毕业设计项目|适配2026‑2027届选题参考✅
✅获取源码私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️

197


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



