【关注可白嫖源码】--课程设计--毕业设计--基于机器学习的老年人营养膳食推荐系统[编号:project356766](案件分析)

源码获取私信联系我即可~

大家点赞、收藏、关注、评论啦

精彩专栏推荐订阅:在下方专栏👉

摘  要

  针对人口老龄化加剧与老年人慢性病高发的现状,传统膳食管理方式存在数据记录滞后、营养干预缺乏针对性等痛点。本研究旨在构建了一个老年人营养膳食推荐系统,通过数字化手段实现老年人饮食的精准管理与个性化服务。系统基于Python语言与Django框架开发后端逻辑,利用MySQL数据库存储用户档案及饮食数据,并引入深度学习算法分析老人健康指标与食物营养成分之间的复杂关联,为营养师提供科学的数据支撑。研究内容涵盖老人健康档案建立、智能辅助推荐、营养师人工定制方案、饮食记录监测及运营监控等核心模块。系统利用深度学习模型挖掘历史数据规律,辅助营养师更高效地为不同病症标签的老人生成定制化食谱。测试结果表明,该系统能有效提升膳食管理的效率与科学性,帮助老人改善营养摄入结构,同时显著降低营养师的数据分析负荷。本研究成果为社区养老服务的数字化转型提供了可行的技术路径与实践参考。

关键词:智慧膳食;深度学习;Django框架;Python语言;老年健康管理。

ABSTRACT

  In response to the intensifying population aging and the high prevalence of chronic diseases among the elderly, traditional dietary management methods face pain points such as lagging data recording and a lack of targeted nutritional intervention. This study aims to construct a smart healthy dietary system that achieves precise management and personalized services for the elderly's diet through digital means. The system develops backend logic based on Python language and Django framework, utilizes MySQL database to store user profiles and dietary data, and introduces deep learning algorithms to analyze the complex correlation between elderly health indicators and food nutritional components, providing scientific data support for nutritionists. The research content covers core modules such as the establishment of elderly health profiles, intelligent assisted recommendation, manual customization plans by nutritionists, dietary record monitoring, and operational monitoring. The system utilizes deep learning models to mine historical data patterns, assisting nutritionists in generating customized recipes for elderly people with different disease labels more efficiently. Test results show that the system can effectively improve the efficiency and scientific nature of dietary management, help elderly people improve their nutritional intake structure, and significantly reduce the data analysis workload of nutritionists. The research results provide a feasible technical path and practical reference for the digital transformation of community elderly care services.

Keywords:Smart Diet; Deep Learning; Django Framework; Python Language; Elderly Health Management.

  目录

第一章 绪论

1.1 选题背景

  当前我国人口老龄化进程显著加速,截至2024年末,60岁及以上老年人口已突破3.1亿,占总人口比例达22%,正式进入中度老龄化社会。伴随年龄增长,老年人身体机能衰退,慢性病高发成为普遍现象,数据显示超过七成老人患有高血压、糖尿病或心脑血管疾病等至少一种慢性基础病[1]。然而,现有的社区养老与家庭照护体系中,营养管理环节相对薄弱。许多老人因认知下降或行动不便,饮食结构单一,往往依赖子女经验或传统习惯进食,缺乏科学指导。虽然部分机构配备了营养师,但面对庞大的老年群体,人工逐一分析健康档案、计算营养缺口并制定食谱的工作量巨大,导致服务覆盖面窄、响应速度慢[2]。

  此外,纸质记录或分散的电子表格使得历史饮食数据难以沉淀和分析,无法形成连续的健康干预闭环。在数字化技术飞速发展的今天,如何利用信息技术手段辅助专业人员,将有限的营养师资源高效分配给最需要帮助的患病老人,解决吃得好与吃得对之间的矛盾,已成为亟待解决的实际问题[3]。

1.2 选题意义

1.2.1 实践意义

  系统的开发直接回应了当前社区养老中营养服务供给不足的痛点,具有极强的落地应用价值。在实际操作层面,它能将营养师从繁琐的数据录入和基础计算中解放出来,使其能专注于复杂病例的方案定制与人文关怀,显著提升服务效率与覆盖半径。对于老年用户而言,系统提供的个性化膳食建议能有效规避因饮食不当引发的血糖波动或血压升高,通过日常饮食的微小调整实现慢性病的辅助控制,切实降低并发症风险与医疗支出。同时,系统积累的连续饮食与健康数据,为家属和医生提供了直观的病情参考依据,打破了家庭照护与专业医疗之间的信息壁垒。此外,该模式降低了智慧养老的门槛,无需昂贵的大型医疗设备,仅凭软件系统即可在基层社区推广,为解决我国未富先老背景下的普惠型养老服务难题提供了一套低成本、高效率的可行方案。

1.2.2 理论意义

  研究丰富了营养信息学与老年医学交叉领域的理论体系,为特定人群的精准营养干预提供了新的方法论支撑。传统营养学多依赖静态的膳食指南,缺乏针对个体动态生理变化与长期饮食行为的量化分析模型。本研究通过引入深度学习算法处理非结构化的饮食记录与健康档案,探索了多源异构数据在老年营养评估中的融合机制,验证了数据驱动方法在识别隐性营养不良风险方面的有效性。这在理论上突破了以往仅依靠横断面调查进行营养研究的局限,构建了基于时间序列的动态营养画像分析框架。同时,研究过程中对算法可解释性的探索,也为人工智能技术在医疗健康领域的伦理规范与人机协作模式提供了实证案例,推动了从经验主义营养指导向循证数字化营养科学的理论范式转变,为后续相关学术研究奠定了数据基础与模型参考。

1.3 国内外研究成果

1.3.1 国内研究现状

  我国在该领域的研究虽起步稍晚,但依托庞大的互联网用户基数和快速迭代的工程技术,呈现出弯道超车的态势。早期国内研究多集中在建立老年人营养数据库和开发基础查询系统,功能相对单一,缺乏深度分析能力[4]。近年来,随着“智慧养老”上升为国家战略,高校与企业开始深度合作,研究重心转向基于大数据的个性化推荐。例如,阿里巴巴、腾讯等科技巨头利用其在电商和社交领域的积累,尝试将消费数据与健康档案打通,分析老年人的购买偏好与营养缺口。在学术界,清华大学、浙江大学等团队积极探索利用深度学习处理中式菜肴的复杂性[5]。由于中餐烹饪方式多样、油盐用量难以量化,国外成熟的图像识别模型往往失效,国内研究者便针对性地构建了包含红烧、清蒸等特有烹饪方式的本土化食物图像数据集[6]。

  目前,国内应用已初见成效,如部分社区试点的“智慧食堂”,老人刷脸取餐后,系统自动分析当餐营养并推送给子女手机端,这种模式极大地提升了家庭参与度。然而,国内研究仍存在明显短板:一是数据孤岛现象严重,医院、社区、家庭之间的数据尚未真正互通;二是适老化设计不足,许多系统界面复杂,老人操作困难,导致“建而不用”;三是重硬件轻服务,大量资源投入在智能手环等设备上,却缺乏后端专业的营养解读与干预方案[7]。当前研究正努力从单纯的技术堆砌转向解决实际痛点,探索符合中国国情、低成本且易推广的社区营养干预新模式。

