国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言編程題自動(dòng)評(píng)分系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2016-05-30 20:36胡霖李溍溍王慶韓曉君馬遠(yuǎn)郭曉龍
科技與企業(yè) 2016年7期
關(guān)鍵詞:C語言

胡霖 李溍溍 王慶 韓曉君 馬遠(yuǎn) 郭曉龍

【摘要】本系統(tǒng)主要研究C語言編程題目中“編譯運(yùn)行結(jié)果對(duì)比”、“編譯錯(cuò)誤原因恢復(fù)與評(píng)閱”、“得分點(diǎn)分割正則動(dòng)態(tài)測(cè)試”三種手段,將研究?jī)?nèi)容運(yùn)用到自動(dòng)閱卷系統(tǒng)中,實(shí)現(xiàn)對(duì)編程題目的自動(dòng)評(píng)分,并實(shí)現(xiàn)基于J2EE技術(shù)的具有在線考試、自動(dòng)評(píng)分等功能的C語言編程題目自動(dòng)閱卷考試系統(tǒng),提高閱卷的準(zhǔn)確度的同時(shí)能夠節(jié)省大量的人力物力財(cái)力。

【關(guān)鍵詞】C語言;編程題;自動(dòng)評(píng)分

隨著計(jì)算機(jī)技術(shù)的發(fā)展以及互聯(lián)網(wǎng)的普及,辦公自動(dòng)化已無處不在。作為一門基礎(chǔ)課程,C語言考試應(yīng)用系統(tǒng)也給批閱試卷的工作人員帶來了很大的工作量,自上世紀(jì)六十年代起,國(guó)內(nèi)外就陸續(xù)出現(xiàn)了許多關(guān)于語言類課程考試的軟件系統(tǒng),雖然很多已具有基本的隨機(jī)答卷、上機(jī)考試及自動(dòng)評(píng)閱等功能,但只針對(duì)客觀題,因自然語言的刻畫、人工智能、模式識(shí)別等核心技術(shù)發(fā)展緩慢,制約了編程題目閱卷系統(tǒng)研究發(fā)展。所以,本系統(tǒng)針對(duì)C語言編程題目進(jìn)行整體規(guī)劃,致力于做出更精確的C語言編程題自動(dòng)閱卷的方法,填補(bǔ)自動(dòng)閱卷軟件開發(fā)空白,減少人工操作的資源浪費(fèi)。

1.系統(tǒng)運(yùn)行環(huán)境

智能C語言考試系統(tǒng)、自動(dòng)評(píng)分系統(tǒng)的運(yùn)行環(huán)境是根據(jù)我?,F(xiàn)有的教學(xué)機(jī)房的硬件環(huán)境(每個(gè)機(jī)房有70臺(tái)學(xué)生機(jī)和一臺(tái)教師機(jī))規(guī)劃的,教師端和學(xué)生端都采用window 7操作系統(tǒng),每個(gè)機(jī)房都采用校園公共網(wǎng)絡(luò)提供的局域網(wǎng),運(yùn)用Myeclipse開發(fā)環(huán)境、MySQL數(shù)據(jù)庫建立一套具有在線考試、自動(dòng)評(píng)分等功能的C語言編程題目自動(dòng)閱卷系統(tǒng),并輔以AJAX技術(shù),確定了用FreeMarker表現(xiàn)層技術(shù)增強(qiáng)用戶與系統(tǒng)間的交互,加快系統(tǒng)運(yùn)行效率,同時(shí),盡可能細(xì)化評(píng)分點(diǎn),增加準(zhǔn)確性。

2.系統(tǒng)運(yùn)行模式的選擇

系統(tǒng)采用B/S三層架構(gòu)模式,系統(tǒng)的用戶可通過Internet網(wǎng)絡(luò),客戶端不需要手動(dòng)安裝軟件,只要有瀏覽器就可以對(duì)系統(tǒng)進(jìn)行訪問和一般操作,本次對(duì)閱卷系統(tǒng)主要分析了的C語言編程題目評(píng)分功能,充分考慮到系統(tǒng)對(duì)靈活性和準(zhǔn)確性的要求,并保證安全性的前提下,本系統(tǒng)采用B/S結(jié)構(gòu)以達(dá)到輕客戶端需求。

