女朋友刚刚硕士毕业,费了不少周折进入深圳一家公立学校做教务管理工作,恰好学校交代一个给全校老师排课的任务,排了很久都没有排好,于是找到我,了解了他们大致需求后,于是我动手用我们公司的快速开发工具搭建了这个排课软件。
第一步了解需求:每个年级一个学期规定了要上的科目,以及每个科目每周的安排课时数。
于是我设计了下面这个界面来解决教学任务编排:
上面任务解决了每个班级需要配哪些课程,每个课程每周的节数
下面就要解决老师的问题,每个老师教哪几个课程,哪个课程每周安排几节的问题,于是有了如下教师任务界面:
这样哪个老师教哪个班哪门课教几节问题就解决了,有了这些便设计个自动排课界面如下:
上面自动排课自动排课算法部分代码如下,贴出来跟大家分享下:
public
void
BuildKebiaoAuto()
{
StringBuilder strMessage =
new
StringBuilder();
string
strMessage0 =
""
;
#region 排课前准备工作
EntityObjectFactory eofClassKebiao = EntityObjectFactory.GetInstance(
this
.objContext, EntityIDEnum.ClassKebiao);
EntityObjectFactory eofTermPaikePlan = EntityObjectFactory.GetInstance(
this
.objContext, EntityIDEnum.TermPaikePlan);
EntityObject eoTermPaikePlan = eofTermPaikePlan.FindFirst(
"ID={0}"
,PlanID);
EntityObjectList eolTermPaikeClass;
EntityObjectList eolTermPaikeTeacherRenwu;
decimal
Paikedays = 0.0m;
int
Jieshu = 0;
int
TotalJieshu = 0;
int
iClass = 0;
if
(eoTermPaikePlan !=
null
)
{
Paikedays = (
decimal
)eoTermPaikePlan.GetProperty(
"PaikeDays"
);
Jieshu = (
int
)eoTermPaikePlan.GetProperty(
"Jieshu"
);
TotalJieshu = (
int
)eoTermPaikePlan.GetProperty(
"TotalJieshu"
);
#region 初始化要排课的结果集合
//获取要排课的班级
eolTermPaikeClass = eoTermPaikePlan.GetChildEntityObjects(EntityIDEnum.PaikeClass);
//iCl
|