摘要:考試是教學(xué)過(guò)程中的一個(gè)重要環(huán)節(jié),該文給出了一種基于J2EE的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案,對(duì)系統(tǒng)進(jìn)行了模塊劃分,給出了數(shù)據(jù)庫(kù)設(shè)計(jì)方案,討論了自動(dòng)組卷策略算法。
關(guān)鍵詞:在線考試;B/S模式;J2EE;自動(dòng)組卷
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2008)29-0391-03
The Design and Implementation of Online-test System Based on J2EE
QIN Jing-xiang
(Siping Vocational College,Siping 136002,China)
Abstract: Test is an important link of the teaching process. The paper presents the design and implementation of Online-test System Based on J2EE, and divides the system based on module. Then the paper provides the design of data program, followed by a discussion of the approach of automatically producing test paper.
Key words: online-test ;B/S pattern; J2EE; automatically producing test paper
1 引言
考試作為教學(xué)測(cè)評(píng)最主要的手段,其規(guī)范性、科學(xué)性以及考試工作的組織、管理等,直接關(guān)系到教學(xué)測(cè)評(píng)的準(zhǔn)確性和客觀性,從而也影響到教學(xué)質(zhì)量的好壞。
校園網(wǎng)為實(shí)現(xiàn)網(wǎng)絡(luò)考試提供了必要的環(huán)境,如何設(shè)計(jì)一個(gè)性能優(yōu)良、擴(kuò)展性和安全性很好的網(wǎng)絡(luò)考試系統(tǒng)已成為一種必然趨勢(shì)。
本文介紹的在線考試系統(tǒng)采用B/S結(jié)構(gòu),即瀏覽器、Web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器的三層體系結(jié)構(gòu),客戶端只需安裝一個(gè)標(biāo)準(zhǔn)的Web瀏覽器,其它應(yīng)用程序都存儲(chǔ)在Web服務(wù)器上,數(shù)據(jù)庫(kù)采用SQL Server2000,SQL Server2000能夠提供超大型系統(tǒng)所需的數(shù)據(jù)庫(kù)服務(wù),具有完全的瀏覽器服務(wù)器體系結(jié)構(gòu),隱含的并發(fā)控制能力,可在多個(gè)用戶之間有效合理地分配可用資源,它不僅是一個(gè)巨大的數(shù)據(jù)容器,還是一個(gè)非常強(qiáng)大的數(shù)據(jù)處理工具。
系統(tǒng)開(kāi)發(fā)采用了J2EE架構(gòu)中的多層模型,具有很強(qiáng)的可靠性、可用性、可擴(kuò)展性、可維護(hù)性、可移植性等,服務(wù)器端程序用JSP作為主要實(shí)現(xiàn)手段,配合Servlet、JavaBean、Struts、Hibernate等Web實(shí)現(xiàn)技術(shù),JSP作為一種基于Java的Web實(shí)現(xiàn)技術(shù),它具有跨平臺(tái)、效率高、安全性強(qiáng)等優(yōu)點(diǎn),完全符合考試系統(tǒng)所要求的實(shí)時(shí)性、安全性、保密性等要求。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)體系結(jié)構(gòu)
目前,Web應(yīng)用程序通常采用三層模型,本系統(tǒng)采用基于J2EE的B/S結(jié)構(gòu),如圖1所示。
1) 客戶層:即瀏覽器層,處理相應(yīng)客戶操作,客戶通過(guò)瀏覽器(Browser)請(qǐng)求Web頁(yè)面,從Web服務(wù)器上下載靜態(tài)的HTML頁(yè)面或由JSP或Servlet生成的動(dòng)態(tài)HTML頁(yè)面,用戶可以通過(guò)瀏覽器使用本系統(tǒng)。
2) 中間層:完成業(yè)務(wù)邏輯規(guī)則,負(fù)責(zé)數(shù)據(jù)庫(kù)和客戶程序之間的數(shù)據(jù)傳遞,程序的大部分功能在這一層完成。Web層與業(yè)務(wù)層一起構(gòu)成了中間層。
Web層:J2EE Web層可由JSP頁(yè)面、基于Web的Applets以及顯示HTML頁(yè)面的Servlet組成,調(diào)用Servlet或JSP頁(yè)面的HTML頁(yè)面在應(yīng)用程序組裝時(shí)與Web層打包在一起,就像客戶層一樣。
業(yè)務(wù)層:作為解決或滿足某個(gè)特定業(yè)務(wù)領(lǐng)域需要的業(yè)務(wù)邏輯代碼由運(yùn)行在業(yè)務(wù)層的Beans組件來(lái)執(zhí)行,它從客戶層接收數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行處理,再將數(shù)據(jù)發(fā)送到數(shù)據(jù)層存儲(chǔ),并從存儲(chǔ)中檢索數(shù)據(jù),將數(shù)據(jù)返回給客戶層程序。
3) 數(shù)據(jù)層:負(fù)責(zé)數(shù)據(jù)的永久存儲(chǔ),這一層由數(shù)據(jù)庫(kù)管理系統(tǒng)組成,實(shí)現(xiàn)時(shí)使用的是MicroSoft SQLServer 2000。
2.2 系統(tǒng)功能模塊設(shè)計(jì)
經(jīng)過(guò)分析,系統(tǒng)用戶可分為系統(tǒng)管理員、任課教師、學(xué)生三類: 分別對(duì)應(yīng)管理員子系統(tǒng)、教師子系統(tǒng)和學(xué)生子系統(tǒng)。
系統(tǒng)層次結(jié)構(gòu)如圖2所示。
1) 管理員子系統(tǒng)
管理員的主要工作是系統(tǒng)維護(hù),用戶管理、協(xié)助教師對(duì)考試過(guò)程進(jìn)行監(jiān)控,也可以對(duì)試題庫(kù)進(jìn)行維護(hù)。
用戶管理:可以增加、刪除、修改用戶的基本信息。
考試監(jiān)控:在考試過(guò)程中,對(duì)考試情況進(jìn)行監(jiān)控,可以隨時(shí)查看當(dāng)前的考試情況,如參加考試的人數(shù)、缺考人數(shù)、正在考試的人數(shù)、已經(jīng)交卷的人數(shù)等,也可以查看每個(gè)考生的當(dāng)前狀態(tài)。
2) 教師子系統(tǒng)
教師的主要工作是試題庫(kù)管理、生成試卷、考試管理、評(píng)閱試卷、成績(jī)統(tǒng)計(jì)和分析等。
試題管理:包括試題類型管理和試題管理兩部分,可以根據(jù)需要增加新的試題類型,增加、刪除修改試題。
試卷管理:有自動(dòng)和手工兩種生成試卷的方法,生成試卷時(shí)要先輸入試卷基本信息,如試卷類型、難度、起止章節(jié),各種類型題的數(shù)量等,自動(dòng)生成試卷時(shí)系統(tǒng)首先對(duì)給定的各個(gè)參數(shù)判斷能否生成一份試卷,然后隨機(jī)抽取試題生成一份試卷;人生生成試卷時(shí)根據(jù)給定的各個(gè)參數(shù),把試題庫(kù)中符合條件的記錄列出來(lái)供教師挑選,然后組成一份試卷。
考試管理:教師可以設(shè)定某次考試的考試時(shí)間、參加考試的班級(jí)、所用試卷等,也可以修改和刪除考試信息。
評(píng)閱試卷:對(duì)客觀題由系統(tǒng)自動(dòng)評(píng)分,對(duì)主觀題由教師評(píng)分。
成績(jī)分析:對(duì)某次考試成績(jī)進(jìn)行分析。
3) 學(xué)生子系統(tǒng)
學(xué)生的主要工作是模擬練習(xí)、在線考試、查看自己的考試成績(jī)等。
模擬練習(xí):學(xué)生可以根據(jù)需要,按照試題類型、難度、章節(jié)選擇練習(xí)題,同時(shí)可以隨時(shí)查看試題答案。
在線考試:在規(guī)定的時(shí)間里,學(xué)生可以參加某次考試,答題完畢將所答試卷提交給系統(tǒng)。
成績(jī)查詢:在考試結(jié)束后,學(xué)生可以查看自己的考試成績(jī)。
2.3 主要功能模塊實(shí)現(xiàn)
1) 用戶登錄模塊
本系統(tǒng)的用戶可分為三類:系統(tǒng)管理員、任課教師和學(xué)生,這三類用戶分別有不同的權(quán)限,允許訪問(wèn)不同的頁(yè)面。用戶進(jìn)入系統(tǒng)時(shí)首先要進(jìn)行身份驗(yàn)證,驗(yàn)證通過(guò)后訪問(wèn)相應(yīng)的頁(yè)面。
用戶登錄模塊的實(shí)現(xiàn)采用傳統(tǒng)J2EE Web設(shè)計(jì)方法,分5層,自底向上分別是:數(shù)據(jù)庫(kù)層(SQL Server 2000)-->ORM層(Hibernate層)-->業(yè)務(wù)邏輯層(JavaBean、Struts ActionForm)-->控制層(Struts Action)-->視圖表示層(JSP)。
如圖3給出了Struts的體系結(jié)構(gòu)圖,Struts中的四個(gè)核心組件有:
ActionServlet:主要負(fù)責(zé)將HTTP的客戶請(qǐng)求信息組裝后,根據(jù)配置文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鳌?/p>
Action Classes:是客戶請(qǐng)求動(dòng)作和業(yè)務(wù)邏輯處理之間的一個(gè)適配器,功能是將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。
Action Mapping:負(fù)責(zé)將客戶請(qǐng)求信息轉(zhuǎn)發(fā)到相應(yīng)的Action類中。
ActionForm Bean:負(fù)責(zé)一個(gè)應(yīng)用系統(tǒng)的消息轉(zhuǎn)移的非持久性數(shù)據(jù)存儲(chǔ),也可用于為當(dāng)前用戶保存即將被一個(gè)視圖引用的中間模型狀態(tài)。
2) 組卷算法分析
組卷方法是網(wǎng)絡(luò)考試系統(tǒng)的重要組成部分,自動(dòng)組卷是由系統(tǒng)根據(jù)教師提出的題型、題目難度等要求自動(dòng)從試題庫(kù)中抽取題目,形成一份試卷。
常見(jiàn)的組卷方法有隨機(jī)選取算法、回溯試探算法、遺傳算法等,本系統(tǒng)采用的是隨機(jī)組卷方法。
試卷所需參數(shù):試卷難度系數(shù)、試卷覆蓋范圍、各種類型題目數(shù)量。
處理流程:
①取得組卷參數(shù):試卷難度、覆蓋范圍、總分、各種類型題的數(shù)量;
②計(jì)算題庫(kù)中各類型題中覆蓋范圍、難度滿足要求的試題數(shù)量;
③若某種類型試題數(shù)量不足,則組卷失敗;
④計(jì)算用戶輸入的各類型題總分;
⑤各類型題總分和與用戶要求的總分不相符,則組卷失敗;
⑥取出某種類型滿足要求的所有試題;
⑦依據(jù)隨機(jī)函數(shù)隨機(jī)定位到一個(gè)記錄,并存入該試卷所對(duì)應(yīng)的試題表中(保證同一試題不會(huì)重復(fù)選取),重復(fù),直到取得該類型所要求的試題數(shù)量為止。
⑧重復(fù)⑥、⑦,直到取得所有要求的類型試題為止。
自動(dòng)組卷部分代碼:
Vector vector = new Vector();
for (i = 0; i < m; i++) //取得各種類型試題
{
//取得該種題型所有試題,放入向量中
st = con
prepareStatement(\"select * from shiti where type=? and chapter>=? and chapter<=?\");
st.setInt(1, typeid[i]);
st.setInt(2, chapter_start);
st.setInt(3, chapter_end);
rs = st.executeQuery();
n = 0;
while (rs.next()) {
n++;
vector.add(new Integer(rs.getInt(\"stid\")));
}
int random[] = new int[typenum[i]];
int j, k;
int stid;
boolean another;
for (j = 0; j < typenum[i]; j++) {
another = true;
random[j] = (int) (Math.random() * n);
for (k = 0; k < j; k++)
if (random[j] == random[k]) {
another = 1;
j--;
break;
}
if (another) {stid = ((Integer) vector.get(random[j])).intValue();
st = con
.prepareStatement(\"insert into sjst (sjid,stid,sttype) values (?,?,?)\");
st.setInt(1, sjid);
st.setInt(2, stid);
st.setString(3, typename[i]);
st.executeUpdate();
}
}
vector.removeAllElements();}
3 結(jié)束語(yǔ)
本文提出的基于J2EE的在線考試系統(tǒng),實(shí)現(xiàn)了試題庫(kù)的管理、自動(dòng)和手工組卷、在線考試、自動(dòng)閱卷、成績(jī)查詢、成績(jī)統(tǒng)計(jì)分析等功能,系統(tǒng)功能設(shè)計(jì)全面,能夠滿足了幾乎所有科目教學(xué)考試的需求,對(duì)改革傳統(tǒng)的考試方式、提高工作效率和改進(jìn)教學(xué)質(zhì)量都有著積極的現(xiàn)實(shí)意義。
參考文獻(xiàn):
[1] 陳濤.基于Web的在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].四川文理學(xué)院學(xué)報(bào),2007(3):58-60.
[2] 趙娟.基于B/S模式的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].天津職業(yè)院校聯(lián)合學(xué)報(bào),2008(3):64-66.
[3] 周啟生,王化文.基于WWW遠(yuǎn)程考試系統(tǒng)的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(3):830-832.