胡能發 (韓山師范學院數學與信息技術學院,廣東潮州521041)
方正書版在排版中具有突出的優點[1-4],但如何將它的排版優點應用于試題庫的設計中,使其與試題庫進行有效地結合,來構建含有大量科技類型試題的試題庫,為解決目前高校缺乏通用試題庫特別是理科類試題庫較少的現狀,具有十分重要的意義。
一般來說,教師在出考試試題之前,首先要明確考試對象、考試科目、考試范圍,在具體出題過程中,還要不斷地對考試難度進行相應地修改,使難度控制在教學大綱規定的合適的水平上,并對每一道試題確定分數,給出參考答案和評分標準。在考試結束后,教師還要評分、統計,并按一定比例將平時成績和考試成績合并為學生總評成績,然后寫出質量分析報告,并將成績冊上交有關人員。作為教學管理人員,還要對教師送交上來的成績進行統一登記處理,并打印學生成績通知單和補考或重修通知書。
從系統的功能來看,試題庫系統應具有錄入、修改、刪除試題的能力,能自動從現有試題庫中生成考試試卷,并自動或手動設置試題的難度系數,標記每道試題分數等。此外,系統還應該為學生提供一定的學習案例,并具有遠程操作能力。試題庫管理員有權進行試題的添加、刪除、更新等操作,教師可生成試題及答案,并將考試結果寫成質量分析報告,更新試題用例可通過質量分析用例對試題庫中的部分記錄進行更新。例如某道試題考試后大多數學生得分情況與試題庫中的難度系數不匹配,則可由系統自動修改相應的難度系數。
試題庫數據存儲于基于Microsoft SQL Server 2000建立的數據庫中,以二維表格形式描述實體之間的關系,其中各數據表的主要字段有編號、題目、答案、題型、難度、知識點、分數等。存儲試題時,把每道題目及其屬性字段存儲在表格中的一條記錄中,并為每道題自動編號,將其設置為主鍵。由于方正系統的小樣文件中存在著在數據庫中不可顯示的字符,而且在組版時書版文件、版心說明等排版參數在一個擴展名為.pro的文件中設置,因此,題目及答案可以單獨存放于數據庫字段之外,而在數據庫中只須存放題目文件名及答案文件名即可。這樣處理的目的,一是為了將小樣文件的語法錯誤排除在數據庫之外,二是為了便于在Web應用程序中,對生成試題的.pro組版文件自動設置參數,最終得到符合用戶要求的試卷及其參考答案和評分標準。
基于方正書版和C#語言的網絡通用試題庫系統采用B/S模式 (游覽器/服務器模式)建立,所有的應用程序和服務程序及數據庫都存儲在服務器上,系統基于Microsoft Visual Studio.NET 2003平臺進行開發,客戶端只須通過瀏覽器訪問服務器主頁即可。Web數據庫應用程序由Web服務器、服務器組件、數據庫服務器和瀏覽器構成 (見圖1)。首先由Web瀏覽器向Web服務器發出請求,Web服務器查找該頁并將其傳遞給應用程序服務器,應用程序服務器查找并執行該頁中的動態指令,然后將其查詢命令發送給數據庫服務器,數據庫服務器將查詢結果返回給應用程序服務器,應用程序服務器將數據插入頁中,然后傳遞給 Web服務器,最后Web服務器將完成的頁發給請求的Web瀏覽器。

圖1 試題庫應用程序體系結構
系統在Microsoft Visual Studio.NET 2003平臺下構建試題庫應用程序分2步進行,第1步是Web服務程序的開發,第2步是Web應用程序的開發。其中Web服務程序基于ADO.NET對象模型進行試題庫的連接、試題庫記錄集的讀寫等操作,其主要操作有插入、刪除、更新等,以存儲過程的形式存儲在SQL Server 2000服務器上。ADO.NET的對象模型由2個部分組成:數據提供程序 (Data Provider)和數據集 (Data Set)。數據提供程序負責與物理數據源的連接,數據集代表實際的數據。這2個部分都可以和數據使用程序通信,如Web Form窗體和Win Form窗體 (見圖2)。