1.3.2 国外研究现状

  发达国家在老年营养数字化领域起步较早,已形成了从基础数据采集到智能决策的完整生态。以美国为例,其研究重点在于将临床营养指南转化为可执行的算法模型。梅奥诊所等顶级机构早已不再依赖纸质问卷,而是广泛采用基于移动端的饮食记录工具,结合可穿戴设备实时监测老人的血糖和运动数据[8]。例如,美国的Noom平台虽然主打减肥,但其背后的行为心理学算法已被改良用于老年慢病管理,通过即时反馈机制引导老人改变饮食习惯。欧洲方面,欧盟资助的“FRAILMIND”等项目则更侧重于多模态数据的融合,试图解决老人因认知障碍导致的饮食记录缺失问题。研究人员利用计算机视觉技术,让老人只需对着餐盘拍照,系统即可自动识别食物种类并估算热量,极大降低了使用门槛[9]。

  此外,国外研究非常注重个性化推荐系统的精准度,常利用机器学习分析海量电子病历,预测特定营养素缺乏引发的健康风险。比如在英国,部分社区养老系统已能根据老人的用药情况(如服用华法林需控制维生素K摄入),自动过滤掉禁忌食材并生成食谱[10]。然而,国外研究也面临挑战,高昂的人力成本使得完全依赖人工审核的模式难以为继,且不同国家饮食文化差异巨大,直接移植算法往往水土不服。总体而言,国外研究正从单一的营养计算向“感知-分析-干预”的全闭环智能化方向演进,强调技术与人文关怀的深度结合,力求在保护隐私的前提下实现无感知的健康监测。

1.3.3 国内外研究小结

  综上所述,国内研究依托场景优势与工程能力,在数据规模与应用落地速度上表现突出,但在数据互通、适老化细节及专业干预深度上仍有差距。国外研究胜在理论扎实、闭环完整,尤其在多模态感知与行为干预上领先,但成本高昂且难以适配中式饮食。未来趋势必然是融合国外精细化算法与国内规模化场景,构建既懂中国胃又具人文温度的智慧营养体系。

第二章 相关技术介绍

2.1 Python语言

  Python是一种高级编程语言,以简洁、易读和功能强大著称,广泛应用于各个领域。Python作为一种解释型编程语言,配备了广泛的标准库和强有力的第三方库支持,极大地提升了开发人员的编码效率与调试便捷性[11]。它以简洁明了的语法结构著称,高度重视代码的可读性,是进行快速开发及原型构建的理想选择。在Web开发中,Python常与Django、Flask等框架结合使用,能快速构建高效且可扩展的后台系统。在数据分析和人工智能领域,Python凭借Pandas、NumPy等数据处理库,以及TensorFlow、scikit-learn等机器学习框架,成为主流选择[12]。此外,Python具备良好的跨平台特性,支持Windows、Linux、macos等操作系统,确保应用的广泛兼容性。它在自动化测试、爬虫开发和网络编程等方面的应用也非常广泛,是当前最受欢迎的编程语言之一。

2.2 Django框架

  Django是一款基于Python语言的高效Web框架,它倡导迅速开发及简洁、实用的设计哲学。Django框架的核心理念是“尽量减少重复劳动”,即提供一整套可以开箱即用的功能,如身份验证、数据库操作、URL路由、模板引擎等,使开发者可以集中精力于应用程序的具体业务逻辑与功能实现[13]。尽管Django遵循MVC(模型-视图-控制器)架构理念,但实际上采用了MTV(模型-模板-视图)模式:模板处理显示逻辑,视图关注业务流程,而模型则映射至数据库层。

  Django通过ORM技术实现了对数据库操作的支持,允许开发者以面向对象的方式便捷地与数据库交互,无需直接编写SQL代码。此外,该框架自带的管理界面极大地简化了数据维护工作,提升了开发效率。Django注重安全性,内置了多种防护措施来抵御常见网络攻击,如XSS和CSRF等[14]。其详尽完善的文档以及活跃的社区支持,确保可以轻松找到所需的资源,快速解决开发过程中的问题。

2.3 Vue框架

  用户界面的打造采用Vue技术,它采用组件化开发模式,因此可以把应用程序分解为独立的、能重复利用的组件,进而提高了开发效率和代码的可维护性,框架的核心库聚焦在了视图层,实现了数据绑定和DOM操作的同时具有简洁的API能力[15]。同时,Vue的虚拟DOM机制还让应用性能得以提升,这也降低了实际对DOM操作的频次。Vue实现了双向数据绑定支持还可以自动更新视图跟模型之间的改变[16]。另外,借助Vue的指令机制还可以简化数据展示和事件处理,而且Vue还支持路由与状态管理使得复杂单页面应用能更加简便开发。

2.4 HTML前端技术

  HTML(超文本标记语言)是构建WEB页面的标准标记语言[17]。它用于定义网页的结构和内容,通过标签(tag)来描述文本、图像、链接等元素。结合CSS和PythonScript,HTML可以实现丰富的用户界面和交互效果,是WEB前端开发的基础[18]。

2.5 MySQL数据库应用

  MySQL是一款广受欢迎的开源关系型数据库管理系统,以高效性、稳定性和良好的扩展性著称,被广泛应用于电子商务平台、内容管理及数据分析等多个行业。它为开发者提供了多样的工具和API,方便进行数据库的管理和操作,极大地提升了开发效率和数据处理能力[19]。提供了丰富的工具和API,便于开发者进行数据库管理和操作。MySQL在大多数Web应用中得到广泛使用,尤其是在与PHP、Python等编程语言配合时,能够提供高效的数据存储和查询服务。MySQL数据库具有强大的扩展性,支持水平扩展和分布式架构,可以应对日益增长的数据存储需求[20]。凭借其开源、稳定和高效的特点,MySQL成为全球最受欢迎的数据库系统之一。

第三章 系统分析

3.1 需求分析

3.1.1 功能需求分析

  系统旨在为老年群体及专业营养服务团队打造一个科学、智能的数字化健康管理解决方案,涵盖从老年人个性化膳食推荐、健康数据监测到营养师专业干预及管理员综合运营的全流程业务。系统主要围绕老年人的健康饮食体验、营养师的专业服务作业以及管理员的数据监管需求,设计了一系列功能模块,包括智能膳食推荐、健康档案全生命周期管理、医患互动服务及系统权限控制等多个方面。

