韋立梅 張淑榮
(廣東白云學院電氣與信息工程學院,廣東 廣州 510450)
《C語言程序設(shè)計》課程自動評分系統(tǒng)綜述
韋立梅 張淑榮
(廣東白云學院電氣與信息工程學院,廣東 廣州 510450)
C語言是國際上廣泛流行的計算機高級程序設(shè)計語言,也是我校計算機、電子、自動化、機電等相關(guān)專業(yè)的一門必修課。開發(fā)一個合理的C語言程序設(shè)計課程自動評分系統(tǒng),可以節(jié)省教師大量的改卷時間,實現(xiàn)無紙化考試,從而可以將自動評分系統(tǒng)推廣到其它課程中。
C語言程序設(shè)計;自動評分系統(tǒng)
C語言是1972年由美國貝爾研究所的D.M.Ritchie提出的。它既具有高級語言的特點,又具有匯編語言的特點。因此可用它開發(fā)系統(tǒng)程序,也可以用來編寫應用軟件。C語言具備很強的數(shù)據(jù)處理能力,是世界上應用最廣泛的計算機語言之一。C語言一共有37個關(guān)鍵字、9種控制語句、34種運算符、豐富的數(shù)據(jù)類型,能用來實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構(gòu)的運算,尤其是指針類型數(shù)據(jù),使用靈活,提高程序效率;用C語言較易實現(xiàn)程序的模塊化、結(jié)構(gòu)化設(shè)計,生成的目標代碼質(zhì)量高,程序執(zhí)行效率高;可移植性好,幾乎在所有的計算機系統(tǒng)中都可以使用C語言。
自動評分系統(tǒng)的開發(fā)工具是采用Visual Basic語言與C語言相結(jié)合,其中主體程序與界面均由Visual Basic語言實現(xiàn),對編程題的評分算法(詞法分析、語法分析等)則采用C語言編寫。
3.1 Visual Basic數(shù)據(jù)庫編程技術(shù)
(1)Visual Basic的數(shù)據(jù)庫對象
Visual Basic訪問數(shù)據(jù)庫常用三種方法,它們分別是:數(shù)據(jù)訪問對象(DAO)、遠程數(shù)據(jù)對象(RDO)和ActiveX(ADO)。
DAO數(shù)據(jù)訪問對象。Visual Basic把DAO模型封裝在Data控件,分別設(shè)置相應的DatabaseName屬性和Recordsoucre屬性就可以將Data控件與數(shù)據(jù)庫中的記錄源連接起來,以后就可以使用Data控件來對數(shù)據(jù)庫進行操作。因此DAO最適用于單系統(tǒng)應用程序或在本地分布使用。RDO是Visual Basic訪問關(guān)系型ODBC數(shù)據(jù)源的最佳界面接口,這種方法也集成于Visual Basic中。Active Data Objects(ADO)作為另一種可供選擇的技術(shù)出現(xiàn),正在逐漸代替其他數(shù)據(jù)訪問接口。ADO“擴展”了DAO和RDO所使用的對象模型,這意味著它包含較少的對象、更多的屬性、方法(和參數(shù)),以及事件。ADO是獨立于開發(fā)工具和開發(fā)語言的簡單而且容易使用的數(shù)據(jù)接口,所有的數(shù)據(jù)源都可以通過ADO來訪問。
(2)數(shù)據(jù)綁定控件
連接好數(shù)據(jù)庫后,還需要用數(shù)據(jù)綁定控件將數(shù)據(jù)源對象顯示出來,然后才能對后臺中的數(shù)據(jù)信息進行編輯和查詢等數(shù)據(jù)處理操作。常用的數(shù)據(jù)綁定控件有文本框、組合框等標準控件及數(shù)據(jù)列表(DataList)、數(shù)據(jù)網(wǎng)格(DataGrid)等ActiveX控件。數(shù)據(jù)綁定控件有兩個標準的屬性:Datasource和DataField屬性。Datasource屬性用于設(shè)置數(shù)據(jù)源,DataField屬性用來設(shè)置數(shù)據(jù)庫字段的名稱。
3.2 Visual Basic中調(diào)用API函數(shù)
Application Programming Interface,簡稱API函數(shù),是Windows操作系統(tǒng)提供的函數(shù),可以實現(xiàn)對應用程序的控制。要調(diào)用API函數(shù),必須先在Visual Basic中用Declare語句聲明??山柚赩isual Basic提供的應用程序“API文本查看器”,正確地聲明與使用API函數(shù)。
3.3 TCC行編輯命令的使用
除了使用集成開發(fā)環(huán)境之外,也可以用傳統(tǒng)的命令行界面來運行Turbo C程序,TCC命令可以以命令行的方式編譯C源文件,將它們連接成可執(zhí)行文件??稍谄渌绦蛑袑CC作為外部程序調(diào)用,實現(xiàn)以命令行方式編譯連接C源程序。
除以上幾點外,系統(tǒng)還涉及到了編譯原理中的詞法分析及語法分析方法。
對于編程題進行自動評卷,較復雜,因此本文重點介紹該題型自動評分功能的實現(xiàn)方法。
由于本文針對的是非計算機專業(yè)的C語言課程,學生普遍剛剛接觸程序設(shè)計,造成惡意代碼的概率較低,再結(jié)合C語言程序結(jié)構(gòu)、語法特點,對編程題評分主要采用結(jié)果、靜態(tài)評分與動態(tài)評分相結(jié)合的方法,具體步驟如下:
(1)結(jié)果對比
檢查指定的結(jié)果文件是否存在,若存在則與標準答案文件進行對比,與標準答案文件內(nèi)容完全相同,則說明結(jié)果正確,得滿分,否則轉(zhuǎn)去靜態(tài)評閱,若無結(jié)果文件,執(zhí)行動態(tài)評分。
(2)基于可執(zhí)行文件的動態(tài)評分
對考生源程序進行編譯連接,若生成可執(zhí)行文件成功,則運行考生程序,用預先定義的測試數(shù)據(jù)集中的各組測試數(shù)據(jù)作為輸入值,進行測試,比較運行結(jié)果和期望結(jié)果,并通過比較結(jié)果評定學生程序的分數(shù)。若生成失敗,說明考生程序存在語法錯誤,轉(zhuǎn)入以下過程繼續(xù)處理:
1)對考生源程序進行詞法分析。掃描源程序,將其轉(zhuǎn)化為特定格式的TOKEN串,存入TOKEN文件;
2)根據(jù)詞法分析的結(jié)果,即TOKEN文件,進行語法分析,詳細指出程序中存在的語法錯誤,生成錯誤文件,在保證不對考生程序正確部分產(chǎn)生破壞的前提下,盡最大可能將考生程序修改正確,生成修改后的TOKEN文件;
3)調(diào)用轉(zhuǎn)換程序?qū)⑿薷暮蟮腡OKEN文件重新生成為C語言源程序,其與考生源程序的名字不同,稱其為新生成源程序;
4)調(diào)用TCC程序以命令行方式對新生成源程序進行編譯連接;
5)編譯連接成功,運行新源程序的執(zhí)行文件,并調(diào)用API函數(shù)控制程序運行,以防由于死鎖的發(fā)生導致系統(tǒng)崩潰;編譯失敗則退出動態(tài)評閱過程,改用靜態(tài)評閱;
6)對新生成源程序的運行結(jié)果進行檢測,若有結(jié)果,則轉(zhuǎn)去進行結(jié)果比較,若無結(jié)果則轉(zhuǎn)去進行靜態(tài)評閱。
(3)基于程序代碼的靜態(tài)評分
與動態(tài)評分相比,代碼靜態(tài)評分不需要運行學生的程序,因此不用考慮對系統(tǒng)安全性的影響,作為編程題評分的必要環(huán)節(jié),代碼靜態(tài)檢查對于可執(zhí)行和不可執(zhí)行的程序都適用。代碼靜態(tài)檢查分為軟件質(zhì)量度量方法和源程序分析比較方法。軟件質(zhì)量度量方法主要是對程序的常量、變量和關(guān)鍵字等內(nèi)容進行分析后,根據(jù)匹配程度給出分數(shù)。源程序分析比較方法主要是通過將學生源程序和標準程序進行匹配,該方法依賴于標準答案的數(shù)據(jù)集,根據(jù)模板最為匹配的答案與學生源程序進行對比,根據(jù)匹配程度給出評分。源程序分析比較方法主要采用的是基于結(jié)構(gòu)度量的技術(shù)。從程序設(shè)計題題庫文件中讀取該試題的關(guān)鍵語句,對考生程序進行檢測,根據(jù)檢測出的考生程序中的關(guān)鍵語句的條數(shù),判斷程序的邏輯合理性,給出相應分值。
目前,利用計算機對學校各門課程考試試題庫進行管理、組卷、測試、評分系統(tǒng)的開發(fā)與使用,已成為各個院校教學改革的重點內(nèi)容之一。限于篇幅,本文只重點介紹編程題目的自動評分方法的實現(xiàn)。
[1]赫伽寧.結(jié)合動態(tài)測試與靜態(tài)分析的編程題自動評分方法研究[D].哈爾濱工業(yè)大學,2008.
[2]譚浩強.C語言程序設(shè)計[M].北京:清華大學出版社,2004.
[3]王春霞.自動閱卷系統(tǒng)的開發(fā)[J].鹽城工學院學報,2002(15).
[4]郭琦.Visual Basic數(shù)據(jù)庫系統(tǒng)開發(fā)技術(shù)[M].北京:人民郵電出版社,2003.
Overview of the Automatic Scoring System of C Language Programming Design
Wei LiMeiZhang ShuRong
(College of Electrical and Information Engineering,Guangdong Baiyun University,Guangzhou 510450,Guangdong)
C programming language is the international popular advanced computer programming language.It is also a compulsory course for computer,electronics,automation,mechatronics and other related majors in our school.This paper develops a reasonable automatic scoring system for C language programming design,which can save a lot of time for teachers and realize the paperless examination,so that the automatic scoring system can be extended to other courses.
C language programming design;automatic scoring system
G434
A
1008-6609(2015)10-0072-02
韋立梅,女,遼寧凌源人,碩士,講師,研究方向:數(shù)據(jù)庫應用系統(tǒng)開發(fā)、多媒體技術(shù)。