首页 > 范文大全 > 正文

通用题库管理系统开发

开篇:润墨网以专业的文秘视角,为您筛选了一篇通用题库管理系统开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:运用Visual 与Microsoft Acess数据库及VBA技术,实现通用题库管理和基于Word的试卷文档的输出。阐述了系统的原理及功能结构,并对开发过程中的一些关键技术及其实现方法进行了描述。

关键词:Visual ;数据库;通用题库管理

中图分类号:TP311.52 文献标识码:A 文章编号:1009-3044(2009)05-1035-03

General Test Database Management System Development

PAN Ying-hui

(Department of Electronic Engineering Wuyi Institute,Wuyishan 354300,China)

Abstract: Using Visual and Microsoft Acess Database and the VBA technology, realize general test database management and the Word examination paper documents output。Elaborated system's principle and the function structure, describe a number of key technologies and their implementation in the development process.

Key words:Visual ; Database; General Test Database Management

1 引言

考试是教学过程中必不可少的重要环节,是检查教学成果的必要手段之一。开发通用题库管理系统,从题库中抽取试题,自动生成试卷,有利于按事先指定要求的内容范围、目标层次及难度系数进行考核,能有效地避免人工组卷中命题和评分标准的主观随意性,使考试具有评估功能,有利于试题库管理的自动化和标准化,可以帮助教师从繁重的手工出题、组卷考试的劳动中解脱出来;同时对树立良好的学风,建立规范的教学质量监控系统都是行之有效的。

目前较成熟的题库管理系统一般是文字形式,也有部分支持图文形式,但由于只支持图片格式,试题中的图文、公式、表格混排等内容,只能以图片格式存于题库中,若要修改其内容,便无法在原题基础上进行编辑修改,使得目前开发的试题库管理系统在图文、公式混排编辑,自动组卷、自动排版等方面还存在一定的缺陷和设计难点。因此,开发一通用试题库管理系统,采用统一手段解决各学科、专业对题库的特殊要求,可以提高管理系统的通用性、扩展性、易用性。

2 系统设计思想

通用试题库所涉及的数据库,不仅有文字,还有大量的图形、公式、表格以及有关工程特殊符号,而组成的图形又具有大量图素的属性数据信息。因此系统要具备文字、图形、公式、表格等的处理能力,这种处理能力必须是通用的,开放融合的。Microsoft Word是最流行的文字处理软件,能够使用各种特殊符号,插人各种对象,能够实现试题的图文、表格、公式等的编辑与管理以及共享不同应用程序信息资源。题库的设计思想是,若试题内容仅为文字,则直接存于数据库中,若试题内容还有图文、表格、公式等其它信息,则以Word文档为载体,存于数据库中。对于试题中含有图片、表格或公式等录人,可以在Word软件下插人各种对象,或者复制对象进行编辑录人,不需做任何转换或处理,这样用户可以根据需要对试题库中的试题,进行编辑、修改,使系统具有良好的扩充性,以适应各种学科和课程所建立试题库的需要。对于公式、CAD图形、Protel电路图形或GIS等专业图形,由于是采用不同的专业软件制作而成的,为了便于以后对试题进行修改,不应转化成简单的位图 ,应在题库录入时保持源格式入库。

Visual Basic.NET (以下简称VB.NET)是Microsoft公司研发的可视化、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序,界面友好、简单易用、功能强大,是十分流行的开发工具,它采用代码编辑、编译、连接、调试功能为一体的集成开发环境(IDE)。数据库部分是整个设计的核心,考虑系统的规模和现有计算机的配置,也为了系统更易于实现和维护,采用Microsoft Access桌面型数据库系统,同时结合VBA开发工具,设计了“通用题库管理系统”。该系统提供了试题编辑功能、自动和手动组卷功能、设置试题数量和卷面难度等功能,整套试卷及答卷的最终格式为Word文件,便于试卷修改和调整。

3 系统总体设计

根据系统的需求我们把系统分成用户管理、题库管理、试卷管理、数据库管理四个大模块,如图1所示。用户管理模块可对用户进行管理,用户类型包括管理员和一般用户,管理员可以添加用户和删除用户、权限设置;题库管理分为增加试题、删除试题、修改试题、浏览试题四个模块,一般用户只能浏览试题;试卷管理模块分为自动组卷、手动组卷、试卷浏览三个模块,在自动组卷方式下需选择试题类型、难度和试题数量等。数据库管理分为压缩数据库、备份数据库、恢复数据库三个模块。

