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