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

?

C語言教學(xué)中上機考試及自動評分系統(tǒng)研究與開發(fā)

2013-02-28 01:28段敬利張春飛魏久鴻
機械設(shè)計與制造工程 2013年10期
關(guān)鍵詞:字段C語言程序設(shè)計

段敬利 ,張春飛,魏久鴻

C語言是大學(xué)教育的必修課程之一。目前很多C語言教學(xué)中的上機練習(xí)系統(tǒng)和上機考試系統(tǒng)一般都包括填空、改錯和程序設(shè)計3部分。填空和改錯這樣的客觀題目的自動評分技術(shù)比較成熟[1],但是對于主觀題的閱卷技術(shù)卻一直停滯難前[2]。目前主要采用的是結(jié)果對比評分法,即依據(jù)程序運行結(jié)果和標準答案對比給出相應(yīng)分數(shù),結(jié)果正確得滿分,不正確得零分。這種方法衡量的只是一個輸出文件或者輸出結(jié)果,完全忽略了考生的源代碼,顯然有失公允,不能反映學(xué)生的真實水平。而且現(xiàn)有的考試系統(tǒng)多為單機版和基于C/S模式的,存在時間和空間受限的缺點。

針對上述問題,本文研究了一套基于Web的C語言考試及自動評分系統(tǒng),該評分系統(tǒng)充分考慮學(xué)生的源代碼,在結(jié)果對比評分的基礎(chǔ)上,給出了修復(fù)編譯、代碼對比相結(jié)合的評分方法。

1 開發(fā)平臺和系統(tǒng)結(jié)構(gòu)

C語言教學(xué)中上機考試及評分系統(tǒng)主要包含3部分:考試系統(tǒng)、試卷管理系統(tǒng)和評分系統(tǒng),如圖1所示??荚囅到y(tǒng)采用基于Web的B/S模式,只有服務(wù)器端,客戶端為Web瀏覽器。服務(wù)器其實是一個網(wǎng)站,管理員也可通過Web瀏覽器對數(shù)據(jù)庫進行維護。而學(xué)生也是通過瀏覽器進行登錄、試題抽取和提交考試結(jié)果。本系統(tǒng)學(xué)生提交的不是文件,而是以表單的形式把學(xué)生的答案提交到數(shù)據(jù)庫對應(yīng)的字段,評分系統(tǒng)提取學(xué)生答案,再組成C文件進行評分,考生在線考試過程如圖2所示。

圖1 功能模塊圖

圖2 在線考試過程

C語言教學(xué)中上機考試及自動評分系統(tǒng)采用微軟的SQL Server作為系統(tǒng)數(shù)據(jù)庫,在Windows XP操作系統(tǒng)、IIS服務(wù)器和Asp.net環(huán)境下設(shè)計動態(tài)網(wǎng)頁,實現(xiàn)考試系統(tǒng)。自動評分系統(tǒng),則在Visual C++.net環(huán)境下實現(xiàn)。

2 評分系統(tǒng)的設(shè)計與實現(xiàn)

2.1 評分系統(tǒng)評閱流程

評分系統(tǒng)的主觀題采用結(jié)果對比、修復(fù)編譯與代碼對比相結(jié)合的評分方法。結(jié)果對比是檢查考生程序的運行結(jié)果是否與標準答案的運行結(jié)果一致。修復(fù)編譯是修改源文件中的語法錯誤,使程序生成EXE文件,再進行結(jié)果對比評分。代碼對比評分是將規(guī)范化處理后的學(xué)生程序與標準答案知識要點進行相似度計算,得到各知識點分值,再累計得到總分,它類似于教師在評閱主觀題時的思維方法。系統(tǒng)評分方法如圖3所示。

圖3 系統(tǒng)評分方法圖

2.2 評分系統(tǒng)設(shè)計

程序設(shè)計題評分之前的一項重要工作是保存程序設(shè)計題的各知識要點和評分標準。由于是課程考試,給出的程序不會很復(fù)雜,先分析程序設(shè)計題并設(shè)定知識要點及其分值,一道試題的各知識要點的分值之和等于該試題的分值,將每道程序設(shè)計題的知識要點、分值分別保存在知識要點評分表answerkey的 q_answerkey和 q_keyscore字段中。程序設(shè)計題的評分過程分為以下4個步驟:

a.排除未答題考生。

先判斷考生程序設(shè)計題答案字段stu_answer是否存在,若不存在,則得0分,存入試題得分表detailscore中的e_score字段中;若存在,則轉(zhuǎn)到評分模塊進行評分。用偽代碼表示如下:

if stu_answer exist then

e_score=0

else go to評分模塊

b.結(jié)果對比。

結(jié)果對比是檢查考生程序的運行結(jié)果是否與標準答案的運行結(jié)果一致,若一致,則可得滿分,并將得分存入detailscore表(各試題得分表)中的e_score字段中;否則轉(zhuǎn)到代碼對比評分。

c.修復(fù)編譯。

即使學(xué)生思路明確,程序中也可能出現(xiàn)語法錯誤,致使程序不能產(chǎn)生運行結(jié)果。修復(fù)編譯的作用是修改學(xué)生程序中的語法錯誤,進而使程序能通過編譯和鏈接,生成EXE文件和答案。但是每修改一次語法錯誤要從該題目總分中扣除相應(yīng)的分數(shù),比如總分100分,一次修改扣10分的話,經(jīng)過一次修改生成EXE文件,并且輸出和標準答案相同的結(jié)果,則可得到90分。如果修改的次數(shù)超過規(guī)定次數(shù),則進入代碼對比評分。常見的語法錯誤主要是標點符號的遺失和輸入錯誤的標識符。下面簡要概述修復(fù)編譯的過程和關(guān)鍵技術(shù)。