3.系統(tǒng)研究?jī)?nèi)容

通過研究C語言程序結(jié)構(gòu),從編譯原理角度設(shè)計(jì)評(píng)價(jià)模型,通過內(nèi)部運(yùn)行編譯器對(duì)比動(dòng)態(tài)運(yùn)行結(jié)果,并且本課題創(chuàng)造性提出利用關(guān)鍵字對(duì)比、控制結(jié)構(gòu)判斷和正則表達(dá)式匹配三種靜態(tài)測(cè)試技術(shù)作為結(jié)果比對(duì)方案的補(bǔ)充,既保證了程序判斷的正確性,又確保了相對(duì)公正性。

編譯結(jié)果對(duì)比要實(shí)現(xiàn)程序內(nèi)部對(duì)C語言編譯器的動(dòng)態(tài)調(diào)用技術(shù),通過比對(duì)測(cè)試結(jié)果和標(biāo)準(zhǔn)答案進(jìn)行評(píng)分,對(duì)于不能編譯部分,研究關(guān)鍵字庫建立、控制結(jié)構(gòu)規(guī)范化和正則表達(dá)式建立的具體方案。

其中重點(diǎn)研究C語言編程題目評(píng)分標(biāo)準(zhǔn)的兩個(gè)方面:一是如何檢驗(yàn)運(yùn)行結(jié)果的正確性,二是如何評(píng)價(jià)程序代碼包含的分點(diǎn)。

為突出本系統(tǒng)對(duì)主觀題的評(píng)分機(jī)制,在試題主觀題程序可運(yùn)行以及不可運(yùn)行的情況下分別給出了相應(yīng)的評(píng)分策略,以此來一步步細(xì)化評(píng)分機(jī)制。

4.評(píng)分核心模塊設(shè)計(jì)

詳細(xì)設(shè)計(jì)自動(dòng)閱卷系統(tǒng)中的關(guān)鍵技術(shù)——程序題評(píng)分。系統(tǒng)首先采用動(dòng)態(tài)測(cè)試技術(shù),編譯運(yùn)行待評(píng)價(jià)程序,和標(biāo)準(zhǔn)答案進(jìn)行對(duì)比給出分?jǐn)?shù);需要數(shù)值型輸入?yún)?shù)的程序,通過均勻分布隨機(jī)數(shù)給出隨機(jī)輸入;需要字符型輸入?yún)?shù)的程序,首先在數(shù)據(jù)庫中保存預(yù)選文字段,然后隨機(jī)選取其中的一部分給出隨機(jī)輸入。對(duì)于編譯運(yùn)行報(bào)錯(cuò)的程序代碼,課題會(huì)采取錯(cuò)誤恢復(fù)技術(shù),通過編譯信息給出的錯(cuò)誤位置嘗試以標(biāo)準(zhǔn)答案修復(fù)代碼,從而給出扣分點(diǎn)。最后對(duì)于不能編譯運(yùn)行的代碼片段,系統(tǒng)提出關(guān)鍵字對(duì)比、控制結(jié)構(gòu)標(biāo)準(zhǔn)化和提取、正則表達(dá)式規(guī)則匹配相結(jié)合的靜態(tài)測(cè)試方法,加入權(quán)重處理,分析得分點(diǎn)給出更全面客觀的評(píng)分結(jié)果。

通過對(duì)軟件模式的對(duì)比和分層架構(gòu)模型的研究,系統(tǒng)擬采用B/S結(jié)構(gòu),方便用戶在線答題和管理操作;在具體實(shí)現(xiàn)技術(shù)方面,擬采用J2EE技術(shù)和SSH開源框架——利用Java語言提供的公開接口開發(fā)調(diào)用C語言編譯器模塊和正則表達(dá)式匹配模塊,利用MySQL數(shù)據(jù)庫完成題庫和答案庫的建立和開發(fā)工作,利用Ajax技術(shù)提高系統(tǒng)的整體響應(yīng)速率,利用FreeMarker表現(xiàn)層技術(shù)增強(qiáng)用戶與系統(tǒng)之間的交互。

建立計(jì)算機(jī)矯正機(jī)制和完善的評(píng)價(jià)方案,并對(duì)試題多次進(jìn)行人工閱卷與機(jī)器閱卷的對(duì)比測(cè)試。

