2012-09-24 44 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,以便您可以更輕鬆地檢查兩個類是否有衝突。