i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN NGỌC HIỆP XÂY DỰNG HỆ HỖ TRỢ XÁC ĐỊNH THỰC ĐƠN KHẨU PHẨN DINH DƯỠNG PHỊNG BỆNH BÉO PHÌ CHO TRẺ DƯỚI TUỔI Chuyên ngành: Khoa học máy tính Mã số: 848 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS NGUYỄN HẢI MINH THÁI NGUYÊN, 2018 ii LỜI CẢM ƠN Để hồn thành đề tài luận văn bên cạnh nỗ lực cố gắng thân, tác giả nhận động viên ủng hộ gia đình, bạn bè hướng dẫn nhiệt tình thầy suốt thời gian học tập, nghiên cứu Tôi xin cảm ơn tồn thể q thầy ngồi trường Đại học Công nghệ Thông tin Truyền thông - Đại học Thái Ngun Các thầy, tận tình truyền đạt kiến thức quý báu tạo điều kiện thuận lợi cho tác giả suốt trình học tập nghiên cứu thực luận văn Tôi xin trân trọng cảm ơn Ban giám hiệu trường Cao đẳng Sư phạm Nam Định tạo điều kiện thuận lợi để theo học lớp Cao học Xin trân trọng cảm ơn trường Mầm non Sao Mai - Số Huỳnh Thúc Kháng, phường Trần Hưng Đạo, thành phố Nam Định không ngừng hỗ trợ cung cấp số liệu cho tác giả thời gian nghiên cứu luận văn Em xin chân thành bày tỏ lòng biết ơn sâu sắc đến thầy TS Nguyễn Hải Minh - người hướng dẫn khoa học tận tình giúp đỡ tác giả trình thực luận văn Cuối cùng, xin chân thành cảm ơn đến gia đình, anh chị bạn đồng nghiệp hỗ trợ cho nhiều suốt trình học tập, nghiên cứu thực luận văn Thái Nguyên, ngày … tháng … năm 2018 Tác giả luận văn Nguyễn Ngọc Hiệp iii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình tơi nghiên cứu thơng qua tài liệu tham khảo phân tích Kết nghiên cứu, số liệu nêu luận văn trung thực chưa công bố cách trọn vẹn cơng trình khác iv MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN iii MỤC LỤC iv BẢNG CÁC CHỮ VIẾT TẮT TRONG LUẬN VĂN viii DANH SÁCH CÁC BẢNG ix DANH SÁCH CÁC HÌNH VẼ ix CHƯƠNG 1: TỔNG QUAN VỀ CÁC CÁCH TIẾP CẬN GIẢI BÀI TOÁN 1.1 Đặt vấn đề 1.2 Các hướng nghiên cứu giải toán 1.2.1 Sử dụng kĩ thuật Trí tuệ nhân tạo (AI) 1.2.1.1 Các phương pháp tìm kiếm cổ điển 1.2.1.2 Giải thuật di truyền (GA) 1.2.1.3 Mạng Neural 1.2.2 Sử dụng kĩ thuật Tập mờ (FL) 1.2.3 Sử dụng kết hợp AI FL 11 1.2.4 Sử dụng hệ hỗ trợ định 12 1.2.4.1 Khái niệm hệ hỗ trợ định (DSS) 12 1.2.4.2 Các thành phần hệ hỗ trợ định 13 1.2.4.3 Mơ hình định 13 1.2.4.4 Đặc điểm hệ hỗ trợ định (DSS) 13 1.2.4.5 Phân loại hệ hỗ trợ định 15 CHƯƠNG 2: CƠ SỞ LÍ THUYẾT XÁC ĐỊNH KHẨU PHẦN ĂN 18 2.1 Năng lượng 18 2.1.1 Nguồn cung cấp lượng cho thể 18 2.1.2 Năng lượng cần thiết cho chuyển hóa 19 2.1.3 Nhu cầu lượng hàng ngày 21 v 2.1.4 Cách tính nhu cầu lượng cho ngày 22 2.2 Nhu cầu chất dinh dưỡng cần thiết thể 24 2.2.1 Protein 24 2.2.2 Lipit 25 2.2.3 Gluxit 26 2.2.4 Các chất khoáng 27 2.2.4.1 Canxi (Ca) 27 2.2.4.2 Photpho (P) 28 2.2.4.3 Kali (K) 29 2.2.4.4 Natri (Na) 29 2.2.4.5 Sắt (Fe) 30 2.2.4.6 Iot (I) 31 2.2.4.7 Các yếu tố vi lượng khác 32 2.2.5 Vitamin 33 2.2.5.1 Vitamin A (Retinol) 33 2.2.5.2 Vitamin D 34 2.2.5.3 Vitamin B1 (Thiamin) 35 2.2.5.4 Vitamin B2 (Riboflavin) 36 2.2.5.5 Vitamin PP (Niaxin) 37 2.2.5.6 Vitamin C (axit ascorbic) 37 2.3 Xây dựng phần ăn 38 2.3.1 Khẩu phần gì? 38 2.3.2 Chế độ ăn gì? 38 2.3.3 Thực đơn gì? 38 2.3.4 Khẩu phần ăn phải đảm bảo cân đối hợp lí 38 2.3.5 Các bước tiến hành xây dựng phần ăn 40 2.3.6 Nguyên tắc xây dựng thực đơn 41 vi 2.4 Tổng quan bệnh béo phì 41 2.4.1 Khái niệm bệnh béo phì 41 2.4.2 Phương pháp xác định béo phì 41 2.4.2.1 Dựa vào số BMI 41 2.4.2.2 Dựa vào Chu vi vòng eo 42 2.4.3 Thực trạng béo phì 42 2.4.3.1 Thực trạng béo phì giới 42 2.4.3.2 Thực trạng béo phì Việt Nam 43 2.4.4 Những yếu tố, nguy béo phì trẻ em 44 2.4.4.1 Cơ chế bệnh sinh béo phì 44 2.4.4.2 Yếu tố di truyền 44 2.4.4.3 Khẩu phần thói quen ăn uống trẻ béo phì 45 2.4.4.4 Hoạt động thể chất trẻ béo phì 46 2.4.4.5 Một số nguyên nhân khác 46 2.4.5 Hậu béo phì 47 2.4.5.1 Ảnh hưởng đến sức khỏe 47 2.4.5.2 Tăng nguy mắc bệnh tử vong 48 2.4.5.3 Hậu kinh tế xã hội béo phì 48 2.4.6 Giải pháp phòng chống béo phì trẻ em 49 2.4.6.1 Về chế độ ăn trẻ 49 2.4.6.2 Về chế độ vận động trẻ 50 CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 51 3.1 Phân tích, thiết kế 51 3.2 Mơ hình tốn học toán 51 3.3 Xác định BMI [4] 55 3.4 Xác định lượng đưa vào/ngày 56 3.5 Xây dựng sở liệu thực phẩm dinh dưỡng 56 vii 3.6 Kết cài đặt 58 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 65 viii BẢNG CÁC CHỮ VIẾT TẮT TRONG LUẬN VĂN AI Artificial Intelligence Trí tuệ nhân tạo BMI Body Mass Index Chỉ số khối thể DSS Decision Support System Hệ hỗ trợ định FL Fuzzy Logic Logic mờ g Gam = Gram Đơn vị đo G Gluxit Chất bột Genetic Algorithms Giải thuật di truyền GA ISDN Integrated Services Digital Network Mạng số tích hợp đa dịch vụ kg Kilogam Đơn vị đo L Lipit Chất béo mg Milligram Đơn vị đo mcg Microgram Đơn vị đo Protein Chất đạm Virtual Private Network Mạng riêng ảo P VPN WHO World Health Organization Tổ chức Y tế giới ix DANH SÁCH CÁC BẢNG Bảng 1.1: So sánh tiêu chí mạng nơron logic mờ 12 Bảng 2.1: Giá trị sinh nhiệt chất 19 Bảng 2.2: Nhu cầu lượng (tính theo kcal/ngày) 22 Bảng 2.3: Cơng thức tính chuyển hóa lượng dựa theo cân nặng 23 Bảng 2.4: Hệ số nhu cầu lượng theo tính chất lao động 23 Bảng 2.5: Nhu cầu Canxi 28 Bảng 2.6: Nhu cầu Photpho 29 Bảng 2.7: Nhu cầu Sắt 31 Bảng 2.8: Nhu cầu Iot 32 Bảng 2.9: Nhu cầu Vitamin A 34 Bảng 2.10: Thực phẩm thông dụng giàu Vitamin A (Hàm lượng 100g thực phẩm ăn được) 34 Bảng 2.11: Nhu cầu Vitamin D 35 Bảng 2.12: Nhu cầu Vitamin B1 36 Bảng 2.13: Nhu cầu Vitamin B2 36 Bảng 2.14: Nhu cầu Vitamin PP 37 Bảng 2.15: Nhu cầu Vitamin C 38 Bảng 2.16: Nhu cầu khuyến nghị lượng lứa tuổi nhà trẻ 39 Bảng 2.17: Bảng số BMI chuẩn theo WHO 42 Bảng 2.18: Hậu béo phì 48 x DANH SÁCH CÁC HÌNH VẼ Hình 1.1: Cấu trúc tổng qt mơ hình 13 Hình 2.1: Mơ hình Bom calorie 18 Hình 2.2: Sơ đồ sử dụng Protein từ thức ăn thể 24 Hình 3.1: Chỉ số BMI cho trẻ em 55 Hình 3.2: Giao diện chương trình 59 Hình 3.3: Giao diện Module Thực phẩm 59 Hình 3.4: Giao diện Module Chỉ số BMI 60 Hình 3.5: Giao diện Module Chuyển hóa 60 Hình 3.6: Giao diện Module Thực đơn 61 71 decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong2 = Math.Round(max, 0); } if (thucDon.MonAn3.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn3.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong3 = Math.Round(max, 0); } if (thucDon.MonAn4.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn4.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong4 = Math.Round(max, 0); } if (thucDon.MonAn5.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn5.ID); decimal max = 0; 72 decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong5 = Math.Round(max, 0); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(thucDon.hocSinh.MaHocSinh, thucDon.Thu)) { _thucDonBUS.CapNhat(thucDon); } else { _thucDonBUS.Them(thucDon); } } } HienThiLai(); } private void gridViewThucDon_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) { e.ExceptionMode = ExceptionMode.NoAction; } private void gridViewThucDon_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { } private void gridViewThucDon_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) { DataRow dr = gridViewThucDon.GetDataRow(e.RowHandle); var thucDon = new ThucDon(); thucDon.hocSinh.MaHocSinh = dr["MaHocSinh"].ToString(); thucDon.Thu = dr["Thu"].ToString(); thucDon.MonAn1.ID = dr["MonAn1"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn1"]); thucDon.KhoiLuong1 = dr["KhoiLuong1"] is DBNull ? : Convert.ToDecimal(dr["KhoiLuong1"]); thucDon.MonAn2.ID = dr["MonAn2"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn2"]); 73 thucDon.KhoiLuong2 = dr["KhoiLuong2"] is DBNull ? : Convert.ToDecimal(dr["KhoiLuong2"]); thucDon.MonAn3.ID = dr["MonAn3"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn3"]); thucDon.KhoiLuong3 = dr["KhoiLuong3"] is DBNull ? : Convert.ToDecimal(dr["KhoiLuong3"]); thucDon.MonAn4.ID = dr["MonAn4"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn4"]); thucDon.KhoiLuong4 = dr["KhoiLuong4"] is DBNull ? : Convert.ToDecimal(dr["KhoiLuong4"]); thucDon.MonAn5.ID = dr["MonAn5"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn5"]); thucDon.KhoiLuong5 = dr["KhoiLuong5"] is DBNull ? : Convert.ToDecimal(dr["KhoiLuong5"]); //{ // hocSinh = // { // MaHocSinh = dr["TenHocSinh"].ToString(), // //TenHocSinh = dr["TenHocSinh"].ToString() // }, // Thu = (dr[1]).ToString(), // MonAn1 = // { // //ID = dr[2] is DBNull ? -1 : Convert.ToInt32(dr[2]) // ID = dr["MonAn1"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn1"]) // }, // KhoiLuong1 = dr["KhoiLuong1"] is DBNull ? -1 : Convert.ToDecimal(dr["KhoiLuong1"]), // MonAn2 = // { // ID = dr["MonAn2"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn2"]) // }, // KhoiLuong2 = dr["KhoiLuong2"] is DBNull ? -1 : Convert.ToDecimal(dr["KhoiLuong2"]), // MonAn3 = // { // ID = dr["MonAn3"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn3"]) // }, // KhoiLuong3 = dr["KhoiLuong3"] is DBNull ? -1 : Convert.ToDecimal(dr["KhoiLuong3"]), // MonAn4 = // { // ID = dr["MonAn4"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn4"]) // }, // KhoiLuong4 = dr["KhoiLuong4"] is DBNull ? -1 : Convert.ToDecimal(dr["KhoiLuong4"]), // MonAn5 = // { // ID = dr["MonAn5"] is DBNull ? -1 : Convert.ToInt32(dr["MonAn5"]) // }, // KhoiLuong5 = dr["KhoiLuong5"] is DBNull ? -1 : Convert.ToDecimal(dr["KhoiLuong5"]) //}; HocSinh hs = _hocSinhBUS.LayHoSo_HocSinh(thucDon.hocSinh.MaHocSinh); DinhDuongCanThiet obj = _dinhDuongBUS.LayDT_ByTuoi(hs.Tuoi); KcalNgay = hs.KcalNgay; Lipit = KcalNgay * obj.Lipit / 100; Gluxit = KcalNgay * obj.Gluxit / 100; Protein = KcalNgay * obj.Protein / 100; int tongMon = 0; if(thucDon.MonAn1.ID > 0) { tongMon++; } if(thucDon.MonAn2.ID > 0) { tongMon++; } if (thucDon.MonAn3.ID > 0) 74 { tongMon++; } if (thucDon.MonAn4.ID > 0) { tongMon++; } if (thucDon.MonAn5.ID > 0) { tongMon++; } if (tongMon == 0) return; decimal DinhDuongTungMon = KcalNgay / tongMon; decimal LipitTungMon = Lipit / tongMon; decimal GluxitTungMon = Gluxit / tongMon; decimal ProteinTungMon = Protein / tongMon; if (thucDon.MonAn1.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn1.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong1 = Math.Round(max, 0); } if (thucDon.MonAn2.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn2.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if(tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if(tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; 75 if(tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong2 = Math.Round(max, 0); } if (thucDon.MonAn3.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn3.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong3 = Math.Round(max, 0); } if (thucDon.MonAn4.ID > 0) { ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn4.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong4 = Math.Round(max, 0); } if (thucDon.MonAn5.ID > 0) { 76 ThucPham = _thucPhamBUS.LayThucPham_ByID(thucDon.MonAn5.ID); decimal max = 0; decimal kgLipit = LipitTungMon / 9; if (tp.Lipit != 0) { decimal klg1 = (100 * kgLipit) / tp.Lipit; if (max < klg1) max = klg1; } decimal kgprotein = ProteinTungMon / 4; if (tp.Protein != 0) { decimal klg2 = (100 * kgprotein) / tp.Protein; if (max < klg2) max = klg2; } decimal kgGluxit = GluxitTungMon / 4; if (tp.Gluxit != 0) { decimal klg3 = (100 * kgGluxit) / tp.Gluxit; if (max < klg3) max = klg3; } thucDon.KhoiLuong5 = Math.Round(max, 0); } if(_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(thucDon.hocSinh.MaHocSinh, thucDon.Thu)) { _thucDonBUS.CapNhat(thucDon); } else { _thucDonBUS.Them(thucDon); } // int dau = Convert.ToInt32(_thucPhamBUS.Lay_MaDauTien()); // int cuoi = Convert.ToInt32(_thucPhamBUS.Lay_MaCuoiCung()); // Random rd = new Random(); // ThucPham thucPham = _thucPhamBUS.LayThucPham_ByID(rd.Next(dau, cuoi)); HienThiLai(); } public void HienThiLai() { dt = new DataTable(); dt.Columns.Add("MaHocSinh"); dt.Columns.Add("TenHocSinh"); dt.Columns.Add("Thu"); dt.Columns.Add("MonAn1"); dt.Columns.Add("KhoiLuong1"); dt.Columns.Add("MonAn2"); dt.Columns.Add("KhoiLuong2"); dt.Columns.Add("MonAn3"); dt.Columns.Add("KhoiLuong3"); dt.Columns.Add("MonAn4"); dt.Columns.Add("KhoiLuong4"); dt.Columns.Add("MonAn5"); dt.Columns.Add("KhoiLuong5"); for (int i = 0; i < gridViewHocSinh.RowCount; i++) { 77 //Int32 selectedRowCount = gridViewHocSinh.Rows.GetRowCount(DataGridViewElementStates.Selected); if (gridViewHocSinh.IsRowSelected(i)) { string maHocSinh = gridViewHocSinh.GetRowCellValue(i, "MaHocSinh").ToString(); if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ hai") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ hai"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ hai"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ hai"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ ba") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ ba"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ ba"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ ba"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; 78 dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ tư") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ tư"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ tư"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ tư"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ năm") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ năm"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ năm"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ năm"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; 79 dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ sáu") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ sáu"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ sáu"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ sáu"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Thứ bảy") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ bảy"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Thứ bảy"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Thứ bảy"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; 80 dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } if (_thucDonBUS.KiemTraTonTai_MaHocSinh_Thu(maHocSinh, "Chủ nhật") == false) { DataRow dr = dt.NewRow(); dr[0] = maHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Chủ nhật"; dt.Rows.Add(dr); } else { ThucDon thucDon = _thucDonBUS.LayThucDon_maHoSinh_thu(maHocSinh, "Chủ nhật"); DataRow dr = dt.NewRow(); dr[0] = thucDon.hocSinh.MaHocSinh; HocSinh obj = _hocSinhBUS.LayHoSo_HocSinh(maHocSinh); dr[1] = obj.TenHocSinh; dr[2] = "Chủ nhật"; dr[3] = thucDon.MonAn1.ID; dr[4] = thucDon.KhoiLuong1; dr[5] = thucDon.MonAn2.ID; dr[6] = thucDon.KhoiLuong2; dr[7] = thucDon.MonAn3.ID; dr[8] = thucDon.KhoiLuong3; dr[9] = thucDon.MonAn4.ID; dr[10] = thucDon.KhoiLuong4; dr[11] = thucDon.MonAn5.ID; dr[12] = thucDon.KhoiLuong5; dt.Rows.Add(dr); } } } gridControlThucDon.DataSource = dt; } private void gridLookUpNamHoc_EditValueChanged(object sender, EventArgs e) { CapNhatListLop(); } private void simpleThucDon_Click(object sender, EventArgs e) { HienThiLai(); } private void treeListLopHoc_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { HienThi_Lai_BangHocSinh(); } 81 private void gridViewHocSinh_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { if (gridViewHocSinh.FocusedRowHandle < || gridViewHocSinh.FocusedRowHandle >= gridViewHocSinh.RowCount) { return; } lblHoTen.Text = gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "TenHocSinh").ToString(); lblTuoi.Text = gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "Tuoi").ToString(); lblGioiTinh.Text = gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "GioiTinh").ToString(); KcalNgay = Convert.ToDecimal(gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "KcalNgay")); lblKcal.Text = gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "KcalNgay").ToString(); DinhDuongCanThiet obj = _dinhDuongBUS.LayDT_ByTuoi(Convert.ToInt32(gridViewHocSinh.GetRowCellValue(e.FocusedRowHan dle, "Tuoi"))); Lipit = KcalNgay * obj.Lipit / 100; Gluxit = KcalNgay * obj.Gluxit / 100; Protein = KcalNgay * obj.Protein / 100; lblProtein.Text = Protein.ToString(); lblLipit.Text = Lipit.ToString(); lblGluxit.Text = Gluxit.ToString(); string bmi = gridViewHocSinh.GetRowCellValue(e.FocusedRowHandle, "BMI").ToString(); // ChiSoBMI obje = _chiSoBUS.LayDT_ByChiSo(Convert.ToDecimal(bmi)); labelControl8.Text = obje.Loai; //spinEditDen.EditValue = gridViewBMI.GetRowCellValue(e.FocusedRowHandle, "TuoiDen"); } } } Form Thực phẩm using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using DevExpress.XtraEditors; using Foods.BussinessLogicLayer; using Foods.Utilities; using DevExpress.XtraGrid.Views.Base; using Foods.Entity; namespace Foods { public partial class FrmThucPham : DevExpress.XtraEditors.XtraForm { 82 private readonly ThucPhamBUS _thucPhamBUS; private bool IsAddButton; private bool IsDeleteButton; int id; public FrmThucPham() { InitializeComponent(); _thucPhamBUS = new ThucPhamBUS(); IsAddButton = IsDeleteButton = true; } private void HienThi_DSLop() { gridControlThucPham.DataSource = _thucPhamBUS.LayDT_DanhSach(GridUtil.GetDisplayMember(gridLookUpLoai)); DisableControls(editing: false); } private void FrmLopHoc_Load(object sender, EventArgs e) { HienThi_DSLop(); Load_Loai(); } private void Load_Loai() { DataTable dt = new System.Data.DataTable(); dt.Columns.Add("LoaiThucPham"); DataTable dtLoai = _thucPhamBUS.LayDT_DanhSach(); foreach (DataRow dr3 in dtLoai.Rows) { bool kt = true; string loai = dr3["LoaiThucPham"].ToString(); foreach (DataRow dr2 in dt.Rows) { if (loai == dr2["LoaiThucPham"].ToString()) { kt = false; break; } } if(kt) { DataRow dr = dt.NewRow(); dr[0] = loai; dt.Rows.Add(dr); } } GridUtil.SetDataSource(gridLookUpLoai, dt, "LoaiThucPham", "LoaiThucPham", 0); } private void BtnHienThiAll_Click(object sender, EventArgs e) { //gridLookUpNamHoc.Text = ""; //gridLookUpKhoiLop.Text = ""; gridLookUpLoai.Text = ""; gridControlThucPham.DataSource = _thucPhamBUS.LayDT_DanhSach(); } private void ResetControl() 83 { textTenThucPham.Text = ""; textEditLoaiThucPham.Text = ""; spinEditNangLuong.EditValue = 0; spinEditProtein.EditValue = 0; spinEditGluxit.EditValue = 0; spinEditLipit.EditValue = 0; } private void gridLookUpNamHoc_EditValueChanged(object sender, EventArgs e) { HienThi_DSLop(); } private void gridLookUpKhoiLop_EditValueChanged(object sender, EventArgs e) { HienThi_DSLop(); } private void DisableControls(bool editing) { barButtonThoat.Enabled = !editing; gridControlThucPham.Enabled = !editing; gridLookUpLoai.Enabled = !editing; IsAddButton = !editing; IsDeleteButton = !editing; barButtonThemMoi.Caption = editing ? "Không nhập" : "Thêm mới"; barButtonXoa.Caption = editing ? "Nhập lại" : "Xóa"; if (!editing) { if (gridViewThucPham.RowCount > 0) { gridViewLopHoc_FocusedRowChanged(this, new FocusedRowChangedEventArgs(0, 0)); } else { textEditLoaiThucPham.Text = ""; textTenThucPham.Text = ""; spinEditNangLuong.EditValue = 0; spinEditProtein.EditValue = 0; spinEditGluxit.EditValue = 0; spinEditLipit.EditValue = 0; } } } private void barButtonHuongDan_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { FrmImportData f = new FrmImportData(); f.ShowDialog(); } private void gridViewLopHoc_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) { 84 if (gridViewThucPham.FocusedRowHandle < || gridViewThucPham.FocusedRowHandle >= gridViewThucPham.RowCount) { return; } textEditLoaiThucPham.Text = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "LoaiThucPham").ToString(); textTenThucPham.Text = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "TenThucPham").ToString(); spinEditNangLuong.EditValue = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "NangLuong"); spinEditProtein.EditValue = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "Protein"); spinEditGluxit.EditValue = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "Gluxit"); spinEditLipit.EditValue = gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "Lipit"); id = Convert.ToInt32(gridViewThucPham.GetRowCellValue(e.FocusedRowHandle, "ID")); } private void barButtonThemMoi_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (IsAddButton) { DisableControls(true); ResetControl(); } else { DisableControls(false); } } private void barButtonLuu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (textTenThucPham.Text == "") { MsgboxUtil.Error("Bạn chưa nhập tên thực phẩm!"); textTenThucPham.Focus(); return; } if (textEditLoaiThucPham.Text == "") { MsgboxUtil.Error("Bạn chưa nhập loại thực phẩm!"); textEditLoaiThucPham.Focus(); return; } ThucPham thucPham = new ThucPham(); thucPham.LoaiThucPham = textEditLoaiThucPham.Text; thucPham.TenThucPham = textTenThucPham.Text; thucPham.NangLuong = Convert.ToDecimal(spinEditNangLuong.EditValue); thucPham.Protein = Convert.ToDecimal(spinEditProtein.EditValue); thucPham.Lipit = Convert.ToDecimal(spinEditLipit.EditValue); thucPham.Gluxit = Convert.ToDecimal(spinEditGluxit.EditValue); thucPham.ID = id; if (_thucPhamBUS.KiemTonTai(thucPham.TenThucPham)) { _thucPhamBUS.CapNhat(thucPham); 85 MsgboxUtil.Success("Đã cập nhật " + textTenThucPham.Text + " thành công!"); } else { if (_thucPhamBUS.Them(thucPham)) { MsgboxUtil.Success("Đã tạo " + textTenThucPham.Text + " thành công!"); } } HienThi_DSLop(); } private void barButtonXoa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (!IsDeleteButton) { ResetControl(); return; } if (_thucPhamBUS.KiemTonTai(textTenThucPham.Text)) { if (MsgboxUtil.YesNo("Bạn có muốn xóa hay khơng?") == DialogResult.No) { return; } _thucPhamBUS.Xoa(id); MsgboxUtil.Success("Đã xóa thành công!"); HienThi_DSLop(); } } private void barButtonThoat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Close(); } } } ... phục thực trạng chế độ dinh dưỡng hợp lí phịng bệnh béo phì cho trẻ em nay, tác giả tiến hành nghiên cứu đề tài: ? ?Xây dựng hệ hỗ trợ xác định thực đơn phần dinh dưỡng phịng bệnh béo phì cho trẻ tuổi? ??... Sử dụng hệ hỗ trợ định 12 1.2.4.1 Khái niệm hệ hỗ trợ định (DSS) 12 1.2.4.2 Các thành phần hệ hỗ trợ định 13 1.2.4.3 Mơ hình định 13 1.2.4.4 Đặc điểm hệ hỗ trợ định (DSS)... Trong toán xác định thực đơn phần dinh dưỡng phòng bệnh béo phì cho trẻ, liệu đầu vào không rõ ràng Mỗi món ăn bao gồm nhiều thành phần dinh dưỡng như: chất đạm, chất béo, calo, … phần lại có