试卷生成系统

时间:2024-08-29 23:53:56 计算机网络毕业论文 我要投稿
  • 相关推荐

试卷生成系统

  论文关键词:试题库系统 试卷生成 算法

  论文摘要:教学评价是教学工作的一个重要环节,通常的教学评价方式多为通过试卷进行考试,因而试卷的质量将直接影响到教学评价的结果。一般情况下,教师出试卷时要么到庞大的题库里一道一道的把题目挑选出来,或是从几本相关的书里把题挑选出来组成一份试卷,这样既费时又费力,而且很难保证试题的覆盖面和把握试卷的难度。为了将老师从繁重的命题工作中解放出来,为了提高命题的质量和的现代化、科学化、规范化,本文开发一个试卷生成系统。

  本文在充分的需求分析基础上,设计和实现了一个试卷生成系统,主要完成了手动生成试卷、自动生成试卷、抽取现有试卷和用户管理等功能。通过测试,系统在Windows 98/me/2000/XP平台下能稳定运行,且基本达到了预期的设计目标,有一定的实用价值。

  Abstract :Value of teaching is an important tathe for teaching,usually a value of teaching is from a exam ,so a quality paper straight touches the value of teaching. The general situation ,teacher thinks out a paper,reach huge exam pool each finds out the question, or shoulder the question together out from several relevant books. Time-consuming and also strenuous like this, and very difficult to guarantee coverage rate and paper degree of difficulty of examination question. Helping the teacher disengages from the burdensome proposition about exam, In order to improve the quality and management proposition of the modern, scientific, standardized, the paper developed a test generation system.

  Paper Generation System is designed and implemented based on the sufficient needs analysis in this paper,It mainly implements some functions include in manually and automatically generating papers,extrating some of existing papers,maintaining user information and so on ,the system can operate stably in Windows 98/me/2000/XP platform ,reach  the expected goal and have some practical value.

