Example #1
0
 private ThoiKhoaBieu BuildTKB(string namHoc, int buoi, List<MonHoc> dsMonHoc, List<Lop> dsLop, ref List<Phong> dsPhong, List<GiaoVien> dsGiaoVien, List<ThoiKhoaBieu> lstTKB, int l, List<List<ChiTietTKB>> arrTKB, Phong phong)
 {
     ThoiKhoaBieu tkb = new ThoiKhoaBieu();
     tkb.Lop = dsLop[l];
     tkb.NamHoc = namHoc;
     int tietDau = buoi == 1 ? 0 : Int32.Parse(ConfigurationManager.AppSettings["TongSoTietSang"]);
     int tietCuoi = buoi == 1 ? (tietDau + Int32.Parse(ConfigurationManager.AppSettings["TongSoTietSang"])) : (tietDau + Int32.Parse(ConfigurationManager.AppSettings["TongSoTietChieu"]));
     for (int k = 0; k < dsMonHoc.Count; k++)
     {
         MonHoc mh = dsMonHoc[k];
         GiaoVien giaoVien = null;
         List<GiaoVien> dsGV_MH = GetDSGiaoVienTheoMonHoc(mh.MaMonHoc, dsGiaoVien);
         for (int i = 0; i < 7; i++) // 7days: from Monday to Sunday
         {
             for (int j = tietDau; j < tietCuoi; j++)
             {
                 if (arrTKB[i][j].MonHoc == null) // Còn trống
                 {
                     if (KiemTraMonHoc(arrTKB, mh, i, j))
                     {
                         ChiTietTKB ctTKB = new ChiTietTKB();
                         // Xếp giáo viên vào môn học ở ngày i tiết j
                         if ((giaoVien != null && KiemTraGiaoVien(lstTKB, arrTKB, giaoVien, mh.MaMonHoc, i, j)) || GetGiaoVien(lstTKB, arrTKB, dsGV_MH, mh.MaMonHoc, i, j, out giaoVien))
                         {
                             ctTKB.ThoiKhoaBieu = tkb;
                             ctTKB.MonHoc = mh;
                             ctTKB.GiaoVien = giaoVien;
                             ctTKB.Phong = phong;
                             ctTKB.TietBatDau = j;
                             ctTKB.TietKetThuc = j;
                             ctTKB.Thu = i;
                             tkb.ChiTietTKBs.Add(ctTKB);
                             arrTKB[i][j].MonHoc = mh;
                             arrTKB[i][j].GiaoVien = giaoVien;
                             arrTKB[i][j].Phong = phong;
                             arrTKB[i][j].TietBatDau = j;
                             arrTKB[i][j].TietKetThuc = j;
                             arrTKB[i][j].Thu = i;
                         }
                     }
                 }
             }
         }
     }
     return tkb;
 }
