吳為民
(福建船政交通職業(yè)學(xué)院信息與智慧交通學(xué)院,福州350007)
目前大多數(shù)的試卷系統(tǒng),都把題庫導(dǎo)入到數(shù)據(jù)庫中,然后生成試卷時(shí)從題庫中抽題形成試卷。這樣的作法一是試卷的保密程度不夠高,而且對于大量用圖形圖像的試題的支持不好,大部分只能支持文字類的試題。以Word文件直接作為題庫的數(shù)據(jù)庫,避免了按照常規(guī)的做法,題目需要導(dǎo)入到數(shù)據(jù)庫中過程的繁瑣和存在泄密的風(fēng)險(xiǎn);而且實(shí)現(xiàn)題庫的本地化,利用Word直接維護(hù)題庫,可操作性和可視化程度高,以及對有圖像的理工類的題目支持非常好[1-2]
較早的Word格式doc被稱為“二進(jìn)制”格式。從2007 Microsoft Office System開始,Microsoft Office使用基于Open XML的文件格式,例如.docx、.xlsx和.pptx。這些格式和文件擴(kuò)展名適用于Microsoft Word、Micro?soft Excel和Microsoft PowerPoint。利用Word文檔的XML結(jié)構(gòu),我們通過程序?qū)ord文檔進(jìn)行增刪改查的處理,實(shí)現(xiàn)類似數(shù)據(jù)庫的功能,為將Word文檔直接作為數(shù)據(jù)庫奠定基礎(chǔ)。
Docx文件是XML文件的Zip存檔。最簡單的Word文檔的主要文檔結(jié)構(gòu)包含以下XML元素[3-4]:

其中:document:文檔部分的根元素,它定義了主要文檔的結(jié)構(gòu)。Body:主體—用于收集構(gòu)成文本的塊級(jí)結(jié)構(gòu)的容器。P:段。R:段落中的分句。T:文本。
存在幾個(gè)可用于在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:整個(gè)文檔的Document對象。
Paragraph:文檔對象內(nèi)段落的段落對象。
Run:每個(gè)“段落”對象包含一個(gè)“運(yùn)行”對象列表。

圖1 Word基本數(shù)據(jù)結(jié)構(gòu)
python-docx允許Python程序?qū)ord文檔進(jìn)行讀、寫、修改、字符串比較等操作。因此為將Word文檔作為數(shù)據(jù)庫奠定了基礎(chǔ)[5]
試卷智能處理系統(tǒng)利用python-docx庫以及Word文檔的XML結(jié)構(gòu),將題庫的題目都存放在Word文檔中,對Word文檔實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查的功能,在此基礎(chǔ)上構(gòu)建試卷智能處理系統(tǒng),其功能模塊如圖2所示。

圖2 系統(tǒng)主要功能模塊圖

圖3 主界面圖
在題庫的預(yù)處理模塊,對題庫的Word文件進(jìn)行掃描,發(fā)現(xiàn)題庫中存在的格式錯(cuò)誤。

圖4 題庫預(yù)處理結(jié)果
對試卷進(jìn)行出卷配置。

圖5 試卷配置界面
根據(jù)試卷配置表和Word題庫,生成考試試卷。

圖6 生成試卷結(jié)果界面
通過該系統(tǒng)的使用,增強(qiáng)了題庫的可視化程度和本地化,為題庫的維護(hù)提供了方便,增強(qiáng)了題庫的安全性,同時(shí)也大大地減輕了出題工作人員的負(fù)擔(dān),提高了試卷出卷的效率和卷面的質(zhì)量。