Keywords: test library system;paper generation;algorithmic


  前言

  随着技术的发展和普及,在我们的学习和日常生活中都离不开计算机技术,大到科研的超级计算机,小到我们日常使用的手提电话,实际都是计算机技术的应用,对于学校、企事业单位来说,计算机特别是PC机已经相当普及,大家对计算机的操作更加熟悉,充分发挥设备潜能是一种节约的表现,是一种美德。

  设计编写试卷生成系统,是基于二种目的:一是充分利用现有的计算机系统减轻工作人员的劳动强度。二是弃传统的手工整理、以试卷(纸质)的形式存放到室,浪费纸张等原,不利于保护。

  一个好的试卷生成系统,要求界面友好,能方便地生成试卷,试卷的维护(修改、删除试题)操作简单,组卷灵活快捷,查询试题或试卷迅速,以适应各种知识更新对试卷难度的要求,还要具有一定的安全性。为此,在对系统进行概要设计时,就充分考试虑到以上的因素,模块围绕实用性设计,比如,编辑模块就是为了实现试题的录入、试题的维护、试卷的生成而设计的;查询模块是为了实现试题和试卷的快速查询而设计的;系统管理是考虑系统的安全性,用户名和密码,整个设计简洁明了,同时也就方便了操作。

  本软件的开发成功为试卷的生成工作又添加了一款实用性较强的软件,为试卷生成系统告别手工管理的时代又推进了一大步。

  1 绪论

  1.1 开发背景与研究现状

  在以往的教学中,老师出试卷大多由手工出卷,这样生成的试卷往往会有知识点分布太集中、难易程度不当、分值分布不均等一些缺点;这样,既增加了老师的负担,也没有达到很好考查学生学习的真实水平,造成教学上的失误。                                                                      
    基于以上的原因,有很多从事软件开发的人员,在试卷自动生成方面做了很大的研究。目前这一领域也以良好的发展姿态而不断进步,早期已经有了一些类似的系统,但经过软件开发人不断的完善,大致形成了具备如下功能的系统:

  删除试题、批量录入试题、试题交流、合并题库、自定义试题参数等一些功能,其中试题交流功能非常实用,主要用于同事间交流试题。系统“体积”非常小,压缩后只有几百KB。平时只要将一些试题或从网络下载的试题,按“学科”、“章节”、“知识点”、“题型”、“难易程度”五个参数进行归类,录入题库,需要用时,只要输入一些查询条件即可查出所要找的试题。生成试卷非常方便,只需几分钟就可以生成一份试卷,生成的试卷还配有答案,更重要的是软件能与WROD的完美结合,试题、答案的编辑、试卷的排版打印全部由WORD来完成,试卷和答案都可保存为*.DOC格式。

  组卷算法是该系统中的重点,目前被使用的算法主要有三种,分别是随机选取法,回溯试探法和遗传算法。这三种算法各有特点,随机选取法结构简单,对于单道题的抽取运行速度较快,但是对于整个组卷过程来说组卷成功率低,即使组卷成功,花费时间也令人难以忍受,所以很少被使用。而回溯试探法,同样结构简单,但是组卷成功率很高,所以常被使用。遗传算法是目前很流行的组卷方法,结合了前两种算法的多个优点,体现了组卷的随机性和科学性,被广泛使用中。
    可见,试卷自动生成系统这方面的研究日益成熟,这不但减轻了教师的工作负担,也使得教学评价更加科学化、规范化,有利用事业的发展。

  1.2论文组织

  论文全面详细地介绍了试卷生成系统的设计思想、实现原理和使用技巧。论文按如下方式组织。

  第一部分是主要是对系统的开发背景和研究现状进行详细的介绍。

  第二部分主要是对开发工具的介绍。

  第三部分是主要是对本系统做详细的需求分析。

  第四、五、六部分是本文的主要内容,是软件的开发设计。第四部分主要对于系统组卷的设计,重点介绍了自动生成试卷,手动生成试卷和抽取现有试卷三种组卷算法。而第五部分是系统的实现部分,具体的分析了三种组卷算法的实现过程。同时也仔细说明了系统实现过程中的关键技术。第六部分是系统的测试部分,利用测试实例来说明系统的可用性和数据的准确性。


  2 开发工具简介

  2.1 Visual Basic

  Visual Basic是可视化的Basic,他创建应用程序时,不需要编写大量的程序代码来描述和控制界面元素的位置,大小等属性,只需要简单的在屏幕中增加已经建立的对象。可视化编程的一个突出特点就是其开发就像一个百宝箱,很多功能都集成在其之中,这就是IDE(Integrated Development Environment),即集成开发环境。IDE是指在相应的开发平台中集成了编辑器、编译连接工具、控件器箱辅助工具。例如在VB的集成开发环境中就包括了以下一些主要元素:工具栏、工具箱、工程器窗口、属性窗口、窗体设计器、代码编辑器窗口等;

  VB的程序设计风格与传统设计方法不同,它是面向对象和事件的程序设计方法。面向对象是近年来出现的程序设计技术,它是一种全新的设计和构造软件的思维方法。在面向对象的程序设计中,“对象”是系统中的基本运行实体。例如窗体和控件,就是VB的对象,VB中的对象是由系统设计好提供给用户使用的。对象建立、移动、增删、缩放操作也是由系统规定好的,这比一般的面向对象程序设计中的操作要简单的多,因此本软件选择了VB6.0作为开发工具。

  2.1.1 主要控件及其属性简介

  Form类的控件:

  Picture属性:用来设置窗体的背景图象。

  Visible属性:界面是否显示。

  BackColor属性:用来控制程序界面的颜色。

  Font属性:用来控制程序界面的字体。

  StartUpPosition属性:用来控制程序运行时界面的显示位置。

  ImageList类的控件:

  ImageHeight属性:用来设置图的高度。

  ImageWidth属性:用来设置图的宽度。

  MSFlexGrid控件:

  Rows属性:返回或设置在一个 MSHFlexGrid 中的总行数。

  Cols属性:返回或设置在一个 MSHFlexGrid 中的总列数。

  AllowBigSelectorBoolean属性: 返回/设置一个值,定义当在行或列的头部单击时,是否该行或列将整个被选中。

  EnterCell的事件:当一个新的单元成为当前活动单元时。

  CommandButton控件:

  Caption属性:用来指定CommandButton的标题。

  Click事件:用来添加按钮的单击事件所执行的程序代码。

  TreeView控件:显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。

  ImageList属性:指定的ImageList控件保存在Node对象中使用的点位图和图标。

  Node属性:可以表现为文本,点位图,线条和加减号的8种组合之一。

  NodeClick时间:用来添加按钮的单击事件所执行的程序代码。

  2.1.2 数据库连接方式

  简单的文本文件到各种复杂的关系型数据库,数据库应用程序需要面对各种各样的数据源。Visual basic 6.0提供ADO(Active Data Objects)作为应用程序和OLE-DB连接的桥梁。

  ADO,即Active数据对象(Active Data Objects):实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口相连。用户可以使用任何一种ODBC数据源,即不仅适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。本系统就是用ADO对象来连接数据库的。

  以下是本系统开发过程中用到的一些ADO对象:

  Connection对象:通过“连接”可从应用程序访问数据源,连接是交换数据所必需的环境。对象模型使用Connection对象使连接概念得以具体。

  Recordset对象:表示的是来自基本表或命令执行结果的记录全集。Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用Update方法,对数据的所有更改将被立即写入基本数据源。也可以使用AddNew和Update方法将值的数组作为参数传递,同时更新记录的若干字段。

  Field对象:代表使用普通数据类型的数据的列。Recordset对象含有由Field对象组成的Fields集合。每个Field对象对应于Recordset中的一列。使用Field对象的Value属性可设置或返回当前记录的数据。

  以下是本程序中用到的方法:

  AddNew方法:创建可更新Recordset对象的新记录。

  Open方法(ADO Connection):打开到数据源的连接。

  Open方法(ADO Recordset):打开记录集。

  Close方法:关闭打开的对象及任何相关对象。

  Execute方法:执行指定的查询、SQL语句、存储过程或特定提供者的文本等内容。

  2.2 SQL Server2000

  SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的。于1988 年推出了第一个OS/2 版本在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上专注于开发推广SQL Server 的Windows NT 版本,Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。在系统中用到的是Microsoft SQL Server 以后简称为SQL Server或MS SQL Server。

  SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点。同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。

  目前被广泛使用的数据库有SQL Server、Oracle、Access等。Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。但是access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

  而SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。因为本系统需求一个中型,而且安全性强的数据库,所以选择SQL Server做为该系统的数据库。

  2.3 SQL 语言

  SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如“Select”、 “Insert”、 “Update”、 “Delete” 、“Create”和 “Drop”常常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact- SQL。SQL语言有着非常突出的优点,SQL语言是非过程化的语言、统一的语言、是所有关系数据库的语言。

  非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。

  统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。

  所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。

  SQL为许多任务提供了命令,其中包括:查询数据、在表中插入、修改和删除记录、建立、修改和删除数据对象、控制对数据和数据对象的存取、保证数据库一致性和完整性等。

  以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。

  SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:

  DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;

  DDL(Data Definition Language,数据定义语言):用于定义数据的结构,比如 创建、修改或者删除数据库对象;

  DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。


  3  需求分析

  考试是整个教学过程中的一个重要环节,它是对学生所学知识和能力的一种评价,也是衡量教师教学效果优劣的一种测量手段。但是,目前考试的实施过程不完全科学,命题内容,评分标准等缺乏普遍的可比性,考试不够客观和准确。随着科学的迅速发展和广泛应用,计算机技术已进入现代教育领域,并形成了一门新兴的边缘科学—计算机辅助教学(Computer Aided Instruction,CAI)。

  3.1用户需求

  利用计算机建立试题库,实现计算机自动选题组卷,是CAI工程的重要组成部分,也是实现教考分离的一个重要手段。利用计算机组卷,不仅能节省教师的宝贵时间,提高工作效率,而且能消除出卷人主观意识的影响,使考试更加标准化,更加客观,真实,全面地反映反映教学的实际效果,有利于教学质量的提高。建立了试题库系统以后,可实行教考分离,促使任课老师必须按照教学大纲的要求认真备课,认真组织教学内容,改进教学方法,对提高教学质量和整体教学水平有着非常重要的意义。每次考试后,还可利用计算机对试卷和考试分数进行分析和评价,使考试这一教学环节更加科学化和规范化。

  作为试题库系统中的一部分,试卷生成系统必须满足如下需求:

  (1)灵活多样的组卷方式,如手工组卷和自动组卷。

  (2)既能临时生成试卷,又能直接使用以前生成的试卷,也就是要求能对生成的试卷进行保存,以便下次直接使用,并能删除不再需要的试卷。

  (3)试卷的保密性要求,只有授权人员才能生成和查阅试卷。

  (4)试卷生成速度不宜太慢。

  (5)生成的试卷按照规定的模板输出,并能导出到word文档中。

  (6)生成的试卷既可以直接打印,也可以在word中修改和打印。

  (7)友好的用户界面。

  3.2功能需求

  本系统是试卷生成系统,主要有三方面的功能需求,其分别是:

  (1)抽取现有试卷:为了用户能方便现有的试卷,此模块主要有预览试卷,保存答案,删除试卷三大功能。

  (2)手动生成试卷:为了能按照用户的意愿组卷,用户可以按试题所涉及的知识点浏览各种题型,生成一份知识覆盖面广泛的试卷,并能保存试卷。

  (3)自动生成试卷:用户能选择生成试卷的题型,试题数量,试题难度,以及试卷分值,且有预览试卷,预览答案,保存试卷和答案的功能。

  3.3 系统流程图

  根据对用户的,本系统有三类用户使用,分别是管理员,教务管理员和教师。这三种身份的人具有不同权限,管理员负责管理系统帐号;教务管理员负责管理试题、审核试题、打印试题;教师只能浏览和根据需要组卷。本系统主要是对试题组卷的管理,根据需求分析,可以得到系统流程如图3-1所示。

 SHAPE  \* MERGEFORMAT

