• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于SSH框架源程序在線評(píng)測系統(tǒng)設(shè)計(jì)

    2014-07-18 18:42:21胡蘭蘭羅軍王清行
    電腦知識(shí)與技術(shù) 2014年13期

    胡蘭蘭 羅軍 王清行

    摘要:該系統(tǒng)是針對(duì)ACM程序設(shè)計(jì)的在線測評(píng)系統(tǒng),主要采用了J2EE的技術(shù)架構(gòu)并集成SSH開源組合框架以保證系統(tǒng)的性能和穩(wěn)定性。系統(tǒng)主要實(shí)現(xiàn)了用戶在線測評(píng)、組織競賽、討論等功能。在編譯運(yùn)行模塊采用了黑盒測試的思想并發(fā)的編譯和運(yùn)行,以提高對(duì)多用戶同時(shí)在線評(píng)測的效率。

    關(guān)鍵詞: 源程序;在線測評(píng);B/S;SSH;J2EE

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)13-2974-03

    The Design of Source Code Online Evaluation System Based on SSH

    HU Lan-lan, LUO Jun, WANG Qing-hang

    (Math and Computer Department,Yangtze Normal University,Chongqing 400800, China)

    Abstract: The online evaluation system is mainly aimed at ACM program. In order to keep the performance and stability of the system, J2EE SSH open source frame has been adopted in the system. The main function is the user online source code evaluation, taking part in competition, and discussion etc. If many users use the system at the same time, the compile part work as black-box testing can increase the efficiency.

    Key words: source code; online evaluation; B/S; SSH; J2EE

    ACM/ICPC(ACM國際大學(xué)生程序設(shè)計(jì)競賽)是全世界大學(xué)生計(jì)算機(jī)程序設(shè)計(jì)競賽中最有影響的一項(xiàng)賽事,國內(nèi)高校在1996年也開始參加。程序設(shè)計(jì)競賽是展示大學(xué)生創(chuàng)新能力、團(tuán)隊(duì)精神和在壓力下編寫程序、分析和解決問題能力的比賽。該文在總結(jié)以往系統(tǒng)開發(fā)設(shè)計(jì)經(jīng)驗(yàn)基礎(chǔ)上,設(shè)計(jì)了一個(gè)基于B/S結(jié)構(gòu)的多用戶在線測評(píng)系統(tǒng),允許用戶在線提交自己的解題代碼,系統(tǒng)自動(dòng)編譯運(yùn)行給出裁判結(jié)果,并根據(jù)用戶解題數(shù)和用時(shí)排出名次,用戶可以和教師一起討論,教師可以組織比賽。通過本系統(tǒng),學(xué)生可在網(wǎng)上自主進(jìn)行程序設(shè)計(jì)訓(xùn)練,有利于提高學(xué)生的編程水平,增強(qiáng)實(shí)踐能力。由于多用戶同時(shí)提交代碼編譯并發(fā)性非常高,因此本系統(tǒng)采用J2EE技術(shù)來設(shè)計(jì)與實(shí)現(xiàn)。

    1 項(xiàng)目主要功能介紹

    本項(xiàng)目設(shè)計(jì)了一個(gè)適用于普通高校特點(diǎn)的程序設(shè)計(jì)在線測評(píng)系統(tǒng),用于高校的程序設(shè)計(jì)課程的作業(yè)、課程考核、學(xué)科競賽等。該系統(tǒng)具有豐富的編程題庫,學(xué)生可以選擇某個(gè)題目進(jìn)行訓(xùn)練,提交答案,系統(tǒng)接收答案后,能自動(dòng)判斷答案是否正確,向?qū)W生反饋答案的判斷結(jié)果,同時(shí)記錄學(xué)生答題的過程及結(jié)果。管理員管理系統(tǒng)的消息、題庫信息、普通用戶的注冊(cè),也可以隨時(shí)登錄系統(tǒng)查看學(xué)生的答題情況,并隨時(shí)增加新的編程題目或刪除過時(shí)的題目,還可以在系統(tǒng)上組織考試或競賽,系統(tǒng)可以自動(dòng)給出各位學(xué)生成績及排名情況。

    2 系統(tǒng)體系結(jié)構(gòu)分析

    本系統(tǒng)基于開放式SSH(Spring + Struts +Hibernate)組合框架,該系統(tǒng)采用MVC分層結(jié)構(gòu)設(shè)計(jì),分為數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層,采用B/S結(jié)構(gòu),系統(tǒng)體系結(jié)構(gòu)圖如圖1所示。

    圖1 系統(tǒng)體系結(jié)構(gòu)圖

    2.1 表示層設(shè)計(jì)

    表示層主要通過Struts框架來實(shí)現(xiàn),包括視圖部分和控制部分,具體是指JSP頁面,以及對(duì)客戶請(qǐng)求進(jìn)行處理的自定義Action等部分。

    2.2 數(shù)據(jù)訪問層設(shè)計(jì)

    Hibernate實(shí)現(xiàn)數(shù)據(jù)訪問層,訪問層(DAO層)主要完成對(duì)數(shù)據(jù)庫的訪問,系統(tǒng)中DAO類實(shí)現(xiàn)了相應(yīng)的接口。

    2.3 業(yè)務(wù)邏輯層設(shè)計(jì)

    在業(yè)務(wù)邏輯中主要包含了業(yè)務(wù)實(shí)體、業(yè)務(wù)邏輯以及Spring配置文件等內(nèi)容,ApplicationContext.xml是Spring框架的配置文件,通過這個(gè)配置文件可以將系統(tǒng)中的各個(gè)組件裝配起來,在運(yùn)行期注入組件之間的依賴關(guān)系。

    3 系統(tǒng)總體設(shè)計(jì)

    圖2 系統(tǒng)功能模塊圖

    系統(tǒng)主要包括以下幾大模塊:在線測評(píng)模塊、在線競賽模塊、討論模塊、編譯運(yùn)行模塊、后臺(tái)管理模塊,系統(tǒng)功能模塊圖如圖2所示。

    在線測評(píng)模塊:主要實(shí)現(xiàn)用戶在線提交代碼,查看題庫,查看排名,查看狀態(tài)等功能。

    在線競賽模塊:主要實(shí)現(xiàn)在線參加競賽,查看并提交賽題等功能。

    討論模塊:主要實(shí)現(xiàn)用戶發(fā)帖等功能讓用戶相互討論。

    編譯運(yùn)行模塊:該模塊是系統(tǒng)的核心,主要實(shí)現(xiàn)惡意代碼攔截,并發(fā)編譯運(yùn)行,自動(dòng)測評(píng)等功能。

    后臺(tái)管理模塊:主要實(shí)現(xiàn)用戶管理、題庫維護(hù)管理、賽題管理、分析管理、權(quán)限管理等功能。

    4 系統(tǒng)的實(shí)現(xiàn)方法

    4.1 數(shù)據(jù)庫連接池

    考慮到用戶登錄和在線測試提交高峰,大量的訪問數(shù)據(jù)庫所帶來的負(fù)載,系統(tǒng)使用了連接池,將由連接池來管理相關(guān)的數(shù)據(jù)庫連接,減少對(duì)數(shù)據(jù)庫連接操作。出于最佳性能和穩(wěn)定性考慮使用了第三方開放源代碼的JDBC連接池C3P0。C3P0在從連接池中獲取和返回連接的時(shí)候,采用了異步的處理方式,使用一個(gè)線程池來異步的把返回關(guān)閉了(沒有真正關(guān)閉)的連接放入連接池中。這樣就意味著,我們?cè)谡{(diào)用了從C3P0獲得的連接的close方法時(shí),不是立即放回池中,而是放入一個(gè)事件隊(duì)列中等待C3P0內(nèi)部的線程池順序的處理。

    4.2 編譯運(yùn)行處理

    編譯運(yùn)行是在線測評(píng)系統(tǒng)的核心模塊,該模塊接受用戶提交的各語言代碼后系統(tǒng)自動(dòng)編譯及運(yùn)行,然后根據(jù)標(biāo)準(zhǔn)答案對(duì)比判斷用戶提交的正確性。編譯系統(tǒng)給出相應(yīng)的狀態(tài)信息返回給用戶:通過(AC)、答案錯(cuò)誤(WA)、時(shí)間超過(TLE)、超過輸出限制(OLE)、超過內(nèi)存(MLE)、運(yùn)行時(shí)錯(cuò)誤(RE)、格式錯(cuò)誤(PE)、或是編譯錯(cuò)誤(CE),同時(shí)返回程序使用的內(nèi)存、運(yùn)行時(shí)間等信息。編譯運(yùn)行解決的關(guān)鍵問題如圖3所示。

    4.2.1 代碼安全檢查

    考慮到用戶提交的代碼可能存在一些非法惡意代碼,可能影響系統(tǒng)正常工作或者破壞服務(wù)器,因此用戶在提交代碼時(shí)系統(tǒng)首先對(duì)代碼進(jìn)行安全檢查,過濾一些惡意代碼防止破壞服務(wù)器,從而影響了網(wǎng)站的正常運(yùn)行。

    4.2.2 編譯運(yùn)行處理

    系統(tǒng)接受用戶提交代碼并運(yùn)行編譯模塊,記錄編譯后的狀態(tài),編譯成功后系統(tǒng)自動(dòng)獲取待測試數(shù)據(jù),然后運(yùn)行程序得出結(jié)果后與標(biāo)準(zhǔn)答案比較并記錄狀態(tài)。編譯運(yùn)行處理流程圖如圖3所示。

    4.2.3 并發(fā)處理

    系統(tǒng)考慮到多個(gè)用戶同一時(shí)刻提交代碼存在的編譯運(yùn)行瓶頸問題,系統(tǒng)為每個(gè)編譯運(yùn)行開銷一個(gè)獨(dú)立的線程,由編譯運(yùn)行線程控制模塊進(jìn)行合理的調(diào)度與分配,實(shí)現(xiàn)多任務(wù)同時(shí)運(yùn)行??紤]到j(luò)ava運(yùn)行類名和文件名相同,每個(gè)編譯任務(wù)都新建一個(gè)文件夾,所有文件均存放在此文件夾中,避免文件名重復(fù)問題。

    5 結(jié)束語

    經(jīng)測試,本系統(tǒng)在配置為Intel Xeon E5606CPU,4G內(nèi)存的服務(wù)器上,可同時(shí)運(yùn)行50個(gè)編譯任務(wù)。一臺(tái)服務(wù)器可滿足一個(gè)教學(xué)班或者一個(gè)集訓(xùn)隊(duì)的實(shí)驗(yàn)、訓(xùn)練、比賽需要。后續(xù)將繼續(xù)研究提高其并發(fā)能力的算法,豐富訓(xùn)練題庫,優(yōu)化用戶界面,提高軟件的易用性。

    參考文獻(xiàn):

    [1] 康海燕,樊孝忠,湯世平.基于J2EE的在線測評(píng)系統(tǒng)的研究與設(shè)計(jì)[J].開發(fā)研究與設(shè)計(jì)技術(shù),2004(13).

    [2] 李春旺.網(wǎng)絡(luò)環(huán)境下學(xué)術(shù)信息的開放存取[J].中國圖書館學(xué)報(bào),2005(155).

    [3] 瞿紅英,王波.基于C#.NET的在線編譯方法的應(yīng)用與研究[J].兩化金融,2010(10).

    [4] 胡鵬基.于嵌入式技術(shù)的多功能汽車導(dǎo)航系統(tǒng)[J].電腦知識(shí)與技術(shù),2010(21).

    [5] 王娟.基于Online Judge的高級(jí)語言程序設(shè)計(jì)課程教學(xué)改革[J].吉林省教育學(xué)院報(bào),2012(10).

    [6] 趙磊,吳王培,寥彬.基于ACM/ICPC在線測評(píng)系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013(22).

    [7] 陳星.程序設(shè)計(jì)作業(yè)批改的幾個(gè)思考[J].信息與電腦,2013(22).endprint

    4.2 編譯運(yùn)行處理

    編譯運(yùn)行是在線測評(píng)系統(tǒng)的核心模塊,該模塊接受用戶提交的各語言代碼后系統(tǒng)自動(dòng)編譯及運(yùn)行,然后根據(jù)標(biāo)準(zhǔn)答案對(duì)比判斷用戶提交的正確性。編譯系統(tǒng)給出相應(yīng)的狀態(tài)信息返回給用戶:通過(AC)、答案錯(cuò)誤(WA)、時(shí)間超過(TLE)、超過輸出限制(OLE)、超過內(nèi)存(MLE)、運(yùn)行時(shí)錯(cuò)誤(RE)、格式錯(cuò)誤(PE)、或是編譯錯(cuò)誤(CE),同時(shí)返回程序使用的內(nèi)存、運(yùn)行時(shí)間等信息。編譯運(yùn)行解決的關(guān)鍵問題如圖3所示。

    4.2.1 代碼安全檢查

    考慮到用戶提交的代碼可能存在一些非法惡意代碼,可能影響系統(tǒng)正常工作或者破壞服務(wù)器,因此用戶在提交代碼時(shí)系統(tǒng)首先對(duì)代碼進(jìn)行安全檢查,過濾一些惡意代碼防止破壞服務(wù)器,從而影響了網(wǎng)站的正常運(yùn)行。

    4.2.2 編譯運(yùn)行處理

    系統(tǒng)接受用戶提交代碼并運(yùn)行編譯模塊,記錄編譯后的狀態(tài),編譯成功后系統(tǒng)自動(dòng)獲取待測試數(shù)據(jù),然后運(yùn)行程序得出結(jié)果后與標(biāo)準(zhǔn)答案比較并記錄狀態(tài)。編譯運(yùn)行處理流程圖如圖3所示。

    4.2.3 并發(fā)處理

    系統(tǒng)考慮到多個(gè)用戶同一時(shí)刻提交代碼存在的編譯運(yùn)行瓶頸問題,系統(tǒng)為每個(gè)編譯運(yùn)行開銷一個(gè)獨(dú)立的線程,由編譯運(yùn)行線程控制模塊進(jìn)行合理的調(diào)度與分配,實(shí)現(xiàn)多任務(wù)同時(shí)運(yùn)行??紤]到j(luò)ava運(yùn)行類名和文件名相同,每個(gè)編譯任務(wù)都新建一個(gè)文件夾,所有文件均存放在此文件夾中,避免文件名重復(fù)問題。

    5 結(jié)束語

    經(jīng)測試,本系統(tǒng)在配置為Intel Xeon E5606CPU,4G內(nèi)存的服務(wù)器上,可同時(shí)運(yùn)行50個(gè)編譯任務(wù)。一臺(tái)服務(wù)器可滿足一個(gè)教學(xué)班或者一個(gè)集訓(xùn)隊(duì)的實(shí)驗(yàn)、訓(xùn)練、比賽需要。后續(xù)將繼續(xù)研究提高其并發(fā)能力的算法,豐富訓(xùn)練題庫,優(yōu)化用戶界面,提高軟件的易用性。

    參考文獻(xiàn):

    [1] 康海燕,樊孝忠,湯世平.基于J2EE的在線測評(píng)系統(tǒng)的研究與設(shè)計(jì)[J].開發(fā)研究與設(shè)計(jì)技術(shù),2004(13).

    [2] 李春旺.網(wǎng)絡(luò)環(huán)境下學(xué)術(shù)信息的開放存取[J].中國圖書館學(xué)報(bào),2005(155).

    [3] 瞿紅英,王波.基于C#.NET的在線編譯方法的應(yīng)用與研究[J].兩化金融,2010(10).

    [4] 胡鵬基.于嵌入式技術(shù)的多功能汽車導(dǎo)航系統(tǒng)[J].電腦知識(shí)與技術(shù),2010(21).

    [5] 王娟.基于Online Judge的高級(jí)語言程序設(shè)計(jì)課程教學(xué)改革[J].吉林省教育學(xué)院報(bào),2012(10).

    [6] 趙磊,吳王培,寥彬.基于ACM/ICPC在線測評(píng)系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013(22).

    [7] 陳星.程序設(shè)計(jì)作業(yè)批改的幾個(gè)思考[J].信息與電腦,2013(22).endprint

    4.2 編譯運(yùn)行處理

    編譯運(yùn)行是在線測評(píng)系統(tǒng)的核心模塊,該模塊接受用戶提交的各語言代碼后系統(tǒng)自動(dòng)編譯及運(yùn)行,然后根據(jù)標(biāo)準(zhǔn)答案對(duì)比判斷用戶提交的正確性。編譯系統(tǒng)給出相應(yīng)的狀態(tài)信息返回給用戶:通過(AC)、答案錯(cuò)誤(WA)、時(shí)間超過(TLE)、超過輸出限制(OLE)、超過內(nèi)存(MLE)、運(yùn)行時(shí)錯(cuò)誤(RE)、格式錯(cuò)誤(PE)、或是編譯錯(cuò)誤(CE),同時(shí)返回程序使用的內(nèi)存、運(yùn)行時(shí)間等信息。編譯運(yùn)行解決的關(guān)鍵問題如圖3所示。

    4.2.1 代碼安全檢查

    考慮到用戶提交的代碼可能存在一些非法惡意代碼,可能影響系統(tǒng)正常工作或者破壞服務(wù)器,因此用戶在提交代碼時(shí)系統(tǒng)首先對(duì)代碼進(jìn)行安全檢查,過濾一些惡意代碼防止破壞服務(wù)器,從而影響了網(wǎng)站的正常運(yùn)行。

    4.2.2 編譯運(yùn)行處理

    系統(tǒng)接受用戶提交代碼并運(yùn)行編譯模塊,記錄編譯后的狀態(tài),編譯成功后系統(tǒng)自動(dòng)獲取待測試數(shù)據(jù),然后運(yùn)行程序得出結(jié)果后與標(biāo)準(zhǔn)答案比較并記錄狀態(tài)。編譯運(yùn)行處理流程圖如圖3所示。

    4.2.3 并發(fā)處理

    系統(tǒng)考慮到多個(gè)用戶同一時(shí)刻提交代碼存在的編譯運(yùn)行瓶頸問題,系統(tǒng)為每個(gè)編譯運(yùn)行開銷一個(gè)獨(dú)立的線程,由編譯運(yùn)行線程控制模塊進(jìn)行合理的調(diào)度與分配,實(shí)現(xiàn)多任務(wù)同時(shí)運(yùn)行??紤]到j(luò)ava運(yùn)行類名和文件名相同,每個(gè)編譯任務(wù)都新建一個(gè)文件夾,所有文件均存放在此文件夾中,避免文件名重復(fù)問題。

    5 結(jié)束語

    經(jīng)測試,本系統(tǒng)在配置為Intel Xeon E5606CPU,4G內(nèi)存的服務(wù)器上,可同時(shí)運(yùn)行50個(gè)編譯任務(wù)。一臺(tái)服務(wù)器可滿足一個(gè)教學(xué)班或者一個(gè)集訓(xùn)隊(duì)的實(shí)驗(yàn)、訓(xùn)練、比賽需要。后續(xù)將繼續(xù)研究提高其并發(fā)能力的算法,豐富訓(xùn)練題庫,優(yōu)化用戶界面,提高軟件的易用性。

    參考文獻(xiàn):

    [1] 康海燕,樊孝忠,湯世平.基于J2EE的在線測評(píng)系統(tǒng)的研究與設(shè)計(jì)[J].開發(fā)研究與設(shè)計(jì)技術(shù),2004(13).

    [2] 李春旺.網(wǎng)絡(luò)環(huán)境下學(xué)術(shù)信息的開放存取[J].中國圖書館學(xué)報(bào),2005(155).

    [3] 瞿紅英,王波.基于C#.NET的在線編譯方法的應(yīng)用與研究[J].兩化金融,2010(10).

    [4] 胡鵬基.于嵌入式技術(shù)的多功能汽車導(dǎo)航系統(tǒng)[J].電腦知識(shí)與技術(shù),2010(21).

    [5] 王娟.基于Online Judge的高級(jí)語言程序設(shè)計(jì)課程教學(xué)改革[J].吉林省教育學(xué)院報(bào),2012(10).

    [6] 趙磊,吳王培,寥彬.基于ACM/ICPC在線測評(píng)系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013(22).

    [7] 陳星.程序設(shè)計(jì)作業(yè)批改的幾個(gè)思考[J].信息與電腦,2013(22).endprint

    丹东市| 海丰县| 万载县| 涟源市| 报价| 建湖县| 铜川市| 文山县| 延吉市| 阳谷县| 甘洛县| 长阳| 左贡县| 永清县| 朝阳县| 罗田县| 富源县| 新竹县| 肥乡县| 曲阳县| 维西| 和硕县| 同心县| 商洛市| 扎囊县| 岚皋县| 道孚县| 嵩明县| 永寿县| 德昌县| 屯留县| 永仁县| 枣阳市| 上高县| 昌都县| 郸城县| 南京市| 通渭县| 防城港市| 通城县| 潞城市|