本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,公開了一種智能閱卷方法及系統(tǒng)。
背景技術(shù):
目前在線考試系統(tǒng)種類較多,但主要分為兩類:一是類似于駕照考試,以選擇題和判斷題等客觀題型為主的通用考試系統(tǒng);另一類是以ACM程序設(shè)計(jì)大賽為代表的程序設(shè)計(jì)類比賽專用考試系統(tǒng)。考試系統(tǒng)中的主要技術(shù)難點(diǎn)在于滿足考核要求的題庫、考試監(jiān)控和閱卷評分。
通??荚囅到y(tǒng)可以通過從大量題庫中進(jìn)行隨機(jī)選題組卷等技術(shù)方法解決部分監(jiān)考問題,通過及時保存考試文件等措施防止停電等意外情況造成重大影響。但考試題型是需要重點(diǎn)考慮的問題。
閱卷模式對于不同類型的考試有明顯的差異:對于客觀題為主的考試完全能實(shí)現(xiàn)系統(tǒng)自動閱卷,并且正確性和效率非常高,而對于填空、論述、作文等題型,則大都采取人工閱卷的方式。
程序設(shè)計(jì)類考試系統(tǒng)有明顯不同。對于競賽系統(tǒng)或各高校的在線評測(OnlineJudge)系統(tǒng),如北京大學(xué)的POJ、浙江大學(xué)的ZOJ等,都是以程序運(yùn)行結(jié)果為唯一判斷依據(jù),即程序輸出與標(biāo)準(zhǔn)答案完全相同則正確,否則即使結(jié)果正確,僅是格式不同,也作錯誤處理。
對于高等院校日常課程教學(xué),無論采用哪種模式都有失偏頗。對于幾乎所有高校都開設(shè)的C程序設(shè)計(jì)課程,既不可能只考選擇題和判斷題,也不宜將學(xué)生編寫的程序因結(jié)果與參考答案不完全一致而直接判為零分。鑒于同一問題用程序?qū)崿F(xiàn)可能有多種算法或書寫方式,使得完全用計(jì)算機(jī)實(shí)現(xiàn)自動閱卷非常困難,因此需要將自動閱卷與人工閱卷相結(jié)合,在提高閱卷效率的同時兼顧合理性。
技術(shù)實(shí)現(xiàn)要素:
針對上述技術(shù)問題,本發(fā)明提出一種智能閱卷方法及系統(tǒng),提高閱卷效率同時兼顧合理性。
為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案為:
一種智能閱卷方法,包括以下步驟:
步驟1,讀取第i個考生登錄信息表中第j道試題的試卷代號;
步驟2,讀取并判斷輸入的答案與參考答案是否相同;
步驟3,若輸入的答案與參考答案相同,返回評分;若輸入的答案與參考答案不相同,對輸入的答案進(jìn)行測試;
步驟4,反饋批改結(jié)果,閱卷結(jié)束生成電子試卷和閱卷記錄存檔信息。
步驟1后進(jìn)一步包括,判斷試題類型;當(dāng)試題類型為填空題或改錯題,判斷第k個填空點(diǎn)或改錯點(diǎn)是否存在輸入的答案,讀取試卷對應(yīng)的源程序文件名、評分參數(shù);讀取輸入的答案,處理為精簡代碼(處理為精簡代碼的步驟為對源程序進(jìn)行格式化處理,包括將程序中的TAB鍵轉(zhuǎn)換為空格、刪除空行、刪除注釋、刪除無效的多余空格,保留影響程序邏輯性或正確性的空格);
若試題類型為填空題或改錯題,步驟2進(jìn)一步包括,分別讀取并判斷輸入的答案是否為空、是否與原始程序一致或與“填空改錯題編譯錯誤表”中已有的精簡代碼一致,若有,返回0分;若是與參考答案一致或與“填空改錯題編譯正確表”中已有的精簡代碼一致,得設(shè)置分;否則,執(zhí)行步驟3。
進(jìn)一步的,步驟3中對輸入的答案進(jìn)行測試為:自動輸入預(yù)先設(shè)置的一組或多組測試數(shù)據(jù),將第k個填空點(diǎn)或改錯點(diǎn)輸入的答案代入到參考答案相應(yīng)的行后進(jìn)行編譯運(yùn)行,對參考答案也進(jìn)行編譯運(yùn)行,輸出運(yùn)行結(jié)果;判斷代入每一組數(shù)據(jù)時,輸入的答案運(yùn)行結(jié)果與參考答案運(yùn)行結(jié)果是否都相同;若都相同,則返回得分,并將輸入的答案存入“填空改錯題編譯正確表”中;否則,返回0分,并將輸入的答案存入“填空改錯題編譯錯誤表”中;后續(xù)閱卷過程中有答案在“填空改錯題編譯正確表”中或“填空改錯題編譯錯誤表”中的,直接給予評分。
若步驟1,判斷試題類型為編程題,讀取試卷對應(yīng)的源程序文件名、評分參數(shù)等,包括讀取該試卷所對應(yīng)的源程序文件名,是否要求考生運(yùn)行并輸出指定的文件,程序完全正確分值,存在結(jié)果文件分值,結(jié)果文件正確分值等參數(shù)。讀取輸入的答案,處理為精簡代碼。
上述的閱卷方法中,處理為精簡代碼的步驟為對源程序進(jìn)行格式化處理,包括將程序中的TAB鍵轉(zhuǎn)換為空格、刪除空行、刪除注釋、刪除無效的多余空格(保留影響程序邏輯性或正確性的空格)。
當(dāng)試題類型為編程題,步驟2后進(jìn)一步包括,精簡代碼與原始試題是否一樣,精簡代碼與參考答案是否一樣,精簡代碼是否在“編程題編譯正確評分表”中,是否在“編程題程序代碼評分表”中并已經(jīng)評分;
若精簡代碼與原始試題一樣,返回0分;
若精簡代碼與參考答案一樣,返回得分;
若精簡代碼在“編程題編譯正確評分表”中,返回得分;
若精簡代碼不在“編程題編譯正確評分表”中,判斷試題是否要求輸入的答案編譯運(yùn)行并輸出指定的結(jié)果文件:(1)若是,執(zhí)行步驟3;(2)否則,判斷精簡代碼是否在“編程題程序代碼評分表”中:①若在,返回評分;②若不在,執(zhí)行步驟3。
進(jìn)一步的,步驟3中對輸入的答案進(jìn)行測試為:自動輸入預(yù)先設(shè)置的一組或多組測試數(shù)據(jù),對輸入的答案進(jìn)行編譯運(yùn)行,對參考答案也進(jìn)行編譯運(yùn)行,輸出運(yùn)行結(jié)果,判斷代入每一組數(shù)據(jù)時,考生運(yùn)行結(jié)果與參考答案運(yùn)行結(jié)果是否一致;若都相同,則返回得分,并將輸入的答案存入“編程題編譯正確評分表”中;否則,給定分值,并將輸入的答案存入“編程題程序代碼評分表”中。
上述的閱卷方法中,步驟2、3后仍然判斷試題是否要求考生編譯運(yùn)行并輸出指定的結(jié)果文件,若是,調(diào)用結(jié)果文件判分模塊:如果結(jié)果文件不存在,結(jié)果文件得0分;如果結(jié)果文件存在,得結(jié)果文件存在分;如果文件內(nèi)容又正確,再得內(nèi)容正確分。若試題不要求考生編譯運(yùn)行并輸出指定的結(jié)果文件,則只需判斷試題輸入的答案是否為正確答案,并返回得分。
一種智能閱卷系統(tǒng),包括采集模塊,讀取第i個考生登錄信息表中第j道試題的試卷代號;判斷模塊,判斷輸入的答案與參考答案是否相同;測試模塊,若輸入的答案與參考答案不相同,通過存儲的預(yù)先設(shè)置一組或多組測試數(shù)據(jù),編譯運(yùn)行輸入的答案,對輸入的答案進(jìn)行測試;存檔模塊,用于反饋批改結(jié)果,閱卷結(jié)束生成電子試卷和閱卷記錄存檔信息。
上述的智能閱卷系統(tǒng),還包括參考答案數(shù)據(jù)庫,存放試題的試卷代號及對應(yīng)的參考答案;填空改錯題編譯正確表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予正確分的答案;填空改錯題編譯錯誤表數(shù)據(jù)庫,存放輸入的經(jīng)測試后返回0分的答案;編程題編譯正確評分表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予正確分的答案;編程題程序代碼評分表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予相應(yīng)分值的答案。
還包括試題類型判斷模塊,判斷試題為填空題或改錯題、編程類題目,分別調(diào)用填空題和改錯題閱卷模塊、編程題閱卷模塊;精簡代碼模塊,對于輸入的答案,進(jìn)行格式化處理,包括將程序中的TAB鍵轉(zhuǎn)換為空格、刪除空行、刪除注釋、刪除無效的多余空格(保留影響程序邏輯性或正確性的空格)操作,得到精簡代碼。結(jié)果文件判分模塊,對輸入的答案進(jìn)行判分,并將得分返回。
本發(fā)明具有以下有益效果:本發(fā)明的閱卷方法及系統(tǒng)能夠?qū)崿F(xiàn)主觀題、客觀題的智能評閱,大大縮短了閱卷周期,節(jié)約了人力物力,同時降低人工閱卷時易出現(xiàn)的錯批情況;而且,統(tǒng)一閱卷時,考生大量增加的情況下,閱卷時間增加很少。由于本發(fā)明的閱卷方法具有學(xué)習(xí)能力,因此閱卷的正確性和公平性都得到了明顯提高。
附圖說明
圖1為本發(fā)明實(shí)施例的智能閱卷方法流程圖。
圖2為本發(fā)明實(shí)施例的填空題及改錯題智能閱卷方法流程圖。
圖3為本發(fā)明實(shí)施例的編程類題智能閱卷方法流程圖。
圖4為本發(fā)明實(shí)施例的編程類閱卷評分流程圖。
圖5為本發(fā)明實(shí)施例的編程類閱卷測試答案流程圖。
具體實(shí)施方式
為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合實(shí)施例與附圖對本發(fā)明作進(jìn)一步的說明。
本實(shí)施例的閱卷方法及系統(tǒng):
(1)圍繞C程序設(shè)計(jì)課程,實(shí)現(xiàn)考試環(huán)節(jié)所有功能,包括題庫建立、設(shè)定組卷規(guī)則、考試(含監(jiān)考)、閱卷評分、生成電子試卷;
(2)按照C程序設(shè)計(jì)課程考核要求,試卷通常有選擇、程序閱讀、程序填空、改錯、編程等題型,對每個考生實(shí)現(xiàn)隨機(jī)選題組卷或指定題目組卷;
(3)考試中能根據(jù)需要開放或限制使用編程環(huán)境,如選擇、程序閱讀題應(yīng)限制使用編程環(huán)境,而程序填空、改錯、編程題則允許考生在編程環(huán)境中進(jìn)行調(diào)試,以便通過運(yùn)行程序得到正確結(jié)果;
(4)對于客觀題(選擇題)實(shí)現(xiàn)自動評閱;對于閱讀程序題可根據(jù)考生提交的答案種類設(shè)定分值后自動評閱;對于程序填空、改錯等答案可能不唯一的題型通過語句比對、代碼代入程序運(yùn)行等方式進(jìn)行自動評閱,對于一種答案只進(jìn)行一次評閱,自動完成其他相同答案的評閱;對于編程題則按對于不同的輸入,運(yùn)行結(jié)果與預(yù)期答案是否一致(自動評閱)、能否編譯運(yùn)行(人工干預(yù)評閱)、源代碼邏輯分析(人工干預(yù)評閱)給予不同的分值。
(5)當(dāng)有大量考生時,可以設(shè)定分組并行評閱,指定老師評閱特定題號,最后將評閱結(jié)果合并;評閱流程可以設(shè)置匿名狀態(tài)進(jìn)行(即老師看不到評閱學(xué)生信息);評閱結(jié)束生成電子試卷和評閱記錄存檔。
智能閱卷系統(tǒng)包括采集模塊,讀取第i個考生登錄信息表中第j道試題的試卷代號;判斷模塊,判斷輸入的答案與參考答案是否相同;測試模塊,若輸入的答案與參考答案不相同,對輸入的答案進(jìn)行測試;存檔模塊,用于反饋批改結(jié)果,閱卷結(jié)束生成電子試卷和閱卷記錄存檔信息;系統(tǒng)還包括參考答案數(shù)據(jù)庫,存放試題的試卷代號及對應(yīng)的參考答案;填空改錯題編譯正確表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予正確分的答案;填空改錯題編譯錯誤表數(shù)據(jù)庫,存放輸入的經(jīng)測試后返回0分的答案;編程題編譯正確評分表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予正確分的答案;編程題程序代碼評分表數(shù)據(jù)庫,存放輸入的經(jīng)測試后給予相應(yīng)分值的答案。
流程圖如圖1所示:
步驟1,讀取第i個考生登錄信息表中第j道試題的試卷代號;
步驟2,讀取并判斷輸入的答案與參考答案是否相同;
步驟3,若輸入的答案與參考答案相同,返回評分;若輸入的答案與參考答案不相同,對輸入的答案進(jìn)行測試;
步驟4,反饋批改結(jié)果,閱卷結(jié)束生成電子試卷和閱卷記錄存檔信息。
具體實(shí)現(xiàn)方法為:
(1)關(guān)于填空題和改錯題的評閱
對于每個考生,根據(jù)預(yù)先設(shè)定的題型表和題號讀取相應(yīng)程序,根據(jù)題型表確定填空點(diǎn)或改錯點(diǎn),如果輸入答案為空白或與原始程序相同,則意味著考生沒做該題;如果與參考答案完全一樣則判定正確;其他情況則須將考生編寫的語句逐條代入?yún)⒖即鸢赋绦蛑羞M(jìn)行編譯運(yùn)行,根據(jù)運(yùn)行結(jié)果判定代碼的正確性。流程圖見圖2。
(2)關(guān)于編程題的評閱
對于編程題,預(yù)先對除基本框架以外的各考核點(diǎn)(編譯運(yùn)行、結(jié)果輸出、正確性等)設(shè)定一定的分值,以便評閱時給予相應(yīng)分值。
如圖3,對于所有考生的程序,依次進(jìn)行以下流程的評閱:
①對源程序進(jìn)行格式化處理,包括將程序中的TAB鍵轉(zhuǎn)換為空格、刪除空行、刪除注釋、刪除無效的多余空格(保留影響程序邏輯性或正確性的空格)等操作;
②將格式化處理后的程序與原始框架程序比較,如果相同,說明考生沒有編寫任何代碼,代碼分為0分;否則與參考答案程序比較,如果相同,說明考生代碼完全正確,得到全部代碼分;
③查找“編程題編譯正確評分表”,如有一致代碼,給予正確分;
④查找“編程題程序代碼評分表”,如有一致代碼,給予相應(yīng)分值;
⑤考生程序運(yùn)行結(jié)果與參考答案程序運(yùn)行結(jié)果比對,如相同,給予全部代碼分的同時,將該程序存入系統(tǒng)“編程題編譯正確評分表”中;
⑥人工閱卷,給定程序分值,同時將該程序存入系統(tǒng)“編程題程序代碼評分表”中。
⑦若精簡代碼不在“編程題編譯正確評分表”中,判斷試題是否要求輸入的答案編譯運(yùn)行并輸出指定的結(jié)果文件:(1)若是,根據(jù)結(jié)果文件是否存在及結(jié)果文件是否正確,返回得分。
更具體的:如圖4,步驟1,判斷試題類型;當(dāng)試題類型為編程題,讀取第i個考生登錄信息表中第j道試題的試卷代號,讀取試卷對應(yīng)的源程序文件名、評分參數(shù)等,包括讀取該試卷所對應(yīng)的源程序文件名,是否要求考生編譯運(yùn)行并輸出指定的文件,程序完全正確分值,存在結(jié)果文件分值,結(jié)果文件正確分值等參數(shù)。讀取輸入的答案,處理為精簡代碼。
步驟2,讀取并判斷輸入的答案與參考答案是否相同;精簡代碼與原始試題是否一樣,精簡代碼是否在“編程題編譯正確評分表”中,若精簡代碼不在“編程題編譯正確評分表”中,判斷試題是否要求輸入的答案編譯運(yùn)行并輸出指定的結(jié)果文件:若是,判斷考生運(yùn)行的結(jié)果文件與參考答案運(yùn)行的結(jié)果文件是否一樣,并評分;否則,判斷精簡代碼是否在“編程題程序代碼評分表”中并已經(jīng)評分;
如圖5,步驟3,若輸入的答案與參考答案不相同,對輸入的答案進(jìn)行測試;通過重定向輸入語句輸入預(yù)先設(shè)置的一組或多組測試數(shù)據(jù),對輸入的答案進(jìn)行編譯運(yùn)行,對參考答案也進(jìn)行編譯運(yùn)行,通過重定向輸出語句輸出運(yùn)行結(jié)果,判斷代入每一組數(shù)據(jù)時,考生程序運(yùn)行結(jié)果與參考答案運(yùn)行結(jié)果是否都相同,若都相同,則返回得分,并將輸入的答案存入“編程題編譯正確評分表”中;否則,給定部分代碼分,并將輸入的答案存入“編程題程序代碼評分表”中。
其中,可以記錄參考答案的編譯運(yùn)行結(jié)果,除首次對輸入的答案進(jìn)行測試時,對輸入的答案和參考答案都進(jìn)行編譯運(yùn)行外,僅對輸入的答案編譯運(yùn)行,并與參考答案的編譯運(yùn)行結(jié)果進(jìn)行比較判斷。
步驟2、3后仍然判斷試題是否要求考生編譯運(yùn)行并輸出指定的結(jié)果文件,若是,調(diào)用結(jié)果文件判分模塊:如果結(jié)果文件不存在,輸出結(jié)果文件分得0分;如果結(jié)果文件存在,得結(jié)果文件存在分;如果文件內(nèi)容又正確,再得內(nèi)容正確分。
步驟4,反饋批改結(jié)果等。閱卷結(jié)束生成電子試卷和閱卷記錄存檔信息。
填空題、改錯題和編程類題的閱卷模塊可相互調(diào)用。
本實(shí)施例的閱卷系統(tǒng)使得閱卷工作量由原來的每班級4小時左右(每班以40人計(jì))縮短至30分鐘左右,而且,統(tǒng)一閱卷時,考生大量增加的情況下,閱卷時間增加很少。同時閱卷的正確性和公平性都得到了明顯提高。
以上的實(shí)施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動,均落入本發(fā)明保護(hù)范圍之內(nèi)。