⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autocoursebll.cs

📁 guan yu pai ke xi tong de ruan jian
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

using Y2T03.CourseScheduler.CourseModel;
using Y2T03.CourseScheduler.CourseDAL;
using Y2T03.CourseScheduler.DALFactory;
using Y2T03.CourseScheduler.IDAL;

namespace Y2T03.CourseScheduler.CourseBLL
{
    /// <summary>
    /// AutoCourseBLL 的业务逻辑层
    /// </summary>
    public class AutoCourseBLL
    {
        public AutoCourseBLL()
        { }

        #region 获得周信息列表
        /// <summary>
        /// 获得周信息列表
        /// </summary>
        /// <returns>周信息列表</returns>
        public static IList<Week> GetWeeks()
        {
            return DALFactory.DataAccess.GetAutoCourse().GetWeeks();
        }
        #endregion

        #region 获得周信息
        /// <summary>
        /// 获得周信息
        /// </summary>
        /// <param name="weekId">周序号</param>
        /// <returns>周实体对象</returns>
        public static Week GetWeek(int weekId)
        {
            return DALFactory.DataAccess.GetAutoCourse().GetWeek(weekId);
        }
        #endregion

        #region 获得教学时段列表
        /// <summary>
        /// 获得教学时段列表
        /// </summary>
        /// <returns>教学时段列表</returns>
        public static IList<TeachingTime> GetTeachingTimes()
        {
            return DALFactory.DataAccess.GetAutoCourse().GetTeachingTimes();
        }
        #endregion

        #region 获得教学时段
        /// <summary>
        /// 获得教学时段
        /// </summary>
        /// <param name="timeId">教学时间编号</param>
        /// <returns>教学时间实体对象</returns>
        public static TeachingTime GetTeachingTime(int timeId)
        {
            return DALFactory.DataAccess.GetAutoCourse().GetTeachingTime(timeId);
        }
        #endregion

        #region 获取状态为正常的班级列表
        /// <summary>
        /// 获取状态为正常的班级列表
        /// </summary>
        /// <returns>班级列表</returns>
        public static IList<Class> GetNormalClasses()
        {
            return DALFactory.DataAccess.GetAutoCourse().GetNormalClasses();
        }
        #endregion

