基于RTF格式的试题库技术研究

时间:2022-08-22 11:06:51

基于RTF格式的试题库技术研究

摘要:该文通过一个实例,介绍了一种基于RTF格式的试题库建设方法,并给出了部分实现的代码。试题库是教学管理改革的重要手段,该文提到的实现方法具有自己独特的特点和优势。

关键词:RTF;试题库;教学管理

中图分类号:TP315文献标识码:A文章编号:1009-3044(2010)03-653-03

Reseach On Examinational Database Based RTF

DING Ya-tao

(Anhui College of Traditional Chinese Medicine, Hefei 230031, China)

Abstract: The article persues a special method to establish adatabase for examination, which has been used in fact. The article specially introduces with some key codes and some special characters, which is scarcely viewed now. The methods can be used as a way to promote the manage level of teaching and studing.

Key words: RTF; test bank; teaching management

1 概述

笔者在教学过程中经常被试卷问题所困扰,特别是试卷的保存和管理。每次都要创作新题,对旧的试题管理困难,科学性不强,通过阅读文献和查阅资料,笔者找到了一种具有一定应用价值的解决方案。

2 内容

具有基本WORD文档特征的RTF文件是一种重要的文件格式,经常被各种软件所共享。如何利用RTF格式文本处理试题库的图文排版问题,往往成为教学管理的一项重要任务,而通过数据库和RTF格式特点建立的试题库解决方案不失为一个好办法。

RTF英文全称Rech Text Format,是一种超文本技术,可以将图文混排的内容以及格式全部保存到一个独立的扩展名为RTF的文件中,只要遵循RTF文档代码规则,就可以读写RTF文件,从而为试题库的建立、试卷的生成、试卷管理等提供一套良好的解决方案。下面将就一个实际的应用来阐述这种方案的关键。

2.1 首先建立数据库系统

数据库系统包括题库、代码库等,

下面以DBF库为例,例如题库的结构如下:

题目编号(C),题目序号(C),学校代码(C),系代码(C),课程代码(C),类别代码(C),题目内容(M),难度(C),命题人代码(C),审核人代码(C),显示内容(G)

题库设计的关键是建立题目内容(M)和显示内容(G)两个字段,分别用于RTF文档的保存和显示。具体技巧如下:

1) 显示

建立OLE控件与“显示内容”的关联,当改变记录的时候,可以正常显示General字段的内容

修改和编辑的时候,利用“显示内容”字段相同内容的“题目内容”字段生成RTF临时文件,启动RTF编辑器进行编辑修改,代码如下:

IF FILE(syspath+"\dbf\temp.rtf")

DELETE FILE syspath+"\dbf\temp.rtf"

ENDIF

SELECT tk

COPY MEMO 题目内容 to syspath+"\dbf\temp.rtf"

DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER , STRING ,

STRING , STRING , STRING ,INTEGER

= SHELLEXECUTE(0,'open',Syspath+'dbf\temp.rtf','','',1)

编辑修改完毕后,进行题库的保存,代码如下:

SELECT tk

IF !EOF() AND !BOF()

APPEND MEMO 题目内容 from syspath+"dbf\temp.rtf" overwrite

APPEND GENERAL 显示内容 from syspath+"\dbf\temp.rtf"

ENDIF

thisform.Refresh

这样处理的技巧性表现在,充分利用General型字段显示的快速特点和RTF编辑器的编辑排版功能。RTF编辑器一般用Word。

主要提供一个界面,供题库管理者录入、编辑题目。界面中涉及到题目的特性设置,包括题目的类型、难度、科类等。界面的关键性按钮是编辑和导入按钮。编辑按钮生成临时RTF文件,导入按钮将临时RTF文件保存到库中。界面设计与通常数据库的维护界面相似,但应给题目内容显示提供足够的空间。

2.3 组卷系统的设计

有了题库,就可以设计自动组成试卷,组卷的关键在于对RTF文件的读写和组合。如何读取RTF文件的内容是第一步,其次是将分散的RTF文件合成在一起。注意到RTF文件格式一般分成两部分:文件头和内容部分。文件头包括字体、颜色等的设置及范围,内容包括文字、文字的格式、图片等。

首先RTF文件中"\pard"起开始放置内容,可以以此作为一个分界点,但是当格式设置复杂的时候会出现问题,特别是文件头随内容的变化而变化,为了解决格式之间的干扰,必须标准化试题录入,控制设置可用的格式,例如颜色必须为黑色,字体为标准字体,不能为扩充字库,字体表格的设置在常用的范围内,这样可以避免特殊格式的干扰;另外预先制作一个特殊的RTF文件,将大部分格式均在文件中体现出来,最后将该文件的RTF头保存到一个文本文件或表中,用作合成文件的文件头,经过反复的实验,这种方法效果良好,避免了对所有RTF格式进行分析处理的局面,简捷快速地解决了格式问题。

对于图片,应该在录入的时候要求尽量小,RTF文件中保存图片将消耗很大的资源,如果不需要彩色就建议不用彩色,否则图片过大过多给组卷带来很大困难。

下面是用VFP 9.0写的组卷程序的部分代码:

IF !USED("TK")

SELECT 0

USE SYSPATH+"\DBF\TK.DBF"

ENDIF

SELECT TK

IF !USED("TKS")

SELECT 0

USE SYSPATH+"\DBF\TKS.DBF"

ENDIF

RELEASE M_CONTENT

PUBLIC M_CONTENT

SELECT TKS

LOCATE FOR ALLTRIM(语法)="空文件"

M_CONTENT = 语法代码

SELECT TK

GO top

DO WHILE .NOT. EOF()

M_CONTENT_1 = 题目内容

N_POS = LEN(M_CONTENT_1)

M_POS = AT("\PARD",UPPER(M_CONTENT_1))

I=1

DO WHILE .T.

N_POS =AT("}",M_CONTENT_1,I)

IF N_POS = 0

N_POS = AT("}",M_CONTENT_1,I-1)

EXIT

ENDIF

I=I+1

ENDDO

IF M_POS > 0

M_CONTENT = M_CONTENT + SUBSTR(M_CONTENT_1,M_POS ,N_POS - M_POS)

ENDIF

SKIP

ENDDO

M_CONTENT = M_CONTENT +"}"

IF FILE(SYSPATH+"\DBF\RESULT.RTF")

DELETE FILE SYSPATH+"\DBF\RESULT.RTF"

ENDIF

YATAOO=FCREATE(SYSPATH+"\DBF\RESULT.RTF",0)

FPUTS(YATAOO,M_CONTENT)

FCLOSE(YATAOO)

SELECT TKS

USE

=MESSAGEBOX("生成完毕",32,"提示")

以上组卷生成的RESULT.RTF文件是全部记录的总合成,实际组卷的时候可以设置组卷记录和组卷的条件从而生成由需要的试题构成的实考试卷。组卷可以分为自动抽题和人工抽题,并提供更换题目的功能。

2.4 代码维护

作为题库,可能涉及到不同系别、不同课程、不同难度、不同题型,也包括命题人和审核人等,提供这些代码的数据库维护是必须的,可能会出现数据更新的问题,在实际管理的时候需要严格控制编码的变化,特别是删除代码,这将影响到题库的代码表示,解决的办法是,删除代码的同时,更新题库中的相同代码为其他类别,这种方法很有效。

2.5 题库的操作

对题库的操作除了编辑录入和组卷之外,还应该包括题库的查询、筛选、批量操作,由于RTF题库的特点限制,题库操作必须注意不要破坏RTF的格式,否则可能导致整个题目的破坏,这与普通的文本文件是不同的。

RTF文本中查找时间耗时的操作,部分解决问题的办法是设置关键字字段,用程序的方法查找关键字、类别、题型等,当然这不是完备的,完备的查询也应该提供。

2.6 历史记忆的问题

对于题库的维护操作,大部分时间在RTF编辑器中进行,历史记忆的问题不太明显,但数据库常规操作仍然存在,而题库的题目是题库系统的核心,因此设置历史记忆功能具有一定的意义。解决的方案是每操作备份,从而可以由历史记录恢复,备份的方法建议使用SQL的SELECT命令,可以不受过滤条件和状态的影响。

2.7 用户权限

设置几个权限不同的管理用户,对于试题库系统还是必要的,其中编辑录入的功能可以单独设置出来,实际操作的时候比较方便。管理员应及时备份题库,题库的异常破坏也是不可不防的。

3 结束语

总的说来,利用RTF技术和数据库技术建立试题库系统是不错的一种选择,对于教学管理提供了极好的途径,特别是组卷比较方便快捷,编辑录入维护容易上手,当然如果能对RTF进行完整的读写分析将会更加完善事题库的性能。

参考文献:

[1] 许新川,汪汉良.RTF文件阅读器的设计[J].湖北师范学院学报:自然科学版,2002,22(3):75-79.

[2] 陈志国,张瑾.网上考试系统的设计与实现[J].河南大学学报:自然科学版,2003,33(3):69-71.

[3] 叶忠杰,戎成.网络化考试系统的设计与实践[J].浙江交通职业技术学院学报,2004,5(4):34-37.

[4] 丁亚涛.数据库历史记忆功能的实现[J].安庆师范学院学报,2005,11(1):26-27.

上一篇:C#接口的研析 下一篇:工作流系统中异常处理的研究