圖2 ADO.NET對象模型的結構
該系統中數據庫的主要功能是用來存放試題及答案的小樣文件,其次是對應試題的知識點、難度、使用頻度等輔助信息。為了防止生成試題大樣文件時出現語法錯誤而造成試題生成失敗,因此,數據庫中存儲的小樣文件必須符合方正系統的語法規范。為了確保數據庫中小樣文件的正確性,在錄入數據時將進行系統的第1次掃描,如果此時小樣文件有錯,將提示用戶重新編輯,直到錯誤完成消除,才完成一次數據的錄入。數據庫中的主要數據表如下:①試題表 (課程名稱,題目編號,題目,答案,題型,難度,知識點,抽取頻度),其中課程名稱,題目編號為主關鍵字,題目及答案均指向小樣文件,試題表的功能用來存儲所有的試題,是系統的核心數據表;②學生表 (學號,姓名,院系,專業,班級),其中學號為主關鍵字;③抽題表 (題型,題目編號,難度,抽題時間,分值),其中題目編號為主關鍵字;④試卷表 (試題編號,課程名稱,學年度,院系,專業,班級,學期,考試時間,總分,學分,試題,答案),其中試題編號為主關鍵字,試題、答案均指向大樣文件,試卷表的功能用來存儲已生成的試卷及對應答案與評分標準,試卷可直接打印輸出;⑤練習表 (練習編號,課程名稱,學號,總分,練習題,答案),其中練習編號為主關鍵字,練習題及答案均指向大樣文件。
在上述所列舉的部分數據表中,有些數據表需要長期保存,例如試題表、試卷表等,而有些數據表則只需相對保存了一段時間即可自行刪除。
考試試卷與練習題的生成方法一樣,只是參數略有不同。以生成一份期末考試試卷為例,其生成過程如下:
1)輸入參數:學年度,院系,專業,班級,學期,考試時間,總分;題型總數n,題型1,分數1,小題數1,空行數1,題型2,分數2,小題數2,空行數2,……,題型n,分數n,小題數n,空行數n。
2)按試卷模板將參數學年度、院系、專業、班級、學期、考試時間、題型總數n組板到.pro組版文件中,生成試卷頭 (主標題及評分表格),評分表格共有n+2欄。例如當題型總數n為8時,生成的試卷頭大樣文件格式如圖3所示。

韓山師范學院2010~2011學年度第1學期考試試題

圖3 試卷頭大樣文件格式
3)輸出所有n道試題的編號、題型及分數,進行pro文件組版。
4)對pro組版文件二次掃描,生成大樣文件,存入試卷表。
在上述算法中,試題的抽取可以采取多種算法,最簡單的方法是根據試題題型、難度、知識點隨機抽取,直到分數等于試題題型要求的分數為止。在抽題時如果抽到抽取頻度較高的題目,則通過設置一個隨機函數,讓其二次選擇是否抽取。對于所有本次抽取的題目,其頻度均加1。試題表中所有試題頻度的初始值均為0。另一種智能化的處理方法是采用遺傳算法進行試卷的組織處理[5-7]。
方正書版在眾多的文字處理軟件中具有顯著的優點,其特有的程序化文字處理方式為編程提供了方便,該系統正是利用了這一特點。該試題庫系統輸出的試卷完全符合方正系統的語法規范,格式美觀,滿足了含有大量科技類型符號等復雜公式排版的要求,網絡環境下操作簡單,因此是一種通用試題庫平臺,為解決目前高校缺乏通用試題庫特別是理科類試題庫較少的現狀提供了方便。
[1]范明虎,孫斌.通用試題庫管理系統的設計與實現 [J].計算機工程與設計,2007,28(9):2185-2188.
[2]何燕龍劉新彥.方正書版2008標準教程[M].北京:電子工業出版社,2009:10.
[3]何燕龍.方正書版10.X標準教程 [M].北京:電子工業出版社,2007:7.
[4]李佰珍,王昌瓊.Word文檔圖片在方正排版前的導出與處理 [J].江漢石油職工大學學報,2006,19(6):86-88.
[5]閉應洲,蘇德富,陳寧江.基于矩陣編碼的遺傳算法及其在自動組卷中的應用 [J].計算機工程,2003,29(6):73-75.
[6]全惠云,范國闖,趙霆雷.基于遺傳算法的試題庫智能組卷系統研究[J].武漢大學學報 (自然科學版),1999,45(5):758-760.
[7]孟祥娟,王俊峰,曹錦梅.利用遺傳算法實現試題庫自動組卷問題 [J].計算機系統應用,2010,19(1):180-184.