        #region 自动排课
        /// <summary>
        /// 自动排课
        /// </summary>
        /// <returns>周课表列表</returns>
        public static IList<WeekCourse> GetCommonWeekCourse()
        {
            DALFactory.DataAccess.GetAutoCourse().Delete();

            IList<WeekCourse> list = new List<WeekCourse>();

            try
            {
                //
                // 正常排课
                //
                IList<Teacher> teacherList = DALFactory.DataAccess.GetAutoCourse().GetTeachers();

                foreach (Teacher teacher in teacherList)
                {
                    IList<Class> classList = DALFactory.DataAccess.GetAutoCourse().GetClasses(teacher.Name);

                    foreach (Class classe in classList)
                    {

                        for (int weekId = 1, timeId = 1; weekId <= 6; timeId += 2)
                        {
                            bool flg = AutoCourseBLL.GetIdleTeacher(teacher.Name, timeId, weekId); //判断教员当天上午或者下午是否空闲
                            if (flg == false)
                            {
                                if (timeId > 4)
                                {
                                    weekId++;
                                    timeId = -1;
                                }
                                else if (AutoCourse(classe.ClassCode, timeId, weekId, list))
                                {
                                    break;
                                }
                            }
                            else if (timeId > 4)
                            {
                                weekId++;
                                timeId = 0;
                            }
                        }
                    }
                }

                //
                // 加课安排
                //
                foreach (Teacher teacher in teacherList)
                {
                    IList<Class> classList = DALFactory.DataAccess.GetAutoCourse().GetAddCourseClasses(teacher.Name);

                    foreach (Class classe in classList)
                    {
                        for (int weekId = 1, timeId = 1; weekId <= 6; timeId++)
                        {
                            if (AutoCourseAdd(classe.ClassCode, timeId, weekId, list))
                            {
                                break;
                            }
                            if (timeId == 4)
                            {
                                weekId++;
                                timeId = 0;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string err = ex.Message;
            }

            return list;
        }
        #endregion

        #region 获取某教员当天的空闲时间
        /// <summary>
        /// 获取某教员当天的空闲时间
        /// </summary>
        /// <param name="name">教员名称</param>
        /// <param name="timeId">时间段</param>
        /// <param name="weekId">星期</param>
        /// <returns>true=有, false=无.</returns>
        public static bool GetIdleTeacher(string name, int timeId, int weekId)
        {
            return DALFactory.DataAccess.GetAutoCourse().GetIdleTeacher(name, timeId, weekId);
        }
        #endregion

        #region 添加周课表的正常排课信息
        /// <summary>
        /// 添加周课表的正常排课信息
        /// </summary>
        /// <param name="classCode">班级名称</param>
        /// <param name="timeId">时间段</param>
        /// <param name="weekId">星期</param>
        /// <param name="list">周课表实体对象</param>
        /// <returns>true = 成功, false = 失败.</returns>
        public static bool AutoCourse(string classCode, int timeId, int weekId, IList<WeekCourse> list)
        {
            IList<ClassRoom> classRoomList = DALFactory.DataAccess.GetAutoCourse().GetIdleRooms(timeId, weekId);
            bool flg = false;

            if (classRoomList.Count > 0)
            {
                int roomId = classRoomList[0].RoomId;

                flg = DALFactory.DataAccess.GetAutoCourse().Create(classCode, timeId, weekId, roomId);
                flg = DALFactory.DataAccess.GetAutoCourse().Create(classCode, timeId, weekId + 2, roomId);
                flg = DALFactory.DataAccess.GetAutoCourse().Create(classCode, timeId, weekId + 4, roomId);

                WeekCourse weekCourse;

                weekCourse = new WeekCourse();
                weekCourse.Classe.ClassCode = classCode;
                weekCourse.TeachingTime = AutoCourseBLL.GetTeachingTime(timeId);
                weekCourse.Week = AutoCourseBLL.GetWeek(weekId);
                weekCourse.ClassRoom = ClassRoomManagerBLL.GetClassRoom(roomId);
                list.Add(weekCourse);

                weekCourse = new WeekCourse();
                weekCourse.Classe.ClassCode = classCode;
                weekCourse.TeachingTime = AutoCourseBLL.GetTeachingTime(timeId);
                weekCourse.Week = AutoCourseBLL.GetWeek(weekId + 2);
                weekCourse.ClassRoom = ClassRoomManagerBLL.GetClassRoom(roomId);
                list.Add(weekCourse);

                weekCourse = new WeekCourse();
                weekCourse.Classe.ClassCode = classCode;
                weekCourse.TeachingTime = AutoCourseBLL.GetTeachingTime(timeId);
                weekCourse.Week = AutoCourseBLL.GetWeek(weekId + 4);
                weekCourse.ClassRoom = ClassRoomManagerBLL.GetClassRoom(roomId);
                list.Add(weekCourse);
            }

            return flg;
        }
        #endregion

        #region 添加周课表的加课信息
        /// <summary>
        /// 添加周课表的加课信息
        /// </summary>
        /// <param name="classCode">班级名称</param>
        /// <param name="timeId">时间段</param>
        /// <param name="weekId">星期</param>
        /// <param name="list">周课表实体对象</param>
        /// <returns>true = 成功, false = 失败.</returns>
        public static bool AutoCourseAdd(string classCode, int timeId, int weekId, IList<WeekCourse> list)
        {
            IList<ClassRoom> classRoomList = DALFactory.DataAccess.GetAutoCourse().GetIdleRooms(timeId, weekId);
            bool ret = DALFactory.DataAccess.GetAutoCourse().GetWeekCoursesClassCode(classCode, weekId);
            bool flg = false;

            if (classRoomList.Count > 0 && ret == false)
            {
                int roomId = classRoomList[0].RoomId;
                flg = DALFactory.DataAccess.GetAutoCourse().Create(classCode, timeId, weekId, roomId);

                WeekCourse weekCourse = new WeekCourse();
                weekCourse.Classe.ClassCode = classCode;
                weekCourse.TeachingTime = AutoCourseBLL.GetTeachingTime(timeId);
                weekCourse.Week = AutoCourseBLL.GetWeek(weekId);
                weekCourse.ClassRoom = ClassRoomManagerBLL.GetClassRoom(roomId);
                list.Add(weekCourse);
            }

            return flg;
        }
        #endregion

        #region 获得周课表列表
        /// <summary>
        /// 获得周课表列表
        /// </summary>
        /// <returns>周课表列表</returns>
        public static IList<WeekCourse> GetWeekCourses()
        {
            return DALFactory.DataAccess.GetAutoCourse().GetWeekCourses();
        }
        #endregion

        #region 获得指定班级的周课表信息
        /// <summary>
        /// 获得指定班级的周课表信息
        /// </summary>
        /// <param name="classCode">班级</param>
        /// <returns>某班级的周课表</returns>
        public static IList<WeekCourse> GetWeekCourse(string classCode)
        {
            return DALFactory.DataAccess.GetAutoCourse().GetWeekCourse(classCode);
        }
        #endregion

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -