摘要
- 文章編號:20050704
- 投稿日期:2005/06/25
- 作者:董世尊、廖韋傑、陳冠廷、陳雅鳳
- 備註:
壹、前言
在調課演算法分析中,本研究曾利用sunset排課系統做過模擬調課,因此對於Sunset排課系統中的調課部份程式進行分析;對於其演算法流程,調課程式部份的類別、屬性、方法做研究,並進行其優缺點的保留與改善,使排課系統中的調課作業部份更週延、完善。
貳、Sunset排課系統之調課功能
Sunset排課系統中,系統中將各相關資料、分課資料載入後,排課人員可以對於系統中顯示的班級名單、教師名單、場地名單進行選擇課表,以圖一顯
示為範例「資二仁」班級的課表,在右上方中有一個「調課查詢」按鍵,也是本研究之重點;這個按鍵可以查詢在這張課表中,同一班級之某一星期和某一節次要調
課時,查詢同一班級中有誰可以與之調換,進行較單純的一對一調課作業,但此地方有一個缺失在於查詢到之結果,可能會是必須與原本節次、教師、時段做調換動
作。
當排課人員選擇某一時段節次的課程,欲將被選擇節次調至其他時段節次時;按下「調課查詢」,則會顯示出可以與欲調換節次做調換作業的結果供
排課人員選擇,如圖二所示,當範例「資二仁」的星期二之六、七節選擇為欲調課之節次(背景為藍色),按下「調課查詢」則分別顯示出星期二之一、二節(紫
色)與星期五之六、七(紫色)節可調課的節次。
參、Sunset排課系統之調課部份關聯程式
在下表所列出之程式,為調課查詢本身的表單程式,其中還呼應了許多內部程式模組裡的方法,本研究以圖三來表示調課程式之間的關聯性。
若要查詢某一堂課時,按下調課查詢鍵後,程式即呼叫UpdateContent來更新課表,在UpdateContet裡又會呼叫
GetTimeTableID、
IsEventExchangable、IsSchedulable副程式來執行更新的程式,在副程式裡又會呼叫到更多的相關副程式(圖三)。
Private Sub cmdXchgEvent_Click() //調課查詢按鍵功能
Dim prdTest As Period
Dim appTest As Appointment
If idXchgEvent <> 0 Then //課表為空堂時
cmdXchgEvent.Caption = LoadResString(rsExchangeEvent)
//Button顯示調課查詢
idXchgEvent = 0 //查詢某一堂課時
UpdateContent //更新課表
Exit Sub
End If
Set prdTest = ttCur.Periods.GetPeriod(fgLPView.Col, fgLPView.Row)
If prdTest Is Nothing Then Exit Sub
With prdTest
Set appTest = apsCur.GetAppointment(.WeekDay, .BeginTime, .Duration, nWeekFlag)
If appTest Is Nothing Then Exit Sub
If appTest.RefID = 0 Then Exit Sub
If GetTimeTableID(appTest.RefID) = ttCur.TimeTableID Then
cmdXchgEvent.Caption = LoadResString(rsClearXchgEvent)
//顯示清除查詢
idXchgEvent = appTest.RefID
UpdateContent
End If
End With
Private Sub UpdateContent()
Dim prdMember As Period
Dim appTest As Appointment
Dim strEvtInfo As String
Dim nSolutions As Integer
Dim idLast As Long
Dim bLastXchgable As Boolean
.
.
.
If idXchgEvent <> 0 Then //課表為空堂時
If idXchgEvent = appTest.RefID Then
fgLPView.CellBackColor = &HC00000
//藍色格子背景
fgLPView.CellForeColor = &H80000005
ElseIf idLast = appTest.RefID Then
If bLastXchgable Then
fgLPView.CellBackColor = &HFF8080
//紫色格子背景
fgLPView.CellForeColor = &H80000005
End If
ElseIf schLocal.IsEventExchangable(idXchgEvent, appTest.RefID) Then
fgLPView.CellBackColor = &HFF8080
//紫色格子背景
fgLPView.CellForeColor = &H80000005
bLastXchgable = True
Else
bLastXchgable = False
End If
End If
End If
idLast = appTest.RefID
End If
.
.
.
End Sub |

肆、結論
由於目前Sunset排課系統中的調課部份還未完全釐清,因此本研究預定期望目標是將此系統中的調課部份程式完全理解,然後對主要調課的核心作業進
行修改,使Sunset本來只能一對一的調課作業修改成可以傳回不只一對一的多角調課結果,並對於半自動化的功能修改為完全自動化的功能。
|