当前位置: 首页 > article >正文

基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现

基于 Spring Boot Vue3 的烹饪交流学习系统 设计与实现一、项目概述随着人们对烹饪学习与交流需求的增加传统线下学习模式在菜谱管理、内容发现、交流共享与个性化推荐等方面存在明显不足。为此本项目基于 Spring Boot Vue3 技术栈构建一套烹饪交流学习平台前后端分离旨在为普通用户与管理员提供一个包含菜谱发布、智能推荐、学习交流、视频教学与排行榜等功能的数字化平台提升菜谱内容质量与用户学习体验。二、系统架构与技术栈前端Vue3 Element Plus管理端cookie-web-admin用户端cookie-web-user后端Java Spring Boot MyBatiscookie-boot数据库MySQL 8.x其它Node.js、npm/yarn、Maven、IntelliJ IDEA、Navicat系统采用前后端分离架构后端暴露 RESTful API前端通过统一接口调用并按角色管理员 / 普通用户展示不同页面与权限。三、主要功能3.1管理员功能需求1登录管理员通过个人账号登录后台管理系统。2个人信息管理管理员可以查看和修改个人基本信息姓名、联系方式、邮箱等保证账号信息的准确性。3密码修改管理员可以修改登录密码增强账号安全性。4用户管理对用户基本信息进行查看操作可以为用户重置密码删除用户以及停用违规用户账号。5菜谱管理管理员可以管理用户发布的菜谱内容主要包括审核、编辑、删除、查看详情等操作。对于菜谱质量管理管理员可以根据菜谱内容质量进行标记分类包括美图菜谱、精品菜谱、新手友好等标签同时标记菜谱难度等级为初级、中级或高级。此外在评论管理模块中管理员可以查看用户对菜谱的评论信息并对不合规的评论内容进行删除处理。6菜谱视频管理管理员在这里可以统一管理用户上传的做菜视频对于不合规的视频可以进行下架处理。7厨艺大比拼审核审核用户发布的厨艺大比拼信息并可删除不合规的信息。9统计分析分析点击数、收藏数、点赞数、评论数等维度信息比如Top收藏菜谱、Top10点赞菜谱好评最多的几个菜谱好评率等。10字典管理维护菜谱分类、口味、烹调方法等字典数据为前端选择控件提供统一数据来源。11公告管理发布、编辑、启用/停用公告向用户推送重要通知。3.2用户功能需求1注册与登录用户通过账号密码注册、登录用户端系统完善基础信息。2菜谱智能推荐用户选择食材、厨具后系统为用户按照菜谱难度推荐菜谱并推荐两道搭配菜点击菜谱进入菜谱详情页面里面介绍食材和制作步骤等信息在详情页展示制作视频。3菜谱学习与交流查看已发布的所有菜谱列表点击菜谱名称可以查看菜谱详情。可以点赞、收藏。做菜交流用户在这里上传用这个菜谱做的菜的图片、辅助文字进行描述也可以在这里上传自己的做菜视频供其他用户学习交流。4菜谱排行榜根据点赞数、收藏数、评价数展示Top10菜谱。5今天吃什么点击按钮随机抽取一道菜供用户参考。6厨艺大比拼用户可在此发布比赛包括比赛标题、时间、地点和要求等信息发布后待管理员审核通过后其他用户可以报名比赛。报名比赛后用户线下参与比赛。7公告用户在这里查看管理员发布的公告信息。8个人中心我的菜谱用户可以点击添加按钮来发布自己的菜谱包含菜谱分类、食材配方、制作步骤、制作视频等详细信息。发布后可通过编辑按钮修改菜谱内容同时可以查看管理员的审核信息或选择删除已发布的菜谱。历史记录查看之前点击过的菜谱列表,按照点击时间倒序排序。我的比赛用户可以查看自己发布的比赛支持编辑比赛内容、查看管理员审核信息或删除比赛。点击发布按钮可创建新的比赛活动。此外用户还可以查看已报名的比赛并对不需要参加的比赛进行退赛操作。个人信息修改个人信息。修改密码用户在这里修改账号密码。四、菜谱推荐算法1、 算法类型多维度加权评分算法这个推荐算法采用了多维度加权评分的方法类似于协同过滤和内容推荐的结合体。2、 主要流程1数据预处理阶段*// 获取候选菜谱只推荐审核通过的菜谱// 获取候选菜谱只推荐审核通过的菜谱ListTRecipecandidateRecipesgetCandidateRecipes(request);2 多维度评分计算对每个候选菜谱计算5个维度的得分食材匹配度 (35%权重)privateBigDecimalcalculateIngredientMatchScore(ListStringrecipeIngredients,ListStringselectedIngredients){intmatchedCount0;for(Stringselected:selectedIngredients){for(Stringrecipe:recipeIngredients){if(recipe.contains(selected)||selected.contains(recipe)){matchedCount;break;}}}BigDecimalmatchRatenewBigDecimal(matchedCount).divide(newBigDecimal(selectedIngredients.size()),2,RoundingMode.HALF_UP);returnmatchRate.compareTo(BigDecimal.valueOf(0.1))0?matchRate:BigDecimal.valueOf(0.1);}计算逻辑遍历用户选择的每种食材检查菜谱是否包含该食材模糊匹配计算匹配率匹配食材数 ÷ 用户选择食材总数最低保证0.1分避免完全不匹配器具匹配度 (25%权重)privateBigDecimalcalculateToolMatchScore(StringrecipeTools,ListStringselectedTools){intmatchedCount0;for(Stringselected:selectedTools){if(recipeTools.contains(selected)){matchedCount;}}returnmatchedCount0?BigDecimal.valueOf(0.3):newBigDecimal(matchedCount).divide(newBigDecimal(selectedTools.size()),2,RoundingMode.HALF_UP);}计算逻辑检查菜谱需要的器具是否在用户选择中如果完全不匹配给0.3的基础分容错性否则按匹配比例打分饮食平衡度 (20%权重)privateBigDecimalcalculateDietBalanceScore(ListStringrecipeIngredients){// 统计荤素比例intmeatCount0,vegetableCount0,stapleCount0;// 计算各类型食材得分BigDecimalmeatScorecalculateCategoryScore(meatCount,1,2);// 荤菜1-2份BigDecimalvegetableScorecalculateCategoryScore(vegetableCount,2,3);// 素菜2-3份BigDecimalstapleScorecalculateCategoryScore(stapleCount,1,2);// 主食1-2份returnmeatScore.add(vegetableScore).add(stapleScore).divide(BigDecimal.valueOf(3),2,RoundingMode.HALF_UP);}荤素分类映射荤菜猪肉、牛肉、鸡肉、鱼虾、鸡蛋等素菜各类蔬菜、豆腐等主食面食、米饭、面包等难度适配度 (10%权重)无偏好时初级菜谱0.9分中级0.7分有偏好时完全匹配1分不匹配0.6分时间适配度 (10%权重)根据用户设置的最大烹饪时间进行匹配在时间范围内1分超出0.5分3综合评分计算BigDecimaltotalScoreingredientScore.multiply(INGREDIENT_WEIGHT).add(toolScore.multiply(TOOL_WEIGHT)).add(dietBalanceScore.multiply(DIET_BALANCE_WEIGHT)).add(difficultyScore.multiply(DIFFICULTY_WEIGHT)).add(timeScore.multiply(TIME_WEIGHT));4 排序与推荐// 按得分降序排序 recipeScores.sort((a,b)-b.getTotalScore().compareTo(a.getTotalScore()));// 返回结果 RecipeRecommendationResponseDto responsenew RecipeRecommendationResponseDto();response.setMainRecipe(recipeScores.get(0).getRecipe());// 得分最高的作为主菜 response.setSideRecipes(recipeScores.subList(1,3));// 接下来2个作为搭配菜3、 算法优势精确匹配食材和器具的精准匹配度计算营养均衡自动分析荤素搭配比例个性化根据用户偏好进行难度和时间适配容错性强即使某些维度匹配度低也能给出合理推荐可扩展性权重可以根据需求动态调整4、 评分区间总得分范围0.0 - 1.0各维度得分0.0 - 1.0最低得分保证确保每个菜谱都有展示机会5、 实际效果用户选择土豆、猪肉、炒锅时土豆炖肉得分高食材器具完美匹配清炒土豆丝得分中等食材匹配但缺少肉类红烧排骨得分低缺少主要食材这个算法既保证了推荐的准确性又考虑了用户体验和营养均衡是一个实用性很强的智能推荐系统

