李養(yǎng)勝+李俊
摘 要:基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)采用MyEclipse 6.5作為開發(fā)工具,使用MVC開發(fā)模式,框架使用了目前流行的Struts,數(shù)據(jù)庫(kù)使用Oracle 10i。該系統(tǒng)主要有三大模塊:管理員模塊對(duì)試題進(jìn)行管理;教師模塊負(fù)責(zé)對(duì)試題批閱;學(xué)生模塊主要是在線考試。
關(guān)鍵詞:Java設(shè)計(jì);Struts框架;在線考試;B/S
中圖分類號(hào):TP316 ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A ? ? ? ? ? 文章編號(hào):2095-1302(2015)01-00-02
0 ?引 ?言
在分析了現(xiàn)有考試系統(tǒng),結(jié)合實(shí)際情況的基礎(chǔ)上,利用Java語(yǔ)言設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Web的在線考試系統(tǒng)設(shè)計(jì)。系統(tǒng)包含了登錄、注冊(cè)、教師和學(xué)生信息管理、在線考試、試卷管理、題庫(kù)管理、學(xué)生成績(jī)管理等能功能。
1 ?采用技術(shù)
模型-視圖-控制器(MVC)是Xerox PARC在八十年代為編程語(yǔ)言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式。
Struts最早是作為Apache Jakarta項(xiàng)目的組成部分問世運(yùn)做,Struts的目的是為了幫助開發(fā)者減少在運(yùn)用MVC設(shè)計(jì)模型來開發(fā)Web應(yīng)用的時(shí)間。如果想混合使用Servlet和JSP的優(yōu)點(diǎn)來建立可擴(kuò)展的應(yīng)用,Struts是一個(gè)不錯(cuò)的選擇。Struts 是MVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml配置文件。
2 ?系統(tǒng)可行性分析
可行性研究(Feasibility Study)是為了弄清所定義的項(xiàng)目是不是可能實(shí)現(xiàn)并值得進(jìn)行。下面從三個(gè)方面分析本系統(tǒng)的可行性。
本系統(tǒng)是在Windows XP操作系統(tǒng)下開發(fā)的基于B/S體系結(jié)構(gòu)的Struts框架的MVC模式的系統(tǒng),采用MyEclipse 6.5、Tomcat 5.5、DreamWeaver、PLSQL作為開發(fā)工具。本系統(tǒng)后臺(tái)采用Oracle 10i數(shù)據(jù)庫(kù),其具有跨平臺(tái)性、可靠性、易用性。軟件運(yùn)行環(huán)境:終端支持運(yùn)行Windows的計(jì)算機(jī)、數(shù)據(jù)庫(kù)支持各種流行的大型關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)服務(wù)器支持Windows等各種操作系統(tǒng);開發(fā)本系統(tǒng)的經(jīng)濟(jì)成本低,使用Java開發(fā)維護(hù)費(fèi)用不高、開發(fā)的周期短;網(wǎng)絡(luò)化已經(jīng)成為社會(huì)的趨勢(shì),本系統(tǒng)操作簡(jiǎn)單方便。
3 ?系統(tǒng)設(shè)計(jì)模式
基于B/S的在線Web考試模式的物理模型:一方是管理員在一端通過Internet與服務(wù)器進(jìn)行連接,另一方是學(xué)生分別從不同的地方,也通過Internet與考試服務(wù)器連接,圖1為系統(tǒng)的網(wǎng)絡(luò)原理圖。
圖1 ?系統(tǒng)的網(wǎng)絡(luò)原理圖
在線考試系統(tǒng)從概念上看,是一個(gè)典型的數(shù)據(jù)庫(kù)應(yīng)用Web系統(tǒng),采用三層B/S體系結(jié)構(gòu)。三層體系結(jié)構(gòu)相對(duì)較為簡(jiǎn)單,表示層展現(xiàn)給最終用戶UI界面,中間業(yè)務(wù)邏輯層處理用戶請(qǐng)求并訪問數(shù)據(jù)庫(kù),底層為持久層數(shù)據(jù)庫(kù)實(shí)現(xiàn);而多層體系結(jié)構(gòu)則將業(yè)務(wù)邏輯層進(jìn)一步細(xì)化,使系統(tǒng)更加靈活。本系統(tǒng)采用了多層體系結(jié)構(gòu)(系統(tǒng)體系結(jié)構(gòu)如圖2在線考試系統(tǒng)網(wǎng)絡(luò)部署圖)。
圖2 ?在線考試系統(tǒng)網(wǎng)絡(luò)部署圖
4 ?系統(tǒng)總體設(shè)計(jì)及部分模塊實(shí)現(xiàn)
該系統(tǒng)具有用戶登錄、參加考試、以及教師進(jìn)行試題維護(hù)、成績(jī)查詢等功能的ASP應(yīng)用程序,應(yīng)具有開放性、方便性和靈活性。登錄用戶可以是學(xué)生、教師和系統(tǒng)管理員,每類用戶有不同的操作權(quán)限??忌ㄟ^用戶驗(yàn)證后進(jìn)入考試系統(tǒng),并在規(guī)定的時(shí)間內(nèi)進(jìn)行答題,考生交卷后,其分?jǐn)?shù)將被存入數(shù)據(jù)庫(kù)中以供以后的查閱。為了保證系統(tǒng)運(yùn)行的效率和可靠性,系統(tǒng)服務(wù)器端應(yīng)具有較高的軟硬件配置,客戶端的要求不是很高。
詳細(xì)設(shè)計(jì)階段的任務(wù)是在總體設(shè)計(jì)的基礎(chǔ)上進(jìn)一步確定如何實(shí)現(xiàn)目標(biāo)系統(tǒng),包括以下內(nèi)容:確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu),確定每個(gè)模塊實(shí)現(xiàn)的功能,確定流程圖,為每個(gè)模塊確定采用的算法,寫出模塊的詳細(xì)過程性描述。
下面將系統(tǒng)試題抽取模塊實(shí)現(xiàn)時(shí)的關(guān)鍵技術(shù)及代碼進(jìn)行說明。
在進(jìn)入到該頁(yè)面之前,所抽取的題目是在題庫(kù)中隨機(jī)抽取的,不能有重復(fù)的題目,部分代碼如下所示:
publicstatic List<Integer>getRandoms(int size, intnum) {
List<Integer>listInt = newArrayList<Integer>();
Random ran = new Random();
int k = 0;//初始的數(shù)據(jù)個(gè)數(shù)為0;
while (true) {
//這里可以有兩種方法來處理:一種是重新遍歷數(shù)組找出不重復(fù),另一種是直接用Set 集合
if (listInt.size() == 0) {
listInt.add(new Integer(ran.nextInt(size)));
k++;
} else {
int t = ran.nextInt(size);
boolean result = false;
for (int j = 0; j <listInt.size(); j++) {
if (t == listInt.get(j)) {
result = true;
break; }
}
if (result) {
//不添加 繼續(xù)循環(huán)
} else {
listInt.add(new Integer(t));
k++;
if (k == num) {
returnlistInt; } }
}
}
}
其中,size是傳入的集合的個(gè)數(shù),num是需要抽取的題目的個(gè)數(shù)。
在學(xué)生模塊中可以實(shí)現(xiàn)學(xué)生基本信息的修改,對(duì)于密碼修改,使用String xpwd = request.getParameter(“xpwd”)實(shí)現(xiàn)新密碼加載,使用session.setAttribute(“pwd”, xpwd)實(shí)現(xiàn)新密覆蓋掉以前的舊密碼。
5 ?結(jié) ?語(yǔ)
本系統(tǒng)是基于Struts1+Spring+Hibernate框架的MVC模式,所以具有數(shù)據(jù)和表示層分離的特性,這樣前臺(tái)和后臺(tái)在設(shè)計(jì)就能互不影響。應(yīng)用本系統(tǒng),既減輕了老師的閱卷工作,同時(shí)也使學(xué)生對(duì)考試產(chǎn)生了濃厚的興趣,體會(huì)到科技給生活帶來的樂趣。在線考試系統(tǒng)為高校的老師和學(xué)生們提供了極大的方便,降低了考試的成本,提高了考試的公平性、可靠性。
參考文獻(xiàn)
[1]曹鳳蓮.網(wǎng)上考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].網(wǎng)絡(luò)與信息, 2010,24(3):48-50.
[2] aoFeng-lian.Design and implementation of online examination system[J].Network & Information,2010(3):3-7.
[3]明日科技.C#項(xiàng)目開發(fā)案例全程實(shí)錄[M].北京:清華大學(xué)出版社,2011.
[4]王淑敏.ASP.NET動(dòng)態(tài)網(wǎng)站設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[5]鄭德康.在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012(8):154-155.
[6]李隘優(yōu).基于B/S的在線考試系統(tǒng)安全性的設(shè)計(jì)與實(shí)現(xiàn)[J].新鄉(xiāng)學(xué)院學(xué)報(bào)(自然科學(xué)版),2012(4):336-338.
[7] Li Ai-you.Design and implementation of security based on B/S online examination system [J].Journal of Pingyuan University, 2012 (4):50-52.
[8]周鵬梅.在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2012.