public LichGiangDay[] CreateTKB_Lop(LopHoc lop, int MaNamHoc, string MaHocKy) { LichGiangDay[] TKB_Khoi = new LichGiangDay[_SOTIETHOCTRONGTUAN]; // khởi tạo số tiết tối đa trong tuần là 70 tiết List <int> SoTietHocTrongTuan = new List <int>(); for (int i = 0; i < _SOTIETHOCTRONGTUAN; i++) { SoTietHocTrongTuan.Add(i); } Random rand = new Random(); int index = 0; for (int i = 0; i < _ListChuongTrinhHoc.Count; i++) { if (_ListChuongTrinhHoc[i].maKhoi.Equals(lop.MaKhoi.ToString())) // lấy chương trình học đúng với lớp { LayDanhSachGiaoVienTheoMon(_ListChuongTrinhHoc[i]); //List<GiaoVien> listGiaoVienCuoiCungTheoMon = LayDanhSachNhungGiaoVienCuoiTheoMon(_ListGiaoVien); for (int j = 0; j < _ListGiaoVien.Count; j++) { if (SoTietHocTrongTuan.Count > 0) { index = rand.Next(0, SoTietHocTrongTuan.Count); LichGiangDay lich = new LichGiangDay(); CT_LichGiangDay ct = new CT_LichGiangDay(); lich.MaHocKy = MaHocKy; lich.MaNamHoc = MaNamHoc; lich.MaPhongHoc = int.Parse(lop.MaPhong); lich.MaTietHoc = SoTietHocTrongTuan.Count() % 5 + 1; lich.MaMonHoc = _MonHocService.LayMonHocTheoMaGiaoVien(_ListGiaoVien[j].PersonId).First().MaMonHoc; lich.MaLopHoc = lop.MaLopHoc; int thu = (SoTietHocTrongTuan.Count() / 5 + 2); if (thu >= 7) { thu = 7; } lich.Thu = "Thu " + thu; ct.MaGiaoVien = _ListGiaoVien[j].PersonId; ct.MaLichGiangDay = lich.MaLichGiangDay; ct.NgayBatDau = new DateTime(2016, 1, 20); ct.NgayKetThuc = new DateTime(2016, 6, 12); lich.dsCT_LichGiangDay.Add(ct); TKB_Khoi[SoTietHocTrongTuan[index]] = lich; SoTietHocTrongTuan.RemoveAt(index); } } break; } } return(TKB_Khoi); }
/// <summary> /// Lập thời khóa biểu cho toàn trường /// </summary> /// <returns></returns> public LichGiangDay[][] CreateTKB_ToanTruong(int MaNamHoc, string MaHocKy) { // Cấp phát vùng nhớ LichGiangDay[][] TKB_ToanTruong = new LichGiangDay[_ListLop.Count][]; for (int i = 0; i < TKB_ToanTruong.Count(); i++) { TKB_ToanTruong[i] = CreateTKB_Lop(_ListLop[i], MaNamHoc, MaHocKy); } return(TKB_ToanTruong); }