3.1数据库结构

数据库设计的合理与否,对数据的完整性、安全性、程序运行的效率和程序设计的复杂程度等有着十分密切的关系。因一般题库规模较小,故只需建立一个数据库,在此数据库基础上,建立相关数据库表,属性如表1。

试题库中的难度、所属章节、知识点、使用次数、上次使用年份,主要用作选题时的参考,题型可以是选择题、判断题、填空题、问答题等,题目内容存储试题的文本信息,若有公式、图片、表格等,则以Word文档形式用OLE对象存于素材字段中。试卷库与试题库属性相同,只是将选中的试题存于其中用作考试组卷。

4 系统关键技术及实现

4.1 数据库操作

为便于对Access数据库进行操作,在中可首先添加引用“ADODB”,并在标准模块中加入以下语句:

Public cnn As ADODB.Connection

Public cmd As mand

Public rst As ADODB.Recordset

Public Const mydbf As String = " testdb.mdb"‘试题数据库

Public Const strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = gcbz.mdb ;Jet OLEDB:Database Password=asdf "

这样在程序设计时,若需打开数据表进行操作,只须加入语句:

cnn.Open(strCon)

rst.Open(strCom, cnn)

其中strCom为相关选择语句,如:

strCom = " SELECT * FROM 试题库 WHERE 题型=testtype " ‘testtype为选择的考试题型。

该语句表示从试题库表中选择“题型=testtype”的记录,这样就可获得表中相应数据。

4.2 图形、公式等数据存取

由于试题库中的图形、公式等内容,都是以OLE 对象的数据形式存贮在数据库中,对这些数据的管理,不能直接用一般文本数据的管理方式,要通过中的FileStream流及MemoryStream流完成。以下函数Ole2File就是通过MemoryStream流,读取数据库中的OLE 对象数据,再经FileStream流将其另存为一文件。

Private Sub Ole2File(ByVal DestFilePath As String, ByVal keyword As String, ByVal keyname As String)

Dim PictureCol As Integer = 0 ' the column # of the BLOB field

Dim cn As New OleDbConnection(strCon)

Dim cmd As New OleDbCommand("SELECT " + keyname + " FROM win WHERE ID=" & keyword, cn)

cn.Open()

Dim dr As OleDbDataReader = cmd.ExecuteReader()

dr.Read()

Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte

dr.GetBytes(PictureCol, 0, b, 0, b.Length)

dr.Close()

cn.Close()

Dim ms As New MemoryStream(b)

Dim testfile As String = "C:\windows\temp\"

Dim FSO As New FileSystemObject()

Dim fs As New System.IO.FileStream(testfile + DestFilePath, IO.FileMode.Create, IO.FileAccess.Write)

fs.Write(b, 0, b.Length)

fs.Close()

End Sub

利用上述模块,即可将数据库存贮的OLE对象数据,还原为对应文档,完成数据的提取工作。

4.3 文本、参考答案的加密

试题库中的内容,虽可通过用户权限管理加以保密,但用户还可通过其它软件打开试题库,为保证数据库中的数据安全,必须对试题库中重要内容如试题内容,以加密方式进行存储,这样即使用非法方式打开试题库,也能保证试题安全,因此数据加密解密必不可少。在可利用CryptoStream流中DESCryptoServiceProvider类的CreateEncryptor进行加密,CreateDecryptor解密,然后通过MemoryStream流完成数据转换。

加密函数代码如下:

Public Function EncryptData(ByVal Value As String, ByVal desKey() As Byte, ByVal desIV() As Byte)

Dim ms As New MemoryStream()

Dim byt() As Byte

Dim bin(4096) As Byte '这是加密的中间存储器

Dim rdlen As Long = 8 '这是写的字节的总数。

Dim len As Integer '这是被一次写的字节的数量.

Dim des As New DESCryptoServiceProvider()

Dim cs As New CryptoStream(ms, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write)

byt = Encoding.UTF8.GetBytes(Value)

cs.Write(byt, 0, byt.Length)

cs.FlushFinalBlock()

cs.Close()

Return Convert.ToBase64String(ms.ToArray())

End Function

解密函数代码如下:

Public Function deEncryptData(ByVal Value As String,ByVal desKey() As Byte, ByVal desIV() As Byte)

Dim ms As New MemoryStream()

Dim byt() As Byte

Dim bin(4096) As Byte

Dim rdlen As Long = 8

Dim len As Integer

