高 瑜
(湖北師范學院 物理與電子科學學院,湖北 黃石 435002)
基于LabVIEW的考場排布系統(tǒng)的實現
高 瑜
(湖北師范學院 物理與電子科學學院,湖北 黃石 435002)
針對高校中頻繁進行的考試工作,研究一種考場排布系統(tǒng),能自動完成考試時間、考場、監(jiān)考人員的安排工作。該系統(tǒng)以excel表格的內容為數據源,通過LabVIEW強大的運算功能完成邏輯判斷,在充分利用有限考場的前提下,快速、準確地給出了合理的考試安排。該系統(tǒng)不僅解決了手動輸入的時效性差,需要多次審核來提高正確率的問題,還利用算法的靈活性,兼顧了監(jiān)考人員監(jiān)考次數的平均性,考試時間、考場分配的隨機性。
考場排布;LabVIEW;隨機性;Excel
在高校處理的眾多事務中,安排考試是最常見的工作之一,但是卻很少針對這項工作進行系統(tǒng)開發(fā),而是采用人工輸入,人腦進行邏輯判斷來完成;但是隨著高校課程的日趨豐富,參加各種考試的人數增多,使得安排考場和監(jiān)考人員的工作變得越來越繁復,如何保證在充分利用有限考場的基礎上快速、準確的給出合理的考試安排,也是一項急需解決的任務。
在安排考試的過程中,有幾項互相制約的條件:第一,同一班級不能在同一時間進行多門考試;第二,參加同一門課程考試的班級必須在同一時段進行該門考試;第三,出卷老師必須在對應的考試時段參加監(jiān)考,以保證在試卷出現疑問時能及時解答;第四,監(jiān)考老師不能被安排在同一時段的多個考場中。而且,在安排監(jiān)考時,還要兼顧監(jiān)考人員的監(jiān)考次數的平均性,所有的考試應該在最少的時段內完成,即同一時段,考場應該安排的越滿越好。
結合實際,現設定某一院系要給出專業(yè)課的期末考試安排,給定的條件為,任一時段可以使用m個教室,需要在n天內(系統(tǒng)可以根據時段數組和教室數組中填入的內容自動確定m,n的值,其中m,n均為正整數,本系統(tǒng)以m=5,n=2做測試)完成所有考試工作,每天可以安排四個時段進行考試(上午兩場,下午兩場)。由于互相制約的因素很多,算法比較復雜,故而按功能分成8個模塊(P1~P8)來構建系統(tǒng),其系統(tǒng)框圖由圖1所示。
圖1 系統(tǒng)框圖
1)P1的功能是導入原始數據,根據導入數據的不同,將程序命名為P1.0.vi,P1.1.vi,P1.2.vi,其具體的對應關系及導入后的數組格式如表1所示。
表1 P1導入數據對應表
導入已有的excel表格中的數據,不僅能省去手動輸入的工作,大大提高效率,而且保證了正確性。一般每個學期要上的課程在學期初已經由排課系統(tǒng)給出,即“課程表”,該表格列明了每個班級應上的課程;第二個要導入的表格是“出卷老師一覽表”,該表格在制卷前就已經明確登記了,也是現成的文檔,它列明了課程和對應出卷老師的姓名;第三個要導入的表格是全院教師的名單,即能參加監(jiān)考的人員庫,這也是已有的數據。利用LabVIEW的Office工具包可以很容易完成“導入功能”[1,2]。
2)P2完成的功能為:將P1.0.vi的輸出——P1輸出數組(見表1)作為輸入,轉為列數固定為2的表格輸出,它清晰的反映了班級-考試科目的對應關系。該功能是利用表格的設置單元格值的方法[3]來實現的。
3)P3的功能是借助P2輸出表格的信息,排出每科分別有幾個班考試,且按照課程表中的順序給各個班級編號,記為0,1,2,……,依此類推。P3輸出數組的第一行記錄為{0905,C語言,8,1}其中第3列的“8”,表明0905班的編號為8;第四列的“1”說明只有1個班級參加C語言考試。
4)P4的作用是安排時段和對應的考場。其算法為:首先,用sequence結構做初始化處理。一是,創(chuàng)建一維數組C,教室數決定了它的初始值,而時段數則說明了它的元素個數。如果教室數為5個,時段數為8,則數組C就是8個5組成的一維數組,它用于對當前時段剩余的教室數目做實時更新。數組B是由班級數和時段數決定的二維數組,其行標表示班級代號,列標表示時段代碼,初始值為全1,當某個班級的某個時段被占用時,則自動將數組B中的對應數值改為0.定義兩個一維數組,輸出數組T1,輸出數組T2,取P3輸出數組的后兩列轉為數值型數組,即班級代號,同考班級數,這兩列,記為數組A.
其次,用外循環(huán)控制課程數,外循環(huán)每進行一次,就將一門課程的應考時段及對應考場分配完畢。每次從“每課程的索引值”數組中依次取出1個元素,用該元素作為索引,取出數組A的第1列(同考班級數)對應的值,即該門課程需要占用幾個教室,并用“元素2”保存起來;每次安排課程都從“當前時段=0”開始,在時段數組C中依次搜索:時段0中教室剩余個數大于等于元素2(需要占用教室數)么?如果是(說明此時段教室條件滿足),則停止搜索,輸出時段0,將元素2的值作為循環(huán)次數,依據數組A中0列(班級代號)所對應的B組的索引號,找出對應的班級在該時段的值,并求和,如果這個值等于元素2,則說明參加該門課程考試的班級此時段是空閑的,則停止此層while外循環(huán),否則將當前時段+1,繼續(xù)while外循環(huán),搜索同時滿足兩個條件的時段號。
最后,將滿足條件的時段號分配下去,此時,將時段號作為初始數值,給對應的課程分配“元素2”大小的一維數組,并利用局部變量將其保存起來,最終的結果為“輸出數組T”,這個就是各個課程的時段分配方案;數組C的對應時段減去分配的時段個數,這也是利用局部變量來完成;數組B需要及時修改班級被占用的時段信息,即將對應班級的對應時段由1變?yōu)?,并將該時段最后剩余的教室個數每個循環(huán)加1,送入到輸出數組T2中保存起來,這個就是分配的教室代碼,教室1,教室2,留待后續(xù)vi翻譯成字符串就可以了。將“輸出數組”和“輸出數組2”一并與“結果數組”合并并刪除班級代號列和同考班級數目列,為P4輸出表格。其主要程序框圖如圖2所示。
圖2 P4.vi主要程序框圖
P4輸出表格中的一項為{0905,C語言,0,5},其表達的含義為:0905班的C語言考試安排在0時段,而代號為5的教室作為其考場。
5)P5部分是用來完成出卷老師在對應時段監(jiān)考的設計初衷,具體由3個部分來實現。
P5.0部分完成的功能是,通過“每課程的索引值”數組將P4輸出表格中課程名相同的行刪除。算法是,每次循環(huán)取“每課程的索引值”數組的一個元素y,并以此作為索引值,取得P4輸出數組中的一行,待循環(huán)結束后輸出“去重復課程”數組。
P5.1部分完成的功能是,通過P1.1導入的出卷老師對應表和P5.0得到的“去重復課程”數組得到“行為時段,列為老師”的數組,該數組根據出卷老師的情況,把需要固定監(jiān)考時間的老師做預先安排。用行表示時段,即所有需要排在時段0監(jiān)考的教師,就送到0行中,需要排在時段1監(jiān)考的教師,就排在第1行,以此類推。根據P5.1部分采用的算法,沒有對以下特殊情況做單獨處理,即有可能同一個出卷教師的多門課程都安排在一個時段,那么該教師在這個時段必然出現多次,這是不允許的。因此需要由P5.2來完成。
P5.2部分的作用是將初始的“行為時段,列為老師”數組中同一行(即代表同時段)中重復的元素刪除,僅保留一項。其算法為:將“行為時段,列為教師”數組進行排序,然后比較同一行相鄰兩列的值是否相同,若不相同,則保留;若相同,則刪除。
6)P6的作用是,根據前面的信息算出,每個時段應該安排的總的監(jiān)考老師數目,即C~數組,如C~[0]表示的是時段0應該安排的監(jiān)考老師數量;每時段總的監(jiān)考人數減去已經由出卷表限定的教師人數,即得“每行多少個待入”數組;將各時段需要添加的教師名單首尾相接成一維數組,以備后續(xù)填入以“監(jiān)考教師一,監(jiān)考教師二”為列首的表格中。其算法為:首先,利用while循環(huán),得到“行為時段,列為老師”數組的每一行的非0元素的個數,以此控制for循環(huán)的循環(huán)次數。利用for循環(huán),使其每執(zhí)行一次,就把一個時段的監(jiān)考人員安排完畢,具體為,從0行開始,每次從“行為時段,列為老師”中取出一個元素,通過while循環(huán),將其從一維教師數組中的原位置調動到最后一個元素(通過刪除函數和添加函數來完成),然后將當前時段還需添加的人數作為長度,從一維教師數組中取出由索引0開始的該長度的子數組,添加到最終數組中,同時添加到一維教師數組的最后;當所有的時段排好后,得到“最終”數組,以及與之對應的,“每行待入多少個”數組。
7)P7的作用是把時段代碼,教室代碼轉換為時段名、教室名填入表格。其算法為:將P4輸出表格中的第三列的代號,作為索引,索引出時段數組中對應的時段名,并填入表中。
圖3 P7效果圖
即如,代碼0對應的是時段名數組中的0號元素,2014年7月1日08:00——10:00。同理將教室名的代號作為索引值,替換成教室名,其效果圖如圖3所示。
8)P8的作用是將監(jiān)考教師安排到“監(jiān)考安排一覽表”表格中。其算法為:第一步,將“行為時段,列為老師”數組與“最終”數組進行拼接,例如時段0安排了5個考場,故需要10個監(jiān)考老師;由于時段0安排了4門課程,且4門課程的出卷老師不同,所以10個名額中有4個來自于“行為時段,列為老師”數組;6個名額來自于“最終”數組中;對于其他時段,依此類推。第二步,將拼接后的一維數組轉換成列數為2的二維數組,接入到監(jiān)考安排一覽表中,并將表格按照時段進行排序。第三步,將表格加上表頭[3],并導出到excel表格中,其效果圖如圖4所示。
圖4 P8效果圖
基于LabVIEW的考場排布系統(tǒng),利用了LabVIEW在數組、表格運算方面的強大優(yōu)勢[2,4],進行了算法簡化,使得運行速度較高。該系統(tǒng)在提高考場利用率的前提下,實現了快速安排考試時間、考場、監(jiān)考人員的目標;一鍵式的處理方式,既節(jié)省了人力又保證了正確率,有很強的實用性。而且由于算法的靈活性,使得修改參數非常容易;但該系統(tǒng)還有一些需要優(yōu)化之處,比如教室空間的大小與班級人數的匹配問題,教師前后兩場監(jiān)考的時間間隔與教室遠近的問題等,今后將逐步完成。
[1]鄭對元.精通LabVIEW虛擬儀器程序設計[M].北京:清華大學出版社,2012.
[2]阮奇幀.我和LabVIEW——一個NI工程師的十年編程經驗[M].北京:北京航空航天大學出版社,2012.
[3]陳樹學,劉 萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2012.
[4]楊高科.LabVIEW虛擬儀器項目開發(fā)與管理[M].北京:機械工業(yè)出版社,2012.
AnexaminationschedulesystembasedonLabVIEW
GAO Yu
(College and Physics and Electronic Science,Hubei Normal University,Huangshi 435002,China)
The system is used for generating an examination schedule automatically, including assigning the test time, test rooms and invigilating teachers for each course. It derives from the excel tables , using the operation function based on LabVIEW to process the logic judgement. The system has the advantages of improving the utilization rate of examination rooms, precision and efficiency of the assignment task. It has solved the problems which the manual input has ,that is, time-consuming and checking several times to ensure the accuracy. What is more, the system has held the randomness of examination time and rooms distribution as well as the consistency of invigilating number for each teacher.
examination room assignment; LabVIEW randomness; excel
2014—09—15
高瑜(1981— ),女,湖北武漢人,講師,從事虛擬儀器的設計、計算機網絡與應用方面的研究.
TP311
A
1009-2714(2014)04- 0045- 04
10.3969/j.issn.1009-2714.2014.04.010