999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java的考試系統對C語言程序題的考核及自動判卷功能的設計與實現

2016-05-14 12:43:09邵新慧李響劉成偉張晟東
中國科技縱橫 2016年6期

邵新慧 李響 劉成偉 張晟東

【摘 要】在考試系統中,實現自動判卷是程序題考核設計的核心。圍繞該核心,開發設計“教師端程序題模板生成工具”、“學生端答題界面”、“服務端自動判卷邏輯業務”三個子模塊,以確保每一個程序題都有一個全面而準確的判卷模板與之對應,學生可以方便快捷地在可編輯區域編寫代碼并進行測試和提交,判卷模板和學生代碼自動組合并編譯成一個可執行程序,從而得到判卷得分臨時數據文件,考試系統通過讀取該臨時數據得到判卷結果。

【關鍵詞】考試系統 程序題 自動判卷 C語言 Java語言

隨著計算機技術的發展,越來越多的考試采用上機考試的形式。對選擇題、判斷題這類有固定答案的考試題型的判卷是很簡單的;然而,對程序題這種表述形式多樣化的題型,很難通過自動判卷給出合理的分數,多數是針對某一個運行結果進行判斷,未能滿足根據得分點進行判卷的需求。本文通過詳細介紹“教師端程序題模板生成工具”、“學生端答題界面”、“服務端自動判卷邏輯業務”三個模塊的設計,闡述了程序題自動判卷、以及合理評分的解決方案,在一定程度上提升了程序題考試的可行性、以及程序題判卷的合理性。

1 自動判卷功能的設計方案

1.1 設計思路

由于考試系統的開發語言是面向對象語言Java;程序題考核所用的語言為是C語言。所以很難通過代理模式實現對C語言程序的處理。因此,可將程序題判卷從系統整體設計中獨立出來,兩者之間通過某個簡單的數據存儲建立聯系。

記事本文件(設為grade.txt)可作為上述的中介數據存儲,其主要用于存儲學生得分記錄。一方面:系統可以讀取文件信息將得分記錄存入數據庫;另一方面:grade.txt可以通過調用java.lang.Runtime實例的exec(String command)方法運行某個可執行文件(設為judgeMain.exe)來得到。而judgeMain.exe文件、也可以通過調用exec(String command)方法對某個源文件(設為judgeMain.cpp)進行編譯和鏈接而生成。

其中,judgeMain.cpp文件是可以實現自動判卷、并將得分紀錄寫入記事本的源代碼文件。因此,只要獲得judgeMain.cpp文件,自動判卷問題就可以得到解決。

1.2 設計方案

1.2.1 核心方案

獲取judgeMain.cpp文件,使考試系統整體設計和程序題自動判卷業務邏輯相對獨立,通過exec(String command)方法編譯、鏈接、運行判卷程序。

1.2.2 judgeMain.cpp文件的獲取

假設A:每個用于學生考試的考試模板都有一個與之對應的判卷模板,該判卷模板通過輸出流生成一個記事本文件,并且學生在考試模板里填寫的內容可以自動而正確地填寫到判卷模板里。

假設B、有一個簡單可用的程序題模板生成工具,通過該工具,結合某個欲要考核算法或知識點的源代碼文件,能夠簡單快速的生成一一對應的考試模板和判卷模板。

假設C、有一個嚴格規范而且靈活簡潔的程序題答題編譯界面,既方便學生填寫、編譯、運行程序,而且可以準確地將學生填寫區域的代碼上傳到服務器。

可見,假設B和C成立時,A成立,從而可獲得judgeMain.cpp文件。

1.2.3 結論:開發以下兩個模塊支撐自動判卷實現

(1)教師端程序題模板生成工具;(2)嚴格而便捷的學生斷答題界面。

1.2.4 根據以上分析,自動判卷模板的原理可用圖1來描述

2 教師端程序題模板生成工具

2.1 功能實現

為實現程序題自動判卷功能,設計程序題模板生成工具,并讓其實現以下功能:導入一個源文件, 生成一一對應的考試模板、判卷模板,并為生成的考試、判卷模板提供瀏覽、測試功能,以便及時修改和調整。

2.2 設計方法

2.2.1 對導入源文件預處理

對源文件以注釋的形式添加一些特殊標記,通過識別這些特殊標記對源代碼自動修改或增添。例如:

//code_fosOpen 開文件流標記,在判卷模板中自動增加定義記事本文件的輸出流代碼;

//code_fosClose 關文件流標記,在判卷模板中自動增加關閉文件流和釋放內存代碼;

