private void DanhGiaHocLucTheoNam() { List <KetQuaHocLucInfo> lstKQ = new List <KetQuaHocLucInfo>(); //Khởi tạo các đối tượng get dữ liệu var maLop = cmbLop.SelectedValue.ToString(); var namHoc = cmbNamHoc.SelectedValue.ToString(); String[] HocLuc = { "Giỏi", "Khá", "Trung Bình", "Yếu", "Kém" }; float[] diemCanDuoi = { 8, 6.5f, 5, 3.5f, 0 }; HocSinhData m_HocSinhData = new HocSinhData(); MonHocData m_MonHocData = new MonHocData(); DiemCtrl m_DiemCtrl = new DiemCtrl(); DataTable m_DT = m_MonHocData.LayDsMonHoc(namHoc, maLop); List <HocSinhInfo> lstHS = m_HocSinhData.LayDSHocSinhTheoLop(namHoc, maLop); //Tính điểm TB và xếp loại học lực cho mỗi học sinh trong lớp foreach (HocSinhInfo hs in lstHS) { //Khởi tạo các biến điểm cho mỗi học sinh float tongDiem = 0; float tongDiemCacMon = 0; float diemTBTungMon = 0; int tongHeSoCacMon = 0; String xepLoai = ""; float[] arrayDiemTBTungMon = new float[m_DT.Rows.Count]; int soMonHoc = 0; //Tính điểm trung bình foreach (DataRow row in m_DT.Rows) { diemTBTungMon = m_DiemCtrl.DiemTrungBinhMonCaNam(hs.MaHocSinh, row["MaMonHoc"].ToString(), namHoc, maLop); arrayDiemTBTungMon[soMonHoc++] = diemTBTungMon; tongDiemCacMon += diemTBTungMon * Convert.ToInt32(row["HeSo"].ToString()); tongHeSoCacMon += Convert.ToInt32(row["HeSo"].ToString()); } if (tongHeSoCacMon > 0) { tongDiem = tongDiemCacMon / tongHeSoCacMon; } else { tongDiem = 0; } //Xếp loại học lực //Tìm điểm TB Môn nhỏ nhất float diemTBMonNhoNhat = arrayDiemTBTungMon[0]; for (int i = 1; i < arrayDiemTBTungMon.Length - 1; i++) { diemTBMonNhoNhat = Math.Min(diemTBMonNhoNhat, arrayDiemTBTungMon[i]); } //Xét học lực theo điểm TB và điểm TB môn nhỏ nhất for (int i = 0; i < 4; i++) { if (tongDiem >= diemCanDuoi[i] && diemTBMonNhoNhat >= diemCanDuoi[i + 1]) { xepLoai = HocLuc[i]; break; } } if (xepLoai == "") { xepLoai = HocLuc[4].ToString(); } lstKQ.Add(new KetQuaHocLucInfo(hs.MaHocSinh, hs.HoTen, tongDiem, xepLoai)); } //Hiển thị ra gridview bSKQCNTH.DataSource = lstKQ; gvHocLuc.DataSource = bSKQCNTH; }