老人用户

  首页:作为系统的核心入口,首页采用智能化推荐算法,根据用户注册时选择的病状(如高血压、糖尿病等)优先展示适配的膳食信息与营养知识。同时,系统基于用户对内容的点击、评论、收藏、点赞等行为数据进行深度统计与预测分析,动态调整推荐策略,向用户推送其更可能感兴趣的健康资讯与食谱,实现“千人千面”的个性化服务。

  通知公告:发布平台的重要通知,如系统维护公告、健康讲座预告、季节性饮食建议及紧急健康预警等,帮助老年人及时获取关键信息,合理安排健康生活。

  新闻资讯:分享权威的健康养生文章、最新营养学研究进展及适老化饮食文化科普。内容涵盖慢病防治、食疗偏方解读等,旨在提升老年人的健康素养与自我管理能力。

  膳食信息:展示系统收录的所有适宜老年人的菜品详情,包括菜品图片、主要营养成分(热量、蛋白质、钠含量等)、口味特点、烹饪难度及适配病症标签。支持用户按病症、口味或食材分类检索,用户可对心仪菜品进行点赞、收藏,并查看其他用户的食用反馈,促进健康饮食理念的传播。

  营养知识:提供结构化的营养科普知识库,支持视频、图文多种展现形式。用户可针对自身关注的健康问题进行定向学习,并可对知识内容进行互动评价。

  个人首页:以可视化图表形式直观展示用户过往的健康趋势,包括血压、血糖波动曲线及膳食摄入统计图,帮助用户一目了然地掌握自身健康状况。

  健康档案:核心功能模块,支持用户维护基础健康信息,上传医院体检报告图片,并定期录入血压、血糖、体重等关键指标,形成连续的电子健康档案。

  健康提醒:接收系统或营养师发送的用药提醒、体检提醒及饮食禁忌提示。

  膳食记录:用户可每日记录三餐饮食情况,系统自动关联营养数据,为后续的营养师干预提供依据。

  建议提醒:查看营养师针对其膳食记录给出的专业改进建议(如“今日钠摄入超标,建议晚餐清淡”)。

  定制需求:当用户有特殊饮食场景(如术后恢复、生日宴)时,可提交定制化饮食需求申请。

  饮食推荐:查看系统或营养师针对其定制需求生成的专属食谱方案。

  互动记录:统一管理用户的收藏记录、点赞历史及评论信息,方便回溯感兴趣的内容。

  老人用户角色用例如图3-1所示。

image图3-1老人用户角色用例图

营养师

  注册申请:营养师用户注册时需上传相关职业资格证书及身份证明,必须经过管理员严格审核通过后,方可激活账号并登录系统,确保服务的专业性与安全性。

  后台首页:展示营养师的个人工作台,包括待处理的定制需求数量、新提交的膳食记录提醒、待回复的建议咨询及系统公告,助力营养师高效开展工作。

  膳食信息管理:负责录入、编辑和维护平台的基础膳食库。营养师需详细标注每道菜品的营养成分、适用病症及禁忌人群,并上传烹饪教学视频,确保信息的科学准确。

  营养知识管理:创作并发布专业的营养科普文章与视频,对现有知识库进行分类整理与更新,确保输出内容的时效性与权威性。

  膳食记录管理:实时查看所服务老人的每日饮食记录,分析其营养摄入结构,识别潜在的营养过剩或缺失风险。

  建议提醒管理:基于对老人膳食记录的分析,主动发布针对性的饮食建议与健康提醒(如控糖指导、补铁建议),并通过系统消息推送给对应老人。

  定制需求管理:查看老人提交的特殊饮食需求申请,了解老人的具体身体状况与饮食偏好,为制定方案做准备。

  饮食推荐管理:针对老人的定制需求或特殊病状,结合专业营养学知识,制定个性化的饮食推荐方案(包括食谱搭配、食材替换建议等),并发送至老人端。

  营养师角色用例如图3-2所示。

  image

  图3-2营养师角色用例图

管理员

  数据分析:展示关键数据统计图表。包括用户总数及增长趋势、活跃用户状态统计、全站点赞/收藏/评论互动总量、常见病症分布分析及膳食推荐采纳率等,为平台运营决策提供数据支撑。

  老人用户管理:查看所有注册用户列表,支持对违规账号进行禁用或信息修正。

  营养师用户管理:审核新注册营养师的资质材料,管理在职营养师账号,包括权限分配、信息修改及账号停用,严把服务准入关。

  健康档案管理:拥有全局视角,可查看系统中所有老人的健康档案汇总,监控整体人群的健康指标分布,支持在紧急情况下协助调阅特定用户的体检报告。

  健康提醒管理:配置系统级的自动健康提醒规则(如换季提醒模板),并可手动发送全站或指定群体的重要健康通知。

  适配病症管理:维护系统基础的病症字典库(如高血压、糖尿病、痛风等),定义各病症的饮食禁忌标签,为推荐算法提供底层逻辑支持。

  膳食/营养知识信息管理:对营养师发布的膳食信息和科普内容进行最终审核与监管,确保内容合规、无虚假宣传,支持对错误信息进行下架或修正。

  膳食记录/建议提醒/定制需求/饮食推荐管理:拥有对所有业务流转数据的查询与监管权限。可追溯任意老人的饮食记录与营养师的建议历史,监督定制需求的响应速度与推荐方案的质量,确保服务流程闭环。

  轮播图配置:上传并管理首页轮播广告素材,控制展示顺序与跳转链接。

  公告资讯管理:发布、编辑和删除全站通知公告及新闻资讯栏目内容。

  管理员角色用例如图3-3所示。

  image

  图3-3管理员角色用例图

3.1.2 非功能需求分析

  非功能需求分析主要围绕系统的性能、安全、稳定、扩展等多个维度展开,旨在全方位提升系统的质量与用户体验,确保系统能在各种复杂环境下稳定、高效、安全地运行。

  (1)性能:系统应具备快速响应能力,各类操作平均响应时间控制在1秒以内。面对高并发场景,如考试预约高峰期,系统需支持至少1000个并发用户访问,确保吞吐量充足,保障系统在高负载下稳定可靠运行。

  (2)稳定性:通过定期维护、数据备份以及实时监控等措施,及时排查并解决潜在问题,保证系统在长时间运行过程中不出现故障或异常,维持稳定运行状态。

  (3)扩展性:伴随着业务拓展与用户量增长,系统借助分布式架构、云计算等先进技术,实现功能与性能的便捷扩展,从容应对未来业务发展需求。

  (4)安全性:对用户敏感信息,如身份证号、银行卡号、密码等,采用SSL/TLS加密协议保障传输安全,运用AES等加密算法进行加密存储,防止数据被窃取或篡改。同时,设置严格权限控制,依据用户角色赋予不同权限,防止越权访问与操作。此外,具备完善用户认证机制,采用用户名密码结合验证码、短信验证登录,定期提醒用户更换密码,并具备防范SQL注入、XSS攻击等常见Web安全漏洞的能力。

3.2 可行性分析

3.2.1 经济可行性分析

  从经济角度来看,本系统的构建成本主要集中在初期开发和后期维护上。使用开源技术和框架显著降低了软件许可费用。同时,系统的模块化设计减少了长期维护成本,并通过提升用户参与度和满意度,潜在地增加了平台的商业价值和收益来源。

3.2.2 技术可行性分析

  系统基于成熟的Django框架和MySQL数据库开发,利用Python语言的高效与灵活性,确保了技术实现的可行性。Django提供的丰富功能和强大支持极大地简化了开发流程,而前后端分离的设计使得系统易于维护和扩展。此外,采用HTML进行前端开发,不仅提高了用户体验,也保证了系统的稳定性和响应速度。

3.2.3 操作可行性分析

  系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。

3.3 业务流程分析

