1

我正在开发一个 php 应用程序来管理我大学的科目和教师时间安排。但是,我无法理解正确时间管理背后的想法(逻辑)。

课程时长 50 到 100 分钟,从早上 7 点到下午 2:30 开始。

我希望我的申请根据学科、学期和年份来分配教师,并且学科也被分配为年份和学期。教师分配时不应发生时间冲突。

我现在为我的应用程序设置了基本的表设置

用于管理员登录的管理员用户表:

1) id 2) 用户名​​ 3) 密码

科目表

1) 编号 2) 姓名 3) 年级 4) 学期 5) 理论标记 6) 实践标记

教师表

1)id 2)name 3)position 4)subject_id 5)teacher_time 6)year(哪一年的科目是第一或第二或第三) 7)day(星期日、星期一等)

我的第一个想法是非常基本的,只为一天分配一个不同的表格,其中包括作为日期名称和标志的列以及主题 ID,以了解该主题的日期是活跃的还是不活跃的。和不同表中的时间作为列名,如上午 7 点、上午 730 点等。但是这也不能解决分配标志的逻辑,因为有些主题的长度为 100 分钟,而有些主题的长度仅为 50 分钟。

我怎样才能做到这一点?现在我对如何为科目和教师管理时间的逻辑一无所知。拜托,任何帮助都会很棒。

4

1 回答 1

0

所有课程都在上午 7 点到下午 2:30 之间进行,我们说的是 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 的建议并将 andsubjects分开teachers
此外,我会在subjects表格中添加字段start_timeend_time以便您更轻松地检查两个类是否存在冲突。

于 2012-09-24T07:53:47.983 回答