摘要:本文介紹一種基于Excel內(nèi)核的VBA編程方法來擴(kuò)展Excel的功能,以實(shí)現(xiàn)學(xué)??荚囍锌紙?chǎng)座位的智能編排。
關(guān)鍵詞:Excel;考場(chǎng)排座;VBA編程
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913(2007)10-0009-03
考試風(fēng)氣是衡量一個(gè)學(xué)校的校風(fēng)學(xué)風(fēng)的核心依據(jù)之一,是全面檢查教與學(xué)兩方面情況的重要環(huán)節(jié),是教學(xué)質(zhì)量和教學(xué)效果反饋的重要手段。通過考試既可以檢查學(xué)生的學(xué)習(xí)情況、了解學(xué)生對(duì)所學(xué)知識(shí)和技能的理解程度和應(yīng)用能力,促使學(xué)生改進(jìn)學(xué)習(xí)方法,又可檢查教師的教學(xué)效果,促使教師總結(jié)教學(xué)經(jīng)驗(yàn)、改進(jìn)教學(xué)方法[1]。
但是,高校學(xué)生考試作弊問題一直困擾學(xué)校的管理者。在“大學(xué)生考試作弊情況調(diào)查分析及對(duì)策”[2]一文中提到通過對(duì)1200名在校大學(xué)生進(jìn)行抽樣問卷調(diào)查,得出引發(fā)大學(xué)生考試作弊動(dòng)機(jī)的原因之一是管理因素,主要是考場(chǎng)管理松懈?!翱荚嚬芾聿粐?yán),給作弊者有機(jī)可乘”被認(rèn)為是最終導(dǎo)致考試作弊發(fā)生的主要原因(占50.9%)。而串通作弊是考場(chǎng)作弊的主要手段,一般發(fā)生在關(guān)系親密的同學(xué)之間,好講江湖義氣,他們會(huì)事先約定座位及作弊方法,所以監(jiān)考老師通常在安排考場(chǎng)時(shí),把學(xué)生序號(hào)打亂,使熟人之間的座位盡量隔開,希望從根本上杜絕串通作弊的現(xiàn)象,譬如像中考、高考、研究生考試和外語水平考試等大規(guī)模而且關(guān)系重大的考試中,組織者非常注意座位的安排。但人工安排座位具有主觀性,效率低、質(zhì)量差,難免顧此失彼。
就目前城市學(xué)院來說,應(yīng)該承認(rèn)絕大多數(shù)學(xué)生是講誠信的,能夠遵守考場(chǎng)紀(jì)律,但防范總是比事后的補(bǔ)救更有效,而且防范的最終目的是為了愛護(hù)學(xué)生。城市學(xué)院目前的做法是考試前監(jiān)考老師領(lǐng)取“浙江大學(xué)城市學(xué)院教室座位表”,并填寫這張座位表,考生進(jìn)入考場(chǎng)按這張座位表就坐,這樣做一方面給監(jiān)考老師增加了額外的負(fù)擔(dān),另一方面更重要的是由于很多老師填寫這張座位表時(shí)采用簡(jiǎn)單的按學(xué)號(hào)順序橫向填寫或逆序填寫,這樣座位的隨機(jī)性不好,給一些同學(xué)有了可乘之機(jī)。采用計(jì)算機(jī)來安排考場(chǎng)座次就能很好地解決這個(gè)問題。為此,我們?cè)O(shè)計(jì)了一個(gè)簡(jiǎn)單易行、高效而且通用的算法,希望能在實(shí)踐中得到檢驗(yàn)和完善。
1系統(tǒng)開發(fā)工具
Excel是Microsoft Office中的重要組件之一,是許多用戶喜歡使用的電子表格軟件,它具有較強(qiáng)的計(jì)算功能和數(shù)據(jù)管理功能,在學(xué)校工作中有著廣泛的應(yīng)用。Excel不僅具有強(qiáng)大的制表功能,同時(shí)還內(nèi)置了系統(tǒng)開發(fā)工具VBA(Visual Basic for Application)。利用VBA,可以直接對(duì)Excel對(duì)象進(jìn)行編程,從而提高Excel的利用效率。
VBA是用于開發(fā)應(yīng)用程序的Basic語言,因此在編程方法、對(duì)象使用上與Visual Basic完全相同。所不同的是VBA不是一個(gè)獨(dú)立存在的語言,它必須基于一個(gè)主應(yīng)用程序,例如,基于Microsoft Excel的VBA。實(shí)際上VBA用于Excel時(shí)并沒有加入Excel的特有的成分,Excel通過一個(gè)叫做對(duì)象庫的特殊命令集對(duì)VBA顯示出它的能力,如圖1所示[3]:
在Microsoft Office中,VBA作為一個(gè)完整的開發(fā)工具,是Microsoft Office套件的共享組件。在Excel中使用VBA程序可以大大擴(kuò)展Excel的功能,它使得用Excel完成一個(gè)管理系統(tǒng)的工作變得完全可能。
2系統(tǒng)特色
本系統(tǒng)以Excel為操作平臺(tái),符合大多數(shù)人的使用習(xí)慣。用戶既可以通過系統(tǒng)界面提高工作效率,也可以通過Excel界面直接操作。用Excel + VBA編制的程序與Excel工作表同存于Excel的工作簿文件中,文件、文件夾的復(fù)制意味著系統(tǒng)數(shù)據(jù)與程序的完全復(fù)制。因此,本系統(tǒng)為綠色軟件,不需要進(jìn)行系統(tǒng)安裝就可以直接運(yùn)行。
3系統(tǒng)開發(fā)
在系統(tǒng)開發(fā)過程中,首先考慮的是如何對(duì)考生產(chǎn)生隨機(jī)入座序列,方法是給定考生學(xué)號(hào)和姓名,對(duì)每個(gè)考生產(chǎn)生一個(gè)1~100000之間的隨機(jī)數(shù),以這個(gè)隨機(jī)數(shù)為關(guān)鍵字段對(duì)考生排序,這樣就產(chǎn)生了考生序列,每次啟動(dòng)排序都產(chǎn)生不同的隨機(jī)數(shù),確??忌蛄杏泻芎玫碾S機(jī)性,然后把考生按序編入已設(shè)計(jì)好的相應(yīng)考場(chǎng)座位表中。
For i=2 To rs+1
myWorkbooks.Worksheets(\"界面\").Cells(i,3) = Int(100000 * Rnd)
Next i
Sheet1.Range(Cells(2, 1), Cells(i, 3)).Sort Key1:=Range(\"C2\")
其次要注意的是考場(chǎng)的座位布局,城院的教室以124座的普通教室最多,但還有其他幾種類型的考場(chǎng),在系統(tǒng)設(shè)計(jì)的時(shí)候注意到軟件的實(shí)用性,把所有的教室類型都考慮到,供用戶進(jìn)行選擇。
第三要考慮的是教室的容量是限定的,如最常見的教室類型最多只能安排60位考生,當(dāng)考生人數(shù)超過額定座位數(shù)的時(shí)候怎么辦呢?我們選擇的方法是自動(dòng)分若干考場(chǎng),如考生人數(shù)為230人,且選擇了60人的考場(chǎng),則自動(dòng)產(chǎn)生考場(chǎng)座位表1,考場(chǎng)座位表2,考場(chǎng)座位表3,考場(chǎng)座位表4這四張工作表,并且在填入內(nèi)容時(shí),可選擇填入學(xué)號(hào)或姓名,甚至可同時(shí)選擇填入學(xué)號(hào)和姓名。
第四要考慮的是可人為地選擇考場(chǎng)中考生就坐位置,如安排第一列,第三列,第五列為考生入座,也可限定第二行,第四行等不準(zhǔn)考生入座,程序通過判斷該座位是“*”還是空格來決定是否安排考生入座。
最后是打印表單。系統(tǒng)中設(shè)定頁面為橫向,打印份數(shù)1份,把所有考場(chǎng)信息一次性打印。還設(shè)置了打印預(yù)覽,符合了大多數(shù)用戶的使用習(xí)慣。
mysheetname = \"考場(chǎng)座位表\"
myworksheetcout = myWorkbooks.Worksheets. Count
For i = 1 To myworksheetcout - 1
With myWorkbooks.Worksheets(mysheetname + Str(i))
.PageSetup.Orientation = xlLandscape
.PrintPreview
End With
myWorkbooks.Worksheets(mysheetname + Str(i)).PrintOut Copies:=1, Collate:=True
Next i
4系統(tǒng)使用說明
啟動(dòng)Excel,載入“排座軟件”,選擇啟用宏,首先看到的是如圖2所示的啟動(dòng)界面。
這是一張工作表,在這張工作表的開頭是系統(tǒng)說明,提示在A3單元格開始粘貼考生學(xué)號(hào)及姓名;填寫D3-G3單元格中的使用教室、考試課程、考試時(shí)間、考試班級(jí)、若有多個(gè)考場(chǎng),則把使用教室列在D3列后面;單擊“Show Userform”按鈕后顯示用戶窗口,如圖3所示。
系統(tǒng)計(jì)算并顯示考生人數(shù),請(qǐng)用戶選擇教室類型及排座記錄方式,單擊“啟動(dòng)排序”按鈕系統(tǒng)按照所選教室類型及排座記錄方式生成考場(chǎng)座位表如圖4所示。若對(duì)排序結(jié)果不滿意,可重新指定單元格為“*”,也可以把原來的“*”清除,選擇“繼續(xù)排序”,系統(tǒng)就顯示新的排序結(jié)果,如此可以不斷重復(fù),直到滿意為止。最后單擊“打印表單”按鈕,打印考場(chǎng)坐位表。系統(tǒng)運(yùn)行結(jié)束時(shí)單擊“結(jié)束”按鈕。在排序過程中若出現(xiàn)缺少考生名單或在繼續(xù)排序過程中考生人數(shù)超過可坐座位數(shù),系統(tǒng)都會(huì)有相應(yīng)錯(cuò)誤提示,使得軟件的使用具有較好的人機(jī)交互界面。
5討論
通過編制一個(gè)計(jì)算機(jī)程序很好地解決了學(xué)校組織考試時(shí)座位的編排,提高了工作效率,也減輕了監(jiān)考老師的負(fù)擔(dān)。本程序是我們的一次小嘗試,還存在著諸多不足,特別是原始數(shù)據(jù)要求粘貼到Excel表中,而我們目前的考生名單數(shù)據(jù)是直接放在網(wǎng)頁上的,要利用這個(gè)排座軟件意味著需手工從網(wǎng)上下載數(shù)據(jù)再轉(zhuǎn)換成Excel格式;其次城市學(xué)院目前共有七種教室布局類型,程序中需要對(duì)每一種教室布局進(jìn)行描述;另外要進(jìn)一步提高程序的通用性,能通過簡(jiǎn)單方法增加新的教室類型,或者當(dāng)用戶輸入教室號(hào)碼時(shí)系統(tǒng)自動(dòng)識(shí)別教室布局類型。所有這些都是需要進(jìn)一步改進(jìn)和提高的地方。
參考文獻(xiàn)
[1] 陳一女. 論高校的考試管理[J]. 浙江萬里學(xué)院學(xué)報(bào),2004,10(5).
[2] 胡禮祥,應(yīng)飚. 大學(xué)生考試作弊情況調(diào)查分析及對(duì)策[J]. 思想理論教育,2000,(3).
[3] 李曉玫,楊小平. Excel中的VBA程序設(shè)計(jì)[J]. 四川師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,7(4).
收稿時(shí)間:2006-12-27
作者簡(jiǎn)介:謝紅霞,女,浙江大學(xué)城市學(xué)院計(jì)算機(jī)與計(jì)算科學(xué)學(xué)院講師
E-mail:xiexh@zucc.edu.cn