1.引言?
HTML是因特網(wǎng)標(biāo)準(zhǔn),具有強(qiáng)大的顯示能力,但其弱點(diǎn)是只具有靜態(tài)特征。這里的靜態(tài)性是指其顯示數(shù)據(jù)是固定的,即在制作頁面時就必須安排好顯示數(shù)據(jù)。要完成考試功能,需要定制試卷,并為每份試卷定制判卷程序,但對英語教學(xué)系統(tǒng)來說,題庫中的題量太大,要把每道題做成靜態(tài)頁面開銷太大,不太現(xiàn)實。 ?
基于靜態(tài)頁面的缺點(diǎn),若能根據(jù)用戶的需求自動從題庫中隨機(jī)抽題,自動生成試卷,再根據(jù)題庫中試題的答案執(zhí)行判卷,將極大增加系統(tǒng)的可維護(hù)性與可擴(kuò)充性。?
2.理論基礎(chǔ)?
2.1? JDBC?
JDBC(Java DataBase Connectivity)是Java連接數(shù)據(jù)庫的工業(yè)標(biāo)準(zhǔn),為基于SQL的數(shù)據(jù)庫訪問提供應(yīng)用編程接口。JDBC包括兩組分別面向應(yīng)用程序和數(shù)據(jù)庫驅(qū)動程序開發(fā)人員的API,以及前者向后者轉(zhuǎn)化的內(nèi)在封裝邏輯。面向數(shù)據(jù)庫驅(qū)動程序開發(fā)人員的JDBC Driver API,是由數(shù)據(jù)庫廠商開發(fā)的。提供給開發(fā)人員用來編寫前端應(yīng)用程序的JDBC API,對任何數(shù)據(jù)庫都是一樣的,用戶使用標(biāo)準(zhǔn)的SQL語句執(zhí)行數(shù)據(jù)庫的增刪改查操作。由于JDBC具有平臺無關(guān)性和數(shù)據(jù)庫訪問一致性的特點(diǎn),開發(fā)人員編寫的程序只需稍作修改或不作修改就可以在不同的平臺上訪問不同的數(shù)據(jù)庫系統(tǒng)。?
2.2? JavaBean?
JavaBean 是一種基于Java的可重用組件,為Java類提供了定義方法、事件、屬性的方法,以便在設(shè)計時允許外部的操作和定制。JavaBean組件是Java類,這些類遵循一個統(tǒng)一的接口格式,以便該類的方法命名、底層行為以及具體實現(xiàn)能夠符合標(biāo)準(zhǔn)的JavaBean組件構(gòu)造方式。JavaBean一般用于執(zhí)行復(fù)雜的計算任務(wù)或負(fù)責(zé)與數(shù)據(jù)庫的交互。?
2.3? XML?
XML代表Extensible Markup Language(eXtensible Markup Language的縮寫,意為可擴(kuò)展的標(biāo)記語言)。XML是一種顯示數(shù)據(jù)的標(biāo)記語言,也是元標(biāo)記語言,即定義了用于定義其他與特定領(lǐng)域有關(guān)的、語義的、結(jié)構(gòu)化的標(biāo)記語言的句法語言。由于XML可以理解為一種格式化的文本,因此,對XML而言,是沒有操作系統(tǒng)的概念的,只要支持文本處理的機(jī)器,就可以從XML中獲取所需的數(shù)據(jù),而且,與一般文本文件不同的是,XML本身具有一定的數(shù)據(jù)結(jié)構(gòu),借助讀取XML格式文檔的技術(shù)(例如傳統(tǒng)的SAX(Simple API for XML),和DOM(Document Object Model)解析器),包括Java對XML的支持,可以方便快捷的處理XML中的數(shù)據(jù)。?
2.4? JFM?
JFM Java Media Framework)中譯為Java媒體框架,是向Java獨(dú)立應(yīng)用程序和小應(yīng)用程序中集成媒體數(shù)據(jù)類型的應(yīng)用程序接口。它是特為利用Java平臺的特征而設(shè)計的。JFM支持壓縮的媒體流及存儲媒體的同步、控制、處理和播放,能在接收媒體流的同時就產(chǎn)生音視頻,而不需要在本地存儲。?
3.系統(tǒng)概述?
考試系統(tǒng)采取B/S三層結(jié)構(gòu),即分為用戶界面表示層、邏輯處理層和數(shù)據(jù)存儲層。我們根據(jù)通用的三層結(jié)構(gòu)處理模式,采用如下解決方案:以Apache作為Web服務(wù)器,以Tomcat作為JSP引擎,后臺數(shù)據(jù)庫采用SQL Server,本系統(tǒng)用HTML設(shè)計用戶界面,JavaBean封裝了數(shù)據(jù)庫訪問邏輯和自動組卷算法,JSP負(fù)責(zé)將由JavaBean傳回的數(shù)據(jù)動態(tài)顯示和對試卷的評判。?
圖1顯示了系統(tǒng)的體系結(jié)構(gòu):
圖1 考試系統(tǒng)的體系結(jié)構(gòu)?
4.系統(tǒng)詳細(xì)設(shè)計?
要實現(xiàn)自動組卷需要解決三個問題:動態(tài)頁面的生成、聽力錄音文件的播放和自動判卷。?
4.1動態(tài)頁面的生成?
4.1.1 定義考試頁面邏輯結(jié)構(gòu)?
依照各類考試題型的業(yè)務(wù)規(guī)則,可以用XML定制頁面的結(jié)構(gòu),圖2為一般考試頁面示意圖,依據(jù)此頁面,可以定義如下格式XML文件。?
???? // 四個選項
......
相應(yīng)的,在數(shù)據(jù)庫設(shè)計時也按照三范式的要求,根據(jù)頁面的特點(diǎn)設(shè)計關(guān)系模型和關(guān)系表。
4.1.2 頁面的生成
自動組卷主要包括數(shù)據(jù)的獲得與HTML頁面的生成。
(1)獲得頁面數(shù)據(jù)
借助于Java隨機(jī)數(shù)產(chǎn)生器、Hash函數(shù)、集合中數(shù)據(jù)不重復(fù)等特點(diǎn),生成一個數(shù)據(jù)提取的算法,在通過使用JDBC實現(xiàn)數(shù)據(jù)庫的訪問。
(2)生成HTML頁面
首先建立一個模板類,包含如下數(shù)據(jù)結(jié)構(gòu)
public class Cet4Template
{
?private String title;
?private ArrayList lnPtOne;
?private ArrayList lnPtTwo;
?private ArrayList reading;
?private ArrayList vocabulary;
?Cet4Cloze cloze;
?String writing;
?public Cet4Template()
?{
??.................
?}
..........
}
再用依據(jù)組卷算法從數(shù)據(jù)庫中提取的數(shù)據(jù)填充模板,然后依據(jù)模板的內(nèi)容利用JDOM技術(shù)生成XML文檔:
//create a new document
public Document createDocument()
{
? ?Document doc = null;
? ?try
??? {
?????? DocumentBuilder builder = ????????????? ???? DocumentBuilderFactory.newInstance().newDocumentBuilder();
?????? doc = builder.newDocument();
?????? //root
?????? Element rootElement = doc.createElement("test");
?????? doc.appendChild(rootElement);
??? .............
?}
}
最后根據(jù)XML文件用XSL技術(shù)動態(tài)生成HTML頁面,交由JSP處理顯示問題。
4.2聽力錄音文件的播放
英語考試系統(tǒng)的一大特點(diǎn)就是含有聽力部分,又由于頁面是自動生成的,因此聽力媒體文件只能動態(tài)確定,可以把整個媒體文件存放在數(shù)據(jù)庫中,但媒體文件一般比較大,考慮到查詢效率問題,本系統(tǒng)只把媒體文件的物理位置信息存于數(shù)據(jù)庫。
由于JFM對applet的支持,本系統(tǒng)以applet的形式把媒體文件嵌入網(wǎng)頁,對于媒體文件的控制,通過調(diào)用JFM類和接口來實現(xiàn)。
4.3自動判卷
自動判卷功能的實現(xiàn)相對比較容易,在從數(shù)據(jù)庫中抽題時就一并獲得各題的正確答案,再用request.getParameter()方法獲得考生的答案,二者對照判卷即可,通過JSP實現(xiàn)。
5.結(jié)束語
隨著Internet的發(fā)展和網(wǎng)絡(luò)信息化和智能化進(jìn)程的加快,對各類web應(yīng)用的需求也日益增大,本系統(tǒng)基于B/S三層結(jié)構(gòu),使Java技術(shù)與XML語義完美結(jié)合,利用了JavaBean使表示層與邏輯層分離的特點(diǎn)和JFM強(qiáng)大的多媒體處理能力,實現(xiàn)了英語考試自動組卷功能,促進(jìn)了遠(yuǎn)程教學(xué)的開展和校園網(wǎng)絡(luò)信息化平臺的搭建。
為了進(jìn)一步完善系統(tǒng),可以針對各類不同的考試題型,模擬四級、六級、考研等不同的考試,另外,為了提高查詢的速度,可以對組卷的算法進(jìn)行優(yōu)化,還可以采用數(shù)據(jù)庫廠商提供的JDBC驅(qū)動等。
6.參考資料
1.Java多媒體程序設(shè)計???? 王峰等 清華大學(xué)出版社1999.5
2.Java2核心技術(shù) 卷Ⅱ:高級特性(美)Cay S.Horstmann,Gary Cornell 機(jī)械工業(yè)出版社2000
3.用XML實現(xiàn)程序中基于瀏覽器的Web服務(wù) 邱揚(yáng) 2003.10
4.基于Java的數(shù)據(jù)庫web訪問技術(shù) 方昭輝 陳冬霞 2003.10
5.http://www.zleeweb.com/Article_Show.asp?ArticleID=14
6.http://www.cooltang.com/box/200304/200304041224392180972382300988.htm