Dim des As New DESCryptoServiceProvider()

Dim cs As New CryptoStream(ms, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write)

byt = Convert.FromBase64String(Value)

cs.Write(byt, 0, byt.Length)

cs.FlushFinalBlock()

cs.Close()

Return Encoding.UTF8.GetString(ms.ToArray())

End Function

由于试题特殊的符号、公式、图形、表格等,系统必须具备各学科特殊符号和图表的处理能力,同时还须具备有图形、图像、表格方便的输入及图文合一的操作接口。试题的录入、编辑和删除由系统试题编辑器来完成,在试题编辑器上设有试题参数选项栏、试题的添加、删除以及题目和答案的导入、编辑等按钮,在试题编辑里,用户设置好当前试题的参数后,点击编辑按钮,系统通过System.Diagnostics.Process.Start会自动启动Word程序,用户就可以按照Microsoft Word的操作方式来进行试题的录入和编辑,并且根据各学科的需要,插入复杂的图形、表格和公式等。编辑完成后保存并关闭Word程序;点击导入按钮,系统调用Ole2File模块,自动将题目导人题库中。

4.5 自动组卷和手工组卷

自动组卷主要根据用户为试卷给出的难度、题型以及各种题型的题数自动生成一份试卷。本系统选题算法的要求为:各种难度的试题数量比例及试题数量可以调节;试题不能重复。在预览试卷总体布局之前,允许用户将系统选择好的题目做适当的调换,然后将选择好的题目保存为一份试卷,并将数据库中的有关题目的使用年份更改为当前年份,如果数据库中的表的相应的记录的年份与当前年份相隔两年则将该记录变为可重新利用。

手动挑选题目组卷方式不要求用户提供任何信息,系统会将当前数据库中的所有可供挑选的题目都显示出来,让使用者自己挑选题目,与此同时,系统会给出每道题目的相应的信息,诸如:难度、分值、是否有图形、使用的次数等供用户参考。手动生成试卷向导流程与自动选题中的手动掉换题目相似。

4.6 试卷文件生成方法

系统最终生成的考卷格式为Microsoft Word文档文件。系统通过Microsoft Word支持的VBA功能,实现Word文档的自动生成,即Word文件的创建、插入文字图片、保存等过程都完全由系统自动完成。系统抽取的试卷最终要以Word的形式保存或者打印出来,因此制作Word试卷就显得尤为重要。Word 2003提供的VBA组件为系统实现这个功能提供了强有力的保障,Word 2003共有193个对象,其中位于最高层的是Application对象,它实际代表整个Word 2003应用程序,是VBA控制Word 2003应用程序的关键所在。Word 2003应用程序中所有的功能都可以通过这193个对象控制完成,例如Documents集合对象和Document对象可以获得所有打开的文档和当前活动文档。在自动生成过程中,几个主要步骤:① 首先在VB中创建好Word文档,并通过代码对该文档进行一些必要的属性设置(比如页边距、字体、对齐方式等),②把相应的题目和答案写入到Word文档中,③保存为某个文件,④关闭文档,释放资源。本系统利用这个技术实现组建Word试卷的部分代码如下:

Set wordobj= CreateObject( word.application )

changeFileOpenDirectory [路径]

Documents.Open FileName:=testname

ActiveDocument.SaveAs FileName:=testnew

Selection.InsertFile FileName:= suiji& .rtf

Set newDoc =Nothing

5 结束语

本文以Access数据库为基础,采用VBA与及Word相结合技术,共享不同的应用程序信息资源,实现文本、图形、公式等为一体的复合文档和文档的编辑,实现了试题库的实时管理和试卷、答案的控制输出,较好地保证了系统的有效性、可扩展性、开放性、可移植性,缩短了开发周期,同时为教师提供了方便高效的工作平台,减轻了工作负担,提高了试题管理的工作效率,具有较好的实用和推广价值。

参考文献:

[1] Microsoft著,程序设计语言[M],高等教育出版社,2003.

[2] [美]Michael Halvorson著,VISUAL 程序设计[M],清华大学出版社,2002.

[3] 精锐创作组编著,Visual 实用编程技术[M],人民邮电出版社,2001.

[4] 张志兵,王嫦娟,基于VB的工程图学试题库系统的设计[J],山东科技大学学报(自然科学版),2005(24,3):18-20.

[5] 田丽平,基于VB.NET的在线智能考试系统开发与实现[J],佛山科学技术学院学报(自然科学版),2O07,(25,4):20-23.