Example #2
0
 public string CheckSaveTKB(int maTKB, int thu, int tiet, int maMH, int maGV, int maPhong)
 {
     try
     {
         using (var db = new TKBEntities())
         {
             ChiTietTKB chiTiet = new ChiTietTKB()
             {
                 ThoiKhoaBieu = db.ThoiKhoaBieux.FirstOrDefault(p => p.MaTKB == maTKB),
                 Thu = thu,
                 TietBatDau = tiet,
                 TietKetThuc = tiet,
                 MonHoc = db.MonHocs.FirstOrDefault(p => p.MaMonHoc == maMH),
                 GiaoVien = db.GiaoViens.FirstOrDefault(p => p.MaGiaoVien == maGV),
                 Phong = db.Phongs.FirstOrDefault(p => p.MaPhong == maPhong)
             };
             if (chiTiet != null)
             {
                 ThoiKhoaBieu tkb = db.ThoiKhoaBieux.FirstOrDefault(p => p.MaTKB == maTKB);
                 List<ThoiKhoaBieu> lstTKB = GetTKB(tkb.NamHoc);
                 List<ChiTietTKB> lstChiTiet = GetDanhSachChiTietTKB(tkb.MaTKB);
                 List<List<ChiTietTKB>> arrTKB = new List<List<ChiTietTKB>>();
                 for (int i = 2; i <= 8; i++) // 7days: from Monday to Sunday
                 {
                     List<ChiTietTKB> dsTKB = new List<ChiTietTKB>();
                     for (int j = 1; j <= Int32.Parse(ConfigurationManager.AppSettings["TongSoTietSang"]) + Int32.Parse(ConfigurationManager.AppSettings["TongSoTietChieu"]); j++)
                     {
                         ChiTietTKB ct = new ChiTietTKB();
                         dsTKB.Add(ct);
                     }
                     arrTKB.Add(dsTKB);
                 }
                 foreach (ChiTietTKB ct in lstChiTiet)
                 {
                     int maMonHoc = (int)ct.MonHocReference.EntityKey.EntityKeyValues[0].Value;
                     int maGiaoVien = (int)ct.GiaoVienReference.EntityKey.EntityKeyValues[0].Value;
                     arrTKB[(int)ct.Thu - 2][(int)ct.TietBatDau - 1].MonHoc = db.MonHocs.FirstOrDefault(p => p.MaMonHoc == maMonHoc);
                     arrTKB[(int)ct.Thu - 2][(int)ct.TietBatDau - 1].GiaoVien = db.GiaoViens.FirstOrDefault(p => p.MaGiaoVien == maGiaoVien);
                 }
                 MonHoc mh = db.MonHocs.FirstOrDefault(o => o.MaMonHoc == maMH);
                 if (KiemTraMonHoc(arrTKB, mh, (int)chiTiet.Thu, (int)chiTiet.TietBatDau))
                 {
                     GiaoVien gv = db.GiaoViens.FirstOrDefault(p => p.MaGiaoVien == maGV);
                     if (KiemTraGiaoVien(lstTKB, arrTKB, gv, mh.MaMonHoc, (int)chiTiet.Thu, (int)chiTiet.TietBatDau))
                     {
                         // Kiểm tra phòng (từ từ làm, đuối òi)
                         return "true";
                     }
                     else return "Giáo viên này bận rồi.";
                 }
                 else return "Môn học này không xếp vào đây được";
             }
             else return "Có lỗi xảy ra ở hệ thống";
         }
     }
     catch (Exception ex)
     {
         return ex.ToString();
     }
 }
Example #3
0
 private void AddChiTietTKB(ref ChiTietTKB ct, ChiTietTKB chiTietTKB)
 {
     ct.MaChiTietTKB = chiTietTKB.MaChiTietTKB;
     ct.MonHoc = chiTietTKB.MonHoc;
     ct.GiaoVien = chiTietTKB.GiaoVien;
     ct.Phong = chiTietTKB.Phong;
     ct.ThoiKhoaBieu = chiTietTKB.ThoiKhoaBieu;
     ct.TietBatDau = chiTietTKB.TietBatDau;
     ct.TietKetThuc = chiTietTKB.TietKetThuc;
     ct.Thu = chiTietTKB.Thu;
 }
Example #4
0
        public bool TestCreateTKB()
        {
            List<List<ChiTietTKB>> arrTKB = new List<List<ChiTietTKB>>();
            for (int i = 2; i <= 8; i++) // 7days: from Monday to Sunday
            {
                List<ChiTietTKB> dsTKB = new List<ChiTietTKB>();
                for (int j = 1; j <= Int32.Parse(ConfigurationManager.AppSettings["TongSoTietSang"]) + Int32.Parse(ConfigurationManager.AppSettings["TongSoTietChieu"]); j++)
                {
                    ChiTietTKB ct = new ChiTietTKB();
                    ct.Thu = i;
                    ct.TietBatDau = j;
                    ct.TietKetThuc = j;
                    dsTKB.Add(ct);
                }
                arrTKB.Add(dsTKB);
            }
            using (var db = new TKBEntities())
            {
                //List<Lop> dsLop = db.Lops.ToList();
                List<Lop> dsLop = new List<Lop>();
                dsLop.Add(new Lop() { MaLop = 7, SiSo = 20, CaHoc = "Sáng" });
                dsLop.Add(new Lop() { MaLop = 8, SiSo = 20, CaHoc = "Sáng" });
                List<MonHoc> dsMonHoc = db.MonHocs.ToList();
                List<Phong> dsPhong = db.Phongs.ToList();
                List<GiaoVien> dsGiaoVien = db.GiaoViens.ToList();
                return GenerateTKB("2012", arrTKB, dsMonHoc, dsLop, dsPhong, dsGiaoVien);

            }
        }
