2012-09-24 29 views
1

我正在开发一个php应用程序来管理学院的课程和教师时间安排。但是我无法得到正确时间管理背后的想法(逻辑)。逻辑学科例程制定者(PHP)

课程长度为50到100分钟,从上午7点到下午2:30。

我希望我的申请根据学科和学期和年度分配教师,并且科目也被分配为年和学期。在授课期间不应该碰撞时间。

我有我的应用程序的基本表的设置,现在作为

管理员用户表管理日志中:

1)ID 2)用户名 3)密码

主题表

1)id 2)name 3)year 4)semester 5)theory_marks 6)practicle_marks

教师表

1)ID 2)名称 3)位置 4)subject_id 5)teacher_time 6)年(其年受试者第一或第二或第三) 7 )星期一(星期日,星期一等)

我的第一个想法是非常基本的,因为只为日分配一张不同的表格,其中包括列作为日期名称和标志以及主题ID,以知道该主题的日期是活跃的还是无效。和时间在不同的表中,列名称为7am,730am等等。但是这也不能解决分配标志的逻辑,因为一些主题将是100分钟长,并且一些将仅仅是50分钟。

我该如何做到这一点?现在,在如何管理学科和教师时间的逻辑背后,我毫不知情。请,任何帮助将是伟大的。

+0

提高您的接受率 – alfasin

+1

有点偏离主题,但为什么6年(哪一年是第1或第2或第3年)是'Teacher'的属性?它不应该属于'Subject'吗?你还需要另一张桌子来将'教师'映射到'主题'。 – Havelock

+0

@Havelock这是题外话,但仍然是一个**好**的话! – alfasin

回答

0

所有课程都在上午7点到下午2:30之间进行,我们正在谈论7.5小时。这是450分钟。现在有一个缺少的输入:一个类可以安排在7-2:30之间ANYTIME?或者仅在某个时间,例如:上午7点,上午8点,...,下午1点?

为了简单起见(也是有道理的)我会假设一个类只能在特定的时间发生。

所以,现在,当你想安排一个新的类,你必须调用PHP函数,将看起来有点像下面这样:

function schedule_class($teacher_id, $subject_id, $day, $hour, $length){ 
    ... 
} 

这个类将首先SELECT从数据库中的所有 - 你可以继续前进,并按照与INSERT
[$hour - $length, $hour + $length]

只有当你有一个空的resultset:这个老师给的时间范围内的那一天班。
否则,你应该输出到屏幕类似:

"Class <$subject_name> cannot be scheduled at <$day>/<$hour> 
since it overlaps with <$subject_name of the conflict-class>" 

另外,我想借此@哈夫洛克的建议和独立subjectsteachers
此外,我会添加到subjects表字段start_timeend_time,以便您可以更轻松地检查两个类是否有冲突。