3.3.1 营养师注册与资质审核流程

  营养师用户在平台提交注册申请,上传职业资格证书及身份证明等资质材料。管理员在后台接收申请并进行人工审核,若资质不符则驳回并说明理由;若审核通过,系统自动激活营养师账号并分配相应后台权限。营养师登录后即可进行膳食信息录入、知识发布及老人健康干预等操作。流程图如图3-4所示。

  image

  图3-4营养师注册与资质审核流程图

3.3.2 老人健康档案建立与维护流程

  老人用户登录系统后进入个人中心,首先完善基础健康信息(如年龄、性别、既往病史)。随后,用户可选择上传医院体检报告图片,并定期录入血压、血糖、体重等关键生理指标。系统对录入数据进行格式校验与异常值提示。流程图如图3-5所示。

  image

  图3-5老人健康档案建立与维护流程图

3.3.3 个性化膳食推荐与定制服务流程

  系统基于老人用户注册时选择的病症标签及历史行为数据(点击、收藏等),在首页自动推送适配的膳食信息与营养知识。若老人有特殊饮食需求(如术后恢复),可提交“定制需求”申请。营养师在后台查看该需求,结合老人健康档案制定专属饮食方案并提交。流程图如图3-6所示。

  

image

  图3-6个性化膳食推荐与定制服务流程图

3.3.4 膳食记录监测与干预提醒流程

  老人用户每日在系统中记录三餐饮食内容,系统自动关联营养成分数据。营养师在后台实时查看所负责老人的膳食记录,分析营养摄入结构。若发现摄入超标或营养不均衡(如高钠、低蛋白),营养师可发布“建议提醒”,系统即时推送消息给老人。老人查看建议后可调整饮食习惯。膳食记录监测与干预提醒流程图如图3-7所示。

  

image

  图3-7膳食记录监测与干预提醒流程图

3.3.5 运营数据分析与内容管理流程

  管理员登录后台首页,查看包括用户增长、活跃状态、互动统计(点赞/收藏)、健康指标分布及膳食类型统计在内的多维数据图表。基于数据反馈,管理员对系统内容进行宏观调控:发布全站通知公告、配置首页轮播图素材、审核营养师发布的膳食与知识内容、维护适配病症字典库。同时,管理员依据数据趋势调整运营策略。运营数据分析与内容管理流程图如图3-8所示。

  image图3-8运营数据分析与内容管理流程图

第四章 系统设计

4.1 系统架构设计

  系统采用前后端分离的分布式架构,遵循高内聚、低耦合原则,专为基于机器学习的老年人营养膳食推荐场景设计。前端基于Vue.js构建,针对老年用户进行适老化改造,提供大字版界面与语音辅助。老人端核心功能涵盖首页智能推荐、健康档案维护、膳食记录上传及定制需求提交;营养师端侧重资质审核后的专业服务,包括查看老人饮食记录、制定建议提醒、响应定制需求及管理推荐食谱;管理员端则统筹全局,通过可视化大屏监控用户状态与互动数据,负责角色权限分配、病症库适配、健康档案监管及系统基础配置。后端统一采用Python+Django框架,内置机器学习模块以处理行为日志分析与营养匹配算法,通过RESTful API提供业务支撑,并集成RBAC模型严格区分三类用户权限。数据层以MySQL存储用户画像、时序健康指标、膳食知识库及交互日志,引入Redis缓存热点推荐结果与会话状态。系统架构如图4-1所示。

image

图4-1系统架构图

4.2 系统总体功能设计

  系统采用了先进的分层架构模式,不仅提高了系统的稳定性与数据安全性,还为后续功能的扩展与迭代提供了有力支持。系统的功能模块设计严格依据不同用户角色的业务需求,划分为老人用户、营养师用户和管理员三大核心类别。整体设计注重各模块之间的数据协同与逻辑闭环,强调健康档案管理的精准性、膳食推荐的科学性以及运营监控的高效性,旨在提升老年人的健康管理水平与营养干预效果,支持平台业务的持续健康发展。系统功能结构如图4-2所示:

image图4-2系统总体功能模块图

4.3 数据库设计

4.3.1 概念结构设计

  根据系统需求,确定老人用户、营养师、管理员、健康档案、定制需求、饮食方案、膳食记录、营养知识及适配病症等核心实体。老人用户与健康档案、定制需求、饮食方案及膳食记录呈一对多关系,可建立档案、提交需求并接收多份方案与打卡记录。营养师与饮食方案、营养知识及健康提醒呈一对多关系,负责制定方案、发布科普文章及发送提醒。管理员负责审核用户资质、监管营养知识内容及维护适配病症字典。健康档案记录生理指标与病史,作为方案制定依据;定制需求驱动方案生成;饮食方案关联老人、营养师及具体建议内容;营养知识供用户浏览学习;适配病症作为标准字典被多方引用。系统的全局E-R图如图4-3所示。

image图4-3系统总E-R关系图

4.3.2 逻辑结构设计

  逻辑结构设计是将概念结构设计阶段得到的E-R图转换为具体的关系模型,设计数据库表的字段、数据类型、主键和外键,以实现数据的有效存储和管理。通过逻辑结构设计,将E-R图转换为具体的关系模型,明确了各表之间的关联关系和数据存储方式,为系统的数据库实现提供了详细的设计方案,确保系统能够高效、稳定地运行,满足各类数据的管理和查询需求。根据E-R图设计以下数据库表:

表4-1nutritionist_user(营养师用户)

编号字段名类型长度是否非空是否主键注释
1nutritionist_user_idint营养师ID
2user_namevarchar64用户姓名
3user_phonevarchar64用户电话
4qualification_documentvarchar255资质文档
5examine_statevarchar16审核状态
6user_idint用户ID
7create_timedatetime创建时间
8create_byint创建用户ID
9update_timetimestamp更新时间

表4-2elderly_users(老人用户)

编号字段名类型长度是否非空是否主键注释
1elderly_users_idint老人用户ID
2old_mans_namevarchar64老人姓名
3gender_of_the_elderlyvarchar64老人性别
4old_man_phonevarchar64老人电话
5medical_historyvarchar64基础病史
6examine_statevarchar16审核状态
7user_idint用户ID
8create_timedatetime创建时间
9create_byint创建用户ID
10update_timetimestamp更新时间

表4-3health_record(健康档案)

编号字段名类型长度是否非空是否主键注释
1health_record_idint健康档案ID
2elderly_usersint老人用户
3old_mans_namevarchar64老人姓名
4gender_of_the_elderlyvarchar64老人性别
5old_man_phonevarchar64老人电话
6basic_medical_historyvarchar64基础病史
7tooth_conditionvarchar64牙齿状况
8dietary_preferencesvarchar64饮食偏好
9taboo_foodvarchar64忌口食物
10chewing_abilityvarchar64咀嚼能力
11meal_habitsvarchar64餐次习惯
12medical_examination_reportvarchar255体检报告
13date_of_measurementdate测量日期
14blood_pressure_valuedouble血压数值
15blood_glucose_leveldouble血糖数值
16weight_valuesdouble体重数值
17information_remarkstext65535信息备注
18health_reminder_limit_timesint提醒限制次数
19create_timedatetime创建时间
20create_byint创建用户ID
21update_timetimestamp更新时间