图3-1 系统总流程图

  3.4 性能需求

  3.4.1 加载数据效率要求

  本系统的使用不受时间限制,可以24小时正常使用,对于用户登陆,试卷预览,答案预览,试卷生成功能响应时间不宜超过5秒钟。

  3.4.2 界面风格要求

  整体以白色和淡蓝色为主,辅助米黄色和淡绿色给人清新,舒坦的感觉,在1024*768分辨率下达到最佳显示效果,界面简洁清爽,不能过于复杂。

  3.5 开发

  3.5.1 软件环境

  操作系统: Windows98以上/ME/2000/XP等

  数据库:  SQL Server 2000

  开发:  Visual Basic

  开发工具:  VB6.0

  3.5.2 硬件环境  

  CPU:P = 2 \* ROMAN II200以上

  内存:256MB以上

  硬盘:2.1GB以上(可用空间最好在160MB以上)


  4 系统设计

  系统设计的目的是确定系统如何完成预定的任务,也就是确定系统的配置方案,并且进而确定组成系统的每个程序的结构。首先设想完成系统功能的若干种合理的物理方案,分析员应该仔细比较这些方案,并且和用户共同选定一个最佳方案,然后,进行软件结构设计,确定软件由哪些模块组成以及这些模块之间的动态调用关系。进行软件结构设计时应该遵循的最主要的原理是模块独立原理,也就是说:软件应该由一组完成相对独立的子功能模块组成,这些模块之间的接口关系应尽量简单。

  自顶向下逐步求精是进行软件结构设计的常用途经,在进行详细的过程设计和编写程序之前,首先进行结构设计,其好处在于可以在软件开发的早期站在全局高度对软件结构进行优化,在这个时期进行优化付出的代价不高,却可以使软件质量得到重大改进。

  试题管理系统和试卷生成系统是两个连在一起的系统,而本系统主要介绍的就是试卷生成系统的设计和方法。

  4.1 系统功能模块图

  根据需求分析,将系统分为四个模块:系统管理模块,试卷生成管理模块,数据库管理系统,系统帮助模块。系统功能模块结构如图4-1所示。

 SHAPE  \* MERGEFORMAT