5.數(shù)據(jù)庫設(shè)計(jì)

因需要評(píng)測(cè)本系統(tǒng)自動(dòng)閱卷功能和人工閱卷的準(zhǔn)確度,給出測(cè)評(píng)結(jié)果,并對(duì)仍存在的問題和不足提出進(jìn)一步改進(jìn)方案;特別是對(duì)系統(tǒng)不能正常評(píng)分的特殊題目,建立特例題庫,以便在今后的工作進(jìn)行研究并從中提出新的解決方案。

考生提交試卷首先由c語言編譯器自動(dòng)編譯后生成可執(zhí)行文件并運(yùn)行輸出結(jié)果,進(jìn)行評(píng)閱步驟校驗(yàn)結(jié)果時(shí),通過試題編號(hào)(id)調(diào)用試題表數(shù)據(jù),對(duì)比答案進(jìn)行準(zhǔn)確性校對(duì),調(diào)用糾錯(cuò)參考庫數(shù)據(jù),比對(duì)出錯(cuò)原因并根據(jù)錯(cuò)因扣除相應(yīng)分?jǐn)?shù),通過模糊匹配替代出錯(cuò)關(guān)鍵字,迭代匹配錯(cuò)因至無錯(cuò),若迭代五次還未改正視為崩潰性錯(cuò)誤,不可彌補(bǔ),判定本段分?jǐn)?shù)為零崩潰性錯(cuò)誤,不可彌補(bǔ),判定本段分?jǐn)?shù)為零,通過題目編號(hào)獲取相應(yīng)評(píng)分關(guān)鍵點(diǎn)庫,通過正則表達(dá)式匹配得分點(diǎn),通過得分點(diǎn)數(shù)量給出相應(yīng)分?jǐn)?shù),完成試卷評(píng)閱。

當(dāng)程序不能正常編譯運(yùn)行時(shí),系統(tǒng)判定進(jìn)入系統(tǒng)糾錯(cuò),系統(tǒng)自動(dòng)運(yùn)行修復(fù)性算法,代碼中個(gè)別關(guān)鍵字錯(cuò)誤,為此我們把c語言中所有的關(guān)鍵字整理出來,建立關(guān)鍵字庫,對(duì)錯(cuò)誤的關(guān)鍵字進(jìn)行模糊匹配,通過字符的順序、相同字符的數(shù)量、鍵盤鍵位的keycode盡可能的匹配出相似度最高的的關(guān)鍵字替換錯(cuò)誤的關(guān)鍵字。

糾錯(cuò)主要是語句拼寫錯(cuò)誤,我們分了下面三種情況:

1)測(cè)試用例由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果組成,人們常用白盒法和黑盒法設(shè)計(jì)測(cè)試用例,其中白盒法主要是為了檢查是否有數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤等,對(duì)比通過單元測(cè)試的模塊或組件、編程規(guī)范、集成測(cè)試來檢查測(cè)試的準(zhǔn)確性。

通過正誤判斷匹配正誤判斷表進(jìn)行結(jié)果判定,判定結(jié)果是否符合題目,若是則給分,否則進(jìn)行結(jié)果范圍判斷及結(jié)果屬性判斷,比對(duì)結(jié)果是否適用本題范圍,并進(jìn)行分?jǐn)?shù)評(píng)估。

2)本表主要有三個(gè)主要信息id、name、keyword。分別用來存儲(chǔ)錯(cuò)誤的id、錯(cuò)誤的名稱、題目中的關(guān)鍵字。Id的數(shù)據(jù)類型為int(整型),name的數(shù)據(jù)類型為varchar(字符型),keyword的數(shù)據(jù)類型為varchar(字符型),id需要主鍵非空自增,name與keyword非空。通過建立本數(shù)據(jù)庫表可以實(shí)現(xiàn)對(duì)錯(cuò)誤信息的收集歸類,同時(shí)可以實(shí)現(xiàn)判斷系統(tǒng)中出現(xiàn)的錯(cuò)誤的功能。

定位捕捉錯(cuò)誤點(diǎn),拋出錯(cuò)誤原因并與數(shù)據(jù)庫進(jìn)行比對(duì),并根據(jù)錯(cuò)因給予相應(yīng)分?jǐn)?shù),運(yùn)用模糊匹配尋找替代關(guān)鍵詞,進(jìn)行替代繼續(xù)檢查錯(cuò)誤,若連續(xù)替代五次后仍然不能進(jìn)行下一步驟視為程序崩潰行錯(cuò)誤,不可彌補(bǔ),判定本段分?jǐn)?shù)為零。