表4-4adaptation_disease(适配病症)

编号字段名类型长度是否非空是否主键注释
1adaptation_disease_idint适配病症ID
2name_of_conditionvarchar64病状名称
3create_timedatetime创建时间
4create_byint创建用户ID
5update_timetimestamp更新时间

表4-5custom_requirements(定制需求)

编号字段名类型长度是否非空是否主键注释
1custom_requirements_idint定制需求ID
2elderly_usersint老人用户
3old_mans_namevarchar64老人姓名
4medical_historyvarchar64基础病史
5requirement_titlevarchar64需求标题
6orders_documentvarchar255医嘱文件
7nutritionist_userint营养师用户
8specificss_oversighttext65535详情简介
9dietary_recommendations_limit_timesint推荐限制次数
10create_timedatetime创建时间
11create_byint创建用户ID
12update_timetimestamp更新时间

表4-6dietary_recommendations(饮食推荐)

编号字段名类型长度是否非空是否主键注释
1dietary_recommendations_idint饮食推荐ID
2elderly_usersint老人用户
3old_mans_namevarchar64老人姓名
4medical_historyvarchar64基础病史
5requirement_titlevarchar64需求标题
6nutritionist_userint营养师用户
7meal_namevarchar64膳食名称
8programme_contenttext65535方案内容
9create_timedatetime创建时间
10create_byint创建用户ID
11update_timetimestamp更新时间
12extratext65535额外信息
13source_tablevarchar255来源表
14source_idint来源ID
15source_user_idint来源用户

表4-7health_reminder(健康提醒)

编号字段名类型长度是否非空是否主键注释
1health_reminder_idint健康提醒ID
2elderly_usersint老人用户
3old_mans_namevarchar64老人姓名
4basic_medical_historyvarchar64基础病史
5meal_habitsvarchar64餐次习惯
6blood_pressure_valuedouble血压数值
7blood_glucose_leveldouble血糖数值
8date_of_measurementdate测量日期
9reminder_contenttext65535提醒内容
10create_timedatetime创建时间
11create_byint创建用户ID
12update_timetimestamp更新时间
13extratext65535额外信息
14source_tablevarchar255来源表
15source_idint来源ID
16source_user_idint来源用户

表4-8meal_record(膳食记录)

编号字段名类型长度是否非空是否主键注释
1meal_record_idint膳食记录ID
2name_of_foodvarchar64食物名称
3intake_quantitydouble摄入数量
4ingestion_datedate摄入日期
5elderly_usersint老人用户
6specificss_oversighttext65535详情简介
7suggested_reminder_limit_timesint建议限制次数
8create_timedatetime创建时间
9create_byint创建用户ID
10update_timetimestamp更新时间

表4-9nutrition_knowledge(营养知识)

编号字段名类型长度是否非空是否主键注释
1nutrition_knowledge_idint营养知识ID
2knowledge_namevarchar64知识名称
3corresponding_symptomsvarchar64对应症状
4type_of_knowledgevarchar64知识类型
5nutritionist_userint营养师用户
6science_communication_vuser_ideovarchar255科普视频
7cover_imagevarchar255封面图片
8popular_science_contentlongtext429495科普内容
9hitsint点击数
10praise_lenint点赞数
11collect_lenint收藏数
12comment_lenint评论数
13examine_statevarchar16审核状态
14recommendint智能推荐
15create_timedatetime创建时间
16create_byint创建用户ID
17update_timetimestamp更新时间

表4-10suggested_reminder(建议提醒)

编号字段名类型长度是否非空是否主键注释
1suggested_reminder_idint建议提醒ID
2name_of_foodvarchar64食物名称
3intake_quantitydouble摄入数量
4ingestion_datedate摄入日期
5elderly_usersint老人用户
6nutritionist_userint营养师用户
7nutritional_compositiondouble营养成分
8suggested_contenttext65535建议内容
9create_timedatetime创建时间
10create_byint创建用户ID
11update_timetimestamp更新时间
12extratext65535额外信息
13source_tablevarchar255来源表
14source_idint来源ID
15source_user_idint来源用户

第五章 系统详细设计与实现

5.1 老人用户功能实现

5.1.1 用户注册

  老人用户通过填写基本信息创建个人账户,系统自动校验数据唯一性与安全性。用户填写姓名、手机号、密码及基础病史等信息提交注册请求。前端校验格式后,后端调用ElderlyUsers类检查手机号唯一性,实例化新用户对象并加密存储密码,同时初始化审核状态(examine_state)为“待审核”并记录创建时间。若检测到重复信息则返回错误,成功则跳转至登录页等待管理员或系统审核。该过程确保了老人用户数据的完整性与安全性。界面如图5-1所示。

image

  图5-1用户注册界面图

5.1.2 用户登录

  老人用户提供身份凭证以获取系统访问权限及个性化健康服务。用户输入账号和密码发起登录,后端通过ElderlyUsers表验证凭证及examine_state审核状态。验证通过后,系统生成包含elderly_users_id的Token,并记录登录日志。若审核未通过,系统将提示具体原因。此流程实现了安全的身份认证与会话追踪。界面如图5-2所示。

image

  图5-2用户登录界面图

5.1.3 前台首页

  系统集中展示核心营养资讯与健康动态,为老人提供便捷的浏览入口。系统启动时预加载nutrition_knowledge表中的热门科普文章与推荐视频至缓存。用户访问首页时,Controller层直接读取缓存中的轮播图、最新营养知识(按hits点击数排序)及系统公告,组装成VO对象返回前端。该机制大幅降低数据库压力,确保首页毫秒级响应,动态展示平台核心健康资源。界面如图5-3所示。

image

  图5-3前台首页界面图

5.1.4 健康档案建立

  老人用户完善个人详细健康信息,形成专属电子健康档案。用户填写牙齿状况、饮食偏好、忌口食物、咀嚼能力及餐次习惯等详细信息,并提交体检报告文件。系统实例化HealthRecord对象,关联当前elderly_users_id,将血压、血糖、体重等初始测量数据写入数据库。Service层校验数据完整性后,更新档案状态,为后续的营养推荐提供数据支撑。界面如图5-4所示。

image

  图5-4健康档案建立界面图

5.1.5 定制需求提交

  老人根据自身健康状况向营养师发起个性化饮食指导请求。用户浏览自身健康档案后,填写需求标题、上传医嘱文件(orders_document)并描述具体诉求。系统实例化CustomRequirements对象,关联老人ID与指派营养师ID(可选),状态初始化为“待处理”。提交成功后,系统将通知对应的营养师用户进行处理。界面如图5-5所示。

image

  图5-5定制需求提交界面图

5.1.6 饮食推荐查看

  老人查看营养师为其定制的专属饮食推荐方案。用户请求数据时,后端通过elderly_users_id关联查询DietaryRecommendations表,加载膳食名称、方案内容(programme_content)及额外建议。系统支持以列表或详情形式展示方案,老人可在线查看每餐的具体搭配与营养说明。界面如图5-6所示。

