我正在开发一个php应用程序来管理日常的科目和我的大学教师的时间安排。然而,我无法理解合理的时间管理背后的理念(逻辑)。
课程时长50至100分钟,由早上7时至下午2时30分。
我希望我的申请按科目、学期和年份分配老师,科目也按年和学期分配。在分配老师的过程中,时间不能冲突。
现在,我已经为我的应用程序设置了基本的表,如下所示
用于管理员登录的Admin users表:
1) id 2)用户名3)密码
主题表
1)身份2)姓名3)年级4)学期5) theory_marks 6) practicle_marks
教师表
1)id 2)姓名3)职位4)subject_id 5)teacher_time 6)年份(以第1年、第2年或第3年为准)7)日(星期日、星期一等)
我的第一个想法是非常基本的,只为day分配一个不同的表,它将包括列作为day名称,以及标志和主题id,以了解该主题的day是活动的还是非活动的。时间在不同的表中,列名为7am、730am等。然而,这也不能解决赋值标志的逻辑,因为一些主题将是100分钟长,而另一些主题将仅为50分钟。
我怎样才能做到这一点呢?现在,我对如何管理学科和教师的时间毫无头绪。求求你,任何帮助都会很好。
发布于 2012-09-24 15:53:48
所有的课程都在早上7点到下午2点半之间,我们说的是7.5小时。这是450分钟。现在有一个缺失的输入:课程可以安排在7-2:30之间的任何时间?或者只在特定的时间,比如:上午7点,8点,...,下午1点?
为简单起见(也是为了让它有意义),我将假设一节课只能在特定的时间进行。
因此,现在,当您想要调度一个新类时,您必须调用如下所示的PHP函数:
function schedule_class($teacher_id, $subject_id, $day, $hour, $length){
...
}这个班级将首先从数据库中SELECT当天该教师在以下时间范围内授课的所有班级:
[$hour - $length, $hour + $length]
只有当你得到一个空的resultset时,你才可以继续使用INSERT。
否则,您应该输出到屏幕上,如下所示:
"Class <$subject_name> cannot be scheduled at <$day>/<$hour>
since it overlaps with <$subject_name of the conflict-class>"另外,我会采纳@Havelock的建议,将subjects和teachers分开。
此外,我将在subjects表中添加字段start_time和end_time,这样您就可以更容易地检查两个类是否存在冲突。
https://stackoverflow.com/questions/12560474
复制相似问题