Example #5
0
 public bool SaveChiTietTKB(int maTKB, int thu, int tiet, int maMH, int maGV, int maPhong)
 {
     try
     {
         using (var db = new TKBEntities())
         {
             ChiTietTKB chiTiet = new ChiTietTKB()
             {
                 ThoiKhoaBieu = db.ThoiKhoaBieux.FirstOrDefault(p => p.MaTKB == maTKB),
                 MonHoc = db.MonHocs.FirstOrDefault(p => p.MaMonHoc == maMH),
                 GiaoVien = db.GiaoViens.FirstOrDefault(p => p.MaGiaoVien == maGV),
                 Phong = db.Phongs.FirstOrDefault(p => p.MaPhong == maPhong),
                 TietBatDau = tiet,
                 TietKetThuc = tiet,
                 Thu = thu
             };
             db.AddToChiTietTKBs(chiTiet);
             db.SaveChanges();
         }
         return true;
     }
     catch (Exception ex)
     {
         return false;
     }
 }
Example #6
0
        public bool GenerateTKB(string namHoc, List<List<ChiTietTKB>> arrTKB1, List<MonHoc> dsMonHoc, List<Lop> dsLop, List<Phong> dsPhong, List<GiaoVien> dsGiaoVien)
        {
            try
            {
                // Xóa thông tin TKB cũ sẽ sắp mới
                foreach (Lop l in dsLop)
                {
                    DeleteTKB(l.MaLop, namHoc);
                }
                // Lấy danh sách TKB cũ
                List<ThoiKhoaBieu> lstTKB = GetTKB(namHoc);
                List<List<List<ChiTietTKB>>> listTKBs = new List<List<List<ChiTietTKB>>>();
                for (int l = 0; l < dsLop.Count; l++)
                {
                    List<List<ChiTietTKB>> arrTKB = new List<List<ChiTietTKB>>();
                    for (int i = 0; i < arrTKB1.Count; i++)
                    {
                        List<ChiTietTKB> temp = new List<ChiTietTKB>();
                        for (int j = 0; j < arrTKB1[i].Count; j++)
                        {
                            ChiTietTKB ct = new ChiTietTKB();
                            AddChiTietTKB(ref ct, arrTKB1[i][j]);
                            temp.Add(ct);
                        }
                        arrTKB.Add(temp);
                    }

                    // Tìm phòng trống
                    Phong phong = new Phong();
                    int caHoc = dsLop[l].CaHoc == null ? 1 : (dsLop[l].CaHoc.Equals("Sáng") ? 1 : 2);
                    phong = GetPhong(ref dsPhong, (int)dsLop[l].SiSo);
                    ThoiKhoaBieu tkb = BuildTKB(namHoc, caHoc, dsMonHoc, dsLop, ref dsPhong, dsGiaoVien, lstTKB, l, arrTKB, phong);
                    lstTKB.Add(tkb);
                    //Tối ưu TKB
                    listTKBs.Add(OptimizeTKB(arrTKB));
                }

                // Save TKB;
                SaveTKB(lstTKB, dsLop);
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;
        }
Example #7
0
        private void SaveTKB(List<ThoiKhoaBieu> lstTKB, List<Lop> dsLop)
        {
            using (var db = new TKBEntities())
            {

                foreach (ThoiKhoaBieu oTKB in lstTKB)
                {
                    if (oTKB.MaTKB == 0)
                    {
                        ThoiKhoaBieu tkb = new ThoiKhoaBieu()
                        {
                            Lop = db.Lops.FirstOrDefault(p => p.MaLop == oTKB.Lop.MaLop),
                            NamHoc = oTKB.NamHoc
                        };
                        db.AddToThoiKhoaBieux(tkb);
                        db.SaveChanges();
                        foreach (ChiTietTKB ct in oTKB.ChiTietTKBs.ToList())
                        {
                            ChiTietTKB chiTiet = new ChiTietTKB()
                            {
                                ThoiKhoaBieu = tkb,
                                MonHoc = db.MonHocs.FirstOrDefault(p => p.MaMonHoc == ct.MonHoc.MaMonHoc),
                                GiaoVien = db.GiaoViens.FirstOrDefault(p => p.MaGiaoVien == ct.GiaoVien.MaGiaoVien),
                                Phong = db.Phongs.FirstOrDefault(p => p.MaPhong == ct.Phong.MaPhong),
                                TietBatDau = ct.TietBatDau + 1,
                                TietKetThuc = ct.TietKetThuc + 1,
                                Thu = ct.Thu + 2
                            };
                            db.AddToChiTietTKBs(chiTiet);
                            db.SaveChanges();
                        }
                    }
                }
            }
        }