《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 基于XML與JMF實(shí)現(xiàn)考試自動(dòng)組卷

基于XML與JMF實(shí)現(xiàn)考試自動(dòng)組卷

2009-02-05
作者:王 雪 穎

1.引言?

HTML是因特網(wǎng)標(biāo)準(zhǔn),具有強(qiáng)大的顯示能力,但其弱點(diǎn)是只具有靜態(tài)特征。這里的靜態(tài)性是指其顯示數(shù)據(jù)是固定的,即在制作頁(yè)面時(shí)就必須安排好顯示數(shù)據(jù)。要完成考試功能,需要定制試卷,并為每份試卷定制判卷程序,但對(duì)英語(yǔ)教學(xué)系統(tǒng)來(lái)說(shuō),題庫(kù)中的題量太大,要把每道題做成靜態(tài)頁(yè)面開(kāi)銷(xiāo)太大,不太現(xiàn)實(shí)。 ?

基于靜態(tài)頁(yè)面的缺點(diǎn),若能根據(jù)用戶(hù)的需求自動(dòng)從題庫(kù)中隨機(jī)抽題,自動(dòng)生成試卷,再根據(jù)題庫(kù)中試題的答案執(zhí)行判卷,將極大增加系統(tǒng)的可維護(hù)性與可擴(kuò)充性。?

2.理論基礎(chǔ)?

2.1? JDBC?

JDBC(Java DataBase Connectivity)是Java連接數(shù)據(jù)庫(kù)的工業(yè)標(biāo)準(zhǔn),為基于SQL的數(shù)據(jù)庫(kù)訪問(wèn)提供應(yīng)用編程接口。JDBC包括兩組分別面向應(yīng)用程序和數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序開(kāi)發(fā)人員的API,以及前者向后者轉(zhuǎn)化的內(nèi)在封裝邏輯。面向數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序開(kāi)發(fā)人員的JDBC Driver API,是由數(shù)據(jù)庫(kù)廠商開(kāi)發(fā)的。提供給開(kāi)發(fā)人員用來(lái)編寫(xiě)前端應(yīng)用程序的JDBC API,對(duì)任何數(shù)據(jù)庫(kù)都是一樣的,用戶(hù)使用標(biāo)準(zhǔn)的SQL語(yǔ)句執(zhí)行數(shù)據(jù)庫(kù)的增刪改查操作。由于JDBC具有平臺(tái)無(wú)關(guān)性和數(shù)據(jù)庫(kù)訪問(wèn)一致性的特點(diǎn),開(kāi)發(fā)人員編寫(xiě)的程序只需稍作修改或不作修改就可以在不同的平臺(tái)上訪問(wèn)不同的數(shù)據(jù)庫(kù)系統(tǒng)。?

2.2? JavaBean?

JavaBean 是一種基于Java的可重用組件,為Java類(lèi)提供了定義方法、事件、屬性的方法,以便在設(shè)計(jì)時(shí)允許外部的操作和定制。JavaBean組件是Java類(lèi),這些類(lèi)遵循一個(gè)統(tǒng)一的接口格式,以便該類(lèi)的方法命名、底層行為以及具體實(shí)現(xiàn)能夠符合標(biāo)準(zhǔn)的JavaBean組件構(gòu)造方式。JavaBean一般用于執(zhí)行復(fù)雜的計(jì)算任務(wù)或負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互。?

2.3? XML?

XML代表Extensible Markup Language(eXtensible Markup Language的縮寫(xiě),意為可擴(kuò)展的標(biāo)記語(yǔ)言)。XML是一種顯示數(shù)據(jù)的標(biāo)記語(yǔ)言,也是元標(biāo)記語(yǔ)言,即定義了用于定義其他與特定領(lǐng)域有關(guān)的、語(yǔ)義的、結(jié)構(gòu)化的標(biāo)記語(yǔ)言的句法語(yǔ)言。由于XML可以理解為一種格式化的文本,因此,對(duì)XML而言,是沒(méi)有操作系統(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對(duì)XML的支持,可以方便快捷的處理XML中的數(shù)據(jù)。?

2.4? JFM?

JFM Java Media Framework)中譯為Java媒體框架,是向Java獨(dú)立應(yīng)用程序和小應(yīng)用程序中集成媒體數(shù)據(jù)類(lèi)型的應(yīng)用程序接口。它是特為利用Java平臺(tái)的特征而設(shè)計(jì)的。JFM支持壓縮的媒體流及存儲(chǔ)媒體的同步、控制、處理和播放,能在接收媒體流的同時(shí)就產(chǎn)生音視頻,而不需要在本地存儲(chǔ)。?

3.系統(tǒng)概述?

考試系統(tǒng)采取B/S三層結(jié)構(gòu),即分為用戶(hù)界面表示層、邏輯處理層和數(shù)據(jù)存儲(chǔ)層。我們根據(jù)通用的三層結(jié)構(gòu)處理模式,采用如下解決方案:以Apache作為Web服務(wù)器,以Tomcat作為JSP引擎,后臺(tái)數(shù)據(jù)庫(kù)采用SQL Server,本系統(tǒng)用HTML設(shè)計(jì)用戶(hù)界面,JavaBean封裝了數(shù)據(jù)庫(kù)訪問(wèn)邏輯和自動(dòng)組卷算法,JSP負(fù)責(zé)將由JavaBean傳回的數(shù)據(jù)動(dòng)態(tài)顯示和對(duì)試卷的評(píng)判。?

