• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      語言程序在線提交系統(tǒng)設計與實現(xiàn)

      2018-03-30 03:26王怡康吳非凡羅佳沈祖?zhèn)?/span>劉安琪朱小銳
      無線互聯(lián)科技 2018年24期
      關鍵詞:程序設計

      王怡康 吳非凡 羅佳 沈祖?zhèn)? 劉安琪 朱小銳

      摘 要:本系統(tǒng)采用B/S架構,前端利用JavaScript,CSS等語言編寫,后端數(shù)據(jù)庫利用MySQL關系型數(shù)據(jù)庫,評測機利用C#編寫。主要實現(xiàn)了代碼評測、線上考試、線上競賽、自我評測等功能。本系統(tǒng)的設計目的是減輕教師教學壓力,增加學生學習趣味性,幫助學生及時作出自我評價。

      關鍵詞:計算機輔助評價;程序設計;程序自動評測

      在教學方面,傳統(tǒng)的以人力檢查學生學習成果的教學模式難以跟上時代的發(fā)展。對于教師,人工檢查代碼耗時耗力巨大,且難免有判斷錯誤的情況。在學生廣泛地參與各類程序設計競賽的背景下,學生需要一款能夠隨時檢測自己學習成果,提高學習積極性的系統(tǒng)。因此,設計一款解決以上問題,且適用于學校的OnlineJudge系統(tǒng)顯得十分重要。本文著重介紹OnlineJudge系統(tǒng)的設計過程和使用的技術。

      1 設計方案

      1.1 開發(fā)平臺

      采用MySQL數(shù)據(jù)庫用來存儲用戶、題目、比賽、班級、作業(yè)、提交記錄等信息,開發(fā)工具為Navicat 11.1.13。網(wǎng)站分為前端和后端,開發(fā)工具為VS Code1.12.1。網(wǎng)站后端基于ThinkPHP 3.2.3框架實現(xiàn),用來處理業(yè)務邏輯,讀寫數(shù)據(jù)庫,并和前端界面進行數(shù)據(jù)的傳輸。網(wǎng)站前端基于HTML和jQuery技術實現(xiàn),為用戶界面,有統(tǒng)一的頁首頁尾和側邊欄。評測機為Windows平臺的圖形界面軟件,使用C#語言,基于WindowsForms框架實現(xiàn),通過POST方式與網(wǎng)站的API接口通信,開發(fā)工具為Visual Studio 2017。

      1.2 硬件結構

      本系統(tǒng)需要部署Web服務器和程序評測機。

      系統(tǒng)采用B/S結構,Web服務器與評測機均為安裝了Windows Server操作系統(tǒng)的服務器,兩臺服務器同時接入校園網(wǎng),也可只部署一臺Web服務器,在Web服務器上安裝虛擬機軟件,在虛擬機中部署評測機服務器。

      Web服務器包含網(wǎng)站程序和數(shù)據(jù)庫,網(wǎng)站程序包含模型、視圖和控制器。評測機通過API接口與Web服務器通信,下載測試數(shù)據(jù)和用戶提交的程序代碼,自動編譯、鏈接、執(zhí)行,測評完成后上傳結果。

      1.3 主要功能

      本系統(tǒng)完成主要功能如下:題庫,提交記錄,比賽,班級,測試。

      其中,題庫中放置了可公開的編程題目,學生可在其中挑選感興趣的題去攻克,頁面右端放有題目分類,學生也可以根據(jù)題目分類來找自己薄弱點加強練習。提交記錄可以看到用戶的提交記錄。在班級功能中,老師創(chuàng)建班級并添加學生信息、學生查看班級信息等。比賽功能可以進行編程比賽。測試功能中,管理員端可以選擇自動抽題組卷,學生端可以加入測試。

      除此之外,本平臺在登錄管理員賬號后可以實現(xiàn)增刪題庫、代碼查重、數(shù)據(jù)統(tǒng)計、用戶管理等功能。

      1.4 評測機設計

      評測機是此程序的靈魂,其實現(xiàn)為平臺奠定了基礎。評測機整體使用微軟公司推出的C#語言和.NET Framework平臺。

      評測機分為離線模式和在線模式,評測機的軟件為exe格式。評測程序需要用戶手動安裝各種語言的編譯運行環(huán)境,評測機通過調(diào)用預先設定好的批處理來編譯和執(zhí)行程序,評分方式為通過對比運行結果和事先給出的樣例來評分。

      如圖1所示,當處于在線工作模式時,評測機運行一個后臺的異步工作線程,不斷地向網(wǎng)站的API請求數(shù)據(jù),如果有返回待評測的程序數(shù)據(jù)就調(diào)用本地評測功能,等待評測完畢后,再將評測結果發(fā)回API。

      如圖2所示,當處于離線工作模式時,評測機需要用戶手動填寫程序代碼、測試數(shù)據(jù)、文件名、程序語言、時間內(nèi)存限制等信息,填好后手動點擊“立即評測”按鈕,評測機評測完程序后輸出評測結果。

      1.5 Web網(wǎng)站設計

      Web是整個系統(tǒng)與用戶的交互界面,也是核心功能實現(xiàn)的途徑。Web界面需要兼具美觀和功能性,因此,Web的設計十分重要。圖3展示W(wǎng)eb界面實現(xiàn)的部分功能。

      Web端為用戶交互界面,絕大部分功能依附于Web實現(xiàn),核心功能為作業(yè)發(fā)布與提交、競賽、考試功能。工作流程如圖4所示。教師在發(fā)布作業(yè)或創(chuàng)建試題時,需要提前設置題目、應用語言范圍、創(chuàng)建班級、所需時間、試卷題型等,所有所在班級成員均可收到作業(yè)。

      學生登錄,進入班級可收到最新作業(yè)。學生在網(wǎng)站做完作業(yè)可提交代碼,調(diào)用評測機評測。系統(tǒng)將選取學生最高分進行記錄。若場景為考試或練習,系統(tǒng)將學生答案與數(shù)據(jù)庫標準答案進行比對,通過計算得出學生本場考試分數(shù)并記錄在用戶中心,管理員賬號可以對學生提交代碼進行查重,并根據(jù)查重率要求學生作出相應解釋。

      1.6 API接口

      網(wǎng)站和評測機之間的通信通過API接口實現(xiàn),評測機不斷地向API發(fā)送數(shù)據(jù)請求,網(wǎng)站端根據(jù)請求作出相應的操作。

      接口的HTTP請求方法為POST,分為“讀請求”和“寫請求”兩種請求。網(wǎng)站接收到“讀請求”時,將還沒有完成評測的程序和對應題目的測試數(shù)據(jù)返回給評測機;接收到“寫請求”時,將評測機發(fā)過來的具體評測結果寫入數(shù)據(jù)庫[1]。

      評測程序需要使用專用的評測機賬號登錄。

      2 網(wǎng)站后端框架

      2.1 ThinkPHP框架

      TinkPHP可以支持Windows/Unix/Linux等服務器環(huán)境,正式版需要PHP5.0以上版本支持,支持MySQL,PgSQL,Sqlite多種數(shù)據(jù)庫以及PDO擴展,ThinkPHP框架本身沒有特別模塊要求,具體的應用系統(tǒng)運行環(huán)境要求視開發(fā)涉及的模塊決定[2]。此系統(tǒng)用了MySQL關系型數(shù)據(jù)庫,用以存放相應的數(shù)據(jù)。

      2.2 數(shù)據(jù)庫相關

      數(shù)據(jù)庫表、視圖、存儲過程、函數(shù)等創(chuàng)建過程這里不進行詳細討論。E-R模式如圖5所示。

      建議慎用觸發(fā)器,觸發(fā)器功能固然強大,但是它如同一把雙刃劍,過分依賴觸發(fā)器,會使數(shù)據(jù)庫邏輯受到影響。又因為本系統(tǒng)會長期供學校使用,觸發(fā)器數(shù)目過多勢必增加數(shù)據(jù)庫維護的難度。因此,觸發(fā)器在本系統(tǒng)中應謹慎使用。

      3 其他相關

      3.1 代碼查重

      “代碼查重”中,支持計算本作業(yè)提交的程序代碼相似度,可查詢整個作業(yè)的所有學生互相之間的相似度,統(tǒng)計出最高值,也可單獨查詢某一個學生與其他學生之間的代碼相似度。代碼相似度算法如下:

      (1)找出兩個字符串中相同部分最長的一段。

      (2)再用同樣的方法在剩下的兩段中分別找出相同部分最長的一段,以此類推,直到?jīng)]有任何相同部分。

      (3)相似度=所有相同部分的長度之和×2/兩個字符串的長度之和。相似度以百分比的形式展示,達到95%自動標為紅色,點擊百分比的鏈接可查看具體提交記錄[3]。

      3.2 安全性考慮

      由于本系統(tǒng)需要原樣執(zhí)行用戶提交的程序,就不可避免地會遇到有用戶提交惡意程序代碼的情況,輕則使評測機停止工作,重則破壞網(wǎng)站的文件和數(shù)據(jù)。

      解決這類問題有兩種方案,一是在執(zhí)行程序之前檢測程序行為加以防范,二是在程序對評測機破壞之后自動恢復。前者由于程序的描述方式千變?nèi)f化,提前預防的方法不現(xiàn)實,只能采用后者。因此,評測機和Web服務器應部署于兩臺不同的計算機上,兩臺計算機同時接入校園網(wǎng),評測機所在的計算機上應安裝硬盤還原卡。如果硬件設備條件不夠,也可在Web服務器上安裝虛擬機軟件,在虛擬機中部署評測機,虛擬機開啟還原卡功能。

      為實現(xiàn)自動恢復功能,系統(tǒng)應每隔一段時間(暫定為2 min)檢測一下評測機是否正在工作,如果不工作就說明評測機發(fā)生故障,自動向評測機所在的計算機發(fā)送重新啟動指令,由于安裝有還原卡,重啟后評測機會恢復原狀,即可實現(xiàn)評測機出錯后自動恢復的功能。

      4 結語

      互聯(lián)網(wǎng)時代正在改變傳統(tǒng)教學體系,以計算機為代表的新型課程越來越受到廣大高校重視。與這門學科產(chǎn)生的原因一樣,本套系統(tǒng)也是為了降低人工成本而生。目前,本套系統(tǒng)已應用于學校C語言程序設計課程教學、C語言程序設計競賽,也可為ACM競賽、天梯賽等賽事做培訓相關工作。我們未來的設計方向是UI界面更人性化,支持更多程序語言(已有包括C,C++,Java,Python在內(nèi)的多門語言),支持更多人同時在線評測等。

      [參考文獻]

      [1]沃森,內(nèi)格爾.C#入門經(jīng)典[M].4版.齊立波,譯.北京:清華大學出版社,2008.

      [2]ThinkPHP文檔中心.ThinkPHP 3.2.3完全開發(fā)文檔[EB/OL].(2018-05-06)[2018-11-13].http://document.thinkphp.cn/manual_3_2.html.

      [3]吉爾摩.PHP與MySQL程序設計[M].4版.朱濤江,譯.北京:人民郵電出版社,2017.

      猜你喜歡
      程序設計
      基于SolidWorks和VBA的電機階梯軸建模程序設計
      高職Java程序設計課程體系建設思考
      基于Visual Studio Code的C語言程序設計實踐教學探索
      從細節(jié)入手,談PLC程序設計技巧
      基于LabVIEW的車載充電機控制程序設計
      淺談基于C語言的計算機軟件程序設計
      高職高專院校C語言程序設計教學改革探索
      OBE理念下基于Greenfoot的Java程序設計課程教學改革
      模塊化程序設計在一體化檢定平臺中的應用
      PLC梯形圖程序設計技巧及應用
      历史| 游戏| 临沧市| 永兴县| 洛阳市| 泸定县| 巴塘县| 富平县| 兴安县| 龙井市| 巴青县| 镶黄旗| 莲花县| 台山市| 江安县| 白银市| 雷山县| 柯坪县| 桃园市| 崇文区| 溧水县| 金湖县| 蚌埠市| 松溪县| 涟源市| 鹤山市| 阿拉善盟| 昌宁县| 锦屏县| 贵州省| 翁源县| 伊川县| 泽库县| 大渡口区| 花垣县| 万安县| 延寿县| 太保市| 双流县| 临泉县| 香港 |