图4-1  系统功能模块图

  下面对各功能模块的子功能进行较详细的讨论。

  (1) 系统模块

  该模块包括用户管理模块和用户密码管理模块。系统启动时调用此模块,要求用户先进行登陆。登陆功能模块如图4-2所示。

 SHAPE  \* MERGEFORMAT

图4-2  登陆模块功能图

  (2) 试卷生成管理模块

  试卷生成管理模块主要包括如下子模块:

n         抽取现有试卷模块:显示预览试卷,保存答案,删除试卷功能。

n         手动生成试卷模块:显示加入试卷,保存试卷功能。

n         自动生成模块:显示生成试卷,预览试卷,预览答案,保存试卷功能。

详细的试卷生成管理功能模块如图4-3所示。

 SHAPE  \* MERGEFORMAT

图4-3  试卷生成管理模块功能图

(3) 数据库管理模块主要包括数据库还原和数据库备份。数据库管理模块结构如图4-4所示。

 SHAPE  \* MERGEFORMAT    

图4-4  数据库管理模块功能图

(4) 系统帮助模块主要包括系统帮助和系统关于。系统帮助模块结构如图4-5所示。

 SHAPE  \* MERGEFORMAT

图4-5  系统帮助模块功能图

  4.2 数据表设计

  根据系统功能设计,把数据库命名:STGL,在SQL Server 2000数据库创建了题型表、难度程度表、出卷人表、用户信息表等。各数据表的具体情况如表1至表9所示。

                       表1  用户信息表(usermanagement)

表2  题型表(TX)

表3  难度程度表(NYD)

表4  选择题表(selects)

表5  填空题表(adds)

表6  简答题表(ask)

表7  阅读程序题表(YDCX)

表8  出卷人表(SJ)

表9  已存试卷表(SJT)

  4.3 组卷算法

  4.3.1 现有算法分析

  自动组卷是考试系统自动化或半自动化操作的核心目标之一,而如何保证生成的试卷能最大程度的满足用户的不同需要,并具有随机性、科学性、合理性,这是实现中的一个难点。尤其在交互式下用户对于组卷速度要求较高,而一个理论上较完美的算法可能会以牺牲时间作为代价,往往不能达到预期的效果。因此,选择一个高效、科学、合理的算法是自动组卷的关键。

  以往的具有自动组卷功能的考试系统大多采用随机选取法和回溯试探法。随机选取法根据状态空间的控制指标,由随机的抽取一道试题放入试题库,此过程不断重复,直到组卷完毕,或已无法从题库中抽取满足控制指标的试题为止。该方法结构简单,对于单道题的抽取运行速度较快,但是对于整个组卷过程来说组卷成功率低,即使组卷成功,花费时间也令人难以忍受。尤其是当题库中各状态类型平均出题量较低时,组卷往往以失败而告终。

  回溯试探法这是将随机选取法产生的每一状态类型纪录下来,当搜索失败时释放上次纪录的状态类型,然后再依据一定的规律变换一种新的状态类型进行试探,通过不断的回溯试探直到试卷生成完毕或退回出发点为止,这种有条件的深度优先算法,对于状态类型和出题量都较少的题库系统而言,组卷成功率较好。

  分析上述两种算法的优缺点,不难发现,在限制条件状态空间的控制下,随机选取法有时能够抽取出一组令用户满意的试题。只不过由于它随机选取试题的范围太大,无法确定目前条件下哪些区域能够抽取合适的试题,反而可能在那些已经证明是无法抽取合适试题的区域内反复选题,进行大量的无效操作进入死循环,最终导致组卷失败。回溯试探法组卷成功率高,但它是以牺牲大量的时间为代价的,由于本软件只是个小型的单科考试组卷系统,结构简单,出题量也较少,所以本系统选择相对简单,组卷成功率较好的回溯试探法进行组卷。

  4.3.2 回溯试探法的应用

  回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。

  用回溯算法解决问题的一般步骤为:

  1、定义一个解空间,它包含问题的解;

  2、利用适于搜索的方法组织解空间;

  3、利用深度优先法搜索解空间;

  4、利用限界函数避免移动到不可能产生解的子空间。

  问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。

  回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。

  搜索:全面访问所有可能的情况,分为两种:不考虑给定问题的特有性质,按事先顶好的顺序,依次运用规则,即盲目搜索的方法;另一种则考虑问题给定的特有性质,选用合适的规则,提高搜索的效率,即启发式的搜索。

  本系统使用的是回溯法的启发式搜索,以试题题型,试题分值和选题数量为约束条件进行随机搜索,而把设置的试卷总分数作为一个解空间。如果各题型分值之和等于用户设置的试卷总分数,则产生一个有效解,系统生成一份试卷,试题的题型,编号,分值等信息储存进试题库表中。通过系统的预览试卷功能,系统通过所存信息搜索数据库,获取试题内容,并输入Word文档中组成一份完整试卷。

  4.4 自动组卷

  自动组卷是时系统根据用户要求,随机选取试题,组成一份完整的试卷。本系统使用的是回溯探取法随机选题。其主要过程如下:

  (1)用户输入选题要求,如各题型数量,题型分值和题型难度,并设置试卷总分数。

  (2)初始化随机数生成器。

  (3)系统根据题型数量和题型难度要求在各题型表中随机抽取试题,将抽取到的试题的“编号”、“试题类型”、“分值”等信息存入临时表LSSJ中,并对其进行排序和比较,如有重复则返回继续搜索,防止试题被重复选取,一直到抽取试题数等于用户设置的各题型的试题数量。

  (4)系统自动判断用户设置的试卷总分值与试题总分值是否相等,是则生成试卷,并将试题信息“编号”、“分值”、“难度”等信息存入数据库表SJT中,且生成“试卷代号”、“试卷创建者”、并判断“试卷难度”,存入数据库表SJ中。否则试卷生成失败,并清空临时表SJ中所有信息。

  (5)设置试卷模板。

  (6)预览试卷,系统根据数据库表SJT中信息搜索题库试题内容,并按设置好的试卷模板导入Word中,生成一份完整的试卷,并以*.doc文件的形式保存。

  自动生成试卷的流程如图4-9所示。

  4.5 手动组卷

  由于自动生成的试卷,对于试卷知识覆盖面的问题不好控制,为了解决这各问题,所以本软件增加了另一种组卷方式,也就是手动生成试卷。此组卷方式的优点在于,系统将各题型的试题具体的分到了此科考试的具体章节和知识点。用户可以根据具体章节和知识点浏览此知识点下的各试题,并可以选择加入试卷,组成一份知识覆盖面广的试卷。其主要组卷过程如下:

  (1)用户选择试题题型,题型分值,试题数量和知识点,并设置试卷总分值,系统根据用户选择的题型和知识点显示所有试题。

  (2)用户选择试题,试题的“编号”、“难度”、“题型”等信息存入临时表LSST中,如果重复选题,则系统提示“您已选择此试题!”,否则系统提示“试题添加成功!”。

  (3)生成试卷,系统判断用户设置分数是否与试题总分数相等,是则生成一份完整的试卷,并将试题的“编号”、“难度”、“分值”、“类型”等信息存入数据库表SJT中。且生成“试卷代号、”试卷创建者“,并判断”试卷难度“,存入数据库表SJ中。否则试卷生成失败,提示用户“您生成的试卷分值与设置的试卷分值不等,试卷生成失败!”。

  (4)设置试卷模板。

  (5)预览试卷,系统根据数据库表SJT中信息搜索题库试题内容,并按设置好的试卷模板导入Word中,生成一份完整的试卷,并以*.doc文件的形式保存。

 SHAPE  \* MERGEFORMAT

