在線程序評判系統的製作方法
2023-06-04 23:09:46 2
在線程序評判系統的製作方法
【專利摘要】本發明公開了在線程序評判系統。該系統向資料庫輪詢抓取用戶提交的評判任務,然後編譯、運行並將運行結果寫回資料庫。本發明可以代替人工判題,實現程序評判的自動化,減少了判題過程中出錯的可能性。
【專利說明】在線程序評判系統
【技術領域】
[0001] 本發明涉及一種在線程序評判系統。
【背景技術】
[0002] 現有技術中,一般都是採用人工來對源程序進行評判,人工評判工作效率低下,而 且不符合公正、公平的評判標準。隨著計算機硬體和軟體的發展,建立一套準確、高效的源 程序評判系統成為迫切要求和可能。
【發明內容】
[0003] 本發明要解決的技術問題是提供一種在線程序評判系統。
[0004] 為了解決上述技術問題,本發明採用的技術方案是,在線程序評判系統,包括以下 步驟:
[0005] (1)用戶將程序題號、程式語言、解題代碼提交到資料庫中,生成一個具有唯一編 號的評判任務;
[0006] (2)評判子系統向資料庫輪詢抓取用戶提交的評判任務,若資料庫中存在評判任 務,則繼續(3),否則重複執行(2);
[0007] (3)評判子系統為每個評判任務創建一個獨立進程,並將其加入評判隊列,若評判 隊列不為空,則繼續(4),否則跳轉到(2);
[0008] (4)評判隊列出隊,獲取評判任務,啟動評判過程,若編譯成功,則繼續(5),否則 程序評判結果為編譯錯誤,跳轉到(9);
[0009] (5)將標準輸入數據傳遞給編譯好的程序,同時啟動計時器,若程序在規定時限內 可以完成,則繼續(6),否則銷毀進程,程序評判結果為運行超時,跳轉到(9);
[0010] (6)停止計時器,計算時間消耗、內存消耗,若內存消耗未超出限制,則繼續(7), 否則程序評判結果為內存超出限制,跳轉到(9);
[0011] (7)判斷進程出口值,若出口值為0,則繼續(8),否則進程運行異常,分析進程錯 誤流來確定錯誤種類,跳轉到(9);
[0012] (8)進程運行正常,將進程輸出結果與標準測試數據對比,若匹配,則程序評判結 果為答案正確,繼續(9),否則程序評判結果為答案錯誤,繼續(9);
[0013] (9)將程序評判結果寫回資料庫,並返回給用戶。
[0014] 本發明的有益效果是:
[0015] 在線程序評判系統向資料庫輪詢抓取用戶提交的評判任務,然後編譯、運行並將 運行結果寫回資料庫。本發明可以代替人工判題,實現程序評判的自動化,減少了判題過程 中出錯的可能性。
【專利附圖】
【附圖說明】
[0016] 下面結合附圖和【具體實施方式】對本發明作進一步詳細的說明。
[0017] 圖1是本發明在線程序評判系統實施例的流程圖。
【具體實施方式】
[0018] 本實施例允許用戶在線提交程序解題代碼,系統自動進行編譯運行並給出評判結 果。如圖1所示,在線程序評判系統的具體實現步驟如下:
[0019] (1)用戶將程序題號、程式語言、解題代碼提交到資料庫中,生成一個具有唯一編 號的評判任務;
[0020] (2)評判子系統向資料庫輪詢抓取用戶提交的評判任務,若資料庫中存在評判任 務,則繼續(3),否則重複執行(2);
[0021] (3)評判子系統為每個評判任務創建一個獨立進程,並將其加入評判隊列,若評判 隊列不為空,則繼續(4),否則跳轉到(2);
[0022] (4)評判隊列出隊,獲取評判任務,啟動評判過程,若編譯成功,則繼續(5),否則 程序評判結果為編譯錯誤,跳轉到(9);
[0023] (5)將標準輸入數據傳遞給編譯好的程序,同時啟動計時器,若程序在規定時限內 可以完成,則繼續(6),否則銷毀進程,程序評判結果為運行超時,跳轉到(9);
[0024] (6)停止計時器,計算時間消耗、內存消耗,若內存消耗未超出限制,則繼續(7), 否則程序評判結果為內存超出限制,跳轉到(9);
[0025] (7)判斷進程出口值,若出口值為0,則繼續(8),否則進程運行異常,分析進程錯 誤流來確定錯誤種類,跳轉到(9);
[0026] (8)進程運行正常,將進程輸出結果與標準測試數據對比,若匹配,則程序評判結 果為答案正確,繼續(9),否則程序評判結果為答案錯誤,繼續(9);
[0027] (9)將程序評判結果寫回資料庫,並返回給用戶。
[0028] 以上所述的本發明實施方式,並不構成對本發明保護範圍的限定。任何在本發明 的精神和原則之內所作的修改、等同替換和改進等,均應包含在本發明的權利要求保護範 圍之內。
【權利要求】
1.在線程序評判系統,其特徵在於包括以下步驟: (1) 用戶將程序題號、程式語言、解題代碼提交到資料庫中,生成一個具有唯一編號的 評判任務; (2) 評判子系統向資料庫輪詢抓取用戶提交的評判任務,若資料庫中存在評判任務,則 繼續(3),否則重複執行(2); (3) 評判子系統為每個評判任務創建一個獨立進程,並將其加入評判隊列,若評判隊列 不為空,則繼續(4),否則跳轉到(2); (4) 評判隊列出隊,獲取評判任務,啟動評判過程,若編譯成功,則繼續(5),否則程序 評判結果為編譯錯誤,跳轉到(9); (5) 將標準輸入數據傳遞給編譯好的程序,同時啟動計時器,若程序在規定時限內可以 完成,則繼續(6),否則銷毀進程,程序評判結果為運行超時,跳轉到(9); (6) 停止計時器,計算時間消耗、內存消耗,若內存消耗未超出限制,則繼續(7),否則 程序評判結果為內存超出限制,跳轉到(9); (7) 判斷進程出口值,若出口值為0,則繼續(8),否則進程運行異常,分析進程錯誤流 來確定錯誤種類,跳轉到(9); (8) 進程運行正常,將進程輸出結果與標準測試數據對比,若匹配,則程序評判結果為 答案正確,繼續(9),否則程序評判結果為答案錯誤,繼續(9); (9) 將程序評判結果寫回資料庫,並返回給用戶。
【文檔編號】G06F11/36GK104216716SQ201410462214
【公開日】2014年12月17日 申請日期:2014年9月6日 優先權日:2014年9月6日
【發明者】王略志, 史騰飛, 孫廣中, 傅兆吉, 丁國亮, 俞傑, 夏天虹, 張晨陽, 王偉 申請人:合肥中科瀚雲信息科技有限公司