圖1顯示了系統(tǒng)的體系結(jié)構(gòu):

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

4.系統(tǒng)詳細(xì)設(shè)計(jì)?

要實(shí)現(xiàn)自動(dòng)組卷需要解決三個(gè)問(wèn)題:動(dòng)態(tài)頁(yè)面的生成、聽(tīng)力錄音文件的播放和自動(dòng)判卷。?

4.1動(dòng)態(tài)頁(yè)面的生成?

4.1.1 定義考試頁(yè)面邏輯結(jié)構(gòu)?

依照各類(lèi)考試題型的業(yè)務(wù)規(guī)則,可以用XML定制頁(yè)面的結(jié)構(gòu),圖2為一般考試頁(yè)面示意圖,依據(jù)此頁(yè)面,可以定義如下格式XML文件。?


??????????? //聽(tīng)力第一部分

...??????? //錄音文件
???? // 四個(gè)選項(xiàng)
...??? // 答案


?? //聽(tīng)力第二部分
......

相應(yīng)的,在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)也按照三范式的要求,根據(jù)頁(yè)面的特點(diǎn)設(shè)計(jì)關(guān)系模型和關(guān)系表。
4.1.2 頁(yè)面的生成
自動(dòng)組卷主要包括數(shù)據(jù)的獲得與HTML頁(yè)面的生成。
(1)獲得頁(yè)面數(shù)據(jù)
借助于Java隨機(jī)數(shù)產(chǎn)生器、Hash函數(shù)、集合中數(shù)據(jù)不重復(fù)等特點(diǎn),生成一個(gè)數(shù)據(jù)提取的算法,在通過(guò)使用JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)。
(2)生成HTML頁(yè)面
首先建立一個(gè)模板類(lèi),包含如下數(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ù)庫(kù)中提取的數(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ù)動(dòng)態(tài)生成HTML頁(yè)面,交由JSP處理顯示問(wèn)題。

4.2聽(tīng)力錄音文件的播放
英語(yǔ)考試系統(tǒng)的一大特點(diǎn)就是含有聽(tīng)力部分,又由于頁(yè)面是自動(dòng)生成的,因此聽(tīng)力媒體文件只能動(dòng)態(tài)確定,可以把整個(gè)媒體文件存放在數(shù)據(jù)庫(kù)中,但媒體文件一般比較大,考慮到查詢(xún)效率問(wèn)題,本系統(tǒng)只把媒體文件的物理位置信息存于數(shù)據(jù)庫(kù)。
由于JFM對(duì)applet的支持,本系統(tǒng)以applet的形式把媒體文件嵌入網(wǎng)頁(yè),對(duì)于媒體文件的控制,通過(guò)調(diào)用JFM類(lèi)和接口來(lái)實(shí)現(xiàn)。

4.3自動(dòng)判卷
自動(dòng)判卷功能的實(shí)現(xiàn)相對(duì)比較容易,在從數(shù)據(jù)庫(kù)中抽題時(shí)就一并獲得各題的正確答案,再用request.getParameter()方法獲得考生的答案,二者對(duì)照判卷即可,通過(guò)JSP實(shí)現(xiàn)。
5.結(jié)束語(yǔ)
隨著Internet的發(fā)展和網(wǎng)絡(luò)信息化和智能化進(jìn)程的加快,對(duì)各類(lèi)web應(yīng)用的需求也日益增大,本系統(tǒng)基于B/S三層結(jié)構(gòu),使Java技術(shù)與XML語(yǔ)義完美結(jié)合,利用了JavaBean使表示層與邏輯層分離的特點(diǎn)和JFM強(qiáng)大的多媒體處理能力,實(shí)現(xiàn)了英語(yǔ)考試自動(dòng)組卷功能,促進(jìn)了遠(yuǎn)程教學(xué)的開(kāi)展和校園網(wǎng)絡(luò)信息化平臺(tái)的搭建。
為了進(jìn)一步完善系統(tǒng),可以針對(duì)各類(lèi)不同的考試題型,模擬四級(jí)、六級(jí)、考研等不同的考試,另外,為了提高查詢(xún)的速度,可以對(duì)組卷的算法進(jìn)行優(yōu)化,還可以采用數(shù)據(jù)庫(kù)廠商提供的JDBC驅(qū)動(dòng)等。
6.參考資料
1.Java多媒體程序設(shè)計(jì)???? 王峰等 清華大學(xué)出版社1999.5
2.Java2核心技術(shù) 卷Ⅱ:高級(jí)特性(美)Cay S.Horstmann,Gary Cornell 機(jī)械工業(yè)出版社2000
3.用XML實(shí)現(xiàn)程序中基于瀏覽器的Web服務(wù) 邱揚(yáng) 2003.10
4.基于Java的數(shù)據(jù)庫(kù)web訪問(wèn)技術(shù) 方昭輝 陳冬霞 2003.10
5.http://www.zleeweb.com/Article_Show.asp?ArticleID=14
6.http://www.cooltang.com/box/200304/200304041224392180972382300988.htm

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。