摘要:該文通過一個實例,介紹了一種基于RTF格式的試題庫建設方法,并給出了部分實現的代碼。試題庫是教學管理改革的重要手段,該文提到的實現方法具有自己獨特的特點和優勢。
關鍵詞:RTF;試題庫;教學管理
中圖分類號:TP315文獻標識碼:A文章編號:1009-3044(2010)03-653-03
Reseach On Examinational Database Based RTF
DING Ya-tao
(Anhui College of Traditional Chinese Medicine, Hefei 230031, China)
Abstract: The article persues a special method to establish adatabase for examination, which has been used in fact. The article specially introduces with some key codes and some special characters, which is scarcely viewed now. The methods can be used as a way to promote the manage level of teaching and studing.
Key words: RTF; test bank; teaching management
1 概述
筆者在教學過程中經常被試卷問題所困擾,特別是試卷的保存和管理。每次都要創作新題,對舊的試題管理困難,科學性不強,通過閱讀文獻和查閱資料,筆者找到了一種具有一定應用價值的解決方案。
2 內容
具有基本WORD文檔特征的RTF文件是一種重要的文件格式,經常被各種軟件所共享。如何利用RTF格式文本處理試題庫的圖文排版問題,往往成為教學管理的一項重要任務,而通過數據庫和RTF格式特點建立的試題庫解決方案不失為一個好辦法。
RTF英文全稱Rech Text Format,是一種超文本技術,可以將圖文混排的內容以及格式全部保存到一個獨立的擴展名為RTF的文件中,只要遵循RTF文檔代碼規則,就可以讀寫RTF文件,從而為試題庫的建立、試卷的生成、試卷管理等提供一套良好的解決方案。下面將就一個實際的應用來闡述這種方案的關鍵。
2.1 首先建立數據庫系統
數據庫系統包括題庫、代碼庫等,
下面以DBF庫為例,例如題庫的結構如下:
題目編號(C),題目序號(C),學校代碼(C),系代碼(C),課程代碼(C),類別代碼(C),題目內容(M),難度(C),命題人代碼(C),審核人代碼(C),顯示內容(G)
題庫設計的關鍵是建立題目內容(M)和顯示內容(G)兩個字段,分別用于RTF文檔的保存和顯示。具體技巧如下:
1) 顯示
建立OLE控件與“顯示內容”的關聯,當改變記錄的時候,可以正常顯示General字段的內容
2) 修改和編輯
修改和編輯的時候,利用“顯示內容”字段相同內容的“題目內容”字段生成RTF臨時文件,啟動RTF編輯器進行編輯修改,代碼如下:
IF FILE(syspath+\"\\dbf\emp.rtf\")
DELETE FILE syspath+\"\\dbf\emp.rtf\"
ENDIF
SELECT tk
COPY MEMO 題目內容 to syspath+\"\\dbf\emp.rtf\"
DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER , STRING ,
STRING , STRING , STRING ,INTEGER
= SHELLEXECUTE(0,'open',Syspath+'dbf\emp.rtf','','',1)
編輯修改完畢后,進行題庫的保存,代碼如下:
SELECT tk
IF !EOF() AND !BOF()
APPEND MEMO 題目內容 from syspath+\"dbf\emp.rtf\" overwrite
APPEND GENERAL 顯示內容 from syspath+\"\\dbf\emp.rtf\"
ENDIF
thisform.Refresh
這樣處理的技巧性表現在,充分利用General型字段顯示的快速特點和RTF編輯器的編輯排版功能。RTF編輯器一般用Word。
2.2 建立題庫編輯環境。
主要提供一個界面,供題庫管理者錄入、編輯題目。界面中涉及到題目的特性設置,包括題目的類型、難度、科類等。界面的關鍵性按鈕是編輯和導入按鈕。編輯按鈕生成臨時RTF文件,導入按鈕將臨時RTF文件保存到庫中。界面設計與通常數據庫的維護界面相似,但應給題目內容顯示提供足夠的空間。
2.3 組卷系統的設計
有了題庫,就可以設計自動組成試卷,組卷的關鍵在于對RTF文件的讀寫和組合。如何讀取RTF文件的內容是第一步,其次是將分散的RTF文件合成在一起。注意到RTF文件格式一般分成兩部分:文件頭和內容部分。文件頭包括字體、顏色等的設置及范圍,內容包括文字、文字的格式、圖片等。
首先RTF文件中\"\\pard\"起開始放置內容,可以以此作為一個分界點,但是當格式設置復雜的時候會出現問題,特別是文件頭隨內容的變化而變化,為了解決格式之間的干擾,必須標準化試題錄入,控制設置可用的格式,例如顏色必須為黑色,字體為標準字體,不能為擴充字庫,字體表格的設置在常用的范圍內,這樣可以避免特殊格式的干擾;另外預先制作一個特殊的RTF文件,將大部分格式均在文件中體現出來,最后將該文件的RTF頭保存到一個文本文件或表中,用作合成文件的文件頭,經過反復的實驗,這種方法效果良好,避免了對所有RTF格式進行分析處理的局面,簡捷快速地解決了格式問題。
對于圖片,應該在錄入的時候要求盡量小,RTF文件中保存圖片將消耗很大的資源,如果不需要彩色就建議不用彩色,否則圖片過大過多給組卷帶來很大困難。
下面是用VFP 9.0寫的組卷程序的部分代碼:
IF !USED(\"TK\")
SELECT 0
USE SYSPATH+\"\\DBF\\TK.DBF\"
ENDIF
SELECT TK
IF !USED(\"TKS\")
SELECT 0
USE SYSPATH+\"\\DBF\\TKS.DBF\"
ENDIF
RELEASE M_CONTENT
PUBLIC M_CONTENT
SELECT TKS
LOCATE FOR ALLTRIM(語法)=\"空文件\"
M_CONTENT = 語法代碼
SELECT TK
GO top
DO WHILE .NOT. EOF()
M_CONTENT_1 = 題目內容
N_POS = LEN(M_CONTENT_1)
M_POS = AT(\"\\PARD\",UPPER(M_CONTENT_1))
I=1
DO WHILE .T.
N_POS =AT(\"}\",M_CONTENT_1,I)
IF N_POS = 0
N_POS = AT(\"}\",M_CONTENT_1,I-1)
EXIT
ENDIF
I=I+1
ENDDO
IF M_POS > 0
M_CONTENT = M_CONTENT + SUBSTR(M_CONTENT_1,M_POS ,N_POS - M_POS)
ENDIF
SKIP
ENDDO
M_CONTENT = M_CONTENT +\"}\"
IF FILE(SYSPATH+\"\\DBF\\RESULT.RTF\")
DELETE FILE SYSPATH+\"\\DBF\\RESULT.RTF\"
ENDIF
YATAOO=FCREATE(SYSPATH+\"\\DBF\\RESULT.RTF\",0)
FPUTS(YATAOO,M_CONTENT)
FCLOSE(YATAOO)
SELECT TKS
USE
=MESSAGEBOX(\"生成完畢\",32,\"提示\")
以上組卷生成的RESULT.RTF文件是全部記錄的總合成,實際組卷的時候可以設置組卷記錄和組卷的條件從而生成由需要的試題構成的實考試卷。組卷可以分為自動抽題和人工抽題,并提供更換題目的功能。
2.4 代碼維護
作為題庫,可能涉及到不同系別、不同課程、不同難度、不同題型,也包括命題人和審核人等,提供這些代碼的數據庫維護是必須的,可能會出現數據更新的問題,在實際管理的時候需要嚴格控制編碼的變化,特別是刪除代碼,這將影響到題庫的代碼表示,解決的辦法是,刪除代碼的同時,更新題庫中的相同代碼為其他類別,這種方法很有效。
2.5 題庫的操作
對題庫的操作除了編輯錄入和組卷之外,還應該包括題庫的查詢、篩選、批量操作,由于RTF題庫的特點限制,題庫操作必須注意不要破壞RTF的格式,否則可能導致整個題目的破壞,這與普通的文本文件是不同的。
RTF文本中查找時間耗時的操作,部分解決問題的辦法是設置關鍵字字段,用程序的方法查找關鍵字、類別、題型等,當然這不是完備的,完備的查詢也應該提供。
2.6 歷史記憶的問題
對于題庫的維護操作,大部分時間在RTF編輯器中進行,歷史記憶的問題不太明顯,但數據庫常規操作仍然存在,而題庫的題目是題庫系統的核心,因此設置歷史記憶功能具有一定的意義。解決的方案是每操作備份,從而可以由歷史記錄恢復,備份的方法建議使用SQL的SELECT命令,可以不受過濾條件和狀態的影響。
2.7 用戶權限
設置幾個權限不同的管理用戶,對于試題庫系統還是必要的,其中編輯錄入的功能可以單獨設置出來,實際操作的時候比較方便。管理員應及時備份題庫,題庫的異常破壞也是不可不防的。
3 結束語
總的說來,利用RTF技術和數據庫技術建立試題庫系統是不錯的一種選擇,對于教學管理提供了極好的途徑,特別是組卷比較方便快捷,編輯錄入維護容易上手,當然如果能對RTF進行完整的讀寫分析將會更加完善事題庫的性能。
參考文獻:
[1] 許新川,汪漢良.RTF文件閱讀器的設計[J].湖北師范學院學報:自然科學版,2002,22(3):75-79.
[2] 陳志國,張瑾.網上考試系統的設計與實現[J].河南大學學報:自然科學版,2003,33(3):69-71.
[3] 葉忠杰,戎成.網絡化考試系統的設計與實踐[J].浙江交通職業技術學院學報,2004,5(4):34-37.
[4] 丁亞濤.數據庫歷史記憶功能的實現[J].安慶師范學院學報,2005,11(1):26-27.