3)正則表達(dá)式,又稱正規(guī)表示法、常規(guī)表示法(英語:RegularExpression,在代碼中常簡(jiǎn)寫為regex、regexp或RE),正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列符合某個(gè)句法規(guī)則的字符串,在本字段里,正則表達(dá)式通常被用來檢索、替換那些符合模式的程序段,進(jìn)行分步得分。

本數(shù)據(jù)庫包含關(guān)鍵字類庫,通過正則表達(dá)式匹配關(guān)鍵詞多寡,大概率的確定了答題者的思路范圍及答題思路的正確與否,給以步驟分,極大的提高了批卷的人性化,拉近了機(jī)器閱卷與人工閱卷的閱卷水平,更有說明行的體現(xiàn)了機(jī)器閱卷更好的使用性。

C語言考試系統(tǒng)已普遍在各高校使用,對(duì)于客觀題方面,有了相對(duì)完善公平的系統(tǒng),但是在自動(dòng)評(píng)分方面,還有很多不足之處,有待改善,本系統(tǒng)就是針對(duì)這一空白區(qū)域,設(shè)計(jì)公平而相對(duì)更準(zhǔn)確的算法,主要對(duì)C語言考試系統(tǒng)中的編程題部分進(jìn)行得分點(diǎn)分割,對(duì)考生的程序一步步細(xì)致分析,做到該得分的地方給考生相應(yīng)的分?jǐn)?shù),這樣避免了某一點(diǎn)小錯(cuò)誤導(dǎo)致的大幅度扣分的不公平性,同時(shí),將系統(tǒng)應(yīng)用到學(xué)生的日常學(xué)習(xí)中后,能夠更好地檢驗(yàn)教師的教學(xué)成果,查找教學(xué)過程中需要注意的地方,對(duì)于學(xué)生,也能夠更好地發(fā)現(xiàn)自己的錯(cuò)誤,及時(shí)改正,這樣,在學(xué)習(xí)的過程中,在保證公平的前提下,培養(yǎng)學(xué)生注意細(xì)節(jié)的習(xí)慣,最重要的是,應(yīng)用到高校的二級(jí)C語言考試后,能夠更好的給考生更公平更合理的考試成績(jī),同時(shí)也使得閱卷更加節(jié)約、方便、快捷,這也順應(yīng)了如今社會(huì)計(jì)算機(jī)行業(yè)的飛速發(fā)展,提高辦公自動(dòng)化的程度及效率。

參考文獻(xiàn)

[1]K.A.Redish,W.F.Smyth.Pragram style analysis:a natural by-product of prograrn compilation[J].Cornnnunications of the ACM,1986.(3):126-133.

[2]Yasuhiro Ajiro,KazunoriUeda.Kima:An Automated Error Correction System for Concurrent Logic Progrrams.Automated Software Engineering 2002.9(2):67-94.

[3]王甜甜,基于語義相似度的編程題自動(dòng)評(píng)分方法的研究,哈爾濱工業(yè)大學(xué)碩士論文,2001;1-52.

[4]李永浩,居于程序理解的編程題自動(dòng)評(píng)分系統(tǒng)憤憤研究與應(yīng)用,哈爾濱工業(yè)大學(xué)碩士論文,2001:1-60

[5]王華東.劉國(guó)柱.基于局域網(wǎng)下C語言考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與信息技術(shù),2006.

[6]吳艷玲.基于WEB的C語言編程題自動(dòng)閱卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2011.

猜你喜歡
C語言
基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
51單片機(jī)C語言入門方法
基于C語言的計(jì)算機(jī)軟件編程
C語言程序設(shè)計(jì)課程教學(xué)與學(xué)科專業(yè)相結(jié)合的探索
《C語言程序設(shè)計(jì)》翻轉(zhuǎn)課堂教學(xué)改革要點(diǎn)
淺談基于C語言的計(jì)算機(jī)軟件程序設(shè)計(jì)
高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
基于C語言的學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于C語言的常用排序算法比較研究
論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用