楊煥好
摘要:考試模塊是高中信息技術(shù)學(xué)業(yè)水平考試系統(tǒng)的核心模塊,考生通過(guò)帳號(hào)、密碼登錄后,選擇考試場(chǎng)次,確認(rèn)個(gè)人信息后等待管理員發(fā)出開(kāi)考指令,開(kāi)考指令發(fā)出后,考生可以進(jìn)入考試,考試題目類型與廣西高中信息技術(shù)學(xué)業(yè)水平考試一模一樣,考生完成考試后點(diǎn)擊交卷,系統(tǒng)自動(dòng)統(tǒng)計(jì)成績(jī),再上傳服務(wù)器。系統(tǒng)的運(yùn)用將有助于高中學(xué)生提高信息素養(yǎng),提高學(xué)考優(yōu)秀率。
關(guān)鍵詞:考試;關(guān)鍵代碼;函數(shù);SQL;SERVER
高中信息技術(shù)學(xué)業(yè)水平考試系統(tǒng)使用VB6.0作為編程語(yǔ)言,后臺(tái)數(shù)據(jù)庫(kù)使用SQL SERVER2005及ACCESS數(shù)據(jù)庫(kù),考試模塊是整個(gè)系統(tǒng)的核心模塊。該模塊從考生登錄驗(yàn)證、選擇考試場(chǎng)次、等待考試指令,管理員發(fā)出指令后進(jìn)入考試,考試完成后交卷、評(píng)分,整個(gè)過(guò)程涉及很多關(guān)鍵技術(shù)。通過(guò)努力,最終設(shè)計(jì)出界面友好、操作方便,運(yùn)行穩(wěn)定的高中信息技術(shù)學(xué)業(yè)水平考試系統(tǒng)??荚嚹K的設(shè)計(jì)簡(jiǎn)述如下:
一、考試流程
整個(gè)考試流程有八個(gè)步驟,分別是:考生登錄→選擇考試→選擇考試場(chǎng)次→確認(rèn)考生信息→等待考試指令→進(jìn)入考試→答題→交卷。
需要說(shuō)明的是:第一,考試場(chǎng)次是管理員負(fù)責(zé)設(shè)置的,為了避免考生選錯(cuò)考試場(chǎng)次,要求管理員每一時(shí)刻只有一場(chǎng)考試,通過(guò)刪除舊的,添加新的達(dá)到此需求。第二,考生進(jìn)入到“等待考試指令”窗口,等待管理員發(fā)出“開(kāi)考”指令,考生才能進(jìn)入到考試界面。管理員發(fā)出“開(kāi)考”指令之前,監(jiān)考員可以核對(duì)考生信息,預(yù)防代考,管理員在服務(wù)器上查看考生狀態(tài),全部處于“等待考試”狀態(tài),而且監(jiān)考員核對(duì)考生信息后可以作出“開(kāi)考”指令,考生即可自動(dòng)進(jìn)入考試狀態(tài),開(kāi)始答題,完成答題后,通過(guò)“交卷”按鈕完成考試。
二、考試界面設(shè)計(jì)
考試類型有四種,分別是單選題、多選題、簡(jiǎn)答題、程序題,使用SSTab控件,選項(xiàng)卡有4個(gè),對(duì)應(yīng)四種考試類型,如下圖
考試界面分為四個(gè)區(qū)域,頂上是信息顯示區(qū),利用標(biāo)簽控件顯示考生的證件號(hào)、姓名、考試科目、考試場(chǎng)次以及顯示考生相片,利用一個(gè)標(biāo)簽控件顯示剩余的考試時(shí)間,同時(shí)利用進(jìn)度條控件顯示已用的考試用時(shí)。界面左下側(cè)為答題區(qū),利用SSTab控件分4個(gè)選項(xiàng)卡分別顯示單選題、多選題、簡(jiǎn)答題、程序題,每一個(gè)選項(xiàng)卡顯示一個(gè)題目與答案選項(xiàng)。界面右下側(cè)為答題記錄區(qū),也是利用SSTab控件分4個(gè)選項(xiàng)卡分別顯示單選題、多選題、簡(jiǎn)答題、程序題的答題情況,主要顯示題目號(hào)、狀態(tài)、考生的答案。狀態(tài)有三種,空白表示沒(méi)做,“√”表示已做,“?”表示已經(jīng)做,但對(duì)答案有疑問(wèn),以便考生回頭檢查進(jìn)一步確認(rèn)作答。答題區(qū)與答題記錄區(qū)之間是功能區(qū),主要功能是通過(guò)“上一題”、“下一題”按鈕瀏覽題目,通過(guò)“標(biāo)識(shí)本題”對(duì)作答不確定的題目進(jìn)行標(biāo)識(shí);還有一個(gè)就是“交卷”按鈕讓考生完成考試后進(jìn)行交卷操作,當(dāng)然如果考試時(shí)間已到,系統(tǒng)是自動(dòng)交卷的。還利用ComboBox控件實(shí)現(xiàn)輸入法的選擇。
為了方便考生操作答題,程序?qū)崿F(xiàn)答題區(qū)、功能按鈕、答題記錄區(qū)的三者有機(jī)聯(lián)動(dòng)。在答題區(qū)單擊任意一個(gè)選項(xiàng)卡,答題記錄區(qū)自動(dòng)切換到對(duì)應(yīng)的選項(xiàng)卡,比如,單擊答題區(qū)的“程序題”選項(xiàng)卡,答題記錄區(qū)自動(dòng)切換到“程序題”,反之,點(diǎn)擊答題記錄區(qū)的某一選項(xiàng)卡,答題區(qū)就會(huì)自動(dòng)切換到對(duì)應(yīng)的選項(xiàng)卡。在某一選項(xiàng)卡中瀏覽題目可以通過(guò)“上一題”、“下一題”按鈕,還可以通過(guò)答題記錄區(qū)的表格實(shí)現(xiàn)題目的切換,即單擊答題記錄區(qū)的表格的任意一行,答題區(qū)就會(huì)自動(dòng)顯示對(duì)應(yīng)的題目。方便考生切換題目,快速完成答題。
三、設(shè)計(jì)重點(diǎn)、難點(diǎn)
1.隨機(jī)生成試題及答案 考試設(shè)計(jì)有兩種方式,一種方式是全庫(kù)隨機(jī)生成考試題目,另一種方式是按場(chǎng)次隨機(jī)生成考試題目。兩種考試的方式都是先從SQL SERVER數(shù)據(jù)庫(kù)中復(fù)制對(duì)應(yīng)的題目到客戶機(jī)的ACEESS數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)表,然后再隨機(jī)生成考試題目。
全庫(kù)隨機(jī)生成考試題目的考試方式是在考試題庫(kù)里根據(jù)考試的四種題目類別及各類別的題量隨機(jī)生成題目。由于題庫(kù)量大,所以同一場(chǎng)考試不同的考生題目不一定相同,即使考試題目有相同的,題目的順序也是隨機(jī)的,答案順序也隨機(jī),這樣可以預(yù)防相鄰考生間的作弊。不足之處,成績(jī)可比性是一個(gè)問(wèn)題。廣西學(xué)業(yè)水平考試有一個(gè)特點(diǎn),單項(xiàng)選擇為了保證必修與選修的分值比例,1~43為必修內(nèi)容,44~60題為選修內(nèi)容。我們?cè)O(shè)計(jì)題目的時(shí)候也遵循這一規(guī)律,生成試題的時(shí)候先從提取每一套題的必修題出來(lái),再進(jìn)行隨機(jī)生成43個(gè)題目,然后再提取每一套題的選修題出來(lái),隨機(jī)生成17個(gè)題目,題目也是44~60。
按場(chǎng)次隨機(jī)生成題目的方式是由管理員指定每一場(chǎng)次的考試對(duì)應(yīng)的考試題目。程序再根據(jù)考試場(chǎng)次隨機(jī)生成題號(hào)和答案選項(xiàng)。這樣的考試,保證同一場(chǎng)考試的考試內(nèi)容完全相同,但為了預(yù)防作弊,不同考生的考試題目出現(xiàn)的先后不同,即使相同,答案選項(xiàng)也打亂,即盡可能不相同了。
隨機(jī)生成題目的關(guān)鍵代碼如下:
Public Sub newrandthprg(rsrand, tmlbvar, chtl)
'*****隨機(jī)產(chǎn)生題號(hào),存放于數(shù)組中***********
Dim a() As Integer:ReDim a(chtl) As Integer:i = 0
Do While i < chtl
randway1:
Randomize
a(i) = Int(Rnd() * rsrand.RecordCount) + 1
If i >= 1 Then
For p = 0 To i - 1
If a(p) = a(i) Then '隨機(jī)數(shù)相同,重新生成。
GoTo randway1
End If
Next p
End If
i = i + 1
Loop
……(省略移動(dòng)記錄指針,把新題號(hào)存入ks_th字段中,并調(diào)用調(diào)換ABCD答案選項(xiàng)的函數(shù))
End Sub
不同的考試方式,通過(guò)選擇不同記錄集,然后再調(diào)用這一個(gè)函數(shù)就可以了實(shí)現(xiàn)題目隨機(jī)、答案選項(xiàng)隨機(jī)。
2.預(yù)防作弊
利用計(jì)算機(jī)來(lái)考計(jì)算機(jī),如果沒(méi)有對(duì)應(yīng)的措施,那么考生就可以利用計(jì)算機(jī)及網(wǎng)絡(luò)進(jìn)行作弊,如何預(yù)防考生作弊,擺在了突出的位置上。如何預(yù)防考生作弊呢?除了第1點(diǎn)隨機(jī)生成題目和答案選項(xiàng)外,還采用以下幾種方法來(lái)實(shí)現(xiàn)。
(1)窗體置前及窗體無(wú)標(biāo)題
(2)禁用任務(wù)欄快捷方式
(3)屏蔽CTRL+ALT+DEL、CTRL+ESC、CTRL+E
(4)禁用“窗口鍵”
鑒于篇幅所限,同時(shí)本人已經(jīng)在雜志《讀寫算素質(zhì)教育論壇》2016年第6期發(fā)表的論文《新課程下高中信息技術(shù)上機(jī)測(cè)試管理系統(tǒng)——考試模塊的設(shè)計(jì)》已經(jīng)述說(shuō),請(qǐng)參考。
3.讀圖題的處理
(1)圖片文件的命名規(guī)則。圖片的命名規(guī)則是題目套數(shù)+題號(hào),如201701套第05題的圖片,其圖片文件名為20170105.jpg,原圖以流文件的方式保存在SQL SERVER 2005數(shù)據(jù)庫(kù)的數(shù)據(jù)表中,考試時(shí)以這樣的命名規(guī)則下載保存到程序所在的文件夾下的temp1文件夾里,顯示的時(shí)候再利用 LoadPicture(“文件全名”),裝載到image控件中的picture屬性中。文件全名是指包括路徑、文件名、擴(kuò)展名。
(2)顯示圖片。在考試界面設(shè)計(jì)的截圖可以看出,題目顯示空間不大,再顯示圖片,空間更小,而且截圖有大有小,為了不影響題目、答案選項(xiàng)的顯示,需要把大的圖片縮小再顯示,利用image控件的move方法就可以按比例縮小,當(dāng)然這里的image控件的stretch屬性設(shè)置為true。有些圖片太小或圖片縮小后,考生看出來(lái)吃力或看不清楚,這時(shí)候需要放大。設(shè)計(jì)的時(shí)候,通過(guò)設(shè)計(jì)image控件的單擊事件,單擊圖片后,顯示放大圖片的窗體,這個(gè)窗體就一個(gè)image控件,設(shè)計(jì)其stretch為假。這個(gè)窗體可以移動(dòng),可以最大化,這樣可以解決遮擋題目的不足之處。
4.統(tǒng)計(jì)成績(jī)
統(tǒng)計(jì)成績(jī)是在考生確認(rèn)交卷后才統(tǒng)計(jì),因此是在另一個(gè)窗體中實(shí)現(xiàn)。單項(xiàng)選擇題的分?jǐn)?shù)統(tǒng)計(jì)很簡(jiǎn)單,將考生作答的答案與標(biāo)準(zhǔn)答案比對(duì),對(duì)就得1分,錯(cuò)就得0分,再累加就可以了。多選題的評(píng)分標(biāo)準(zhǔn)是:選錯(cuò)不得分,全對(duì)得2分,漏選不錯(cuò)得1分。這樣就增加了統(tǒng)分的難度,基本算法是:把標(biāo)準(zhǔn)答案分離出來(lái)并存放于數(shù)組中,然后按ABCD的順序排序;其次是分離考生答案,分別存放于另一個(gè)數(shù)組中;最后是評(píng)分,通過(guò)循環(huán)語(yǔ)句和判斷語(yǔ)句實(shí)現(xiàn)。判斷是關(guān)鍵,首先判斷標(biāo)準(zhǔn)答案與考生的答案是否完全相同,完全相同加2分,否則再判斷兩者長(zhǎng)度是否一樣,如果不樣長(zhǎng),再利用InStr函數(shù)來(lái)在標(biāo)準(zhǔn)答案中逐個(gè)比對(duì)考生各個(gè)子答案(已經(jīng)分離出來(lái)放在數(shù)組中),并設(shè)計(jì)一個(gè)標(biāo)記并初始化為True,如果有錯(cuò),標(biāo)記為False,記0分。如果比對(duì)完某一題學(xué)生的子答案,標(biāo)記然后為True,記1分。因?yàn)槊恳坏蓝噙x題都要做同樣的處理,所以把程序設(shè)計(jì)成一個(gè)函數(shù),方便調(diào)用。
簡(jiǎn)答題與程序題需要考生輸入答案,如果答案是標(biāo)準(zhǔn)的唯一的,評(píng)分就容易,但如果答案不唯一,就增加了評(píng)分的難度,設(shè)計(jì)程序時(shí),也要考慮到這種情況,實(shí)際上,簡(jiǎn)答題和程序經(jīng)常會(huì)有兩到三種答案的題目,例如,在統(tǒng)計(jì)B2到E2的總分時(shí),就可以有兩種答案,一個(gè)是答案=sum(B2:E2),另一個(gè)答案是=B2+C2+D2+E2。如何實(shí)現(xiàn)這兩類題目的評(píng)分呢?這兩類題目,每小題有三空,每空兩分。標(biāo)準(zhǔn)答案只有一個(gè)字段存放,所以首先對(duì)標(biāo)準(zhǔn)答案進(jìn)行約定,每一空如果有多個(gè)答案,用“或”字分開(kāi),空與空之間,用英文的分號(hào)分開(kāi)。編寫了一個(gè)函數(shù),實(shí)現(xiàn)這兩類型的評(píng)分。這個(gè)函數(shù)編程思路是這樣的:首先利用Split函數(shù)把標(biāo)準(zhǔn)答案和考生答案逐個(gè)分離出來(lái),并存放在兩個(gè)數(shù)組中,再進(jìn)行比對(duì),對(duì)得2分,不對(duì)得0分。
四、總結(jié)
考試模塊是整個(gè)系統(tǒng)的關(guān)鍵所在,程序設(shè)計(jì)也比較復(fù)雜,考慮的問(wèn)題是多方面的,以上所述的也只是比較關(guān)鍵比較難的問(wèn)題,在設(shè)計(jì)過(guò)程花的時(shí)間很多,有些問(wèn)題還真是花費(fèi)大量的時(shí)間來(lái)學(xué)習(xí)與處理。經(jīng)過(guò)努力,終于完成了軟件的設(shè)計(jì)。經(jīng)過(guò)運(yùn)行測(cè)試以及應(yīng)用,系統(tǒng)運(yùn)行穩(wěn)定健壯,界面美觀大方,人性化設(shè)計(jì),操作方便。系統(tǒng)的應(yīng)用一定能提高考生的信息素養(yǎng)的大幅度提升。
參考文獻(xiàn):
[1] 管麗娜白海波《實(shí)用Visual Basic6教程》[M].北京:清華大學(xué)出版社,2001.
[2]曹軍生等《SQL Server2000實(shí)用教程》北京理工大學(xué)出版社2001年9月
(作者單位:廣西橫縣橫州中學(xué) 530300)