图4-9  自动生成试卷流程图

手动生成试卷的流程如图4-10所示。

 SHAPE  \* MERGEFORMAT

图4-10  手动生成试卷流程图

  4.6 抽取现有试卷

  为了让用户能很方便的已生成的试卷,本系统增加了抽取现有试卷这个功能模块。用户能通过这个模块能很方便的对现有试卷进行删除和预览,同时也能预览用户所选择的试卷的答案。其主要过程如下:

  (1)用户进入抽取现有试卷界面,系统自动搜索数据库表SJ中信息,显示现有试卷的“代号”,“试卷创建者”,“试卷难度”。

  (2)用户选择一份已有试卷,系统自动从数据库表SJT中搜索该试卷试题的“编号”, “分值”, “难度”。

  (3)预览试卷,系统根据数据库表SJT中信息搜索题库试题内容,并按设置好的试卷模板导入Word中,生成一份完整的试卷,并以*.doc文件的形式打开。

  (4)保存答案,系统根据数据库表SJT中信息搜索题库试题答案,并按试卷模板以 *.doc文件的形式打开。

  (5)删除试卷,系统删除试卷在数据库表SJT中的信息,系统显示“删除试卷成功”。

  抽取现有试卷算法的具体流程可用图4-11直观说明。

 SHAPE  \* MERGEFORMAT

图4-11  抽取现有试卷流程图


  5 关键技术与系统实现

  本系统是一个试卷生成管理系统,重点在于组卷,所以主要是对关于试卷生成的实现的说明。本系统包括抽取现有试卷,自动生成试卷和手动生成试卷三大功能。

  5.1 登录模块

  登录界面是用户最先看到的系统的界面,所以直观上给用户的感觉很重要,所以做一个好的界面,提高软件的亲和力。本管理系统登录界面如图5-1所示。

登陆功能实现的核心代码如下。

图5-1  系统登陆界面

Private Sub cmdOK_Click() ''进入..确定

On Error GoTo Err

    Dim txtSql As String

    UserName = ""

    If Trim(txtUserName.Text) = "" Then ''判断用户名是否为空

        MsgBox "请输入帐号!", vbOKOnly + vbExclamation, "警告"

        txtUserName.SetFocus

        Exit Sub

    End If

    If Trim(txtPassword.Text) = "" Then '判断密码是否为空

        MsgBox "请输入密码!", vbOKOnly + vbExclamation, "警告"

        txtPassword.SetFocus

        Exit Sub

    End If

    ''判断是否有这个用户

    txtSql = "select * from 用户信息表 where 用户名称 = '" & txtUserName.Text & "'"

    If rs.State Then rs.Close

    rs.Open txtSql, CN, adOpenStatic, adLockOptimistic

    If rs.EOF = True Then ''如果没有这个用户

        MsgBox "没有这个帐号,请重新输入帐号!", vbOKOnly + vbExclamation, "警告"

        txtUserName.Text = ""

        txtPassword.Text = ""

        txtUserName.SetFocus

