我正在开展一个涉及管理驾驶教练日历的学校项目。
应用程序存储教师可用的时间段。
public partial class AvailabilityPeriod // kind of pseudo code
{
Instructor instructor;
DateTime start;
DateTime end;
}
它还以类似的方式存储该教师的各个约会。
当客户说“我想要一个2小时的课程”时,我必须获取所有教师的可用时段和任命,以便计算他们的“实际可用性”,然后找到一个超过2小时的人他/她的日程安排。
有更好的方法吗?
我的问题几乎完全与Time Calendar Data Structure重复,我知道。但是,嗯......我们在2011年,我对特定于实体框架的信息感兴趣,或者至少对这个对象关系映射做了一些事情: - )
答案 0 :(得分:1)
我写了一个类似的调度应用程序,最后采用了一种不同的方法(尽管你的方法肯定会有用)。
在该系统中,计划被分解为15分钟的增量,称为块,并存储在表格中。除非他们特别要求休假,否则每个人都随时可用。这些休假请求存储在一个单独的表中,再次以15分钟为增量。
我们有一个ScheduleBlock表,它基本上存储了根据业务规则填充的所有潜在块,以及一个存储用户无法工作的块的ScheduleException表。
使用此表结构,可以轻松创建显示所有ScheduleBlock实体的UI(这是所有潜在的可用时间,即营业时间),然后另外绑定所有ScheduleException实体(约会,PTO) ,病假等)以显示用户无法工作的时间(按用户颜色编码)。从那里开始,系统用户可以选择他们想要安排特定事件的时间块,类似于MS Outlook的工作方式。
当我们进行自动调度时,就像你的情况一样,我们查询了具有指定日期范围的X数量块的用户,按照他们拥有的约会数量进行排序,并通过它们循环查找匹配项。我们按照约会的数量排序,以便首先安排时间表最开放的人。
希望这有帮助!