image

  图5-6饮食推荐查看界面图

5.1.7 膳食记录打卡

  老人记录每日实际摄入的食物情况,用于系统分析与提醒。用户选择食物名称、输入摄入数量并确认摄入日期,系统实例化MealRecord对象,关联当前老人ID。提交后,系统可根据摄入数据自动触发SuggestedReminder(建议提醒),如摄入量超标或营养不均衡时给予即时反馈。界面如图5-7所示。

image

  图5-7膳食记录打卡界面图

5.1.8 个人中心

  老人查看个人全生命周期健康数据,包括健康档案、饮食方案、膳食记录及消息提醒。用户请求个人数据时,后端通过用户ID关联查询HealthRecord、DietaryRecommendations、MealRecord等多张表,封装成详细的用户中心视图。支持用户在此修改联系方式、查看历史健康趋势图表及管理账户信息。界面如图5-8所示。

image

  图5-8个人中心界面图

5.2 营养师模块的实现

5.2.1 需求处理与方案制定

  营养师处理老人的定制需求,并制定专业的饮食推荐方案。营养师登录后查看CustomRequirements列表,审核老人上传的医嘱文件与病史。确认无误后,点击“制定方案”,系统实例化DietaryRecommendations对象,填充膳食名称、详细方案内容(programme_content),并关联老人ID与当前营养师ID。保存后,方案状态更新,老人端即可见。界面如图5-9所示。

image

  图5-9需求处理与方案制定界面图

5.2.2 营养知识发布

  营养师分享专业营养科普内容,提升平台服务质量。营养师发布新知识时,实例化NutritionKnowledge对象,填写知识名称、对应症状、知识类型,上传科普视频与封面图片,并编辑富文本格式的科普内容。提交后,examine_state设为“待审核”,经管理员审核通过后即可在前台首页展示,供所有用户学习。界面如图5-10所示。

image

  图5-10营养知识发布界面图

5.2.3 健康提醒发送

  营养师根据老人的健康档案数据或膳食记录,手动发送针对性的健康提醒。营养师选择特定老人,系统自动加载其最近的血压、血糖数据及饮食习惯。营养师输入提醒内容(reminder_content),实例化HealthReminder或SuggestedReminder对象,系统记录来源表与来源ID以便追溯。发送后,老人端将收到即时通知。界面如图5-11所示。

image

  图5-11健康提醒发送界面图

5.3 管理员模块的实现

5.3.1 用户管理与审核

  管理员对系统所有用户进行资质审查与账号维护。老人审核:查看ElderlyUsers注册信息,确认examine_state状态,必要时人工介入核实。营养师审核:重点审核NutritionistUser上传的资质文档(qualification_document),调用update方法将状态由“待审核”更为“通过”或“拒绝”。若拒绝,需填写驳回原因。对于违规账号,管理员可直接冻结权限,阻断其发布方案或服务能力。界面如图5-12所示。

image

  图5-12用户管理与审核界面图

5.3.2 适配病症管理

  管理员统筹规划平台的基础病症库,确保营养推荐的准确性。管理员维护AdaptationDisease表,负责病状名称(name_of_condition)的添加、修改与删除。该数据字典将被营养师在制定方案和老人填写病史时引用,保证数据录入的规范性与统一性。界面如图5-13所示。

image

  图5-13适配病症管理界面图

5.3.3 营养知识管理

  管理员净化平台内容环境,对营养师发布的科普知识进行终审与管控。管理员监控NutritionKnowledge列表,对争议较大或质量不高的内容执行介入处理。系统支持查看完整的科普内容与视频链接,管理员可强制下架违规内容或调整其“智能推荐”(recommend)标识。所有管理行为均记录在create_by与操作日志中,维护专业的健康资讯秩序。界面如图5-14所示。

image

  图5-14营养知识管理界面图

5.3.4 系统数据监控

  管理员全局监控系统运行数据与业务流转情况。管理员可查看全平台的HealthRecord增长趋势、DietaryRecommendations的覆盖率及MealRecord的活跃度。通过多维度的数据统计,管理员能及时发现系统异常或业务瓶颈,为平台优化提供数据支撑。界面如图5-15所示。

image

  图5-15数据分析界面图

第六章 系统测试

6.1 测试目的

  系统测试是软件开发过程中的重要环节,对于本系统而言,其测试目的具有多方面的重要意义。通过系统测试,能够全面验证系统的功能是否符合预先设定的需求规格说明书。在性能方面,测试旨在评估系统在不同负载条件下的响应时间、吞吐量和资源消耗情况。安全层面的测试也是至关重要的。系统存储了大量用户的敏感信息,因此需要通过安全测试,全面检测系统的安全防护机制是否完善。重点测试数据加密是否有效,确保用户信息在传输和存储过程中的保密性,防止信息被窃取或篡改,保护用户的隐私和权益。

  通过对系统各项功能的细致测试,能够及时发现并修正潜在的功能缺陷,保证系统的功能完整性和正确性,为用户提供稳定可靠的服务。

6.2 测试用例

  本系统需要满足老人用户、营养师和管理员三种角色的需求,所以以下将对这三类角色分别进行功能测试。

6.2.1 老人用户功能测试

  老人用户主要对用户注册登录、健康档案建立、定制需求提交、饮食方案查看、膳食记录打卡及个人中心管理等用例进行功能测试。

  表6-1老人用户功能测试表

编号用例说明输入数据预测结果测试结果
S01注册账号手机号:13800138001,姓名:张大爷,密码:Zhang123456,基础病史:高血压注册成功,提示“等待审核”,数据库elderly_users表新增记录,状态为待审核通过
S02登录系统账号:13800138001,密码:Zhang123456审核通过后登录成功,跳转至首页,右上角显示“张大爷”及个人中心入口通过
S03建立健康档案牙齿状况:良好,饮食偏好:清淡,血压:135/85,上传体检报告档案保存成功,health_record表生成对应记录,首页显示健康概览通过
S04提交定制需求需求标题:糖尿病食谱定制,上传医嘱图片,描述:需低糖饮食提交成功,custom_requirements表新增记录,状态为“待处理”,通知营养师通过
S05查看饮食方案点击“我的方案”查看营养师推荐的食谱页面正确展示膳食名称、方案内容及创建时间,支持查看详情通过
S06膳食记录打卡食物名称:杂粮粥,数量:1碗,日期:2026-05-20记录保存成功,meal_record表新增数据,系统自动分析并给出建议提醒通过

6.2.2 营养师功能测试

  营养师主要对登录系统、处理定制需求、制定饮食推荐方案、发布营养知识及发送健康提醒等用例进行功能测试。

  表6-2营养师功能测试表

编号用例说明输入数据预测结果测试结果
T01登录系统账号:nutri01,密码:Nutri@2026登录成功,跳转至营养师工作台,显示待处理需求数及服务统计通过
T02处理定制需求查看张大爷的“糖尿病食谱定制”需求,下载医嘱文件成功加载需求详情及附件,支持标记为“处理中”或“已完成”通过
T03制定饮食方案关联老人ID,填写方案内容:早餐燕麦、午餐杂粮饭等,保存dietary_recommendations表新增记录,老人端即时可见该方案通过
T04发布营养知识标题:夏季防暑饮食,类型:科普文章,上传视频,内容:富文本编辑提交成功,nutrition_knowledge表新增记录,状态为“待审核”通过
T05发送健康提醒选择老人:张大爷,提醒内容:今日血糖偏高,建议减少糖分摄入提醒发送成功,suggested_reminder表生成记录,老人端收到通知通过