如果输入的用户名和密码正确,将对用户的权限进行判断,如果是管理员就进入到管理员模式;如果是教务管理员就进入到教务管理员模式;如果是教师就进入到教师模式;如果用户没有权限,则会警告。具体代码如下:

        If Trim(rs.Fields(1)) = Trim(txtPassword.Text) Then

        ''判断权限

            UserPrivs = ""

            If Trim(rs.Fields(2)) = "管理员" Then ''管理员权限

                IsUserMode = 1

            ElseIf Trim(rs.Fields(2)) = "教务管理员" Then ''教务管理员权限

                IsUserMode = 2

                ElseIf Trim(rs.Fields(2)) = "教师" Then ''教师权限

                IsUserMode = 3    

            Else ''无权

                IsUserMode = 0

                MsgBox "你没有权限!", vbExclamation, "警告"

                End

            End If

            UserPrivs = Trim(rs.Fields(2))

            UserName = Trim(txtUserName.Text)

            Unload Me

            Mainfrm.Show

            Exit Sub

         rs.Close

    miCount = miCount + 1

    If miCount = 3 Then ''三次错误,自动退出程序

登录系统后进入主界面如图5-2所示。

图5-2  软件主界面

软件主界面是各个功能模块的调用接口,主要有以下功能:

(1)题库已有试卷:点击后进入抽取现有试卷的功能界面。

(2)自动生成试卷:点击后进入自动生成试卷的功能界面。

(3)手动生成试卷:点击后进入手动生成试卷界面。

(4)题库录入: 点击后进入试题录入界面。

(5)数据备份:点击后自动备份数据库。

(6)关于菜单:对于本系统版权的说明。

  5.2 试卷生成管理

  试卷生成管理分为三个部分:题库已有试卷、自动生成试卷和手动生成试卷。下面详细讨论各部分功能的实现。

1.       题库已有试卷

如果题库中已经存在试卷,可以直接从已经存在的试卷中抽取试卷,包括如下操作:

v        试卷预览:通过WORD文档打开试卷,可以浏览已有试卷模版。

v        保存答案:保存所选试卷的答案。

v        删除试卷:彻底清除已存试卷的任何信息。

其界面如图5-3所示。

图5-3  抽取现有试卷

删除试卷的核心代码段如下:

Private Sub Command3_Click() '删除试卷

Dim rst As Recordset

If MsgBox("是否删除该试卷?", vbYesNo, "确认") = vbYes Then

 strSQl = "select * from SJ where SJDH= '" & MStry1.TextMatrix(MStry1.RowSel, 0) & "'"

'确定操作的表和方式

 Set rst = QueryExt(strSQl)

 rst.Delete

 rst.Close

 strSQl = "select * from SJT where SJDH= '" & MStry1.TextMatrix(MStry1.RowSel, 0) & "'"

'确定操作的表和方式

 Set rst = QueryExt(strSQl)

 Do Until rst.EOF

 rst.Delete

 rst.MoveFirst

 Loop

 rst.Close

 MsgBox "删除成功", vbExclamation

 InitGrid1

 InitGrid2

2.       自动生成试卷

自动生成试卷界面下可进行如下操作:

v        生成试卷:系统根据用户要求随机选题,生成试卷。

v        预览试卷:通过WORD文档打开刚生成试卷,可以浏览生成试卷模版。

v        预览答案:通过WORD文档打开刚生成试卷答案,可以浏览试卷答案。

v        保存试卷:保存生成试卷“代号”、“创建者”、“难易度”等信息。

其界面如图5-4所示。

图5-4  自动生成试卷界面

实现该功能的核心代码如下:

Public Function LoadObject() '加载选择题

On Error GoTo DealError

strSQl = "select * from Choice order by BH" '确定操作的表和方式

Set rs = QueryExt(strSQl) '打开纪录集

If rs.RecordCount > 0 Then

rs.MoveFirst

Do Until rs.EOF

If rs.Fields("ND") = 5 Then

int1 = int1 + 1

Else

  If rs.Fields("ND") = 10 Then

   int2 = int2 + 1

  Else

       If rs.Fields("ND") = 15 Then

         int3 = int3 + 1

        End If

rs.MoveNext

Loop

int4 = int1 + int2 + int3

Label10(0).Caption = int1

Label10(1).Caption = int2

Label10(2).Caption = int3

Label10(3).Caption = int4

End If

rs.Close

Set rs = Nothing

Exit Function

DealError:

    ShowError "程序执行出错,错误信息如下:" & vbCrLf & Err.Description

End Function

3.       手动生成试卷

自动生成试卷界面下可进行如下操作:

v       加入试卷:选定加入试卷的题目,并记录其信息。

v        保存试卷:当总分正好100分时,点击保存试卷,生成试卷并保存其信息。

其界面如图5-5所示。

图5-5  手动生成试卷界面

以下为保存试卷功能的核心代码:

Private Sub Command2_Click()

Dim index1 As Integer

RefreshMarks

Summarks=RandChoice.Summarks+RandPragramfilling.Summarks+ andAnswerQuestion.Summarks + RandPargramReading.Summarks + RandPargramDesign.Summarks

If Summarks = Combo1.Text Then

CalTestDifficult

SaveContest '保存试卷,调用函数

MsgBox "保存成功", vbInformation