首先對源程序中的單詞進行詞性分析,詞性分析的主要任務(wù)是識別各個詞匯的類型的值,識別后的各個詞的類型保存在一個鏈表word_list中。詞性分析過程中用到的結(jié)構(gòu)體定義如下:

struct word

{

char lab_name;//標識類型

int state;//狀態(tài)

int number;//序號

int line;//行號

char name[50]//詞匯

struct word*next;//指向下一節(jié)點的指針

}

對程序掃描后,各個單詞保存在各自的結(jié)構(gòu)體變量中,并生成鏈表word_list,供語法分析使用。

然后對word_list鏈表進行語法分析,如不合法,則判斷錯誤位置,并嘗試修正。如果是標點符號遺漏,則還需要判斷遺漏的是何種標點,然后在遺漏位置插入相應(yīng)的標點符號。如果發(fā)現(xiàn)未定義的標識符,則查找本程序中已定義的標識符表和關(guān)鍵字表,如發(fā)現(xiàn)相似度較高的單詞,則進行替換。經(jīng)過上述步驟,可修改程序中的一處語法錯誤,然后進行下一次編譯。

d.代碼對比評分。

代碼對比評分是在評分系統(tǒng)的題庫中事先存放不同算法的正確關(guān)鍵代碼,評分的時候系統(tǒng)通過對比學(xué)生程序中這些關(guān)鍵代碼,給出相應(yīng)的分數(shù)。但是,同樣一個程序設(shè)計題目,同樣的算法,其書寫的方法和格式也是千變?nèi)f化的,而且標識符的定義也是由個人喜好決定。用簡單的、死板的關(guān)鍵字對比,顯然是行不通的。這里采用正則公式[3]來應(yīng)對C語言的語法特性。

如求10的階乘的程序關(guān)鍵代碼如下:

int a=1,i=1;

while(i<=10){a=a*i;i++}

其中存放結(jié)果的變量a和循環(huán)控制變量i,不同的學(xué)生會用不同的名字來命名,那么可用一種通用的表示方法來表示這段代碼:

int@VAR@=1,@VAR@=1;

while(@VAR@<=10){@VAR@=@VAR@*@VAR@;@VAR@++}

這里可以用C語言變量的正則表達式“(s)*(w)+(s)*”對上面的代碼進行匹配。

評分系統(tǒng)首先用正則公式對學(xué)生代碼進行規(guī)范化處理,然后根據(jù)知識要點評分表中給出的知識要點和評分標準,評判程序?qū)χR要點的覆蓋情況,計算學(xué)生代碼和各知識要點的相似度值,分別存入知識要點得分表中的e_keyscore字段。最后計算各知識點得分的總和,存入該題總分(e_score)字段中。

3 結(jié)束語

本文所提出的C語言程序設(shè)計題目的評分方法,結(jié)合了幾種不同的評分方法,取長補短,彌補了現(xiàn)有評分方法的不足,避免了出現(xiàn)一點錯誤即得零分的不合理現(xiàn)象,可以更客觀地反映學(xué)生的真實水平,增強了考試的公平性和真實性。實踐證明,采用上述評分方法的考試系統(tǒng)適合用于C語言教學(xué)中的上機練習(xí)和考試。本文提出的修復(fù)編譯還僅限于標點符號遺失和標識符錯誤的修復(fù),雖然不能完全替代教師的閱卷工作,但卻是一種充分考慮學(xué)生源代碼的新思路,為研究出更科學(xué)的評分方法提供了依據(jù)。

[1] 孟愛國,卜勝賢,李鷹,等.一種網(wǎng)絡(luò)考試系統(tǒng)中主觀題自動評分的算法設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2005(7):147-150.

[2] 王永生.計算機閱卷中主觀題型的單層模糊綜合評判[J].青海大學(xué)學(xué)報,2000(3):46-49.

[3] 佛瑞德(Jeffrey Friedl E F).精通正則表達式[M].3版.余晟譯.北京:電子工業(yè)出版社,2012.

猜你喜歡
字段C語言程序設(shè)計
圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
從細節(jié)入手,談PLC程序設(shè)計技巧
基于C語言的計算機軟件編程
高職高專院校C語言程序設(shè)計教學(xué)改革探索
PLC梯形圖程序設(shè)計技巧及應(yīng)用
論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
CNMARC304字段和314字段責(zé)任附注方式解析
無正題名文獻著錄方法評述
關(guān)于CNMARC的3--字段改革的必要性與可行性研究
梨树县| 康平县| 固始县| 玛曲县| 普陀区| 保山市| 高阳县| 阜南县| 鹤壁市| 自治县| 龙胜| 临潭县| 福泉市| 措美县| 古浪县| 西乡县| 县级市| 安丘市| 双辽市| 勐海县| 增城市| 翁源县| 阿拉善右旗| 江源县| 绥阳县| 兰考县| 文水县| 武冈市| 视频| 云梦县| 临潭县| 柯坪县| 承德县| 开封市| 玛曲县| 股票| 山阴县| 通榆县| 五家渠市| 岚皋县| 丹巴县|