許琴
摘 要:利用WORD控件對復雜文字、圖形、公式等內容編輯的方便性和VFP數據庫管理的易用性,利用VF通用型數據中的OLE對象可以用來存儲電子表格、文檔、圖形、聲音等信息。本設計利用VF中的通用字段存放并保留WORD格式試題庫,達到對通用試題庫進行編輯、管理等操作。可實現對WORD格式的題庫進行編輯與修改,并能自動生成WORD格式試卷功能,具有廣泛的通用性。
關鍵詞:WORD控件 VFP數據庫 通用試題庫
中圖分類號:TP311 文獻標識碼:A 文章編號:1672-3791(2018)04(a)-0188-02
Abstract: The use of WORD control to edit the contents of complex texts, graphics, formulas and other contents is convenient and VFP database management is easy to use. OLE objects in VF general data can be used to store information such as spreadsheets, documents, graphs, sounds, etc. This design uses the general fields in VF to store and retain the WORD format test library, so as to achieve the editing and management of the general test question bank. It can be edited and modified in WORD format, and can automatically generate WORD format test paper, which has extensive generality.
Key Words: WORD control; VFP database; General test database
在試題庫的開發中,幾乎所有的課程中都會涉及到圖形、公式、上下標等特殊的格式。眾所周知WORD、WPS是最容易處理圖形、公式和上下標等特殊格式的應用軟件。但是WORD、WPS它們不方便實現數據庫的管理和試卷自動組卷等功能,而Visual Foxpro則在數據庫管理方面有著方便、靈活的優勢。本文將VF與WORD各自的優勢結合起來,可以實現自動組卷且可以以WORD格式方便編輯。
1 實現原理
在VF中字段中,有一種字段類型中做通用型字段,通用型數據中的OLE對象可以用來存儲電子表格、文檔、圖形、聲音等信息。因此我們設置數據庫中的表的字段類型為通用型,通過APPEND GENERAL向字段中添加WORDOLE對象。通過表單中添加WORDOLE控件并綁定在字段中,就可以在表單中向WORD一樣編輯此字段,如圖1所示,編輯完成后自動保存。生成試卷時也需要用WORD OLE控件來完成WORD試卷的組成工作。
2 軟件實現
本系統主要實現新建題庫、選擇題庫、錄入題庫和自動出卷幾個功能模塊,本文主要對錄入題庫和自動組卷進行說明。
2.1 試題庫錄入實現
試題庫錄入界面如圖2所示。首先在表單的初始化事件中進行WORD OLE控件定義并與數據庫中的字段相綁定,代碼如下:
thisform.AddObject ("OBJWORDDOC","OLEBOUNDCONTROl") &&創建WORD OLE控件
thisform.OBJWORDDOC.visible=.T. &&顯示WORD OLE控件
thisform.OBJWORDDOC.CONTROLSOURCE="選擇題"+".題干" &&將OLE控件與表中字段相綁定
經過綁定后,圖2中的控件1就與數據庫中的字段聯系完成,但是為了能在此處完成WORD 編輯,需要在編輯前向字段中加入WORD空白文檔后才可以編輯,代碼如下:
APPEND GENERAL 題干 FROM "demo.doc" CLASS OBJWORDDOC &&向字段添加一個空白WORD文檔
2.2 自動出卷實現
自動出卷界面如圖3所示。首先在表單上面設置一個題型信息表,了解題庫中的各種題型與數量,方便設置出題里的數量。表單下面是一個試卷設定信息,在此可以設定各種題型、分值及數量。還有試卷份數,點擊“生成WORD試卷”按鈕后,就可以生成圖4所示的試卷及答案。
主要代碼實現如下:
Word=CREATEOBJECT('word.application') &&創建WORD文檔
Word.Documents.add() &&建立新文檔,試卷文檔
Word.ActiveDocument.SaveAs("&filename1;") &&保存文檔,如果文件另存為如果要存到文件夾下,要先先創建文件夾,否則分報錯
Word.Documents.Open ("&filename1;") &&打開文檔
COPY TO temp FIELDS &zdName; NEXT 1 && 復制通用字段的內容到臨時文件中
handlein=FOPEN("temp.fpt")
handleout=FCREATE("&LCNowpath;"+"temp.DOC") && 事先知道表中存的為doc文件
gnEnd = FSEEK(handlein, 0, 2) &&確定"Temp.fpt"文件的長度
gnTop = FSEEK(handlein, 0)
str1 = FREAD(handlein, gnEnd) &&保存全部文件到一個串 "str1" 中
str2=RIGHT(str1,LEN(str1)-610) &&從 Str1 的偏移 599 字節開始保存到 "str2"
n=FWRITE(handleout,str2) &&寫 "Str2" 到 doc 文件 "temp.doc"
=FCLOSE(handlein) &&關閉兩個打開的文件
=FCLOSE(handleout)
3 結語
本設計采用VF數據庫的靈活方便和WORD編輯文檔的優勢相結合,實現了通用課程試題庫的開發,解決了傳統數據無法實現WORD文檔隨意編輯的要求,給建立各種試卷的題庫帶來方便,同時可實現自動組卷,減少重復勞動,提高了效率。不足之處是對數據的加密還未實現,在今后的系統開發中來逐漸完善。
參考文獻
[1] 孫彥生.VFP中通用字段內容的轉換[J].圖書情報導刊,2006,16(20):230-232.
[2] 甕正科.Visual Foxpro 6數據庫開發教程[M].北京:清華大學出版社,2002.
[3] 周升鋒.Visual Foxpro 6.0 實用開指南[M].成都:電子科技大學出版社,1999.
[4] 弘道工作室.Visual Foxpro 5.0中文版程序員伴侶[M].北京:人民交通出版社,1998.