田麗華,孫穎馨,王金甫
(長(zhǎng)春理工大學(xué)光電信息學(xué)院,長(zhǎng)春 130031)
隨著網(wǎng)絡(luò)技術(shù)發(fā)展的成熟,開(kāi)發(fā)基于Web技術(shù)的在線考試系統(tǒng),可根據(jù)各種不同角色用戶的需求對(duì)其進(jìn)行功能和權(quán)限的劃分,從而在整個(gè)考試的過(guò)程中實(shí)施相應(yīng)的控制權(quán)限。該系統(tǒng)為各類(lèi)用戶提供了一個(gè)既方便又靈活的跨平臺(tái)操作環(huán)境以及相應(yīng)的實(shí)用管理功能,最終實(shí)現(xiàn)整個(gè)考試過(guò)程完全透明化、自動(dòng)化和規(guī)范化[1-11]。在線考試系統(tǒng)實(shí)現(xiàn)了無(wú)紙化,同時(shí)使考試公平、公正、公開(kāi),節(jié)約了閱卷的人力、物力支出,進(jìn)而節(jié)省了整個(gè)考試環(huán)節(jié)的總支出費(fèi)用[1]。
在線考試系統(tǒng)主要分為:單機(jī)版考試系統(tǒng)、客戶機(jī)/服務(wù)器(C/S)模式考試系統(tǒng)、基于瀏覽器/服務(wù)器(B/S)模式的在線考試系統(tǒng)。
采用基于B/S架構(gòu)的在線考試系統(tǒng)具有以下獨(dú)特的優(yōu)點(diǎn):首先,該系統(tǒng)無(wú)需額外安裝客戶端程序,只需利用計(jì)算機(jī)上安裝的瀏覽器等必備軟件即可;其次,由于不需單獨(dú)安裝客戶端程序,因此系統(tǒng)維護(hù)和管理更為方便;再次,基于B/S的系統(tǒng)突破了時(shí)間和空間的限制,能同時(shí)支持不同的考場(chǎng)和分布在不同地理位置的大批量的考生在同一時(shí)間進(jìn)行考試。
根據(jù)用戶的不同,考試系統(tǒng)包括的模塊(子系統(tǒng))有考場(chǎng)管理模塊、用戶管理模塊、題庫(kù)管理模塊、組卷模塊、在線考試模塊、閱卷模塊和成績(jī)查詢(xún)與試卷統(tǒng)計(jì)分析模塊。這七大模塊的使用對(duì)象分別為系統(tǒng)管理員、教師和學(xué)生,如圖1所示[3]。
圖1 系統(tǒng)功能模塊
系統(tǒng)管理員對(duì)使用該系統(tǒng)的不同用戶進(jìn)行各種權(quán)限設(shè)置和管理;對(duì)在線考試考場(chǎng)進(jìn)行各種管理,包括考試名稱(chēng)、考試科目和參加考試人員的設(shè)置;監(jiān)控考試各個(gè)環(huán)節(jié),解決考試過(guò)程中的突發(fā)情況(例如學(xué)生登錄信息異常、中途掉線等)。系統(tǒng)管理員可根據(jù)某科主講教師的考試方案和試題源進(jìn)行科目管理,組成考試卷庫(kù)。
教師在管理員的授權(quán)下可導(dǎo)入自己考試科目的試題源,審閱試題格式及對(duì)內(nèi)容進(jìn)行修改。教師也可查閱考試成績(jī)及進(jìn)行試卷分析。
學(xué)生輸入自己的準(zhǔn)考證號(hào)和姓名進(jìn)入考試頁(yè)面,答題完畢點(diǎn)擊交卷按鈕。
①I(mǎi)oC實(shí)現(xiàn)了java bean的低耦合性,便于java code的重用;②aop使用簡(jiǎn)便;③ 實(shí)現(xiàn)了restful的mvc,便于Web開(kāi)發(fā);④ 大量的注解pojo簡(jiǎn)化了xml配置;⑤data base的DAO模板類(lèi)兼容多種數(shù)據(jù)庫(kù),且底層只需要更換jdbc driver,通過(guò)data source聲明驅(qū)動(dòng),jdbc template就可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn);⑥Spring官網(wǎng)提供了很多解決方案(安全、數(shù)據(jù)訪問(wèn)、頁(yè)面流、android)。綜上,Spring可很好地實(shí)現(xiàn)系統(tǒng)的低耦合高聚合,便于代碼的重用,且面向接口的編程可以讓API的訪問(wèn)無(wú)需知道底層如何實(shí)現(xiàn)。
本文設(shè)計(jì)的系統(tǒng)中的Action實(shí)例由Spring的IoC容器負(fù)責(zé)管理。因此,必須使Action Servelet將請(qǐng)求轉(zhuǎn)發(fā)給Spring容器的Bean。為了實(shí)現(xiàn)這個(gè)目標(biāo),Spring提供了一個(gè)Delegation Request Processor類(lèi),這個(gè)類(lèi)是Struts提供的Request Processor類(lèi)的擴(kuò)展。使用Delegation Request Processor可以在處理用戶請(qǐng)求轉(zhuǎn)發(fā)時(shí)將請(qǐng)求轉(zhuǎn)發(fā)給Spring容器中的Bean。
本文設(shè)計(jì)的系統(tǒng)有嚴(yán)格的分層。系統(tǒng)分為表現(xiàn)層、MVC控制器層、業(yè)務(wù)邏輯層、DAO層和數(shù)據(jù)持久層。一旦進(jìn)入了Spring IoC容器的內(nèi)部,IoC容器負(fù)責(zé)創(chuàng)建系統(tǒng)所需的控制器,每次用戶請(qǐng)求到達(dá)時(shí),IoC容器都會(huì)重新創(chuàng)建一個(gè)新的控制器組件。本系統(tǒng)中的控制器組件、業(yè)務(wù)邏輯組件和DAO組件都處于Spring容器的管理下,各組件之間以松耦合的方式組織在一起,通過(guò)Spring的IoC機(jī)制管理各組件之間的依賴(lài)關(guān)系。系統(tǒng)分層模型的協(xié)作圖如圖2所示。
圖2 系統(tǒng)分層模型的協(xié)作圖
Spring框架的IoC容器可以管理Session Factory。Session Factory必須建立在數(shù)據(jù)源之上,Spring的IoC容器可以將數(shù)據(jù)源Bean注入Session Factory Bean中。Session Factory的主要配置代碼如下:
1)Spring框架下的DAO模式。引入Spring框架后,Spring的IoC容器負(fù)責(zé)創(chuàng)建DAO接口實(shí)現(xiàn)類(lèi)的實(shí)例,并將DAO組件的實(shí)例注入業(yè)務(wù)邏輯組件,避免了業(yè)務(wù)邏輯組件主動(dòng)尋找DAO工廠,也可防止業(yè)務(wù)邏輯組件與DAO工廠耦合。Spring為Hibernate提供的DAO支持類(lèi)是Hibernate Dao Support,該類(lèi)可以極大方便DAO組件的實(shí)現(xiàn)。
2)管理持久層連接。Spring框架的IoC容器可以將Session Factory直接注入到DAO組件中,避免DAO組件手動(dòng)訪問(wèn)Session Factory的繁瑣性。在本文系統(tǒng)中,只要將Session Factory配置在Spring容器中,Spring容器就負(fù)責(zé)創(chuàng)建和維護(hù)Session Factory實(shí)例,并將它注入其他需要持久化訪問(wèn)的組件中(如圖3所示),繼而實(shí)現(xiàn)試題DAO組件、管理DAO組件等。
圖3 IoC容器將Session Factory注入DAO組件
在本文的系統(tǒng)設(shè)計(jì)中Spring充當(dāng)了整個(gè)應(yīng)用的工廠,Spring的IoC容器成為整個(gè)應(yīng)用的核心。系統(tǒng)中的所有組件,從控制器、業(yè)務(wù)邏輯組件到DAO組件都直接處于Spring IoC容器的管理下。各組件之間的依賴(lài)也是由Spring的IoC容器提供管理。
在線考試系統(tǒng)可以完全實(shí)現(xiàn)無(wú)紙化、網(wǎng)絡(luò)化、自動(dòng)化的計(jì)算機(jī)在線考試,對(duì)教育單位的信息化建設(shè)具有深遠(yuǎn)的現(xiàn)實(shí)意義和實(shí)用價(jià)值。
[1]王建.基于Web的在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2014,13(1):70-71.
[2]冷建華,易戰(zhàn)軍.基于B/S架構(gòu)的在線考試系統(tǒng)的設(shè)計(jì)[J].科技視界,2012(31):69-70,83.
[3]楊勛.基于Web的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2012(10):20-23.
[4]寧佐勇.淺談基于B/S架構(gòu)的在線考試系統(tǒng)分析與設(shè)計(jì)[J].軟件開(kāi)發(fā),2013(6):10-11.
[5]張志峰,徐鵬.基于B/S結(jié)構(gòu)的高職院校在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].lT 與網(wǎng)絡(luò),2012(10):91.
[6]朱靜.基于WEB的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2012(10):127-128.
[7]周昌權(quán).基于Web的在線考試與練習(xí)系統(tǒng)設(shè)計(jì)[J].電腦編程技巧與維護(hù),2012(18):80-81.
[8]李建.基于Web多層框架體系的智能化組卷考試系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[J].科技廣場(chǎng),2012(10):50-51.
[9]陳建方,俞曼華,孔強(qiáng),等.基于WEB技術(shù)的自動(dòng)組卷方案設(shè)計(jì)[J].電腦與信息技術(shù),2012,20(4):11-12,32.
[10]張瑞,董卓亞.基于Web開(kāi)發(fā)的在線考試系統(tǒng)[J].電腦知識(shí)與技術(shù),2012,8(16):3878-3880.
[11]何廣文,王耀民,曾華.基于題庫(kù)共享的在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2012,11(6):70-71.
[12]張永恒.基于SSH架構(gòu)的無(wú)紙化考試在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].榆林學(xué)院學(xué)報(bào),2012,22(4):61-62.
[13]黃磊,刁勇,李明建,等.煤礦防突信息管理系統(tǒng)設(shè)計(jì)[J].西南大學(xué)學(xué)報(bào):自然科學(xué)版,2013(2):148-154.
[14]宋志剛,姚波.基于J2EE在線考試信息系統(tǒng)的架構(gòu)[J].中國(guó)新技術(shù)新產(chǎn)品,2010(1):30.
[15]王聰.基于B/S模式的在線考試系統(tǒng)的設(shè)計(jì)探討[J].電腦科技,2010(3):112-113.
[16]李俊青.JavaEE Web開(kāi)發(fā)與項(xiàng)目實(shí)戰(zhàn)[M].武漢:華中科技大學(xué)出版社,2011.
[17]軟件開(kāi)發(fā)技術(shù)聯(lián)盟.Java Web開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2014.