【问题标题】:Logic for Subject Routine maker (PHP)主题例程生成器 (PHP) 的逻辑
【发布时间】:2012-09-24 07:19:17
【问题描述】:

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

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

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

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

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

1) 标识 2)用户名 3)密码

科目表

1)ID 2)名称 3) 年份 4) 学期 5) 理论标记 6)practicle_marks

教师桌

​​>

1)ID 2)名称 3)位置 4)subject_id 5)teacher_time 6)年份(第一年或第二年或第三年) 7)day (周日、周一等)

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

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

【问题讨论】:

  • 提高接受率
  • 有点跑题了,但为什么6)year (which year subject as 1st or second or 3rd)Teacher 的属性?不应该属于Subject吗?您还需要另一个表将Teachers 映射到Subjects。
  • @Havelock 虽然跑题了,但还是一个的评论!

标签: php mysql logic scheduling routines


【解决方案1】:

所有课程都在上午 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 的建议并将subjectsteachers 分开。
此外,我会在subjects 表字段中添加start_timeend_time,以便您更轻松地检查两个类是否存在冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多