6.2.3 管理员功能测试

  管理员主要对登录后台、用户资质审核(老人/营养师)、适配病症管理、营养内容监管及系统数据监控等用例进行功能测试。

  表6-3管理员功能测试表

编号用例说明输入数据预测结果测试结果
A01登录后台账号:admin,密码:Admin@2026登录成功,进入管理员控制台,显示全量管理菜单通过
A02营养师资质审核查看营养师“nutri01”上传的资格证,操作:通过审核nutritionist_user表中该用户状态更新为“通过”,允许其登录服务通过
A03适配病症管理新增病症:II型糖尿病,描述:需严格控制碳水化合物adaptation_disease表新增记录,营养师制定方案时可引用该病症通过
A04营养内容监管查看待审核知识“夏季防暑饮食”,操作:审核通过nutrition_knowledge表状态更新为“已发布”,前台首页可浏览该内容通过
A05系统数据监控查看平台整体数据看板正确展示注册用户数、健康档案总数、方案覆盖率及活跃度图表通过
A06违规账号冻结选择违规营养师,操作:冻结账号该账号无法再次登录,其发布的服务暂时不可见,权限被阻断通过

6.3 测试结果

  系统功能测试结果表明,老人用户、营养师和管理员三类角色的核心操作均能正常执行。老人用户可顺利完成注册登录、健康档案建立、定制需求提交、饮食方案查看及每日膳食打卡,系统能根据录入数据自动触发建议提醒,交互流程顺畅。营养师能够准确查看老人的定制需求与历史健康数据,制定并發布个性化的饮食推荐方案,同时支持营养知识的发布与健康提醒的手动发送,业务逻辑严密。管理员在用户资质审核、基础病症库维护、科普内容监管及全局数据监控方面功能完整,有效保障了平台内容的专业性与安全性。

  测试覆盖了从用户注册、健康数据采集、方案生成到内容监管的主要业务流程。系统界面响应迅速,数据在各模块间交互一致,预期结果达成率高,未发现严重功能缺陷。整体测试结果验证了系统功能的完整性与稳定性,达到了设计预期,具备投入实际应用的基础条件。

总结与展望

  本研究成功构建了基于Django框架与深度学习技术的老年人营养膳食推荐系统。系统实现了老年用户健康档案的数字化管理、饮食数据的实时追踪以及营养师定制化方案的在线发布。通过引入深度学习算法,系统能够辅助营养师快速分析老人历史饮食与健康指标的关联,显著提升了食谱制定的科学性与效率。测试结果表明,该平台有效改善了老年人的营养摄入结构,降低了人工管理成本,为社区养老提供了可落地的智能化解决方案,达到了预期设计目标。

  然而,系统仍存在若干不足之处。首先,深度学习模型的训练数据主要来源于模拟数据及部分公开数据集,缺乏大规模真实场景下的长期用户饮食记录,导致模型在极端病例或特殊体质老人身上的推荐辅助精度有待验证。其次,当前系统对食物图像的识别精度受限于拍摄环境与光线,用户手动录入数据仍占较大比例,影响了数据连续性。此外,系统尚未与智能穿戴设备实现深度互联,无法实时获取老人的运动消耗与生理指标,使得营养干预的动态调整略显滞后。

  未来工作将聚焦于多源数据融合与模型优化。计划接入主流智能手环与体测设备,实时同步运动与生理数据以完善健康画像。同时,将收集更多临床真实数据重新训练模型,提升辅助推荐的泛化能力,并探索大语言技术在交互式营养咨询中的应用,打造更全面的智慧养老生态。

  参考文献

[1] 陈朝群.基于人工智能的个性化膳食推荐系统优化研究[C]//中国营养学会.第十七届全国营养科学大会摘要集.吉大一院;,2025:2.DOI:10.26914/c.cnkihy.2025.051524.

[2] 孙佩,刘京辉,王文洁.基于大数据的校园餐饮个性化推荐系统研究[J].中国食品工业,2025,(09):41-43.

[3] 车美龄.基于多模态知识图谱的营养推荐系统构建研究[D].北京协和医学院,2025.DOI:10.27648/d.cnki.gzxhu.2025.000756.

[4] 尉艳丽,张素智.食品营养知识图谱的构建与个性化膳食推荐系统研究[J].食品安全导刊,2024,(33):104-106.DOI:10.16043/j.cnki.cfs.2024.33.006.

[5] 金颖,闵巍庆,周鹏飞,等.融合营养知识和偏好-健康多目标优化的膳食推荐[J].食品科学,2025,46(06):29-37.

[6] 曾子文.基于图神经网络的个性化膳食推荐算法研究[D].武汉轻工大学,2024.DOI:10.27776/d.cnki.gwhgy.2024.000009.

[7] 武杰.基于深度学习的饮食推荐算法的研究与应用[D].黑龙江大学,2024.DOI:10.27123/d.cnki.ghlju.2024.001369.

[8] AmadehT ,RafieM ,RadmaneshS ,et al. Intelligent Diet Recommendation System Powered by Artificial Intelligence for Personalized NutritionalSolutions.[J].Clinicalnutrition ESPEN,2025,70194-203.DOI:10.1016/J.CLNESP.2025.09.002.

[9] ZhuL ,PanY .Experience Optimization of AI-Based Smart Kitchen Dietary Recommendation Systems from a Service Design Perspective[J].InnovationSeries: Advanced Science,2025,2(5):

[10] Lechien RJ .Effectiveness of Diet Recommendations for Laryngopharyngeal Reflux Disease: A Systematic Review for Clinical Practice andStudies.[J].Journalofvoice :official journal of the Voice Foundation,2025,DOI:10.1016/J.JVOICE.2025.07.027.

[11] 明日科技.快速上手Python[M].化学工业出版社:202211.337.

[12] 明日科技.Python Web开发手册[M].化学工业出版社:202201.411.

[13] 邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.

[14] 段艺,涂伟忠.Django开发从入门到实践[M].机械工业出版社:202211.635.

[15] 季甜甜,刘冬冬.基于Vue前端性能的研究与分析[J].阜阳师范大学学报(自然科学版),2024,41(01):15-22.

[16] 李晓薇. Vue框架在前端开发中的应用研究[J].软件, 2024, 45 (11): 108-110.

[17] 张宇薇.HTML5在Web前端开发中的应用[J].集成电路应用,2024,41(04):274-276.

[18] 廖黄鹏.浅析HTML5+CSS3在网页设计中的特性及优势[J].信息与电脑,2025,37(01):135-137.

[19] 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.

