吳為民
(福建船政交通職業(yè)學院信息與智慧交通學院,福州350007)
目前大多數(shù)的試卷系統(tǒng),都把題庫導入到數(shù)據(jù)庫中,然后生成試卷時從題庫中抽題形成試卷。這樣的作法一是試卷的保密程度不夠高,而且對于大量用圖形圖像的試題的支持不好,大部分只能支持文字類的試題。以Word文件直接作為題庫的數(shù)據(jù)庫,避免了按照常規(guī)的做法,題目需要導入到數(shù)據(jù)庫中過程的繁瑣和存在泄密的風險;而且實現(xiàn)題庫的本地化,利用Word直接維護題庫,可操作性和可視化程度高,以及對有圖像的理工類的題目支持非常好[1-2]
較早的Word格式doc被稱為“二進制”格式。從2007 Microsoft Office System開始,Microsoft Office使用基于Open XML的文件格式,例如.docx、.xlsx和.pptx。這些格式和文件擴展名適用于Microsoft Word、Micro?soft Excel和Microsoft PowerPoint。利用Word文檔的XML結構,我們通過程序對Word文檔進行增刪改查的處理,實現(xiàn)類似數(shù)據(jù)庫的功能,為將Word文檔直接作為數(shù)據(jù)庫奠定基礎。
Docx文件是XML文件的Zip存檔。最簡單的Word文檔的主要文檔結構包含以下XML元素[3-4]:
其中:document:文檔部分的根元素,它定義了主要文檔的結構。Body:主體—用于收集構成文本的塊級結構的容器。P:段。R:段落中的分句。T:文本。
存在幾個可用于在Python中讀寫MS Word文件的庫。但是,由于其易用性,我們將使用python-docx模塊。python-docx是用于創(chuàng)建和更新Microsoft Word(.docx)文件的Python庫。在終端中執(zhí)行以下pip命令,以加載python-docx模塊,如下所示:
$pip install python-docx
使用python-docx模塊,我們有3種不同的數(shù)據(jù)類型:
document:整個文檔的Document對象。
Paragraph:文檔對象內段落的段落對象。
Run:每個“段落”對象包含一個“運行”對象列表。
圖1 Word基本數(shù)據(jù)結構
python-docx允許Python程序對Word文檔進行讀、寫、修改、字符串比較等操作。因此為將Word文檔作為數(shù)據(jù)庫奠定了基礎[5]
試卷智能處理系統(tǒng)利用python-docx庫以及Word文檔的XML結構,將題庫的題目都存放在Word文檔中,對Word文檔實現(xiàn)數(shù)據(jù)庫的增刪改查的功能,在此基礎上構建試卷智能處理系統(tǒng),其功能模塊如圖2所示。
圖2 系統(tǒng)主要功能模塊圖
圖3 主界面圖
在題庫的預處理模塊,對題庫的Word文件進行掃描,發(fā)現(xiàn)題庫中存在的格式錯誤。
圖4 題庫預處理結果
對試卷進行出卷配置。
圖5 試卷配置界面
根據(jù)試卷配置表和Word題庫,生成考試試卷。
圖6 生成試卷結果界面
通過該系統(tǒng)的使用,增強了題庫的可視化程度和本地化,為題庫的維護提供了方便,增強了題庫的安全性,同時也大大地減輕了出題工作人員的負擔,提高了試卷出卷的效率和卷面的質量。