news 2026/9/24 6:25:18

Cordova与OpenHarmony营养管理系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cordova与OpenHarmony营养管理系统

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。

营养管理的重要性

营养管理是健康运动的重要组成部分。通过Cordova框架与OpenHarmony的数据管理能力,我们可以构建一个完整的营养管理系统。本文将介绍如何实现这一功能。

食物数据库

classFoodDatabase{constructor(){this.foods=[];this.recipes=[];this.userFoods=[];}searchFood(keyword){returnthis.foods.filter(food=>food.name.toLowerCase().includes(keyword.toLowerCase()));}getFoodNutrition(foodId){constfood=this.foods.find(f=>f.id===foodId);returnfood?food.nutrition:null;}addCustomFood(food){food.id=generateUUID();food.isCustom=true;this.userFoods.push(food);returnfood;}}classFood{constructor(name,servingSize,nutrition){this.id=generateUUID();this.name=name;this.servingSize=servingSize;this.nutrition={calories:nutrition.calories,protein:nutrition.protein,carbs:nutrition.carbs,fat:nutrition.fat,fiber:nutrition.fiber,vitamins:nutrition.vitamins||{},minerals:nutrition.minerals||{}};}}

FoodDatabase类管理食物数据。通过searchFood方法,用户可以搜索食物。addCustomFood方法允许用户添加自定义食物。

每日营养追踪

