APP下载

VFP中利用WORD控件实现通用课程试题库开发

2018-10-26许琴

科技资讯 2018年10期

许琴

摘 要:利用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.