/* * 验证过程 * 1. 取出菜肴名称 * 2. 在常用菜肴table里面查找对应的各种原料,认为用量单位是克 * 3. 通过查询营养维护table,计算出每种原料含有的营养素,认为营养维护table是100g对应的营养素 * 4. 验证每个营养素是否在合理的区间,返回结果 */ private Boolean verfiyOneDaySPList(List <string> list, ScopeDouble能量 scopeDouble能量) { 原料营养值 营养值 = new 原料营养值(); foreach (string item in list) { string 菜肴名称 = item; 原料营养值 营养值1 = get营养值By菜肴名称(菜肴名称); 营养值.糖 += 营养值1.糖; 营养值.脂肪 += 营养值1.脂肪; 营养值.蛋白质 += 营养值1.蛋白质; } // TODO: hacker 营养值.蛋白质 *= 6; 营养值.脂肪 *= 40; 营养值.糖 *= 60; if (((scopeDouble能量.d蛋白质start.start <= 营养值.蛋白质) && (营养值.蛋白质 <= scopeDouble能量.d蛋白质end.end)) && ((scopeDouble能量.d脂肪start.start <= 营养值.脂肪) && (营养值.脂肪 <= scopeDouble能量.d脂肪end.end)) && ((scopeDouble能量.d糖start.start <= 营养值.糖) && (营养值.糖 <= scopeDouble能量.d糖end.end))) { return(true); } else { /* * Console.WriteLine("" + scopeDouble能量.d蛋白质start.start + "<=" + 蛋白质总合 + "<=" + scopeDouble能量.d蛋白质end.end + "|" + scopeDouble能量.d脂肪start.start + "<=" + 脂肪总合 + "<=" + scopeDouble能量.d脂肪end.end + "|" + scopeDouble能量.d糖start.start + "<=" + 糖总合 + "<=" + scopeDouble能量.d糖end.end + "+" + (scopeDouble能量.d蛋白质start.start / 蛋白质总合) + "->" + (scopeDouble能量.d蛋白质end.end / 蛋白质总合) + "|" + (scopeDouble能量.d脂肪start.start / 脂肪总合) + "->" + (scopeDouble能量.d脂肪end.end / 脂肪总合) + "|" + (scopeDouble能量.d糖start.start / 糖总合) + "->" + (scopeDouble能量.d糖end.end / 糖总合) + ); + //*/ Console.WriteLine("" + (int)(scopeDouble能量.d蛋白质start.start / 营养值.蛋白质) + "->" + (int)(scopeDouble能量.d蛋白质end.end / 营养值.蛋白质) + "|" + (int)(scopeDouble能量.d脂肪start.start / 营养值.脂肪) + "->" + (int)(scopeDouble能量.d脂肪end.end / 营养值.脂肪) + "|" + (int)(scopeDouble能量.d糖start.start / 营养值.糖) + "->" + (int)(scopeDouble能量.d糖end.end / 营养值.糖) ); return(false); } }
/* * 食谱生成过程 * 1. 根据每人每天的劳动强度获取对应的能量和营养供应量 * 2. 分配能量配比:蛋白质占11%~13%,脂肪20%~30%,糖55%~65% * //*/ private void getOneWeekSPList(List <string> list常用菜肴, DataRow dr) { // 获取每天劳动强度对应的能量和营养供应量 string[] 能量 = get能量(comboBox8.Text); double dstart = Convert.ToDouble(能量[0]); double dend = Convert.ToDouble(能量[2]); ScopeDouble d能量 = new ScopeDouble(dstart, dend); ScopeDouble能量 scopeDouble能量 = new ScopeDouble能量(); scopeDouble能量.d蛋白质start = new ScopeDouble(d能量.start * 0.11, d能量.start * 0.13); scopeDouble能量.d蛋白质end = new ScopeDouble(d能量.end * 0.11, d能量.end * 0.13); scopeDouble能量.d脂肪start = new ScopeDouble(d能量.start * 0.20, d能量.start * 0.30); scopeDouble能量.d脂肪end = new ScopeDouble(d能量.end * 0.20, d能量.end * 0.30); scopeDouble能量.d糖start = new ScopeDouble(d能量.start * 0.55, d能量.start * 0.65); scopeDouble能量.d糖end = new ScopeDouble(d能量.end * 0.55, d能量.end * 0.65); int offset = 1; for (int i = 0; i < 7; i++) { List <string> list; do { list = getOneDaySPList(list常用菜肴); }while (!verfiyOneDaySPList(list, scopeDouble能量)); foreach (string item in list) { string 序号 = "菜肴" + offset++; string 菜肴名称 = item; dr[序号] = 菜肴名称; } } }