摘要:考務管理是高校教務管理系統中一項重要的組成部分,其中考場的編排算法更是考務系統的核心算法之一。在不同的考務環境下,考務系統管理方式也有較大的不同,因此實現考務管理的軟件也有很大的不同。文章結合學校實際給出一種考場自動編排算法,并且就算法中的關鍵步驟給出相應的代碼示例。
關鍵詞:沖突檢測;考場自動編排;算法設計;數據庫視圖;沖突條件設定
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)25-7149-02
Research on Key Technology of Examination Management System
HAO Yang, TIAN Gang
(Shandong University of Science and Technology, Qingdao 266510, China)
Abstract: Examination management is an important part of the Academic Management System. The algorithm of scheduling examination room is one of the core algorithms. In different circumstances, the management of examination is more different, and then the examination management software is more different either. This article design an algorithm of the examination room scheduling according to the fact of the university, and then shows some the key steps code example of the algorithm.
Key words: conflict detection; automatic examination room scheduling; algorithm design; database view; conflict conditions setting
考務管理工作是一項涉及信息面廣,數據量大,數據關系復雜,且準確性和安全性要求高的工作。隨著計算機網絡的發展和普及,管理信息系統的運行平臺由單機轉向網絡。為了加快學院數字化校園的建設進程,實現考務管理的科學化和規范化,建立完善的、集成化的、面向數字化校園的考務管理系統是十分必要的。
考場自動編排系統是考務管理信息系統的重要組成部分之一。通過使用考場自動編排系統可以自動或人工輔助的實現考試任務的合理安排,能夠依據參加某門考試的學生人數,課程進度等信息合理地安排考試。考場自動編排系統包括:自動編排、人工干預、各類信息查詢(包括考場查詢、考生查詢、監考教師查詢等)。根據學校的具體考試規則,本文主要對考場自動編排的沖突檢測算法進行討論。
1 考場自動編排算法設計
1.1 考場的自動編排
考場的自動編排是整個考務管理系統的核心。編排算法的優劣直接影響到考務管理系統的成功與否。考場編排的第一原則是不允許存在任何沖突現象。考場編排過程中,已知條件主要包括:
1) 要安排考試的課程和對應的班級
2) 所有的考試課程總數
3) 剩余的考場
4) 教室的考試容量(每個教室能夠容納的考試人數)
1.2 主要考慮的限制
在安排考試的過程中,主要考慮如下的限制:
1) 在同一時間段,同一考生不能參加兩門考試
2) 在同一時間段,同一教室不能同時安排兩門考試
3) 在同一時間段,考試教室不允許安排的上課教室
4) 檢測該門課程是否節課,不允許未結束課程就考試
5) 考場人數不能超過教室的考試容量
6) 安排考試的考場為普通教室,不能安排在機房。
每個學校的教學情況都不一樣,要實現考場的自動編排,需要參照不同學校的不同教學要求和現有教學資源情況,進行合理的安排。本算法采用的思路是以教師為主要的安排單位進行考試安排。在本系統適用的學校,每個教師可以承擔多個班級的相同課程的授課情況,同時這多個班級考試試題都是相同的試卷。如果按照班級安排考試,很有可能出現同一教師教授的相同課程先后考試,從而導致后面考試的班級已經提前知道了考試試題的情況,所以在算法實現中考慮采用按照任課教師來安排考試的情況。同時,系統自動編排好的最終考試安排結果還可以進行人工的調整。鑒于上述約束條件,考場的自動編排算法可以按照下面的步驟進行:
1) 選取某一學年所有任課教師信息。本步驟所需數據從現有的教務管理信息系統中獲取,主要選取學年學期授課任務表中的教師。
2) 根據步驟1的教師數據,每個教師所承擔的沒有考試同時課程性質又是考試課程的所有課程,同時關聯相應的基表,建立課程和班級對應的相關視圖。本步驟仍然是從現有的教務管理信息系統中獲取對應的需要安排考試的課程和班級情況。在本系統適用的學校,學生考試的主要單位是聽課班。所謂聽課班指的是如果一門課程有班級1,班級2同時在開設,這門課程由同一位教師講述,這樣班級1和班級2兩個班級的學生就可以在一個大合班里上課,這個大合班就叫做一個聽課班。
3) 將步驟2獲得的數據按照課程結束時間做升序排序,同時按照教師編號升序排序。
4) 順序遍歷步驟3取得的數據,進行考場的編排,每安排一場考試,做一次沖突檢測。同時設定考試時間 = 課程結束時間 + 變量時間。變量時間可以根據需要靈活的設置,例如可以在程序里設定為課程結束5天以后;也可以設計為存放于數據庫中,每門課程自己的要求的一個字段。沖突檢測的方法可以寫成多個組件。沖突檢測算法主要包括4個組件。組件1教室檢測:主要檢測當前安排的教室在當前時間內有沒有上課情況。當前安排的教室有沒有其他的考試情況;組件2學生檢測:當前課程對應的學生在當前時間內是否正在上課。當前考試對應的學生在當前時間內是否有其他考試正在進行;組件3基本檢測:主要檢測一些基本設定條件,例如教室考試人數限制,考場類型限制,特定要求限制等;組件4資源檢測:檢測當前時間段所有的教室是否已經用完。
沖突檢測成功以后,將安排好的考場記錄自動添加到數據庫。
受教室資源的限制,不可能在同一考試時間段內排好所有考試,所以需要調整考試安排。使用組件4的功能可以檢測當前時間段內是否所有的教室資源都被利用。當所有的資源都用盡以后,需要調整考試時間:考試時間=考試時間+半天。
5) 重復上述步驟,直至所有課程都已經被安排完畢。
程序的主要實現算法為以上所述的五個步驟,但是計算機自動編排的考場情況在實際應用中受考試教室資源和具體學校考試要求的限制而與理想情況有較大的偏差,所以在本系統的實現中需要加入手工調整最終考試結果的功能模塊,以適應不同學校的具體需求。
2 考場編排模塊實現
受篇幅所限,下文要實現的考場編排模塊僅對上文所述算法的關鍵步驟給出一些關鍵的示例代碼。
獲取已知條件中包括的信息。主要包括
1) 建立視圖v_CurClass,視圖內容是要安排考試的課程和對應的班級,數據來源是現有的綜合教務管理信息系統,主要建立代碼是
select a.ayeartermno,a.teacherno,b.curno,d.curname,b.curprpno,b.classno,b.stuNum,c.name,e.endweek from learningclass a,tplan_teachingactplan b,
ini_teacher c,Tplan_CurBasicInfo d,tplan_CurCourse e
where a.learningclassno = b.learningclassno and a.teacherno = c.teacherno and b.curno = d.curno
and b.curno = e.curno and b.ayeartermno=e.ayeartermno and b.classno = e.classno
and a.ayeartermno=需要限定的學年學期。
在建立的視圖中,主要建立某一學年學期需要安排考試的課程信息,包括課程學年學期,教師,課程名稱,課程編號,班級,班級學生人數,課程結束周次等信息。
2) 沖突檢測的主要組件代碼設置。
組件1的沖突檢測主要檢測在考試時間內是否在該教室內有課程正在上課和考試。因此主要檢測兩個現有的數據庫表。第一個表是課程表,數據庫的設計主要包括聽課班號,開始周,結束周,節次,周次。考試安排時間都是在上午8:30到上午10:30或者是下午2:30到下午4:30,所以只要按照考試時間是上午還是下午去檢索數據表中對應天數的節次就可以了。例如實現代碼可以如下所述:
select top 1 * from CurTab_CurCourse
where RoomNo='2100188' and weekNo between StartWeek and EndWeek and (sectionno=1 or sectionno=2)
查看一下教室編號2100188這個教室在weekNo這一周的上午有沒有被占用。其中(sectionno=1 or sectionno=2)可以寫為sectionno<=2,本文為了突出顯示sectionno是節次的含義,故意這樣寫。其中sectionno=1代表上午的1,2節課,值為2代表上午3,4節課,依次類推。
受篇幅限制,其他的沖突檢測模塊的實現,本文就不一一贅述。
3) 當教室沒有被占用,同時滿足沖突檢測的條件以后,這個考場就可以正式寫入數據庫了,寫入數據庫的內容主要包括考試班級,考試課程,考試周次,周幾,考試時間,安排的教室等內容。寫入的代碼為:
Insert Into ExamResult(AyearTermNo,ClassNo,CurNo,TheWeek,WeekNo,Time,RoomNo) values(對應的數據)。
3 總結
考務管理信息系統的實現具有重要的應用意義,它把復雜的考務活動變得簡單,同時大大提高了考務管理人員的效率并降低了他們的勞動強度。考場編排系統是考務管理信息系統的重要組成部分之一,同時考場編排的自動化也有力地提高了程序的易用性和效率,本文主要對考場自動編排的實現算法進行討論,具有一定的參考價值。
參考文獻:
[1] 趙高麗,楊斌,宋軍平,等.高校考務管理系統數據庫的設計與優化[J].河南科技學院學報,2008,36(3):91-93.
[2] 林上杰,林康司.JSP技術手冊[M].北京:電子工業出版社,2004.
[3] Eckcl B.Java編程思想[M].候捷,譯.北京:機械工業出版社,2003.