1

私は、大学の科目と教師のタイミングのルーチンを管理するためのphpアプリケーションを開発しています。しかし、適切な時間管理の背後にあるアイデア(ロジック)を理解することはできません。

クラスの長さは50分から100分で、午前7時から午後2時30分までです。

私のアプリケーションでは、科目と学期および年ごとに教師を割り当て、科目も年と学期として割り当てられます。教師の任命中にタイミングが衝突しないようにしてください。

今のところ、アプリケーションの基本的なテーブル設定は次のようになっています。

管理者ログイン用の管理者ユーザーテーブル:

1)id 2)ユーザー名3)パスワード

科目表

1)id 2)名前3)年4)学期5)theory_marks 6)practicle_marks

先生のテーブル

1)id 2)name 3)position 4)subject_id 5)teacher_time 6)year(1stまたはsecondまたは3rdとして対象となる年)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にDBから、この教師がその日に提供するすべてのクラスを次の時間範囲内で行います。
[$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_timeに追加してend_time、2つのクラスに競合があるかどうかを簡単に確認できるようにします。

于 2012-09-24T07:53:47.983 に答える