恩,可是代码量多,我试试吧!

解决方案 »

  1.   

    //通过教师ID老师指定要的时间片  用一个2维数组存储,并返回,数组元素为1表示指定的时间
        public static int[ ,] getAppointTimeByTeacherID(string teacherID)
        {
            int[ ,] teacherTime=new int[5, 11];//用于存储教师空闲时间片,
            for(int i=0;i<5;i++)
            {
               for (int j = 0; j < 11; j++)
               { 
                    teacherTime[i,j]=1;// 初始化数组
               }
            }
            List<Demand> demands = new List<Demand>();泛型列表用于存储需求类即本类
            string proName = "dbo.getDemandByteacherID";//存储过程
            SqlParameter[] prams ={ 
                                new SqlParameter("@teacherID",SqlDbType.NVarChar,255)
            };
            prams[0].Value=teacherID;
            Thread.Sleep(200);
            DataTable Dt = ConnDB.RunProcGetTable(proName,prams);//通过教师ID获得需求信息,ConnDB是别的类,里面封装了数据库的链接和提取的方法等
            for (int k = 0; k < Dt.Rows.Count; k++)//遍历为Demands泛型列表赋值
            {           
                Demand dem = new Demand();
                for (int l = 0; l < Dt.Columns.Count; l++)
                {
                    if (l == 0)
                    {
                        dem._teacherID = Dt.Rows[k][0].ToString();
                    }
                    if (l == 1)
                    {
                        dem._weekID = Convert.ToInt32(Dt.Rows[k][1]);
                    }
                    if (l == 2)
                    {
                        dem._periodID = Convert.ToInt32(Dt.Rows[k][2]);
                    }
                    if (l == 3)
                    {
                        dem._appoint = Convert.ToInt32(Dt.Rows[k][3]);
                    }
                }
                demands.Add(dem);//
            }
            foreach (Demand singleDem in demands)
            {
                if (singleDem.appoint == 1)
                {
                    teacherTime[singleDem.weekID, singleDem.periodID] = 0;
                }
                else
                {
                    for (int k = 0; k < 5; k++)
                    {
                        for (int l = 0; l < 11; l++)
                       {
                           if (k != singleDem.weekID && l != singleDem.periodID)
                            { 
                                teacherTime[k, l] = 0;
                            }
                        }
                    }
                }
            }
            return teacherTime;
        }其它教室的时间片即节次有时间空闲,还有班级的时间片的提取和标志算法都相似了,
       大侠帮帮忙吧!