//code_judge 判卷變量標記,設置得分點;

//code_delete 挖空行標記,所設置行變為下劃線;

//edit_function 編輯函數標記,設置函數,由學生編寫函數體;

//code_resetInstance 修改用例標記,為判卷模板和考試模板設置不同的測試用例。

2.2.2 判卷函數頭文件、靜態庫文件

功能:在判卷模板中將考生答案和正確答案進行對比。

文件描述:

(1)頭文件(compare.h),文件內容如右圖。(2)靜態庫文件(compare.lib),為compare.h中聲明的方法提供具體實現。

文件引用:

#include"compare.h"

#pragma comment(lib,"compare.lib")

2.2.3 模板生成工具設計

針對1中的不同標記,該工具會自動生成相應的按鈕,通過點擊按鈕和簡單的設置生成判卷、考試模板:

(1)判卷模板。點擊按鈕實現函數體編寫、代碼段填空、判卷變量的選擇,通過對判卷變量正確值的設置、以及判卷代碼插入位置的設置,可預覽、測試、生成判卷模板。

(2)考試模板。在判卷模板設置的基礎上,通過對測試用例進行修改,可預覽、測試、生成考試模板,并具有相應題目說明文件的編寫功能。

2.3 原理解釋與圖解

現結合一個簡單的例子對模板生成工具的原理進行解釋,并用圖解展示:

第一步:選擇載入用于生成考試、判卷模板的.cpp源文件,然后根據按鈕提示,選擇挖空行、編輯函數、判卷變量等,并根據提示進行必要的設置(見圖3)。

附:為便于說明問題,此處以一個求取平方數的簡單程序為例,本例中只有一個判卷變量(對應一個得分點)的設置,對于較復雜的程序,可以設置多個得分點。

第二步:點擊“預覽”菜單對將要生成的判卷模板進行預覽,初步查看是否正確,然后點擊“測試”菜單選擇對判模板進行自動編譯運行,若正常運行,轉步驟三;若失敗,根據編譯運行的錯誤提示,返回步驟一進行修改設置。

第三步:點擊“生成”菜單,選擇保存位置,即可生成判卷模板(見圖4)。

第四步:進行用例修改,修改后的用例用于生成學生考試模板(見圖5)。

第五步:預覽、測試運行,最終生成考試模板,并根據運行結果編寫題意說明文件(見圖6,圖7)。

3 學生端答題界面

3.1 功能要求

為嚴格保證自動判卷的實現,同時滿足學生方便答題需求,學生端答題界面須滿足如下功能要求:

(1)無需啟動客戶端編譯器,學生直接在答題界面的可編輯區域編寫代碼,其他區域的代碼無法修改;(2)具有便捷的編譯運行程序的功能,并提示編譯或運行錯誤;(3)學生編寫的函數體和填寫的代碼段可準確無誤上傳至服務端。

3.2 實現方法要點

3.2.1 答題界面

(1)將題意說明和不可修改的源代碼部分顯示為只讀;(2)識別考試源代碼中的“//添加函數實現代碼”字段,以及填空標記下劃線“_________________”,將對應區域設置為可編輯;(3)在可編輯區域對應的控制程序中添加鍵盤監聽:實現對括號、引號的自動配對,以及換行時提供自動縮進,為學生快速編寫格式規范的代碼提供方便。

3.2.2 編譯運行

通過java.lang.Runtime實例的exec(String command)方法,啟動獨立進程調用編譯和鏈接命令,并獲取該進程的輸入流,提取編譯鏈接過程中的錯誤信息,實現編譯錯誤提示;若編譯正確,則運行程序。

3.2.3 上傳代碼

由于僅提取學生編寫的函數題代碼和學生填空代碼段,只需提取可編譯區域的文本記錄即可,而且信息量小,因此可采用一般socket通信的形式(不用文件上傳等形式)將代碼段上傳至服務端。

3.3 例子與圖解

(1)將2中得到的考試模板和題意說明文件用于學生考試端程序題考試(如圖8);

(2)在函數編寫區域編寫代碼,將填空橫線刪除并填寫代碼,然后直接點擊編譯運行(圖9)。

(3)根據錯誤提示修改代碼,重新編譯運行(圖10)。

(4)點擊交卷后,學生編寫的函數體和填空代碼行上傳至服務器(圖11)。

4 服務端自動判卷邏輯業務

4.1 自動判卷業務設計

基于模板生成工具、學生答題客戶端的設計和實現,自動判卷邏輯業務設計如下:

