****摘 要:****根据大学生饮食结构不合理、营养不均衡、校园餐饮服务智能水平低这三个方面的问题,设计出一个面向大学生健康饮食的智慧管理系统的解决方案。系统使用Spring Boot作为后端、Vue+Element UI做前端、MySQL做数据库、ECharts进行可视化,从而形成一个前后端分离的架构。系统分为大学生用户端和管理员端,大学生用户端可以进行注册建档、饮食记录、AI对话咨询、食品搭配查询、课表联动以及健康报告生成;管理员端能够对用户和食品进行管理、处理用户的反馈意见以及统计各项数据。以用户画像、场景感知、智能推荐、健康评估形成业务闭环,解决了高校学生饮食无序化、营养不平衡、记录繁杂等问题,给高校健康管理及校园餐饮数字化升级提供可行方案。
关键词:大学生;健康饮食;智慧管理;Spring Boot;Vue\
目 录
[1 绪论](#1 绪论)
[1.1 研究背景与意义](#1.1 研究背景与意义)
[1.2 国内外的研究](#1.2 国内外的研究)
[1.2.1 国内研究现状](#1.2.1 国内研究现状)
[1.2.2 国外研究现状](#1.2.2 国外研究现状)
[1.3 研究内容与方法](#1.3 研究内容与方法)
[1.4 论文结构](#1.4 论文结构)
[2 相关技术概论](#2 相关技术概论)
[2.1 B/S架构](#2.1 B/S架构)
[2.2 Vue框架](#2.2 Vue框架)
[2.3 Spring Boot框架](#2.3 Spring Boot框架)
[2.4 MySQL数据库](#2.4 MySQL数据库)
[2.5 接口设计](#2.5 接口设计)
[2.6 智能能力集成](#2.6 智能能力集成)
[3 系统需求分析](#3 系统需求分析)
[3.1 可行性分析](#3.1 可行性分析)
[3.1.1 技术可行性](#3.1.1 技术可行性)
[3.1.2 经济可行性](#3.1.2 经济可行性)
[3.1.3 操作可行性](#3.1.3 操作可行性)
[3.2 系统功能需求分析](#3.2 系统功能需求分析)
[3.2.1 用户端功能](#3.2.1 用户端功能)
[3.2.2 管理员端功能](#3.2.2 管理员端功能)
[3.3 非功能需求](#3.3 非功能需求)
[4 系统设计](#4 系统设计)
[4.1 系统设计目标](#4.1 系统设计目标)
[4.2 系统架构设计](#4.2 系统架构设计)
[4.3 系统功能模块设计](#4.3 系统功能模块设计)
[4.3.1 智慧管理模块](#4.3.1 智慧管理模块)
[4.3.2 智能推荐模块](#4.3.2 智能推荐模块)
[4.4 业务流程设计](#4.4 业务流程设计)
[4.5 数据库设计](#4.5 数据库设计)
[4.5.1 数据库设计原则](#4.5.1 数据库设计原则)
[4.5.2 核心实体说明](#4.5.2 核心实体说明)
[4.5.3 数据库概念ER图](#4.5.3 数据库概念ER图)
[4.5.4 数据库表设计](#4.5.4 数据库表设计)
[5 系统实现](#5 系统实现)
[5.1 用户端界面实现](#5.1 用户端界面实现)
[5.1.1 用户端首页推荐](#5.1.1 用户端首页推荐)
[5.1.2 有机食品](#5.1.2 有机食品)
[5.1.3 食品搭配](#5.1.3 食品搭配)
[5.1.4 营养摄入](#5.1.4 营养摄入)
[5.1.5 课表日程](#5.1.5 课表日程)
[5.1.6 健康评估/AI](#5.1.6 健康评估/AI)
[5.1.7 AI菜品识别](#5.1.7 AI菜品识别)
[5.1.8 个人信息](#5.1.8 个人信息)
[5.1.9 我的反馈与收藏](#5.1.9 我的反馈与收藏)
[5.2 管理员端界面实现](#5.2 管理员端界面实现)
[5.2.1 数据看板](#5.2.1 数据看板)
[5.2.2 用户管理](#5.2.2 用户管理)
[5.2.3 食品管理](#5.2.3 食品管理)
[5.2.4 搭配管理](#5.2.4 搭配管理)
[5.2.5 食品分类](#5.2.5 食品分类)
[5.2.6 评论管理](#5.2.6 评论管理)
[5.2.7 公告管理](#5.2.7 公告管理)
[5.2.8 轮播图管理](#5.2.8 轮播图管理)
[5.2.9 反馈管理](#5.2.9 反馈管理)
[5.2.10 系统配置](#5.2.10 系统配置)
[6 系统测试与优化](#6 系统测试与优化)
[6.1 测试目标与测试环境](#6.1 测试目标与测试环境)
[6.2 功能测试结果](#6.2 功能测试结果)
[6.3 非功能验证与结果分析](#6.3 非功能验证与结果分析)
[6.4 系统优化方向](#6.4 系统优化方向)
[6.5 本章小结](#6.5 本章小结)
[7 总结与展望](#7 总结与展望)
[7.1 研究总结](#7.1 研究总结)
[7.2 存在的不足](#7.2 存在的不足)
[7.3 未来展望](#7.3 未来展望)
[致 谢](#致 谢)
[附录A 数据库表](#附录A 数据库表)
研究背景与意义
目前高校生活节奏不断加快,外卖服务广泛使用,大学生饮食健康问题越来越严重。很多学生存在饮食不规律、高油高糖摄入过多、蔬菜水果和优质蛋白质摄入不够、熬夜加餐、膳食结构不合理等问题,对身心健康以及学习状况产生不良影响1。当前大学生饮食不规律、营养不均衡、膳食结构不合理等问题普遍存在,长期不良饮食习惯严重影响青年群体的身心健康与学习生活质量。传统校园餐饮服务仅以基础供餐为核心,缺乏系统化的营养分析、数据监测与个性化智能推荐功能,难以满足大学生科学膳食与健康管理的现实需求。在全民健康视角下,健康饮食模式的构建与推广已成为各类场景下膳食改善的重要方向,相关研究为不同群体建立科学饮食方式提供了实践参考2;同时,饮食误区识别与针对性健康管理措施的研究成果,也为开展群体化膳食干预提供了理论支撑3。在此背景下,研发面向大学生的健康饮食智慧管理系统,对纠正不良饮食行为、实现科学膳食管理具有显著的现实意义与应用价值。
在此背景下,开发面向大学生的健康饮食智慧管理系统有着十分重大的现实意义。从个人层面来讲,系统可以给学生给予个性化的膳食建议和营养监测,促使学生养成科学的饮食方式并达成营养均衡与体重管控的目的;从校园层面来说,可加强食堂服务智能化进程,推进健康校园创建工作;从社会角度来讲,该系统借助数字手段协助青年开展健康管理活动,符合健康中国2030的战略构想,具备较好的应用意义以及发展前景。
就校园治理而言,学校食品安全和营养健康管理规定中对学校加强食品安全、营养健康教育及供餐管理作出了要求。因此创建起包含饮食纪录、营养剖析、推荐干预以及回馈改良等环节的智慧管理系统,既可以增进大学生自我管理能力,又可为高校施行数字化健康服务赋予技术抓手。
系统功能模块设计
功能划分是以"用户端+管理员端"双端协同为线。用户端重在轻量记录、即时反馈和个性化的建议,管理员端重在数据维护、内容运营以及平台的管理。系统功能结构如图4-2所示。

从图4-2可知,用户端有注册登录、食品浏览、营养摄入、健康评价、AI推荐、意见反馈等主要流程,管理员端是用户管理、食品管理、公告管理、反馈处理和参数配置的集中体现,可以一起构成校园健康饮食服务体系的闭环。
数据库表设计
为了更好地说明数据库物理设计的结果,本文选择用户信息表、食品信息表、营养摄入记录表、健康评估表、AI推荐表、食品搭配表、食堂窗口表、公告资讯表和用户反馈表这九个主要的数据表进行了展示,如下所示。下面各个表都是用标准三线表的形式来显示的。
- 用户信息表(user):用于存储大学生用户的基础账号信息、身体数据与健康档案,包含用户主键、登录账号、加密密码、身高体重、BMI、健康目标等字段,如表 4-2 所示。
表4-2 用户信息表(user)设计
|-----------|--------------|--------------------|--------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 用户主键 |
| username | varchar(50) | UNIQUE, NOT NULL | 登录账号 |
| password | varchar(255) | NOT NULL | 加密密码 |
| real_name | varchar(50) | NULL | 真实姓名 |
| gender | tinyint | NULL | 性别标识 |
| age | int | NULL | 年龄 |
| height | decimal(5,1) | NULL | 身高(cm) |
| weight | decimal(5,1) | NULL | 体重(kg) |
续表4-2
|-------------|--------------|----------|------|
| 字段名 | 类型 | 约束 | 说明 |
| bmi | decimal(4,1) | NULL | BMI值 |
| health_goal | varchar(20) | NULL | 健康目标 |
| phone | varchar(20) | NULL | 联系电话 |
| role | tinyint | NOT NULL | 角色类型 |
| status | tinyint | NOT NULL | 账号状态 |
- 食品信息表(food):用于维护校园食堂食品的基础信息与全维度营养数据,包含食品主键、食品名称、分类、所属食堂窗口、价格、热量、蛋白质等字段,如表 4-3 所示。
表4-3 食品信息表(food)设计
|--------------|--------------|--------------------|---------------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 食品主键 |
| name | varchar(100) | NOT NULL | 食品名称 |
| category_id | bigint | INDEX | 食品分类 |
| canteen_id | bigint | INDEX | 所属食堂 |
| window_id | bigint | INDEX | 所属窗口 |
| price | decimal(6,2) | NULL | 价格 |
| nature | varchar(10) | NULL | 食物性质 |
| calories | decimal(8,1) | NULL | 热量(kcal/100g) |
| protein | decimal(6,1) | NULL | 蛋白质(g/100g) |
| fat | decimal(6,1) | NULL | 脂肪(g/100g) |
| carbohydrate | decimal(6,1) | NULL | 碳水(g/100g) |
| scene_tags | varchar(255) | NULL | 场景标签 |
| source | tinyint | NULL | 数据来源 |
| status | tinyint | NOT NULL | 启用状态 |
- 营养摄入记录表(nutrition_intake):用于记录用户每日各餐的饮食摄入详情,包含记录主键、用户编号、食品编号、摄入日期、餐次、摄入量、营养汇总等字段,如表 4-4 所示。
表4-4 营养摄入记录表(nutrition_intake)设计
|-------------|--------------|--------------------|------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 记录主键 |
| user_id | bigint | INDEX, NOT NULL | 所属用户 |
| food_id | bigint | INDEX, NOT NULL | 对应食品 |
| intake_date | date | NOT NULL | 摄入日期 |
| meal_type | tinyint | NOT NULL | 餐次类型 |
| quantity | int | NULL | 份数 |
| gram | decimal(8,1) | NULL | 克数 |
续表4-4
|--------------------|--------------|------|------|
| 字段名 | 类型 | 约束 | 说明 |
| intake_time | time | NULL | 摄入时间 |
| image | varchar(255) | NULL | 餐食图片 |
| total_calories | decimal(8,1) | NULL | 总热量 |
| total_protein | decimal(6,1) | NULL | 总蛋白质 |
| total_fat | decimal(6,1) | NULL | 总脂肪 |
| total_carbohydrate | decimal(6,1) | NULL | 总碳水 |
- 健康评估表(health_assessment):用于存储用户的健康评估报告数据,包含评估主键、用户编号、评估日期、健康评分、营养评价、改进建议等字段,如表 4-5 所示。
表4-5 健康评估表(health_assessment)设计
|---------------|-------------|--------------------|-------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 评估主键 |
| user_id | bigint | INDEX, NOT NULL | 所属用户 |
| assess_date | date | NOT NULL | 评估日期 |
| assess_type | tinyint | NOT NULL | 评估类型 |
| health_status | tinyint | NULL | 健康状态 |
| score | int | NULL | 综合评分 |
| calorie_eval | varchar(20) | NULL | 热量评价 |
| protein_eval | varchar(20) | NULL | 蛋白质评价 |
| fat_eval | varchar(20) | NULL | 脂肪评价 |
| carb_eval | varchar(20) | NULL | 碳水评价 |
| water_eval | varchar(20) | NULL | 饮水评价 |
| analysis | text | NULL | 分析说明 |
| suggestion | text | NULL | 改进建议 |
- AI 推荐表(ai_recommendation):用于保存系统生成的个性化饮食推荐数据,包含推荐主键、用户编号、推荐类型、推荐日期、推荐食品、推荐理由等字段,如表 4-6 所示。
表4-6 AI推荐表(ai_recommendation)设计
|----------------|--------------|--------------------|--------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 推荐主键 |
| user_id | bigint | INDEX, NOT NULL | 所属用户 |
| recommend_type | tinyint | NOT NULL | 推荐类型 |
| recommend_date | date | NOT NULL | 推荐日期 |
| meal_type | tinyint | NULL | 餐次类型 |
| food_ids | varchar(500) | NULL | 推荐食品列表 |
| reason | text | NULL | 推荐理由 |
| is_adopted | tinyint | NULL | 是否采纳 |
| create_time | datetime | NULL | 创建时间 |
- 食品搭配表(food_match):用于管理系统内场景化饮食搭配方案,包含搭配方案主键、方案名称、适用标签、总营养数据、启用状态等字段,如表 4-7 所示。
表4-7 食品搭配表(food_match)设计
|--------------------|--------------|--------------------|--------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 搭配方案主键 |
| name | varchar(100) | NOT NULL | 搭配方案名称 |
| cover_image | varchar(255) | NULL | 封面图片 |
| description | text | NULL | 方案描述 |
| target_tags | varchar(255) | NULL | 目标标签 |
| scene_tags | varchar(255) | NULL | 场景标签 |
| total_calories | decimal(8,1) | NULL | 总热量 |
| total_protein | decimal(6,1) | NULL | 总蛋白质 |
| total_fat | decimal(6,1) | NULL | 总脂肪 |
| total_carbohydrate | decimal(6,1) | NULL | 总碳水 |
| status | tinyint | NOT NULL | 启用状态 |
| create_time | datetime | NULL | 创建时间 |
- 食堂窗口表(canteen_window):用于维护校园食堂各窗口的基础信息,包含窗口主键、所属食堂编号、窗口名称、窗口说明、启用状态等字段,如表 4-8 所示。
表4-8 食堂窗口表(canteen_window)设计
|-------------|--------------|--------------------|------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 窗口主键 |
| canteen_id | bigint | INDEX, NOT NULL | 所属食堂 |
| name | varchar(100) | NOT NULL | 窗口名称 |
| description | varchar(255) | NULL | 窗口说明 |
| status | tinyint | NOT NULL | 启用状态 |
| create_time | datetime | NULL | 创建时间 |
| update_time | datetime | NULL | 更新时间 |
- 公告资讯表(announcement):用于存储系统发布的健康饮食公告与资讯内容,包含公告主键、标题、封面、内容、发布状态、浏览点赞数据等字段,如表 4-9 所示。
表4-9 公告资讯表(announcement)设计
|-------------|--------------|--------------------|------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 公告主键 |
| title | varchar(200) | NOT NULL | 公告标题 |
| cover_image | varchar(255) | NULL | 封面图片 |
| content | text | NULL | 公告内容 |
| view_count | int | NULL | 浏览次数 |
续表4-9
|--------------|----------|----------|------|
| 字段名 | 类型 | 约束 | 说明 |
| like_count | int | NULL | 点赞次数 |
| status | tinyint | NOT NULL | 发布状态 |
| publish_time | datetime | NULL | 发布时间 |
| create_time | datetime | NULL | 创建时间 |
| update_time | datetime | NULL | 更新时间 |
- 用户反馈表(feedback):用于记录用户提交的意见与建议信息,包含反馈主键、用户编号、反馈标题、反馈内容、处理状态等字段,如表 4-10 所示。
表4-10 用户反馈表(feedback)设计
|-------------|---------------|--------------------|------|
| 字段名 | 类型 | 约束 | 说明 |
| id | bigint | PK, AUTO_INCREMENT | 反馈主键 |
| user_id | bigint | INDEX, NOT NULL | 反馈用户 |
| title | varchar(200) | NOT NULL | 反馈标题 |
| content | text | NOT NULL | 反馈内容 |
| images | varchar(1000) | NULL | 附件图片 |
| status | tinyint | NOT NULL | 处理状态 |
| create_time | datetime | NULL | 创建时间 |
| update_time | datetime | NULL | 更新时间 |
5 系统实现
5.1 用户端界面实现
5.1.1 用户端首页推荐
首页推荐界面属于系统的智慧化服务主要入口,利用用户画像驱动的智能推荐引擎做个性化内容的展示。前端利用getUserProfile()方法获得用户编号、健康目标、饮食喜好、过敏忌食等主要参数,通过RESTful接口传给后端;后端SpringBoot调用intelligentRecommendation()核心函数,融合规则引擎和协同过滤算法,用user_id、scene_tags(场景标签)、health_goal(健康目标)作为入参,从food食品表、food_match搭配表中筛选出匹配数据,完成推荐权重计算和排序;最后用JSON格式返回推荐食品和搭配数据集,前端Vue通过响应式绑定进行卡片式渲染,并且会显示饮食偏好标签以及禁忌筛选的状态,从而实现千人千面的智慧首页呈现,数据流是这样的,用户端发起请求,用户画像参数传递到系统内,智能推荐算法运算得出结果并返回,前端界面渲染出对应的信息。界面实现效果如图5-1所示。

本界面为首页推荐模块的核心内容区,分为推荐食品和推荐搭配两个板块,用卡片的形式展示菜品的名称、热量、蛋白质等营养数据,提供查看、收藏功能,给用户带来个性化的饮食选择,满足大学生的各种饮食需求。界面实现效果如图5-2所示。

5.1.2 有机食品
本界面属于有机食品功能页,按照食品名称、分类、食堂等方式对食品进行筛选查询,以卡片的形式来呈现菜品名称、热量、蛋白质等主要营养数据,给予详细查看和收藏选项,帮助大学生迅速获取健康有机食品的信息,满足学生们的健康饮食需求。界面实现效果如图5-3所示。

此界面为食品搭配方案详情弹窗,用方案01举例展示出方案的应用场景、构成的菜品和建议克数,并且打开评论区供用户发表意见,从而使得大学生全面知晓方案的具体内容,进而为学生的饮食选择赋予一定的依据,进而改良个性化搭配体验。界面实现效果如图5-6所示。

图5-9 健康评估/AI界面
5.1.7 AI菜品识别
AI菜品识别界面使用的是图像识别AI接口来实现智慧化饮食记录,用户上传餐品图片时,前端调用uploadDishImage()函数对图片进行压缩和上传,返回img_url图片地址;后端使用img_url作为参数调用AI图像识别接口,执行aiRecognitionDish()函数,快速识别出菜品名称、菜品描述、热量、蛋白质、脂肪、碳水化合物等营养数据;识别结果返回给前端,供用户核对修改,确认之后调用saveDishToSystem()函数,把食品存入food食品表,从而达成拍照上传、AI识别、数据核对、一键入库的简捷记录途径,完全取代了传统的手动录入方式。界面实现效果如图5-10所示。

5.2 管理员端界面实现
5.2.1 数据看板
本界面是管理员后台的核心数据看板,用饼图、柱状图、折线图等方式来展示用户健康状况、热门食品、用户增长、食品分类等运营数据,清楚地表现出系统的运转情况,给校园饮食健康管理及平台运营决策给予数据支撑。界面实现效果如图5-13所示。

5.2.2 用户管理
该界面为用户账号管理中心,用列表的形式显示用户的账号信息,支持按照条件查询、修改、禁用/启用、重置密码、删除等操作,可以对系统所有用户的账号进行生命周期的管理,保证系统的用户信息安全和平台合规运营。界面实现效果如图5-14所示。

5.2.3 食品管理
本界面为食堂菜品管理核心页,支持按照名称、分类、食堂等多个维度进行筛选查询,用列表的形式展示出菜品全部的信息,并且可以对菜品进行新增、编辑、删除、查看评论等一系列的操作,统一维护菜品的数据,给用户端食品展示和推荐提供基础的支持。界面实现效果如图5-15所示。

总结与展望
7.1 研究总结
本文就大学生健康饮食管理场景展开需求分析、总体设计、数据库设计、界面实现、功能测试以及优化思路的整理工作,创建出一套包含饮食记录、AI菜品识别、健康评价、智能推荐、反馈处理、平台经营等在内的智慧管理系统的。本文证明了将校园场景信息、营养数据、AI技术结合起来,可以提高大学生饮食管理的便利性、连续性和个性化程度。
7.2 存在的不足
由于研究周期以及数据条件所限,本文仍然存在一些不足,第一,系统演示版本已经可以呈现大部分业务流程,但是对于更大的用户群长时间的运行数据还没有形成,第二,AI菜品识别主要是利用现有的接口和规则校验来进行的,对于校园复杂的菜品细节识别还存在提升的空间,第三,个性化推荐已经考虑了健康目标、营养差值、场景因素三个方面,但是推荐策略仍以规则为主导,并没有加入更多的行为建模和反馈学习。
7.3 未来展望
本系统可以再从以下几个方面进行改善,即不断充实校园食品数据集及用户行为样本来改善AI的识别和推荐精准度,结合可穿戴设备或者校园运动数据创建更加全方位的健康画像,进一步改良提示词工程和对话流程,让AI的建议愈加自然、精确并且可解释,并且加强管理员端的数据剖析本领,把用户的分层,食品热度升降以及健康状况趋向等细节纳入到更为细致化的运作视图当中,进而给高校健康管理赋予更有决策意义的数据支撑。