functiontrackDailyNutrition(date){consttracker={date:date,meals:[],totalNutrition:{calories:0,protein:0,carbs:0,fat:0,fiber:0},goals:getNutritionGoals(),progress:{}};// 获取该日期的所有食物摄入constmeals=getMealsForDate(date);meals.forEach(meal=>{tracker.meals.push(meal);// 累加营养数据tracker.totalNutrition.calories+=meal.nutrition.calories;tracker.totalNutrition.protein+=meal.nutrition.protein;tracker.totalNutrition.carbs+=meal.nutrition.carbs;tracker.totalNutrition.fat+=meal.nutrition.fat;tracker.totalNutrition.fiber+=meal.nutrition.fiber;});// 计算进度Object.keys(tracker.goals).forEach(nutrient=>{tracker.progress[nutrient]=(tracker.totalNutrition[nutrient]/tracker.goals[nutrient])*100;});returntracker;}

每日营养追踪记录了用户每日的营养摄入。这个函数汇总了所有食物的营养数据,并计算了与目标的进度。

营养目标设置

functionsetNutritionGoals(userProfile){consttdee=calculateTDEE(userProfile);constgoals={calories:tdee,protein:userProfile.weight*1.6,// 每公斤体重1.6克蛋白质carbs:(tdee*0.45)/4,// 45%的卡路里来自碳水化合物fat:(tdee*0.30)/9,// 30%的卡路里来自脂肪fiber:25// 每天25克纤维};// 根据目标调整if(userProfile.goal==='weightLoss'){goals.calories*=0.85;// 减少15%的卡路里goals.protein*=1.2;// 增加蛋白质以保护肌肉}elseif(userProfile.goal==='muscleGain'){goals.calories*=1.1;// 增加10%的卡路里goals.protein*=1.3;// 增加蛋白质以支持肌肉生长}returngoals;}

营养目标设置根据用户的个人资料和目标设定营养摄入目标。这个函数考虑了用户的体重、目标和活动水平。

膳食计划生成

functiongenerateMealPlan(userProfile,duration){constmealPlan={duration:duration,days:[],totalNutrition:{}};constgoals=setNutritionGoals(userProfile);for(letday=0;day<duration;day++){constdayPlan={date:newDate(newDate().getTime()+day*24*60*60*1000),meals:[],totalNutrition:{calories:0,protein:0,carbs:0,fat:0}};// 生成早餐constbreakfast=selectMeal('breakfast',goals);dayPlan.meals.push(breakfast);// 生成午餐constlunch=selectMeal('lunch',goals);dayPlan.meals.push(lunch);// 生成晚餐constdinner=selectMeal('dinner',goals);dayPlan.meals.push(dinner);// 生成零食constsnacks=selectMeal('snacks',goals);dayPlan.meals.push(snacks);// 计算每日总营养dayPlan.meals.forEach(meal=>{dayPlan.totalNutrition.calories+=meal.nutrition.calories;dayPlan.totalNutrition.protein+=meal.nutrition.protein;dayPlan.totalNutrition.carbs+=meal.nutrition.carbs;dayPlan.totalNutrition.fat+=meal.nutrition.fat;});mealPlan.days.push(dayPlan);}returnmealPlan;}

膳食计划生成为用户生成个性化的膳食计划。这个函数根据营养目标为每一天生成平衡的膳食。

营养分析

functionanalyzeNutritionBalance(nutritionData){constanalysis={macroBalance:{protein:0,carbs:0,fat:0},micronutrients:{},assessment:''};consttotalCalories=nutritionData.calories;// 计算宏量营养比例analysis.macroBalance.protein=(nutritionData.protein*4/totalCalories)*100;analysis.macroBalance.carbs=(nutritionData.carbs*4/totalCalories)*100;analysis.macroBalance.fat=(nutritionData.fat*9/totalCalories)*100;// 评估宏量营养平衡if(analysis.macroBalance.protein>=25&&analysis.macroBalance.protein<=35&&analysis.macroBalance.carbs>=40&&analysis.macroBalance.carbs<=50&&analysis.macroBalance.fat>=20&&analysis.macroBalance.fat<=30){analysis.assessment='宏量营养比例很好';}else{analysis.assessment='宏量营养比例需要调整';}returnanalysis;}

营养分析评估了用户的营养摄入是否平衡。这个函数计算了宏量营养的比例,并提供了评估。

食物日记

functionrecordMeal(userId,meal){constmealRecord={id:generateUUID(),userId:userId,timestamp:newDate().getTime(),mealType:meal.type,// 'breakfast', 'lunch', 'dinner', 'snack'foods:meal.foods,totalNutrition:calculateMealNutrition(meal.foods),notes:meal.notes||''};// 保存到数据库saveMealRecord(mealRecord);// 更新每日营养追踪updateDailyNutritionTracking(userId,mealRecord);returnmealRecord;}functioncalculateMealNutrition(foods){constnutrition={calories:0,protein:0,carbs:0,fat:0,fiber:0};foods.forEach(food=>{nutrition.calories+=food.nutrition.calories*food.servings;nutrition.protein+=food.nutrition.protein*food.servings;nutrition.carbs+=food.nutrition.carbs*food.servings;nutrition.fat+=food.nutrition.fat*food.servings;nutrition.fiber+=food.nutrition.fiber*food.servings;});returnnutrition;}

食物日记允许用户记录每一餐的食物摄入。这个函数计算了每餐的营养数据。

营养建议

functiongenerateNutritionRecommendations(nutritionData,goals){constrecommendations=[];// 检查卡路里摄入if(nutritionData.calories>goals.calories*1.1){recommendations.push('你的卡路里摄入过多,建议减少食物摄入量');}elseif(nutritionData.calories<goals.calories*0.9){recommendations.push('你的卡路里摄入不足,建议增加食物摄入量');}// 检查蛋白质摄入if(nutritionData.protein<goals.protein*0.9){recommendations.push('你的蛋白质摄入不足,建议增加蛋白质食物如鸡蛋、鱼或豆类');}// 检查纤维摄入if(nutritionData.fiber<goals.fiber*0.9){recommendations.push('你的纤维摄入不足,建议增加蔬菜和全谷物的摄入');}// 检查脂肪摄入if(nutritionData.fat>goals.fat*1.2){recommendations.push('你的脂肪摄入过多,建议选择低脂肪食物');}returnrecommendations;}

营养建议根据用户的营养摄入和目标提供个性化的建议。这个函数分析了各项营养指标,并生成相应的改进建议。

总结

营养管理系统通过Cordova与OpenHarmony的结合,提供了全面的营养管理功能。从食物数据库到每日追踪,从膳食计划到营养分析,这个系统为用户提供了完整的营养管理工具。通过这些功能,用户能够更好地管理自己的营养摄入,支持运动目标的实现。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 14:52:37

微信小程序uniapp-vue校园食堂订餐多商家带配送

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万…

作者头像 李华
网站建设 2026/9/20 17:47:15

JavaScript 变量:let 和 const 该用谁?

JavaScript 变量&#xff1a;let 和 const 该用谁&#xff1f;生活中的例子 01游戏得分&#xff1a;分数会一直变&#xff0c;所以用 let。生活中的例子 02圆周率 (π)&#xff1a;数学常数永远是 3.14...&#xff0c;所以用 const。生活中的例子 03用户的出生年份&#xff1a;…

作者头像 李华
网站建设 2026/9/22 15:37:52

基于GD32的直流无刷电机控制算法实现和验证

目录 1 项目概述 1.1 项目背景 1.2 系统功能介绍 1.3 系统使用的技术要点 2 系统硬件框架结构 2.1 电机PWM接口 2.2 电流采样接口 2.3 编码器接口 3 驱动程序实现 3.1 PWM 功能实现 3.1.1 PWM接口配置 3.1.2 验证PWM输出波形 3.2 AS5600的驱动 3.2.1 AS5600与MCU之…

作者头像 李华
网站建设 2026/9/20 17:38:29

Win10 系统备份与还原实用指南:3 种方法筑牢数据安全防线

在数字化时代&#xff0c;电脑里的系统文件、工作文档、个人资料等都是核心资产&#xff0c;一旦遭遇硬件故障、病毒攻击或误操作&#xff0c;数据丢失可能造成不小损失。Windows 10 自带了实用的备份还原工具&#xff0c;同时也有更高效的第三方方案&#xff0c;下面就为大家精…

作者头像 李华
网站建设 2026/9/22 12:14:34

EHR+AI助手:远程办公模式下HR与IT的合规协同方案

摘要&#xff1a;随着数字经济的深度发展&#xff0c;远程办公已从应急选项升级为企业运营的战略配置&#xff0c;但其带来的跨地域用工、数据流转、流程管控等问题&#xff0c;对HR与IT部门的协同合规提出了严峻挑战。EHR系统作为人力资源数字化的核心载体&#xff0c;与AI助手…

作者头像 李华