(1)一般情況下:只需把學生上傳的答題信息寫入相應的判卷模板中,然后生成臨時判卷源文件,針對這個臨時文件編譯運行即可得到判卷結果。

(2)異常情況:如果學生提交的程序沒來得及調試正常而存在死循環,需要在A的基礎上進行如下改進:

通過倒計時線程啟動判卷程序,倒計時線程結束后,若判卷程序還在運行,則殺死,并將異常記錄寫入數據庫。

邏輯圖如下(圖12)。

4.2 評分過程

在考試、判卷模板制作過程中,可以根據每個題目的實際情況設計判卷(得分)變量,并針對每一個判卷變量考核知識點難度設置得分權重(學生不知道具體的得分變量和權重)。然后,將學生上傳的代碼插入到判卷模板中,生成judgeMain.cpp,針對每個得分點都會調用compare函數比較學生答案和標準答案,得到一個布爾型返回值,然后根據這個返回值在記事本文件(grade.txt)里寫入1(得分)或0(不得分)。

該自動判卷程序可滿足對一個程序題進行細節得分點的判斷,而不是籠統的僅僅判斷最終答案,在一定程度上保證了給分的合理性。

5 結語

通過上述方案設計的程序題考核與判卷模塊,是東北大學數值分析考試系統(可通過程序題考核學生對數值算法的理解與應用能力)的重要組成部分,該考試系統的測試結果和初期使用情況證明:對于程序題考核和自動判卷,這樣的設計方案是可行的、對判卷過程中的常處理是可行的,最終判卷結果是合理的。

參考文獻:

[1]申田靜.國內在線考試系統研究綜述[J].中國教育技術裝備,2015(14):19-21.

[2]馮山,許毅,朱大勇.Visual C++集成開發環境中編譯鏈接中間文件的管理及其空間回收.四川師范大學學報:自然科學版,2003,26(2):205-208.

[3]高洪巖. Java多線程編程核心技術.北京:機械工業出版社,2015.

作者簡介:邵新慧(1970—),女,山東青島人,副教授,博士,教師,數值代數理論與應用研究。

主站蜘蛛池模板: 高清视频一区| 国产视频 第一页| 欧洲高清无码在线| 国产尤物jk自慰制服喷水| 欧美日韩第二页| 亚洲综合一区国产精品| 亚洲精品va| 亚洲综合婷婷激情| 国产激情无码一区二区免费| 夜夜拍夜夜爽| 亚洲精品自产拍在线观看APP| 在线无码私拍| 国产精鲁鲁网在线视频| 欧美精品亚洲日韩a| 成人年鲁鲁在线观看视频| 精品亚洲欧美中文字幕在线看| 国产在线专区| 国产黄色免费看| 四虎永久在线精品影院| 在线视频精品一区| 国产亚洲精久久久久久无码AV| 欧美在线综合视频| 第一区免费在线观看| 99青青青精品视频在线| 呦系列视频一区二区三区| 欧美特黄一级大黄录像| 99re视频在线| 亚洲欧美综合另类图片小说区| 久久99国产乱子伦精品免| 韩日午夜在线资源一区二区| 亚洲男人在线天堂| 一级成人欧美一区在线观看 | 日本免费高清一区| 中文字幕在线永久在线视频2020| 伊人天堂网| 亚洲人成网站色7777| 尤物特级无码毛片免费| 色AV色 综合网站| 奇米影视狠狠精品7777| 久久久久久久蜜桃| 91麻豆精品国产高清在线| 一级毛片基地| 欧美成一级| 亚洲AV无码不卡无码| 国产理论一区| 99热最新网址| 亚洲黄色高清| 67194亚洲无码| 这里只有精品在线播放| 色婷婷亚洲十月十月色天| 国产欧美精品一区二区| 日韩国产另类| 亚洲人成网址| 国产成人久久综合一区| 中文字幕 91| 天堂网国产| 欧美成人第一页| 狠狠综合久久| 色首页AV在线| 国产欧美日韩视频怡春院| 思思热在线视频精品| 国产网友愉拍精品| 五月婷婷丁香综合| 国内精品91| 无码视频国产精品一区二区| 亚亚洲乱码一二三四区| 亚洲福利视频一区二区| 欧美中文字幕一区| 成人午夜福利视频| 成人国产一区二区三区| 国产乱视频网站| 97青草最新免费精品视频| 欧美久久网| 99视频有精品视频免费观看| 国产女人在线| 亚洲欧美不卡视频| 国产99精品久久| 91免费国产在线观看尤物| 99无码中文字幕视频| 在线观看国产黄色| 日韩欧美国产区| 欧美成人一级|