예제 #1
0
        public void XThoiKhoaBieu()
        {
            try
            {
                XepThoiKhoaBieuEntities xl = new XepThoiKhoaBieuEntities();

                var giaovien =
                    from d in xl.GiaoViens
                    select d;
                var monhoc =
                    from d in xl.MonHocs
                    select d;
                var lop =
                    from d in xl.Lops
                    select d;
                var phong =
                    from d in xl.PhongHocs
                    select d;

                foreach (var gt in giaovien)
                {
                    GiaoVien gv = new GiaoVien();
                    gv.MaGV  = gt.MaGV;
                    gv.TenGV = gt.TenGV;
                    gv.MaBM  = gt.MaBM;
                    givi.Add(gv);
                    g++;
                }

                foreach (var gt in monhoc)
                {
                    MonHoc MH = new MonHoc();
                    MH.MaMH  = gt.MaMH;
                    MH.TenMH = gt.TenMH;
                    MH.MaBM  = gt.MaBM;
                    moho.Add(MH);
                    m++;
                }

                foreach (var gt in lop)
                {
                    Lop LOP = new Lop();
                    LOP.MaLop  = gt.MaLop;
                    LOP.TenLop = gt.TenLop;
                    loho.Add(LOP);
                    l++;
                }

                foreach (var gt in phong)
                {
                    PhongHoc PH = new PhongHoc();
                    PH.MaPH  = gt.MaPH;
                    PH.TenPH = gt.TenPH;
                    phho.Add(PH);
                    p++;
                }

                int dem;
                dem = 1;

                //Giáo viên nào dạy môn nào
                for (int i = 0; i < g; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        int cv;
                        if (givi[i].MaBM == moho[j].MaBM)
                        {
                            GV_MH gvmh = new GV_MH();
                            gvmh.stt  = dem;
                            gvmh.MaGV = givi[i].MaGV;
                            gvmh.MaMH = moho[j].MaMH;
                            cv        = SoSanh(Int32.Parse(givi[i].MaGV.ToString()));
                            switch (cv)
                            {
                            case 0:
                            {
                                gvmh.Sotiet = 18;
                                break;
                            }

                            case 1:
                            {
                                gvmh.Sotiet = 2;
                                break;
                            }

                            case 2:
                            {
                                gvmh.Sotiet = 4;
                                break;
                            }

                            case 3:
                            {
                                gvmh.Sotiet = 15;
                                break;
                            }

                            case 4:
                            {
                                gvmh.Sotiet = 17;
                                break;
                            }

                            case 5:
                            {
                                gvmh.Sotiet = 9;
                                break;
                            }

                            case 6:
                            {
                                gvmh.Sotiet = 0;
                                break;
                            }
                            }
                            GVMHTable.Add(gvmh);
                            dem++;
                        }
                    }
                }
                int ph = 0;
                //Lớp nào học phòng nào
                dem = 1;
                int check = 0;
                for (int i = 0; i < l; i++)
                {
                    if (Compare(loho[i].TenLop.ToString(), "12") == true ||
                        (Compare(loho[i].TenLop.ToString(), "11") == true && loho[i].MaBan == 1))
                    {
                        Lop_Phong lopphong = new Lop_Phong();
                        lopphong.stt   = dem;
                        lopphong.MaLop = loho[i].MaLop;
                        lopphong.MaPH  = phho[ph].MaPH;
                        lopphong.Buoi  = "Sáng";
                        dem++;
                        LPTable.Add(lopphong);
                        check++;
                    }
                    else
                    {
                        Lop_Phong lopphong = new Lop_Phong();
                        lopphong.stt   = dem;
                        lopphong.MaLop = loho[i].MaLop;
                        lopphong.MaPH  = phho[ph].MaPH;
                        lopphong.Buoi  = "Chiều";
                        dem++;
                        LPTable.Add(lopphong);
                        check++;
                    }
                    if (check >= 2)
                    {
                        ph++;
                        check = 0;
                    }
                }
                //Lớp nào học môn nào
                dem = 1;
                for (int i = 0; i < l; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        Lop_MH lopmh = new Lop_MH();
                        lopmh.stt   = dem;
                        lopmh.MaLop = loho[i].MaLop;
                        lopmh.MaMH  = moho[j].MaMH;
                        if (loho[i].MaLop <= 11) //Lớp 10
                        {
                            if (lopmh.MaMH == 1) //toán
                            {
                                lopmh.sotiet = 5;
                            }
                            else if (lopmh.MaMH == 5)//văn
                            {
                                lopmh.sotiet = 4;
                            }
                            else if (lopmh.MaMH == 3 || lopmh.MaMH == 6)//hóa, anh
                            {
                                lopmh.sotiet = 3;
                            }
                            else if (lopmh.MaMH == 2 || lopmh.MaMH == 4 || lopmh.MaMH == 8 || lopmh.MaMH == 11 || lopmh.MaMH == 12 || lopmh.MaMH == 13)//lý, địa, sinh, tin,TD,QP
                            {
                                lopmh.sotiet = 2;
                            }
                            else if (lopmh.MaMH != 14) //các môn còn lại khác tiếng pháp
                            {
                                lopmh.sotiet = 1;
                            }
                        }
                        else if (loho[i].MaLop > 11 && loho[i].MaLop <= 21)//lớp 11
                        {
                            if (lopmh.MaMH == 1)
                            {
                                lopmh.sotiet = 5;
                            }
                            else if (lopmh.MaMH == 5 || lopmh.MaMH == 6)//Anh, Văn
                            {
                                lopmh.sotiet = 4;
                            }
                            else if (lopmh.MaMH == 2 || lopmh.MaMH == 3)//Lý, Hóa
                            {
                                lopmh.sotiet = 3;
                            }
                            else if (lopmh.MaMH == 4 || lopmh.MaMH == 12 || lopmh.MaMH == 13)// Sinh, TD,QP
                            {
                                lopmh.sotiet = 2;
                            }
                            else if (lopmh.MaMH != 14)//các môn còn lại khác tiếng pháp
                            {
                                lopmh.sotiet = 1;
                            }
                        }
                        else //lớp 12
                        {
                            if (lopmh.MaMH == 1) //Toán
                            {
                                lopmh.sotiet = 4;
                            }
                            else if (lopmh.MaMH == 6)//Anh
                            {
                                lopmh.sotiet = 3;
                            }
                            else if (lopmh.MaMH == 2 || lopmh.MaMH == 3 || lopmh.MaMH == 4 || lopmh.MaMH == 5)//lý, hóa, sinh, văn
                            {
                                lopmh.sotiet = 3;
                            }
                            else if (lopmh.MaMH == 7 || lopmh.MaMH == 11 || lopmh.MaMH == 12 || lopmh.MaMH == 13)//sử, tin,TD,QP
                            {
                                lopmh.sotiet = 2;
                            }
                            else if (lopmh.MaMH != 14)//các môn còn lại khác tiếng pháp
                            {
                                lopmh.sotiet = 1;
                            }
                        }
                        Lop_Monhoc.Add(lopmh);
                        dem++;
                    }
                }

                //Giáo viên nào dạy lớp nào
                dem = 1;
                Random ra = new Random();
                for (int i = 0; i < m; i++)
                {
                    for (int j = 0; j < l; j++)
                    {
                        GV_Lop gvl = new GV_Lop();
                        gvl.stt   = dem;
                        gvl.MaLop = loho[j].MaLop;
                        gvl.MaMh  = moho[i].MaMH;
                        chon      = new List <Chon>();
                        int nchon = 0;
                        for (int l = 0; l < GVMHTable.Count - 1; l++)
                        {
                            if (GVMHTable[l].MaMH == gvl.MaMh)
                            {
                                Chon ch = new Chon();
                                ch.stt  = nchon;
                                ch.MAGV = GVMHTable[l].MaGV;
                                chon.Add(ch);
                                nchon++;
                            }
                        }

                        int a;
                        if (nchon > 1)
                        {
                            a = ra.Next(nchon);
                        }
                        else
                        {
                            a = 0;
                        }
                        int magv = chon[a].MAGV;
                        gvl.MaGV = magv;
                        for (int l = 0; l < LPTable.Count - 1; l++)
                        {
                            if (LPTable[l].MaLop == loho[j].MaLop)
                            {
                                gvl.MaPH = LPTable[l].MaPH;
                                break;
                            }
                        }
                        GiaoVien_LopHoc.Add(gvl);
                        dem++;
                    }
                }

                int tiet = 0;
                dem = 1;
                Random rd  = new Random();
                Random rd1 = new Random();

                for (int it = 0; it < l; it++)
                {
                    List <int> chonMh = new List <int>();
                    int        sotiet = 0;
                    for (int i = 0; i < moho.Count - 1; i++) ////bỏ thể dục + quốc phòng
                    {
                        sotiet = 0;
                        if (moho[i].MaMH != 12 && moho[i].MaMH != 13)
                        {
                            for (int j = 0; j < Lop_Monhoc.Count - 1; j++)
                            {
                                if (Lop_Monhoc[j].MaMH == moho[i].MaMH && Lop_Monhoc[j].MaLop == loho[it].MaLop)
                                {
                                    sotiet = Lop_Monhoc[j].sotiet;
                                    break;
                                }
                            }
                            for (int j = 0; j < sotiet; j++) //Số lần xuất hiện môn học trong List chonMh
                            {
                                chonMh.Add(Lop_Monhoc[i].MaMH);
                            }
                        }
                    }

                    if (Compare(loho[it].TenLop.ToString(), "12") == true ||
                        (Compare(loho[it].TenLop.ToString(), "11") == true && loho[it].MaBan == 1))
                    {
                        for (int th = 0; th < 6; th++)
                        {
                            for (int i = 1; i <= 5; i++)//lớp buổi sáng
                            {
                                Lop_Tiet_MH lgvmh = new Lop_Tiet_MH();
                                tiet = i + 10 * th;
                                if (tiet == 1)
                                {
                                }
                                else if (tiet == 29 || tiet == 30 || tiet == 25)
                                {
                                }
                                else
                                {
                                    int vt;
                                    if (chonMh.Count > 1)
                                    {
                                        vt = rd.Next(chonMh.Count - 1);
                                    }
                                    else
                                    {
                                        vt = 0;
                                    }
                                    lgvmh.stt    = dem;
                                    lgvmh.MaLop  = loho[it].MaLop;
                                    lgvmh.MaMH   = chonMh[vt];
                                    lgvmh.MaTiet = tiet;
                                    if (chonMh.Count > 1)
                                    {
                                        chonMh.RemoveAt(vt);
                                    }
                                    Lop_T_MH.Add(lgvmh);
                                    dem++;
                                }
                            }
                        }
                    }
                    else
                    {
                        for (int th = 0; th < 6; th++)
                        {
                            for (int i = 6; i <= 10; i++)//lớp buổi chieu
                            {
                                Lop_Tiet_MH lgvmh = new Lop_Tiet_MH();
                                tiet = i + 10 * th;
                                if (tiet == 10)
                                {
                                }
                                else if (tiet == 59 || tiet == 60 || tiet == 50)
                                {
                                }
                                else
                                {
                                    int vt;
                                    if (chonMh.Count > 1)
                                    {
                                        vt = rd1.Next(chonMh.Count - 1);
                                    }
                                    else
                                    {
                                        vt = 0;
                                    }
                                    lgvmh.stt    = dem;
                                    lgvmh.MaLop  = loho[it].MaLop;
                                    lgvmh.MaMH   = chonMh[vt];
                                    lgvmh.MaTiet = tiet;
                                    if (chonMh.Count > 1)
                                    {
                                        chonMh.RemoveAt(vt);
                                    }
                                    Lop_T_MH.Add(lgvmh);
                                    dem++;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi! " + ex.Message);
            }
        }
예제 #2
0
 public void TKB1Lop(Lop_MH lm, Lop_Phong lp, GV_MH gm, Tiet t)
 {
 }