溫彩玲
(太原城市職業(yè)技術(shù)學(xué)院,山西 太原 030027)
基于JSF框架的試題自動生成系統(tǒng)
溫彩玲
(太原城市職業(yè)技術(shù)學(xué)院,山西 太原 030027)
論文提出一個能夠滿足高職院校需要的且基于JSF框架的試題生成系統(tǒng)。系統(tǒng)采用隨機獲取試題的方式來進行智能組卷,并將結(jié)果輸出到word中實現(xiàn)試卷的生成。
組卷策略;JSF;試題系統(tǒng)
眾所周知,不管是什么階段的學(xué)校,學(xué)生從入學(xué)開始到最后的完成學(xué)業(yè)畢業(yè),期間都要進行很多形式的考試,直至最終獲得畢業(yè)證書。傳統(tǒng)形式的考試要經(jīng)歷教師出題、教務(wù)處排版印刷、監(jiān)考老師分發(fā)試卷、考生答卷、教師收卷閱卷以及最后的統(tǒng)計分?jǐn)?shù)等多個步驟,這其中大部分過程都要求教師手工參與完成,不僅需要消耗了大量的時間精力,同時還需要對工作有較高的保密要求。
雖然現(xiàn)在市面上已經(jīng)出現(xiàn)了在線考試系統(tǒng),但是由于該方法對于考試的類型以及考試結(jié)束后內(nèi)容的保存等方面存在一定的問題,無法達到滿足現(xiàn)階段所有科目考試的需要。尤其對于高職院校,由于本身注重的是學(xué)生實踐、操作、應(yīng)用能力方面的培養(yǎng),簡單的理論考試根本無法滿足需要。因而,我們提出這種基于試題庫的試題自動生成系統(tǒng)。
該系統(tǒng)中的試卷是根據(jù)用戶的要求自動提取題庫中的試題生成的。試題的抽取采取確定參數(shù)后隨機排列,然后隨機抽取的方式進行提取,并對生成試題的用戶、試題的特征、生成時間進行記錄,從根本上杜絕了試卷泄密和考試作弊的問題,可以充分保證了考試的公平性。
JavaServer Faces(JSF)是JavaEE5.0開始提出,是Java Community Process(JCP)推動的,有望成為Web應(yīng)用程序開發(fā)的一種標(biāo)準(zhǔn)框架。
JSF中所有與應(yīng)用程序的用戶交互均由一個前端FacesServlet(控制器) 來處理,對于每個請求,F(xiàn)acesServlet首先會創(chuàng)建一個FacesContext對象,它包含了處理請求所必須的信息。
JSF的主要優(yōu)點就是它既嚴(yán)格遵循模型——視圖——控制器(MVC)設(shè)計模式,又符合Java Web應(yīng)用程序的用戶界面標(biāo)準(zhǔn),確保了應(yīng)用程序具有更高的可維護性。
(一)試題庫的設(shè)計
試題題庫是在線考試系統(tǒng)中最基礎(chǔ)也是最根本的部分,是某一門學(xué)科中所有考試題目的集合。對于一個好的試卷生成系統(tǒng)來說,試卷生成的好壞與否關(guān)鍵就在于題庫組織是否合理。要建立一個好的試題題庫,首先要保證有足夠數(shù)量的考試題目,能涵蓋學(xué)科的全部至少也是大部分的知識,同時還要對已有的試題題目進行合理的分類。為了能夠滿足本系統(tǒng)的需求,試題庫中的數(shù)據(jù)庫設(shè)計如下:
表1 試題信息表
(二)組卷策略
要使考試科學(xué)合理,真正達到考察學(xué)生對知識掌握情況的目的,試卷生成的質(zhì)量非常關(guān)鍵。不同的考試需要的考試試卷不同,因而需要根據(jù)試卷相關(guān)的各種參數(shù),如試題的難度比例、題型的配比、涵蓋的知識點等等,然后在題庫中找出合適的題目來生成試卷。一個理想的試題應(yīng)該具備以下特性:
(1)良好的通用性,也即一個好的試題生成系統(tǒng)應(yīng)該能夠在不同的科目、不同類型的考試中應(yīng)用。
(2)試卷生成的隨機性:系統(tǒng)每次生成的試題應(yīng)該都不一樣,具有隨機性。同時,系統(tǒng)也應(yīng)該可以根據(jù)管理員的要求出題。
(3)試題的合理性:試卷中試題的覆蓋面應(yīng)該足夠大,在沒有特定要求的情況下,同一份試卷中不應(yīng)當(dāng)出現(xiàn)涉及同一知識點的多道題目、分值也不應(yīng)涉及的太多。此外,各種題目的類型、難度和分值以及各個知識點所要占得比例都要均衡。
(4)應(yīng)變性:除了上述幾點之外,系統(tǒng)還應(yīng)該允許管理員根據(jù)不同的教學(xué)進度、具體的教學(xué)要求以及學(xué)生的學(xué)習(xí)情況等,對試題范圍、難度進行相應(yīng)的調(diào)整。
考慮到系統(tǒng)的實用性,該系統(tǒng)只需要組織者輸入最基本的考試要求,如考察科目、考試難度、各類題型的數(shù)量、需要涵蓋的知識點,系統(tǒng)會根據(jù)這些基本參數(shù)在題庫中隨機抽取試題,生成一份符合要求的試卷。以《Java程序設(shè)計基礎(chǔ)》試題為例,在試題參數(shù)選擇界面中,系統(tǒng)將試題庫中所有該科目的知識點獲取并顯示,用戶可以根據(jù)需要對此選擇。同樣,試題類型部分也將所有的試題類型列出,并在后面設(shè)置可以填寫的文本框,一旦該題型被選中,后面的文本框自動處于編輯狀態(tài),用戶可以輸入該題型所需要的試題個數(shù)。此外,系統(tǒng)還根據(jù)一般的情況將試卷難度設(shè)為難、較難、中等、較簡單和簡單五個等級,基本能夠滿足一般用戶的需要。
利用計算機實現(xiàn)自動組卷功能,最常用的方式是動態(tài)生成隨機數(shù),然后根據(jù)隨機數(shù)從題庫中選擇對應(yīng)試題組成試卷。在這種方法中,應(yīng)保證一份試卷中的試題不重復(fù)出現(xiàn),因此要求生成的隨機數(shù)不能重復(fù)。而且,由于試題的動態(tài)變化,生成的隨機數(shù)在數(shù)據(jù)庫中可能無法提取到相應(yīng)的試題,這樣還需要重新提取,因而采用的組卷算法必須簡單高效,否則就有可能成為系統(tǒng)瓶頸,導(dǎo)致系統(tǒng)反映遲鈍。
在該系統(tǒng)中,首先根據(jù)用戶給定的參數(shù)提取數(shù)據(jù)庫中合適的試題,并按照類型分類存入不同的List中。然后,根據(jù)List的大小確定動態(tài)生成的隨機數(shù)的范圍,從而杜絕取不到題的現(xiàn)象。另外,由于第一次存儲采用了隨機的存儲方式,因而在第二次存儲后整個List中試題的順序是完全隨機的,因而也可以保證試題在抽取中的隨機性。
(三)試卷生成
由于目前高校中所用的試卷基本都是通過word排版后進行打印的,因而在該系統(tǒng)中,我們也采用生成word頁面的方式,來生成試卷。由于JSF中沒有相應(yīng)的組件能夠?qū)討B(tài)生成的數(shù)據(jù)導(dǎo)出到已經(jīng)生成的試卷模板。因而在系統(tǒng)中,我們先將數(shù)據(jù)動態(tài)導(dǎo)出到HTML靜態(tài)頁面,然后使用BufferedInputStream和BufferedOutput——Stream獲得要讀取數(shù)據(jù),并將其輸出到word中。
目前該系統(tǒng)已經(jīng)基本完成,但是依然存在一定的問題。如組卷策略中使用隨機數(shù)來提取試題,一旦試題庫中試題數(shù)目太多,會引起試題生成緩慢,甚至產(chǎn)生瓶頸;此外,試題庫中試題的難易程度目前只能人工更新,而實際上試題的難易程度應(yīng)該由學(xué)生實際作答情況和老師的評價按一定比例來動態(tài)更新,在下一步要努力改進。
[1]叢根滋,蘇中濱,沈維政.基于SQLServer-Hibernate-JSF的信息門戶網(wǎng)站開發(fā)平臺的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2011,(12).
G718.5
A
1673-0046(2012)8-0053-02