標(biāo)準(zhǔn)化機(jī)試系統(tǒng)的開發(fā)與拓展 標(biāo)準(zhǔn)化考試的弊大于利

        發(fā)布時(shí)間:2020-02-16 來(lái)源: 幽默笑話 點(diǎn)擊:

          摘要:本文結(jié)合自己多年開發(fā)標(biāo)準(zhǔn)化機(jī)試系統(tǒng)的經(jīng)驗(yàn),詳細(xì)闡述常用機(jī)試系統(tǒng)的原理、缺陷,提出改進(jìn)方法及新的解決方案,并在已有基礎(chǔ)上,設(shè)計(jì)出更加科學(xué)實(shí)用的系統(tǒng),發(fā)展并拓寬現(xiàn)有考試系統(tǒng)的應(yīng)用范圍。最后給出無(wú)相鄰重復(fù)的隨機(jī)抽題算法,以確保隨機(jī)抽題的公正性。
          關(guān)鍵詞:機(jī)試系統(tǒng);連通圖著色;隨機(jī)抽題
          中圖分類號(hào):TP27 文獻(xiàn)標(biāo)識(shí)碼:A
          
          在我國(guó)高等教育體制中,計(jì)算機(jī)教育一直被擺在重點(diǎn)位置。幾乎所有高等院校的所有專業(yè)都至少開設(shè)有一門計(jì)算機(jī)課程。“計(jì)算機(jī)文化基礎(chǔ)”(以下簡(jiǎn)稱“計(jì)文”)或相關(guān)課程是必不可少的。工科專業(yè)一般開設(shè)有C/C++、Java程序設(shè)計(jì),文科會(huì)學(xué)習(xí)VB、VFP等。
          有教學(xué)過(guò)程就必然要有科學(xué)規(guī)范的評(píng)價(jià)機(jī)制。計(jì)算機(jī)課程的教學(xué)評(píng)價(jià)一般通過(guò)筆試和機(jī)試兩種方式進(jìn)行。作為非常注重培養(yǎng)實(shí)踐能力的學(xué)科,機(jī)試加筆試顯然比單純筆試更加適合計(jì)算機(jī)課程教學(xué)。筆試可以勝任像C/C++、Java代碼編程和計(jì)算機(jī)原理概念的考查。但像計(jì)算機(jī)操作水平或VC、VB可視化編程等,就只能通過(guò)機(jī)試才可得到真正科學(xué)的評(píng)判。
          本文所探討的機(jī)試,專指編程或計(jì)算機(jī)操作類機(jī)考,不涉及用機(jī)考代替筆試的無(wú)紙化考試。以下將針對(duì)機(jī)試系統(tǒng)開發(fā)與技術(shù)創(chuàng)新等問(wèn)題進(jìn)行討論。
          
          1 常用標(biāo)準(zhǔn)化機(jī)試系統(tǒng)的原理、缺陷及改進(jìn)
          
          標(biāo)準(zhǔn)化機(jī)試系統(tǒng)常采用以下兩種原理實(shí)現(xiàn):
          
          1.1 截屏法
          截屏法的原理較為簡(jiǎn)單?忌鎸(duì)的不是真正的軟件界面,而是靜態(tài)的截圖界面。在每個(gè)靜態(tài)截圖的相應(yīng)位置設(shè)置熱點(diǎn)區(qū),比如活動(dòng)的菜單、按鈕、工具欄等。每一屏的輸出結(jié)果是唯一的。如果考生根據(jù)考題要求,點(diǎn)擊了當(dāng)前正確的熱點(diǎn)區(qū),則認(rèn)為操作正確,屏幕將立刻顯示下一截屏。否則,系統(tǒng)停在此屏,等待考生正確點(diǎn)擊。如果考生放棄此題或中途交卷,系統(tǒng)會(huì)根據(jù)考生最終到達(dá)了該題的哪一步來(lái)給出相應(yīng)得分。
          例如,在Visual Basic窗體中設(shè)計(jì)一個(gè)“退出”按鈕,功能是點(diǎn)擊按鈕后窗體退出:
          
          上圖中每一個(gè)方塊代表一個(gè)屏。截屏法用屏幕的變化來(lái)模擬真實(shí)的軟件環(huán)境,但同時(shí)產(chǎn)生了路徑唯一性問(wèn)題。考生只有點(diǎn)擊了正確的區(qū)域,或者輸入正確的命令后才可進(jìn)入下一屏。這與真實(shí)的軟件環(huán)境差距甚遠(yuǎn)?忌诓涣私饪碱}意圖的情況下,會(huì)感覺無(wú)所適從。加上軟件中能夠?qū)崿F(xiàn)同一功能的操作有多種,而每個(gè)人的操作習(xí)慣又不可能完全一樣,這都影響了截屏式系統(tǒng)的通用性。比如上述圖例中第三步“查看代碼”,還可用菜單操作和右鍵操作實(shí)現(xiàn),但考生只有點(diǎn)擊了“查看代碼”按鈕后才能進(jìn)行下一步。
          要想提高題目的通用性,必須通過(guò)在實(shí)現(xiàn)同一功能的所有區(qū)域設(shè)置熱點(diǎn)來(lái)改進(jìn)。但考題設(shè)置的工作量也隨之加大,同時(shí)很難顧及到點(diǎn)擊或輸入錯(cuò)誤時(shí)的軟件變化。
          截屏法的技術(shù)含量不高,對(duì)系統(tǒng)的要求較低,并且沒有軟件環(huán)境的限制。其最大優(yōu)勢(shì)在于能架設(shè)在B/S(瀏覽器/服務(wù)器)模式上。因?yàn)闉g覽器中很難包含真正的軟件環(huán)境,而截屏法規(guī)避了這一難點(diǎn)。
          
          1.2 文件比較法
          文件比較法以真實(shí)的軟件作考試環(huán)境,并且要事先做好標(biāo)準(zhǔn)答案文件,因而一般架構(gòu)在C/S(客戶端/服務(wù)器)模式上?忌ㄟ^(guò)操作相應(yīng)軟件生成或修改考題所要求的文件?荚囃戤吅。系統(tǒng)將考生做的文件與標(biāo)答文件詳細(xì)對(duì)照。如果對(duì)照一致,則給出相應(yīng)得分。
          對(duì)于C/C++、Java一類代碼編程的考試,只需要對(duì)考生源程序和標(biāo)答源程序做逐行掃描,根據(jù)對(duì)比源程序字符來(lái)判分。同一功能可能還有多種寫法,都應(yīng)設(shè)置在標(biāo)準(zhǔn)答案中。如果是純粹的函數(shù)編寫,應(yīng)設(shè)置輸出結(jié)果文件。通過(guò)比較輸出的結(jié)論評(píng)分。
          這種忽略操作過(guò)程、分析結(jié)論評(píng)分的方法比截屏法更加客觀公正,能夠檢驗(yàn)考生真實(shí)的計(jì)算機(jī)操作和編程水平?荚囅到y(tǒng)完善之后,考題就十分容易設(shè)置和變化。
          國(guó)內(nèi)高校中開設(shè)VFP數(shù)據(jù)庫(kù)課程的專業(yè)較多。下面以VFP機(jī)試系統(tǒng)為例,說(shuō)明文件比較法機(jī)試系統(tǒng)的開發(fā)與關(guān)鍵技術(shù)的實(shí)現(xiàn):
          
          系統(tǒng)用VFP9編寫,因?yàn)樵赩FP環(huán)境下啟動(dòng)考試環(huán)境和處理VFP體系的文件都具有一定優(yōu)勢(shì)。并且VFP9也能夠勝任C/S模式軟件的高效開發(fā)。服務(wù)器端用SQL Server數(shù)據(jù)庫(kù)儲(chǔ)存考試信息、考試時(shí)間、考題和標(biāo)準(zhǔn)答案?荚嚈C(jī)(客戶端)必須獲得了這些信息后才可參與考試。因此,服務(wù)器端能夠完全掌控考試的類型和具體要求。
          1.2.1 抽題
          傳統(tǒng)的機(jī)試系統(tǒng)往往簡(jiǎn)略甚至忽略這一環(huán)節(jié),只是保證每一臺(tái)考試機(jī)上的考題是隨機(jī)抽取。但如果相鄰的考試機(jī)抽到一樣的考題,那么考試的公正性就有可能會(huì)打折扣。所以必須使任意相鄰的考試機(jī)抽到不同的考題。
          可以利用同一局域網(wǎng)各聯(lián)網(wǎng)機(jī)器IP地址的不同,在每場(chǎng)考試之前由服務(wù)器端生成一個(gè)抽題方案表,儲(chǔ)存在數(shù)據(jù)庫(kù)中。開考時(shí),每臺(tái)考試機(jī)都訪問(wèn)這個(gè)抽題表,獲得各自題號(hào),再下載相應(yīng)數(shù)據(jù)進(jìn)行考試。
          無(wú)相鄰重復(fù)的隨機(jī)抽題算法在本文的第四節(jié)給出。
          1.2.2 評(píng)分
          傳統(tǒng)的評(píng)分方案僅僅只是評(píng)判某些題目要求的文件是否生成,或者比較字符類文件和表文件。這對(duì)于C/C++、Java等代碼類的考試是適用的。
          但如果為可視化編程,如VC、PB、VFP等,或計(jì)文中的Word、Excel辦公軟件,涉及文件繁多,有窗口、菜單、程序、文檔、數(shù)據(jù)。這些文件的類型、格式都不相同。這一類的評(píng)分只有采用掃描二進(jìn)制文件內(nèi)容的方法才可進(jìn)行。所以必須先分析出這些文件的內(nèi)部構(gòu)造,才能設(shè)置相應(yīng)的評(píng)分程序。
          比如要在數(shù)據(jù)庫(kù)中兩表間建一個(gè)永久關(guān)聯(lián)。分析DBC文件后發(fā)現(xiàn),永久關(guān)聯(lián)會(huì)在DBC文件中增加256個(gè)字節(jié)的內(nèi)容,格式為:
          Relation Relation 1……Field(字段名)…Field(字段名)…
          對(duì)應(yīng)16進(jìn)制為:
          52 65 6C 61 74 69 6F 6E 20 20 52 65 6C 61 74 69 6F 6E 20 31……46 69 65 6C 64…46 69 65 6C 64…
          通過(guò)讀取DBC文件的二進(jìn)制內(nèi)容,并查找此16進(jìn)制代碼,就可以判斷考生是否回答正確。只要得到一次這樣的代碼,就能相應(yīng)作出其它類似題目的判分程序。利用這一方法,幾乎可以設(shè)置出任何一種軟件科目的判分機(jī)制。
          需要注意的是,如果將評(píng)分都交給服務(wù)器端完成,會(huì)給服務(wù)器造成很大的工作量。應(yīng)該為每一套題設(shè)置對(duì)應(yīng)的評(píng)分程序,并隨考題數(shù)據(jù)一起下載到考試機(jī)上。最后由考試機(jī)完成判分,將判分結(jié)果傳回服務(wù)器。為了不讓考生修改或刪除評(píng)分程序,或者在非考試環(huán)境里答題,考試系統(tǒng)應(yīng)在運(yùn)行時(shí)屏蔽對(duì)考試系統(tǒng)以外的所有操作,以保安全。
          考試的最終目的是為了指導(dǎo)和改進(jìn)教學(xué)。因此,評(píng)分程序應(yīng)當(dāng)細(xì)化到題,甚至于知識(shí)點(diǎn)。這樣做能讓服務(wù)器獲得詳細(xì)的評(píng)分結(jié)果,以便統(tǒng)計(jì)具體的教學(xué)得失。
          
          2 一種更好的機(jī)試系統(tǒng)設(shè)計(jì)思路
          
          文件比較法也同樣有一定的缺陷。此法只是評(píng)判結(jié)果,完全忽略了過(guò)程。考生就算掌握了知識(shí)點(diǎn),但在操作中有一點(diǎn)小失誤,導(dǎo)致結(jié)果未能生成或不完整,都會(huì)極大影響對(duì)該考生的公正評(píng)價(jià)。如果在對(duì)結(jié)果文件評(píng)判的同時(shí),又能判斷操作的正誤,就能彌補(bǔ)評(píng)分的缺失。
          可以另外用VC++或BCB設(shè)計(jì)一個(gè)外殼程序,隨答題環(huán)境一起運(yùn)行,環(huán)境退出時(shí)關(guān)閉。外殼程序的任務(wù)是將考生的鼠標(biāo)操作記錄到一個(gè)文本文檔中。
          用API函數(shù)SetWindowsHookEx建立Hook,將程序添加到Hook鏈中,目的是監(jiān)視Windows消息??[1]?:
          tsHook =(HWND)SetWindowsHookEx(WH_MOUSE, MntProc, tsInstance, 0);
          MntProc函數(shù)得到每一次考生點(diǎn)擊的按鈕或菜單的標(biāo)號(hào),并依次追加到鼠標(biāo)操作記錄userdo.txt文件中:
          LRESULT CALLBACK MntProc(int nCode, WPARAM wParam, LPARAM lParam)
          {
          WPARAM bmid;
          FILE *fp;
          bmid = wParam; // bmid得到按鈕或菜單的標(biāo)號(hào)
          ……
          fp = fopen(“d:\\cpexam\\pinf\\userdo.txt”,“a”);
          fprintf(fp, “%4d”, bmid);
          fclose(fp);
          ……
          return CallNextHookEx(tshook, nCode, wParam, lParam);
          }
          函數(shù)返回CallNextHookEx(),繼續(xù)啟動(dòng)下一個(gè)Hook傳遞消息。
          當(dāng)考生點(diǎn)擊交卷或系統(tǒng)自動(dòng)交卷后,用UnhookWindowsHookEx()函數(shù)卸載Hook,并退出外殼程序。最后的userdo.txt中保存的文本為考生操作的按鈕和菜單的序列。
          此類系統(tǒng)的評(píng)分標(biāo)準(zhǔn)應(yīng)包含兩方面。一方面是生成文件的得分,另一方面通過(guò)分析鼠標(biāo)操作記錄文件中按鈕和菜單標(biāo)號(hào)的前后關(guān)系給出操作得分。
          
          3 無(wú)相鄰重復(fù)的隨機(jī)抽題算法
          
          相鄰考試機(jī)抽到不同的考題,是保證考試公正性的重要環(huán)節(jié)。抽題前先要保證參與考試的機(jī)器IP地址或計(jì)算機(jī)名是順序的,比如計(jì)算機(jī)名為:cs1、cs2、cs3、…… cs[n],并且順序擺放成如下矩陣:
          
          為保證每一臺(tái)機(jī)器抽到與四周8臺(tái)都不同的題,可以將此矩陣看成一個(gè)平面連通圖。故問(wèn)題可歸結(jié)為連通圖的“五色”著色問(wèn)題:用5種顏色可以給任一平面簡(jiǎn)單連通圖G=<V, E>正常著色?[2]?。在實(shí)際算法中,只需考慮連通圖相鄰5個(gè)頂點(diǎn)中的某一點(diǎn)與其余各點(diǎn)均不同,并遍歷所有點(diǎn)。
          具體規(guī)則如下:
         。1)第一排每點(diǎn)不與左點(diǎn)相同
         。2)其余各排為:
           a最左點(diǎn)不與上點(diǎn)和右上點(diǎn)相同
           b最右點(diǎn)不與左點(diǎn)、左上點(diǎn)和上點(diǎn)相同
           c其余各點(diǎn)不與左點(diǎn)、左上點(diǎn)、上點(diǎn)和右上點(diǎn)相同
          以下用VFP表述算法,其中pctt為考試機(jī)總數(shù),tmt為總題量,a為當(dāng)前考試機(jī)編號(hào):
          dimension t(pctt)
          t=0 && 初始化數(shù)組t
          t(1)=int(1+tmt*rand()) && 隨機(jī)初始化cs??[1]?
          do case
          case tmt>=5 && 考慮“五色”情況
           for n=2 to a && 第一排每臺(tái)抽題與左邊不同
           do while .t.
           t(n)=int(1+tmt*rand())
           if t(n)<>t(n-1)
           exit
           endif
           enddo
           endfor
           for n=a+1 to pctt && 除第一排外
           do case
           case (n-1)%a=0 && 每排最左邊需與上、右上都不同
           do while .t.
           t(n)=int(1+tmt*rand())
           if t(n)<>t(n-a) and t(n)<>t(n-a+1)
           exit
           endif
           enddo
           case (n)%a=0 && 每排最右邊需與上、左上、左都不同
           do while .t.
           t(n)=int(1+tmt*rand())
           if t(n)<>t(n-a) and t(n)<>t(n-a-1) and t(n)<>t(n-1)
           exit
           endif
           enddo
           otherwise
           do while .t.
           t(n)=int(1+tmt*rand()) && 處于中間則需與上、左上、左、右上都不同
           if t(n)<>t(n-a) and t(n)<>t(n-a+1) and t(n)<>t(n-a-1) and t(n)<>t(n-1)
           exit
           endif
           enddo
           endcase
           endfor
          endcase
          考慮極端情況:題庫(kù)中只有4套題,即經(jīng)典的“地圖四色問(wèn)題”,只能另設(shè)算法,讓抽題矩陣形成如下狀況:(數(shù)字代表題的編號(hào))
          1 2 1 2 1 2 1 ……
          3 4 3 4 3 4 3 ……
          1 2 1 2 1 2 1 ……
          3 4 3 4 3 4 3 ……
          ……
          如果題量再少,將無(wú)法使每一臺(tái)機(jī)器抽到與四周8臺(tái)都不同的題。如果題量較多,數(shù)量大于機(jī)器數(shù),可考慮直接用考題數(shù)組覆蓋機(jī)器陣列。
          每場(chǎng)考試前運(yùn)行抽題程序,在服務(wù)器端生成抽題表。為使抽到的考題下載到考試機(jī),客戶端程序用以下語(yǔ)句創(chuàng)建一個(gè)Winsock接口引用testpc,以便得到客戶端的計(jì)算機(jī)名(testpc.LocalHostName):
          testpc=createobject(“MSwinsock.Winsock”)
          或者用testpc.LocalIP獲得客戶端IP。然后訪問(wèn)服務(wù)器的抽題表,用計(jì)算機(jī)名或IP地址對(duì)應(yīng)查詢本場(chǎng)考試的考題編號(hào),并下載考題到本機(jī)。
          
          4 結(jié)語(yǔ)
          
          文中涉及的原理與方法已在機(jī)試系統(tǒng)的實(shí)際開發(fā)中得以應(yīng)用,并獲得了良好收效。但不同學(xué)科有不同的教學(xué)特點(diǎn)和特定的評(píng)價(jià)機(jī)制,本文只是重點(diǎn)論述比較通行的技術(shù)和方法。此類系統(tǒng)還可進(jìn)一步優(yōu)化。最好能將軟件環(huán)境內(nèi)嵌到考試系統(tǒng)中,由系統(tǒng)直接控制軟件操作,并根據(jù)操作直接評(píng)分。當(dāng)然,這需要軟件廠商的技術(shù)支持才能實(shí)現(xiàn)。
          
          參考文獻(xiàn)
          
          [1]姜山. HOOK專題[DB/OL]. http://www.省略/china/community/program/originalarticles/techdoc/hook.mspx.
          [2]方世昌.離散數(shù)學(xué)[M]. 陜西:西安電子科技大學(xué)出版社,1996.

        相關(guān)熱詞搜索:標(biāo)準(zhǔn)化 拓展 開發(fā) 標(biāo)準(zhǔn)化機(jī)試系統(tǒng)的開發(fā)與拓展 素質(zhì)拓展系統(tǒng)定制開發(fā) 山東大學(xué)素質(zhì)拓展系統(tǒng)

        版權(quán)所有 蒲公英文摘 www.zuancaijixie.com
        91啦在线播放,特级一级全黄毛片免费,国产中文一区,亚洲国产一成人久久精品