📄 autocoursebll.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 + -