相关文章:

基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现

基于 Spring Boot Vue3 的烹饪交流学习系统 设计与实现 一、项目概述 随着人们对烹饪学习与交流需求的增加,传统线下学习模式在菜谱管理、内容发现、交流共享与个性化推荐等方面存在明显不足。为此,本项目基于 Spring Boot Vue3 技术栈,构建…...

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署 1. 开箱即用的文生视频解决方案 Wan2.2-I2V-A14B是一款强大的文生视频开源大模型,能够将文本描述直接转化为高质量视频内容。这个专为RTX 4090D 24GB显卡优化的私有部署镜像,让…...

PyTorch 2.8模型可视化艺术:使用Visio绘制神经网络架构图

PyTorch 2.8模型可视化艺术:使用Visio绘制神经网络架构图 1. 为什么需要专业的模型可视化 在深度学习项目中,一个清晰直观的模型架构图往往比千言万语更有说服力。想象一下,当你需要向团队展示新设计的Transformer变体,或者在论…...

7天掌握LAV Filters:构建终极DirectShow媒体解码方案完全指南

7天掌握LAV Filters:构建终极DirectShow媒体解码方案完全指南 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于FFmpeg的开源…...

保姆级教程:用LangFlow可视化工具3步搭建智能问答机器人,无需代码

保姆级教程:用LangFlow可视化工具3步搭建智能问答机器人,无需代码 1. 为什么选择LangFlow? 想象一下,你有一个绝妙的AI应用创意,但面对复杂的代码和API文档却无从下手。LangFlow就是为解决这个问题而生的可视化工具&…...

HunyuanVideo-Foley使用技巧:如何用文字描述控制生成音效风格

HunyuanVideo-Foley使用技巧:如何用文字描述控制生成音效风格 1. 引言:文字描述如何影响音效生成 想象一下,你拍摄了一段海滩视频,但缺少合适的音效。传统方法需要手动寻找和编辑各种声音素材,耗时又费力。而Hunyuan…...

李慕婉-仙逆-造相Z-Turbo应用:自动化小说解析与视觉化内容生成系统

李慕婉-仙逆-造相Z-Turbo应用:自动化小说解析与视觉化内容生成系统 想象一下,你是一家网络文学平台的内容运营。每天,海量的新章节需要配图,作者们渴望看到自己笔下的人物和世界被具象化,读者则期待更沉浸的阅读体验。…...

【TypeScript】 在业务项目中的类型治理

TypeScript 在业务项目中的类型治理:重点不是写类型,而是少挖坑 一、很多团队用了 TypeScript,为什么还是经常出问题 很多项目上了 TypeScript 之后,表面看起来挺规范: 接口有类型组件参数有类型函数入参也有类型 但实…...

注意力机制解析:PETRv2-BEV时空特征融合的可视化研究

注意力机制解析:PETRv2-BEV时空特征融合的可视化研究 1. 当我们说“注意力”时,到底在关注什么 很多人第一次听到“注意力机制”这个词,会下意识联想到人眼聚焦某个物体的动作。这种直觉其实很准确——在PETRv2-BEV这类模型里,“…...

S2-Pro低代码平台集成:为业务人员赋能AI能力

S2-Pro低代码平台集成:为业务人员赋能AI能力 1. 低代码遇上AI:业务创新的新机遇 想象一下,市场部的同事小李需要快速搭建一个智能客服系统来处理客户咨询。传统方式下,他需要找IT部门排期,等待开发团队写代码、调试模…...

ES6到ES10实战指南:这些JavaScript新特性你真的用对了吗?

ES6到ES10实战指南:这些JavaScript新特性你真的用对了吗? 1. 从语法糖到编程范式:重新理解ES6核心特性 2015年发布的ES6堪称JavaScript历史上最具革命性的更新。但五年过去了,很多开发者对这些特性的理解仍停留在表面。让我们深入…...

解决VSCode配置gcc编译环境中的常见问题:以MinGW安装失败为例

解决VSCode配置gcc编译环境中的常见问题:以MinGW安装失败为例 在开发C/C项目时,VSCode配合gcc编译器是一个轻量高效的组合方案。但许多开发者在配置过程中,特别是在Windows环境下安装MinGW时,常常会遇到各种"拦路虎"。…...

华硕笔记本合盖不休眠终极指南:GHelper合盖模式完全教程

华硕笔记本合盖不休眠终极指南:GHelper合盖模式完全教程 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...

CLI 的复兴与应用

CLI 的爆发与定义CLI(Command Line Interface,命令行界面)作为计算机领域古老的交互方式,近期迎来新爆发。飞书、钉钉、谷歌、Stripe 等公司在两周内陆续开源 CLI 产品,越来越多软件转向 CLI 化。CLI 与 GUI 的区别GUI…...

Apollo配置中心实战:从零到一的Docker化部署与核心配置详解

1. 为什么选择Apollo配置中心 在微服务架构中,配置管理一直是个让人头疼的问题。记得我第一次尝试用传统properties文件管理配置时,光是同步不同环境的配置就浪费了大半天时间。后来接触到Apollo,才发现原来配置管理可以这么优雅。 Apollo作为…...

WinSCP+VS Code远程开发:5个提升效率的隐藏技巧(附SSH配置避坑指南)

WinSCPVS Code远程开发:5个提升效率的隐藏技巧(附SSH配置避坑指南) 远程开发已成为现代开发者的标配工作流,而WinSCP与VS Code的组合堪称效率黄金搭档。但大多数开发者仅停留在基础文件传输和远程编辑层面,未能充分挖掘…...

告别重复输入密码!手把手教你为GitLab配置SSH密钥(Windows/Mac通用)

告别重复输入密码!手把手教你为GitLab配置SSH密钥(Windows/Mac通用) 每次提交代码都要输入密码?GitLab频繁的身份验证是否让你感到烦躁?作为开发者,我们每天要与版本控制系统打交道数十次,重复的…...

RK3506 AMP 异构多核通信 RPMsg-Lite 握手卡死 (wait_for_link_up)

RK3506 AMP 异构多核通信 RPMsg-Lite 握手卡死 (wait_for_link_up) 1. 问题背景与现象 硬件平台:Rockchip RK3506 (Cortex-A7 集群 Cortex-M0 协处理器) 软件环境:Linux 6.1 (主核) 裸机/RTOS (从核 MCU),使用 RPMsg-Lite 框架进行核间通信…...

OpenClaw权限管控:安全使用SecGPT-14B的5条黄金法则

OpenClaw权限管控:安全使用SecGPT-14B的5条黄金法则 1. 为什么需要特别关注OpenClaw的权限安全? 去年我在调试一个自动整理文档的OpenClaw任务时,曾不小心让AI助手误删了整个工作目录——仅仅因为我在配置时勾选了"允许文件删除"…...

seo综合查询工具和网站分析工具有什么区别_seo综合查询工具如何分析网站关键词排名

SEO综合查询工具和网站分析工具有什么区别 在当今的数字营销环境中,SEO(搜索引擎优化)工具是企业和营销人员提升网站排名的关键。其中,SEO综合查询工具和网站分析工具虽然都在帮助提升网站的搜索引擎排名,但它们之间有…...

烟台GEO搜索优化服务商链接烟台GEO搜索优化服务商

在当今数字化时代,越来越多的商家开始重视线上推广,希望通过互联网吸引更多潜在客户。然而,在实际操作中,很多商家面临着传统广告投放广撒网、预算浪费在非目标人群等问题。如何解决这些痛点,实现高效精准的营销呢&…...

Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转

Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转 1. 引言:从照片到3D人脸的魔法 想象一下,用手机随手拍一张自拍,5分钟后就能得到一个可以360度旋转的3D人脸模型。这不是科幻电影里的场景,而是…...

零基础玩转Qwen3-VL-8B:上传图片提问,本地AI助手秒答

零基础玩转Qwen3-VL-8B:上传图片提问,本地AI助手秒答 1. 项目简介 Qwen3-VL-8B是一款基于阿里云通义实验室最新多模态模型开发的本地交互工具。它最大的特点就是能让你的电脑变成一个"会看图的智能助手"——你上传一张照片,然后像…...

Sub-Agent 与 Agent Team 的本质区别

用了 Team 模式的 API,就是 Agent Team 了吗?从一个真实项目出发,拆解两种多 Agent 架构的核心差异。引言:名字叫 Team,就真是 Team 吗? 2026 年,AI 编程圈最热的词之一是"多 Agent 协作&q…...

OpenClaw开源贡献:为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF开发社区技能

OpenClaw开源贡献:为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF开发社区技能 1. 为什么我要为OpenClaw开发技能 去年冬天,我在整理个人项目文档时,突然意识到一个痛点:每次都要手动将Markdown笔记转换成不同平台要求的格式…...

玩转哔哩哔哩视频下载:3分钟掌握DownKyi的高效秘籍

玩转哔哩哔哩视频下载:3分钟掌握DownKyi的高效秘籍 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff…...

Pixel Dream Workshop 创意激发:利用算法生成无限可能的艺术图案与纹理

Pixel Dream Workshop 创意激发:利用算法生成无限可能的艺术图案与纹理 1. 当算法遇见艺术:数字创作的新纪元 在传统艺术创作中,设计师们常常需要花费大量时间手工绘制图案和纹理。而如今,Pixel Dream Workshop的出现彻底改变了…...

NEURAL MASK 开发避坑指南:解决部署中常见的403 Forbidden等网络问题

NEURAL MASK 开发避坑指南:解决部署中常见的403 Forbidden等网络问题 最近在星图GPU平台上折腾NEURAL MASK服务,发现不少朋友在部署和调用时,总会遇到一些让人头疼的网络和权限问题。比如镜像死活拉不下来,或者好不容易部署好了&…...

千问3.5-2B开源可部署教程:基于CSDN GPU平台,5分钟完成图文理解服务上线

千问3.5-2B开源可部署教程:基于CSDN GPU平台,5分钟完成图文理解服务上线 1. 千问3.5-2B模型简介 千问3.5-2B是Qwen系列中的小型视觉语言模型,它能够同时理解图片内容和处理自然语言。这个模型特别适合需要快速搭建图文理解服务的场景&#…...

春联生成模型安装包制作:一键部署exe工具开发

春联生成模型安装包制作:一键部署exe工具开发 1. 引言 每年春节前,很多朋友都想自己动手写春联,但要么字写得不够好看,要么想不出有新意的词句。现在有了AI春联生成模型,这个问题就简单多了。不过,对于不…...