示例#1
0
 private void CapNhatTKB(int row, int column, GiangDay monhoc, List <MONHOC> listMon)
 {
     for (int k = 0; k < listMon.Count; k++)
     {
         for (int i = 0; i < _QuanTheBanDau[row].Count(); i++)
         {
             if (_QuanTheBanDau[row][i] != null && _QuanTheBanDau[row][i].giaoVien.MaMonHoc.Equals(listMon[k].MAMONHOC))
             {
                 if (KiemTraMonHocCoBiTrung(monhoc, _QuanTheBanDau, i) == 0 && KiemTraMonHocCoBiTrung(_QuanTheBanDau[row][i], _QuanTheBanDau, column) == 0)
                 {
                     GiangDay temp = monhoc;
                     _QuanTheBanDau[row][column] = _QuanTheBanDau[row][i];
                     _QuanTheBanDau[row][i]      = temp;
                     return;
                 }
             }
             else if (_QuanTheBanDau[row][i] == null && KiemTraMonHocCoBiTrung(monhoc, _QuanTheBanDau, i) == 0)
             {
                 _QuanTheBanDau[row][i]      = monhoc;
                 _QuanTheBanDau[row][column] = null;
                 return;
             }
         }
     }
 }
示例#2
0
        private GiangDay[][] _QuanTheBanDau;               // thời khóa biểu

        public GiaiThuatLapThoiKhoaBieu(List <GIAOVIEN> ListGiaoVien, List <MONHOC> ListMonHoc, List <LOP> ListLop, List <GIANGDAY> ListGiangDay)
        {
            this._ListGiaoVien = ListGiaoVien;
            this._ListLop      = ListLop;
            this._ListMonHoc   = ListMonHoc;

            _listPhanCongGiangDay = new List <GiangDay>();
            for (int i = 0; i < ListGiangDay.Count; i++)
            {
                for (int j = 0; j < ListGiaoVien.Count; j++)
                {
                    if (ListGiaoVien[j].MaGiaoVien.Equals(ListGiangDay[i].MaGiaoVien))
                    {
                        GiangDay temp = new GiangDay(ListGiangDay[i], ListGiaoVien[j], "");
                        _listPhanCongGiangDay.Add(temp);
                        break;
                    }
                }
            }

            // khoi tao ctr hoc cho khoi
            _ListChuongTrinhHoc = new List <ChuongTrinhHoc>();
            _ListChuongTrinhHoc.Add(TinhSoTietHocTrongTuan(KHOI.KHOI_10, _ListMonHoc));
            _ListChuongTrinhHoc.Add(TinhSoTietHocTrongTuan(KHOI.KHOI_11, _ListMonHoc));
            _ListChuongTrinhHoc.Add(TinhSoTietHocTrongTuan(KHOI.KHOI_12, _ListMonHoc));
        }
示例#3
0
        private GiangDay[] CreateTKB_Lop(LOP lop)
        {
            GiangDay[] TKB_Khoi           = new GiangDay[_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))                                                   // lấy chương trình học đúng với lớp
                {
                    List <GiangDay> ListSoTietMonHocTrongTuan = layDanhSachGiaoVienDayLop(_ListChuongTrinhHoc[i], lop); // copy tạo list mới

                    for (int j = 0; j < ListSoTietMonHocTrongTuan.Count; j++)
                    {
                        if (SoTietHocTrongTuan.Count > 0)
                        {
                            index = rand.Next(0, SoTietHocTrongTuan.Count);
                            TKB_Khoi[SoTietHocTrongTuan[index]] = ListSoTietMonHocTrongTuan[j];
                            SoTietHocTrongTuan.RemoveAt(index);
                        }
                    }

                    break;
                }
            }

            return(TKB_Khoi);
        }
示例#4
0
        /// <summary>
        /// Lập thời khóa biểu cho toàn trường
        /// </summary>
        /// <returns></returns>
        private GiangDay[][] CreateTKB_ToanTruong()
        {
            // Cấp phát vùng nhớ
            GiangDay[][] TKB_ToanTruong = new GiangDay[_ListLop.Count][];

            for (int i = 0; i < TKB_ToanTruong.Count(); i++)
            {
                TKB_ToanTruong[i] = CreateTKB_Lop(_ListLop[i]);
                Thread.Sleep(1000);
            }

            return(TKB_ToanTruong);
        }
示例#5
0
        private int KiemTraMonHocCoBiTrung(GiangDay MonHoc, GiangDay[][] TKB, int column)
        {
            int rows  = TKB.Count();
            int count = 0;

            for (int i = 0; i < rows; i++)
            {
                if (TKB[i][column] != null && MonHoc.giangDay.MaGiaoVien == TKB[i][column].giangDay.MaGiaoVien)
                {
                    count++;
                }
            }

            return(count);
        }
示例#6
0
        /// <summary>
        /// lấy danh sách giáo viên dạy một lớp và cập nhất khối đang dạy cho giáo viên
        /// </summary>
        private List <GiangDay> layDanhSachGiaoVienDayLop(ChuongTrinhHoc chuongTrinhHocLop, LOP lop)
        {
            List <GiangDay> listDanhSachGiaoVien = new List <GiangDay>();

            for (int i = 0; i < chuongTrinhHocLop.chuongTrinhHoc.Count; i++)
            {
                for (int j = 0; j < _listPhanCongGiangDay.Count; j++)
                {
                    // tìm giáo viên được phân công dạy một môn tại một lớp
                    if (_listPhanCongGiangDay[j].giaoVien.MaMonHoc.Equals(chuongTrinhHocLop.chuongTrinhHoc[i].MAMONHOC) && _listPhanCongGiangDay[j].giangDay.MaLop.Equals(lop.MALOP))
                    {
                        GiangDay temp = new GiangDay(_listPhanCongGiangDay[j]);
                        temp.maKhoi = lop.MAKHOI;
                        listDanhSachGiaoVien.Add(temp);
                        break;
                    }
                }
            }

            return(listDanhSachGiaoVien);
        }
示例#7
0
 public GiangDay(GiangDay temp)
 {
     giaoVien      = temp.giaoVien;
     this.giangDay = temp.giangDay;
     maKhoi        = temp.maKhoi;
 }