Else

MsgBox "您设计的试卷与实际总分不合,请修改", vbCritical

End If

4.       生成试卷的模版

生成的试卷必须按照定义的模板保存,图5-6给出了定义的模板示意。

图5-6  生成试卷模版

  5.3 系统中的关键技术实现

  5.3.1 显示教材章节信息供用户使用

  为了显示教材章节信息供用户使用,在数据库里章节的存放是没有规则也即它们的顺序不一定按照真实书本的章节顺序来存储的。但是在显示章节信息的时候必须按照书本的章节顺序来显示。所以特别设置如下的数据类型:

         Dim Sql As String;

Dim rs As String;

论文选择了TreeView控件来显示章节,因为这个控件用起来比较方便。其具体算法代码如下:

If Not TreeView1.SelectedItem Is Nothing Then

      '只响应叶节点(没有孩子)

      If TreeView1.SelectedItem.Children = 0 Then

      Dim Sql As String

      Sql = "select BH,Type,TM,ZJ,ND from " & ItemInfo

      Sql = Sql & " where ZJ= '"

      Sql = Sql & Mid(TreeView1.SelectedItem.Key, 3, 4) & "'"

      Set rs = QueryExt(Sql)

      DataGrid_Object rs, DataGrid1

      Else

5.3.2 手动生成试卷时所选试题的临时保存处理

手动生成试卷时要不断的将用户选择的题目临时存储起来,由于记录的信息不是很多,论文用数组把添加进去的试题的题号和类型存储起来,后面添加的时候检查在数组中是否存在,如果存在就证明已经添加过了。

If ItemInfo = “Choice” Then

If RandChoice.DataExit(DataGrid1.Columns(0).Text) = True Then

Text1(0).Text = Text1(0).Text + 1

RandChoice.TotalNum = Text1(0).Text

RandChoice.KindOfitem DataGrid1.Columns(4).Text ‘判断添加试题难度,并

RandChoice.IncreaseContents

RandChoice.SetContent DataGrid1.Columns(0).Text, Text1(0).Text - 1

MsgBox “添加成功!”, vbInformation

Else

MsgBox “您已经选择了此题!”, vbCritical

5.3.3自动生成试卷时生成一个覆盖知识点广且试题不重复的试卷处理

自动生成试卷时如何生成一个覆盖知识点广且试题不重复的试卷,处理该问题的关键算法在于如何生成一个不重复的随机数序列。产生不重复随机数算法如下:

(1)首先生成随机数

 For index1 = 1 To SJ

  Do While True

  Randomize

  tempid = Int(Rnd() * (sum - 1)) + 1

  flag = True

  For index2 = 1 To index1

   If tempid = RandNo(index2) Then

      flag = False

      Exit For

   Next index2

   If flag = True Then Exit Do

   Loop

   RandNo(index1) = tempid

   Next index1

(2)然后对生成的随机数排序

  For index1 = 1 To SJ - 1

  tempid = index1

  For index2 = index1 + 1 To SJ

  If CInt(Trim(RandNo(index2))) < CInt(Trim(RandNo(tempid))) Then

  tempid = index2

  End If

  Next index2

  temp = RandNo(index1)

  RandNo(index1) = RandNo(tempid)

  RandNo(tempid) = temp

  Next index1

(3)最后将随机号对应的记录集中编号取出

  For index1 = 1 To SJ

  Dim intemp As Long

  intemp = CLng(RandNo(index1))

  rs.Move intemp - 1

  SaveItemSerial(index1) = Trim(rs.Fields(“BH”))

  rs.MoveFirst

  Next index1

  RItem = True

5.3.4数据库的备份与恢复

1)  数据库备份的部分代码

Public Function DBBackUp()

  Dim fs

  Set fs = CreateObject("Scripting.FileSystemObject")

  If fs.FileExists(App.path & "\数据库备份\shijuanbeifen.mdb") Then fs.DeleteFile App.path & "\数据库备份\shijuanbeifen.mdb"

  fs.copyfile App.path & "\shijuan.mdb", App.path & "\数据库备份\shijuanbeifen.mdb"

  MsgBox "备份完成!", 64, "数据库备份情况"

End Function

2)  数据库恢复的部分代码:

Public Function DBRestore()

Dim fs

  Set fs = CreateObject("Scripting.FileSystemObject")

  syscnn.Close

  If fs.FileExists(App.path & "\shijuan.mdb") Then fs.DeleteFile App.path & "\shijuan.mdb"

  fs.copyfile App.path & "\数据库备份\shijuanbeifen.mdb", App.path & "\shijuan.mdb"

  Main

  MsgBox "已恢复上次备份!", 64, "数据库恢复情况"


  6 系统的测试

  6.1 测试方法

  软件测试方法一般分成白盒测试和黑盒测试,其各自具体定义如下:

  1、黑盒测试

  黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
    2、白盒测试
  白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

  6.2 测试配置

1、硬件配置要求:

CPU:P = 2 \* ROMAN II200以上。

内存:256MB以上。

硬盘:2.1GB以上(可用空间最好在160MB以上)。

打印机:推荐EPSON  LQ-1600K = 2 \* ROMAN II

2、软件配置要求:

WINDOWS2000/xp中文版操作系统。