[20] 肖睿,李鲲程,范效亮,等.MySQL数据库应用技术及实践[M].人民邮电出版社:202206.228.

  致谢

  毕业设计的顺利完成,离不开众多老师、同学、家人和朋友的支持与帮助。在此,我谨向所有给予我关心和指导的人致以最诚挚的感谢。

  首先,衷心感谢我的指导老师。从论文的选题、框架设计到内容撰写与修改,老师始终给予我耐心的指导和宝贵的建议。在我遇到技术难题和写作瓶颈时,老师以其渊博的学识和严谨的治学态度为我指明方向,使我能够不断修正思路、完善内容,最终顺利完成本论文。

  感谢学校提供的良好学习环境和丰富的教学资源,让我在理论学习与实践能力上都得到了全面提升。同时,感谢同学们在项目开发过程中给予的技术交流与支持,我们在讨论中碰撞思想,互相启发,共同进步。

  此外,我要特别感谢我的家人,他们始终默默支持我的学业,给予我精神上的鼓励和生活上的关怀,使我能够安心完成论文写作与系统开发工作。

  最后,向各位老师致以深深的谢意,感谢你们在百忙之中审阅我的论文并提出宝贵意见。本研究仍有不足之处,恳请各位老师批评指正。

  谨以此文,致敬所有陪伴我走过这段学习旅程的人。

  附录

关键代码如下所示:

5.1.1用户注册:

def register(request):

data =json.loads(request.body)

ifElderlyUsers.objects.filter(phone=data['phone']).exists():

returnJsonResponse({'code': 400, 'msg': '手机号已存在'})

user =ElderlyUsers.objects.create(

name=data['name'], phone=data['phone'],

password=make_password(data['password']),examine_state='待审核'

)

returnJsonResponse({'code': 200, 'msg': '注册成功,等待审核'})

5.1.2用户登录

def login(request):

data =json.loads(request.body)

user =ElderlyUsers.objects.filter(phone=data['phone']).first()

if not user or notcheck_password(data['password'],user.password):

returnJsonResponse({'code': 400, 'msg': '账号或密码错误'})

ifuser.examine_state!= '通过':

returnJsonResponse({'code': 400, 'msg': '账号未通过审核'})

token =jwt.encode({'id': user.id},settings.SECRET_KEY, algorithm='HS256')

returnJsonResponse({'code': 200, 'data': {'token': token, 'name': user.name}})

5.1.3前台首页

defget_home_data(request):

hot_knowledge=NutritionKnowledge.objects.filter(examine_state='已发布').order_by('-hits')[:5]

banners =Banner.objects.all()

data = {

'banners':list(banners.values('image_url', 'link')),

'knowledge':list(hot_knowledge.values('title', 'content', 'create_time'))

}

returnJsonResponse({'code': 200, 'data': data})

5.1.4健康档案建立

@require_http_methods(["POST"])

defsave_health_record(request):

data =json.loads(request.body)

user_id= request.user.id #假设中间件已解析Token

record =HealthRecord.objects.create(

elderly_users_id=user_id,teeth_status=data['teeth'],

diet_preference=data['preference'],bp_high=data['bp_high'],

measure_date=date.today()

)

returnJsonResponse({'code': 200, 'msg': '档案建立成功'})

5.1.5定制需求提交

defsubmit_requirement(request):

data =json.loads(request.body)

file_url=handle_upload(request.FILES.get('file')) #自定义上传函数

req =CustomRequirements.objects.create(

elderly_users_id=request.user.id, title=data['title'],

orders_document=file_url, status='待处理',create_time=timezone.now()

)

returnJsonResponse({'code': 200, 'msg': '需求已提交'})

5.1.6饮食方案查看

defget_my_plans(request):

plans =DietaryRecommendations.objects.filter(

elderly_users_id=request.user.id

).order_by('-create_time')

data =list(plans.values('diet_name', 'programme_content', 'create_time'))

returnJsonResponse({'code': 200, 'data': data})

5.1.7膳食记录打卡

defadd_meal_record(request):

data =json.loads(request.body)

record =MealRecord.objects.create(

elderly_users_id=request.user.id,food_name=data['food'],

amount=data['amount'],intake_date=date.today()

)

auto_generate_reminder(record) #触发提醒逻辑

returnJsonResponse({'code': 200, 'msg': '打卡成功'})

5.2.1需求处理与方案制定

@transaction.atomic

defcreate_plan(request):

data =json.loads(request.body)

req =CustomRequirements.objects.get(id=data['requirement_id'])

req.status= '已完成'

req.save()

plan =DietaryRecommendations.objects.create(

elderly_users_id=req.elderly_users_id,nutritionist_user_id=request.user.id,

diet_name=data['title'],programme_content=data['content'],create_time=timezone.now()

)

returnJsonResponse({'code': 200, 'msg': '方案制定成功'})

5.2.2营养知识发布

defpublish_knowledge(request):

data =json.loads(request.POST.get('data'))

video_url=handle_upload(request.FILES.get('video'))

knowledge =NutritionKnowledge.objects.create(

nutritionist_user_id=request.user.id, title=data['title'],

science_video=video_url,examine_state='待审核', hits=0

)

returnJsonResponse({'code': 200, 'msg': '发布成功,等待审核'})

5.2.3健康提醒发送

defsend_reminder(request):

data =json.loads(request.body)

reminder =SuggestedReminder.objects.create(

nutritionist_user_id=request.user.id,elderly_users_id=data['elderly_id'],

reminder_content=data['content'],source_type='MANUAL',create_time=timezone.now()

)

send_websocket_msg(data['elderly_id'], "您有一条新的健康提醒")

returnJsonResponse({'code': 200, 'msg': '提醒已发送'})

5.3.1用户管理与审核

defaudit_nutritionist(request):

data =json.loads(request.body)

user =NutritionistUser.objects.get(id=data['id'])

if data['status'] == '拒绝' and notdata.get('reason'):

returnJsonResponse({'code': 400, 'msg': '拒绝需填写原因'})

user.examine_state= data['status']

user.reject_reason=data.get('reason', '')

user.save()

returnJsonResponse({'code': 200, 'msg': '审核完成'})

5.3.2适配病症管理

defsave_disease(request):

data =json.loads(request.body)

ifdata.get('id'):

AdaptationDisease.objects.filter(id=data['id']).update(**data)

else:

AdaptationDisease.objects.create(name_of_condition=data['name'],create_time=timezone.now())

cache.delete('disease_list') #清除缓存

returnJsonResponse({'code': 200, 'msg': '保存成功'})

5.3.3营养内容监管

defaudit_knowledge(request):

data =json.loads(request.body)

state_map= {'pass': '已发布', 'reject': '已驳回'}

knowledge =NutritionKnowledge.objects.get(id=data['id'])

knowledge.examine_state=state_map.get(data['action'])

knowledge.save()

returnJsonResponse({'code': 200, 'msg': '操作成功'})

5.3.4系统数据监控

defget_dashboard_stats(request):

stats = {

'users':ElderlyUsers.objects.count(),

'plans':DietaryRecommendations.objects.count(),

'records':MealRecord.objects.count()

}

returnJsonResponse({'code': 200, 'data': stats})

源码获取

私信联系我即可~

大家点赞、收藏、关注、评论啦

精彩专栏推荐订阅:在下方专栏👉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值