本系统运行:首先启动Windows2000/XP,将本系统拷贝到硬盘相应地目录下,用附加数据库加载上数据,运行“EXE文件”即可。

  6.3 测试目的

  测试在软件开发过程中一直都是备受关注的,即使在传统的软件工程中,也有一个明确、独立的测试阶段。随着软件危机的频频出现以及人们对于软件本质的进一步认识,测试的地位得到了前所未有的提高。测试已经不仅仅局限于软件开发中的一个阶段,它已经开始贯穿于整个软件开发过程,人们已经开始认识到:测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发的下降就会越多。Extreme Programming更是把测试推到了极限的位置,一切软件开发活动都要从首先编写测试代码开始。

  6.4 测试过程

  本系统各功能已经了解清楚,所以对其进行黑盒测试。黑盒测试主要是对软件进行功能测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。

  6.4.1 测试抽取现有试卷模块

表6.1  抽取现有试卷模块用例表

第一个用例是测试系统的预览试卷功能,其测试结果为如图6-2所示。

图6-2  使用第一个用例后

第二个用例是测试系统的删除试卷功能,其测试前为如图6-3,测试结果为图6-4所示。其过程显示删除试卷功能运行正常。

图6-3  使用第二个用例前

图6-4  使用第二个用例后

通过测试用例可知抽取现有试卷模块的删除试卷和试卷预览功能运行正常。

6.4.2 测试自动生成试卷模块

表6.2  自动抽取试卷模块用例

图6-5  使用第一个用例后

图6-6  使用第二个用例后

通过测试用例可知,试题的总分要与用户设置的试题总分要相等才能生成试卷,否则提示“你设计的试卷与试题总分不合”,生成试卷失败。

6.4.3 测试手动生成试卷模块

表6.3  手动生成试卷模块

第一次添加试题后,测试结果如图6-7所示。

图6-7  使用第一个测试用例后

第二次添加同一试题后,测试结果如图6-8所示。

图6-8 使用第二个测试用例后

  通过测试用例可知,手动生成试卷模块中,如果用户重复选择同一题,则系统提示“您已经选择了此题”,添加试题失败,避免同一题被多次选入同一份试卷中。

  由对各个模块的功能测试可知,本系统各种功能都能正常使用,对于各数据的关系也处理的很准确,具有了一定的实用性。


  结束语

  本软件的设计目的是在题库建立维护和试卷生成方面为教学单位和人员提供方便和帮助。通过这几个月的毕业设计,我学到很多以前没有学到的VB开发技术,在软件工程学上更是取得了很大的进步。经过大量的测试和试用,作者深信本软件达到了方便和实用的设计目的,并在软件界面和易用实用等方面有着独到之处。

  总的来说,在这次的毕业设计种遇到了不少的问题,大部分得到了很好的解决,但也有少部分遗留的问题。

  首先便是调研的不充分。由于以前根本未曾接触过软件的整体开发设计,所以在前期的调研中相当不充分,开题也有些盲目,以为把属性和表写得越多越好,这个问题越到后来越严种,而且因为客观的原因耽误了进度,因而对开题做了修改。

  其次是软件的编程问题,由于以前对VB只是了解并不能够灵活运用,所以在毕设期间进行了苦读,终于可以基本掌握了常用控件的用法和语句编程。

  然后就是从一而终的问题了,在开发过程中我遇到了许许多多的问题,很多地方都不明白,经常有打退堂鼓的想法,我经常的请教同学,最后的成果虽然不很完美,但我尽力了,并有所收获。

  虽然软件基本达到设计要求并且达到同行的先进水平,但由于作者水平有限,软件存在bug也是在所难免的 ,您的意见和建议将极大的帮助我改进并完善软件。真诚的希望你的参与。


参考文献:

[1].C.J.Date , 《Database system implementation》,北京:出版社, 2000

[2].Hector Garcial-Molina , Jeffrey D.Ullman, Jennifer Widom,《An introduction to Database Systems(Seventh Edition), 机械工业出版社,2001

[3].林陈雷, 郭安源, 葛晓东, 《信息化系统开发实例导航》 , 人民邮电出版社,2003

[4].张立科,《数据库开发技术与工程实践》,人民邮电出版社,2004

[5].张红军, 王虹 等 《Visual basic 6.0 中文版高级应用与开发指南》, 人民邮电出版社, 2002

[6].伍俊良 主编 等 《VB课程设计与系统开发案例》清华大学出版社, 2002

[7].姚巍,《Visual Basic数据库开发及工程实例》,人民邮电出版社,2003

[8].求是科技,《Visual Basic 6.0 数据库开发技术与工程实践》,人民邮电出版社,2004

[9].刘瑞新,汪远征,《Visual Basic程序设计教程》,机械工业出版社,2001

[10].刘萌,周学明,郭安源,《Visual Basic企业办公系统开发实例导航》,人民邮电出版社,2003

[11].孟小峰,王珊,《数据库系统导论》,机械工业出版社,2000

[12].张海藩,《软件工程导论》,清华大学出版社,2003               

【试卷生成系统】相关文章:

试卷智能生成系统设计vb+SQL03-08

基于Delphi的试卷智能生成系统设计Delphi+SQL11-23

学生成绩管理系统的开发03-17

学生成绩管理系统的设计与实现03-18

谈学生成绩管理系统的开发03-20

一种支持动态网站生成的模型与系统03-04

多媒体课件的生成与再编辑系统研究与设计03-19

研究草地火灾生成原因及火管理系统的应用03-18

在质疑中生成智慧03-08