试卷自动生成系统毕业论文_第1页
试卷自动生成系统毕业论文_第2页
试卷自动生成系统毕业论文_第3页
试卷自动生成系统毕业论文_第4页
试卷自动生成系统毕业论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山西信息职业技术学院毕业论文(设计)试卷自动生成系统论文指导教师 信息管理系 学生所在系部 信息管理系 专业名称 软件技术 论文提交日期 2013年3月20日 论文答辩日期 2014年03月25日 2014年03月25 日试卷自动生成系统 摘 要运用可视化delphi开发出试题自动生成系统.利用其提供的各种面向对象的开发工具, 建立系统应用原型,然后进行需求迭代,不断修正和改进,直到形成满意的可行系统。该系统结构良好、使用方便,题库数据输入简单,系统能够实现人工选题和随机抽题两大功能. 包括后台数据库的建立、维护以及前端应用程序的开发两个方面。该系统有安全的用户登录模块、方便快捷的浏览界面、易

2、于操作的功能模块。本文的分析基于知识点的试题库结构基础上,阐述以知识点难度系数和题型为主要控制参数的组卷算法的建立与实现方法。该系统的运用不仅提高了教师的工作效率,而且可以实现真正意义上通用性。 【关键词】delphi; sql server; 试题自动生成系统title:papers automatically generated systemmajor:software technologyname: signature: supervisor: signature: abstractth using visual delphi to develop the automatic gener

3、ation of test system. its use of the various object-oriented development tools, the establishment system application prototype, then carries on the demand iteration, and constantly revised and improved, until the formation of a viable system satisfaction. the structure of the system is good, easy to

4、 use, simple data entry questions.browse function module interface is easy to operate the system user login module, safe and convenient. this paper based on the analysis of the structure of examination database based on knowledge points, set forth the method and implementation of test paper generati

5、ng algorithm based on knowledge difficulty coefficient and the topic as the main control parameters. the appli. the application of this system can not only improve the teachers working efficiency, and can achieve the true sense of universal. 【key words】delphi; sql server目 录 1 概述12 数据库理论基础和开发工具12.1 数

6、据库理论基础12.1.1 数据库管系统22.1.2 数据库系统设计22.1.3 数据库设计范式分析32.2 数据库开发工具42.2.1 基本数据库组件42.2.2 delphi 7.0 的一些控件52.3 sql 语言在delphi中的运用53 通用试卷生成系统的定义73.1 问题的定义73.2 可行性分析83.3 需求分析103.3.1 题库管理103.3.2 试卷管理103.4 系统总体结构设计123.5 试题设计流程图如下:124 前台用户部分模块设计134.1 用户登录窗口设计134.2 主界面设计134.3用户管理144.4权限管理144.5密码管理154.6数据备份和数据还原154

7、.8 数据库部分表的列举164.9 试卷生成175 主要功能的实现代码175.1用户登入功能的实现代码175.2 数据备份的实现代码205.3 试卷自动生成的实现代码( 部分)215.4 本章小结276 总结27参考文献28致 谢291 概述 随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。在计算机飞速发展的今天,简化试卷的手工操作势必所然,。所以如何设计好仓库管理系统,尽可能地减少仓库管理的重复性和低效性就成为当前最为重要的问题。图书仓库管理的核心是

8、入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。另外,员工信息和供应商信息管理也是仓库管理中一个必不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完整,更加实用。通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。2 数据库理论基础和开发工具2.1 数据库理论基础 数据库处理在信息系统的研究中一直是非常重要的主题,然而,近年来,随着world wide web(www)的猛增及inter

9、net技术的迅速发展,使得数据库技术之时成为最热门技术之一。数据库技术能使internet应用超越具有早期应用特点的简单的发布。同时,internet技术提供了一种向用户发布数据库内容的标准化的访问方法。这些技术没有脱离经典数据库技术的要求。它们只是加重了数据库技术的重要性。 数据库的设计和开发及包括艺术有包括工程。理解用户的需求,然后,把它们转变为有效的数据库设计是一个艺术过程。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用,是一个工程过程。 数据库的目的是帮助人们跟踪事务。经典的数据库应用涉及诸如订单、顾客、工作、员工、学生、电话之类的项,或其它数据量较大、需要密起关注

10、的事务。最近,由于数据库的普及,数据库技术已经被应用到了新的领域,诸如用于internet的数据库或用于公司内联网的数据库。数据库也被越来越多地应用于生成和维护多媒体应用程序上。2.1.1 数据库管系统 数据管理系统(dbms)是用描述、管理和维护数据库的程序系统,是数据库系统的核心组成部分。它建立在操作系统的基础上,对数据库进行统一的管理和控制。其主要功能有:1) 描述数据库:描述数据库的逻辑结构、存储结构、语义信息和保密要求等。2) 管理数据库:控制整个数据库系统的运行,控制用户的并发性访问,检验数据的安全、保密与完整性,执行数据的检索、插入、删除、修改等操作。3) 维护数据库:控制数据库

11、初始数据的装入,记录日志,监视数据库性能,修改更新数据库,重新组织数据库,恢复出现故障的数据库。4) 数据通信:组织数据的传输。2.1.2 数据库系统设计在软件需求分析阶段,搞清楚了软件“做什么”的问题,形成了目标系统的逻辑模型。现在我们所要做的就是要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求。首先,我们需要描述的是系统的总的体系结构(1) 数据库模块设计:系统的概要设计中最重要的就是系统模块化设计。模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求

12、的功能。将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。(2) 数据表设计: 数据表的设计是指设计数据库中表的结构,数据表的逻辑结构包括:属性名称,类型、表示形式、缺省值、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为了使效率高,规范化程度应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数

13、据的字段或临时数据表。(3) 存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。(4) 数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据完全。2.1.3 数据库设计范式分析建立起一个良好的数据指标体系,是建立数据结构和数据库的最重要的一环。一个良好的数据指标体系是建立db的必要条件,但不是充分条件。我们完全可以认为所建指标体系中的一个指标类就是关系数据库中的一个基本表,而这个指标类下面的一个个具体指标就是这个基本表中的一个字段。但如果直接按照这种方式建库显然还不能算最佳。对于指标体系中数据的结构在建库前还

14、必须进行规范化的重新组织。 在数据的规范化表达中,一般将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(data element),这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在规范化理论中表是二维的,它有如下四个性质: 在表中的任意一列上,数据项应属于同一个属性(如图中每一列都存放着不同合同记录的同一属性数据)。 表中所有行都是不相同的,不允许有重复组项出现(如图中每一行都是一个不同的

15、合同记录)。 在表中,行的顺序无关紧要(如图中每行存的都是合同记录,至于先放哪一个合同都没关系)。 在表中,列的顺序无关紧要,但不能重复(如图中合同号和合同名谁先谁后都没关系,但二者不可重复或同名)。 在对表的形式进行了规范化定义后,数据结构还有五种规范化定义,定名为规范化模式,称为范式。在这五种范式中,一般只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容”的,即满足第五范式的数据结构自动满足一、二、三、四范式,满足第四范式的数据结构自动满足第一、二、三范式,依此类推。 第一范式(first normal form,简称1st nf)就是指在同一表中没有重复项出现,如果有则应将重复

16、项去掉。这个去掉重复项的过程就称之为规范化处理。在本文所讨论的开发方法里,1st nf实际上是没有什么意义的。因为我们按规范化建立的指标体系和表的过程都自动保证了所有表都满足1st nf。 第二范式(second normal form,简称 2nd nf)是指每个表必须有一个(而且仅一个)数据元素为主关键字(primary key),其它数据元素与主关键字一一对应。例如,在图l9.7中如果我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知道了一个合同记录的合同号,就可以唯一地在同一行中找到该合同的任何一项具体信息。通常我们称这种关系为函数依赖(f

17、unctional dependence)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。 第三范式(third normal form,简称 3rd nf)就是指表中的所有数据元素不但要能够唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足了 2nd nf的数据结构来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。 为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。2.2 数据库开发工具 delphi类可以粗略地分成两部分

18、:一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。在delphi中,每一个类的祖先都是tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为tobject类。这样,按照面向对象编程的基本思想,就使得用户可用tobject类这个类型代替任何其它类的数据类型。实际上在delphi的类库中,tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果

19、不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。2.2.1 基本数据库组件用delphi 7.0 开发数据库应用,重点是和各种数据库组件打交道,数据集是一组离散的数据记录的集合。在delphi中,数据集有3种表现形式:表,查询,存储过程;3种形式的数据集分别用ttable,tquery,tstoredproc来操纵。而ttable,tquery,tstoredproc的直接上级是tdbdataset,tdbdataset而是从tdbedataset派生的,而tdbedataset又是从tdataset派生的。这些数据集之间的继承关系如下图所示tdatasettcli

20、entdatasettbdedatasettcustomadodatasettadodatasettnestedtabletbdedatesettadotabletquerytadoquerytstoredproctadostoredproc2.2.2 delphi 7.0 的一些控件(1) 数据控制类datacontrol (2) 数据访问类dataaccess2.3 sql 语言在delphi中的运用 在delphi中使用sql语言非常方便,一般来说,都是通过tquery组件来使用sql语言的。可以在tquery组件的sql属性中设置sql语句。设计程序时,在该组件的属性对话框中选择sql

21、属性,单击带省略号的按钮,就可以打开string list editor对话框,然后我们就可以在对话框中添加sql语句。还可以使用delphi的sql builder来自动生成sql语句,这样可以避免手工编写sql而可能造成的语法错误。 静态sql语句在程序设计时便已固定下来,它不包含任何参数和变量。 动态sql语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态sql语句: select * from students where studentcode =: studentcode; 其中的变量studentcode便是一个参数变量,它由一个冒号引导,

22、在程序运行过程中,必须要为该参数赋值,该条sql语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。为参数赋值有三种方法:根据参数在sql语句中出现的顺序,设置tquery部件的params属性值为参数赋值。直接根据sql语句中各参数的名字,调用parambyname方法来为各参数赋值。将tquery部件的datasource属性设置为另一个数据源,这样将另一个数据源中与当前tquery部件的sql语句中的参数名相匹配的字段值赋给其对应的参数。利用这种方法也能实现所谓的连接查询,创建主要明细型数据库应用。 在程序运行过程中,要想设置tquery部件的sql属性,必须首先调用clo

23、se方法,关闭tquery部件,然后再调用clear方法清除sql属性中现存的sql命令语句, 最后再调用add方法为sql属性设置新的sql命令语句。例如:query1.close 关闭query1)query1.sql.clear 清除sql属性中的sql命令语句query1.sql.add(select * from students);query1.sql.add( where name =lucy ); 在为tquery部件设置sql属性时调用close方法总是很安全的,如果tquery部件已经被关闭了,调用close方法时不会产生任何影响。在应用程序中为sql属性设置新的sql 命

24、令语句时,必须要调用clear方法以清除sql属性中现存的sql命令语句,如果不调用clear方法,便调用add方法向sql属性中设置sql命令语句,那么新设置的sql命令语句会追加在现存sql命令语句后面, 在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。 在这里要特别注意的,一般情况下tquery部件的sql属性只能包含一条完整的sql语句,它不允许被设置成多条sql语句。当然有些数据库服务器也支持在tquery部件的sql属性中设置多条sql语句,只要数据库服务器允许这样,我们在编程时可以为 sql 属性设置多条sql语句。在为tquery部件设置完sql属性的属性值之后,

25、也即编写好适当的sql程序之后,可以有多种方式来执行sql程序。 在设计过程中,设置完tquery部件的sql属性之后将其active属性的值置为true, 这样便可以执行sql属性中的sql程序,如果应用中有与tquery部件相连的数据浏览部件( 如tddgrid tdbedit等)那么在这些数据浏览部件中会显示sql程序的执行结果。 在应用程序运行过程中,通过程序调用tquery部件的open方法或execsql 方法可以执行其sql属性中的sql程序。open方法和execsql方法是不一样的。open方法只能用来执行sql语言的查询语句(select命令), 并返回一个查询结果集,而e

26、xecsql方法还可以用来执行其它常用的sql语句(如insert, update, delete等命令),例如: query1.open (这样会返回一个查询结果集) 如果调用open方法,而没有查询结果时,会出错。此时应该调用execsql 方法来代替open方法。如: query1.execsql (没有返回结果) 当然在设计应用程序时,程序设计人员是无法确定tquery部件中的sql 语句是否会返回一个查询结果的。对于这种情况应当用tryexcept模块来设计程序。在 try 部分调用open方法,而在except部分调用excesql方法,这样才能保证程序的正确运行。 delphi中

27、用adoquery来使用sql语句同样十分方便。在adoquery组件中首先通过connectionstring属性值来联接数据源,然后就通过双击sql属性值来写入sql语句。在delphi中调用数据库,就可以调用adoquery组件,通过修改其中的sql属性中的sql语句来实现对数据库的各项操作。 值得注意的是,adoquery组件只有在激活的情况下才可以被正确地使用,这样就提出了一个问题,也就是说,在每次修改adoquery组件的sql属性时都必须先行进行关闭,待清除掉sql中所有的sql语句后才可以添加新的sql语句。而且,在每一次修改完成以后,还应该记得重新将adoquery激活。其它

28、的使用方法与ttquery有许多的相似之处。2.4 本章小节 本章主要介绍了数据库的理论基础、数据库的开发工具delphi和sql语句在delphi中的使用方法,数据库理论基础分析了数据库的设计过程中要遵守的规则和设计方法。数据库开发工具主要介绍了delphi的特点和delphi的dbe控件组,另外还简要介绍了sql 在delphi中的运用。3 通用试卷生成系统的定义3.1 问题的定义 随着教育教学改革的不断深入,教考分离!试卷规范化!标准化的呼声越来越高。如何实现之是许多教育工作者潜心探讨的问题。而伴随着国家对教育发展投入的力度不断加大和全社会信息化水平的不断提高,各级各类学校基本具备了实现

29、现代化信息管理的物质基础。因此,采用计算机信息管理系统来解决,教考分离,试规范化。标准化的问题是一种行之有效的方法它不仅可以减轻人员的重复劳动,提高工作效率,更是各学校实现考务自动化,管理数字化!信息化的标志。基于上述原因,本文给出了一个通用试卷生成系统的设计方案。其系统应包含以下特点与功能:1、 用sql server数据库,nt4.0或者windows98操作系统以上。题库可以自由维护、扩充,题库大小只受物理限制的存储容量。2、 限分明的管理操作系统,支持按操作者及题库权限进行操作,确保题库的公共性与私有性。3、 题支持单项选择题,判断题,填空题,编程题等题型,用户可以自由设置题型,试题内

30、容包括内容,标准答案等属性,提供可以自由设置的试卷分类;多种试卷生成方式,可以设定参数自动生成或者手工选择试题,题库中自动抽取指定数量的试题或手工选取试题,也可以从某题库中每个题型各抽取多少分的试题,或者从多个题库中分别抽取指定数量的试题合成试卷,试卷生成的方式可以带答案、解答。4、 义的试卷可以重新编辑、排序、删除、调整,可以自动生成一份文档,也可以把现有的文档资料存到系统里,内容不受限制。3.2 可行性分析 通用试卷生成系统是一个具有题库管理功能和出卷功能系统。可以将该系统分为题库管理系统和出卷系统两个模块来做,其中出卷系统又分为手工出卷和自动出卷两个子模块。题库管理模块应具有:查看题库,

31、修改题库、新增题目、删除题目、章节管理、题型管理的功能。手工出卷让用户自己选择试题,当用户选择的试题存在重复(例如,同一道题选择了两次)或者有内容冲突(例如,同一知识点,在选择题中出现,又在填空题中出现)时,要能提示用户。自动出卷则是通过用户选择的生成试卷的条件,随机地选择试题,自动完成试卷的生成。这种试题库系统的基本思想是按照“知识点”来构建试卷,主要是思路是依据教学大纲的要求,以课程的主干内容为主线,先把教学内容细致分解为一个个知识点,然后按大纲对各个知识点的要求掌握的层次,与题型、题量、难易度及各知识点间的馆包容性结合起来,作为该试题库系统构建试题的基本原则,以便计算机自动生成每份试卷、

32、在考查点的分布上具有较强的科学性。要实现基于知识点的试题库系统的试卷建构,首先必须研究从知识点角度对试题如何进行分类,并结合试题的类型赋予各种特征参数,使试题库编程符合科学化与规范化的要求。因此,参数的设置是否合理,对能否体现基于知识点建构试卷的思想.所建构试卷的质量,编程的工作量及运行效率都是直观重要的。试卷生成模块是整个题库管理系统的核心。本系统的组卷是采用交互方式,即用户在输入各种要求后,系统会自动生成一份符合要求的试卷。组卷过程中系统会向用户依次询问以下信息:(1) 要生成的试卷满分分数(2) 是否考所有章的内容,若只是考部分章内容,还应输入所考章的章号;(3) 将系统试题库表中该门课

33、程所用全部题型列表显示,供用户选择。(4) 具体输入所考类型的代号,该类型的题目数目以及该类型题所占分数;(5) 将每种题型的题数分配到各章节;(6) 输入本试卷整体的难度系数; 所有上述参数有效输入后,确信在题库中满足上述条件的题目数目量足够的情况下即可生成 一份试卷来。抽题组卷是系统的关键,如何设计 一个算法一定能抽出满足要求的试卷,这是一个非常复杂的问题,从大纲对各个知识点所要求掌握的层次、题型、题量、各知识点之间的包容性,及考查点分布的科学性等角度来看,现有的试卷生成系统并不能完全达到教学基本要求,有待进一步研究。题库查询和统计模块能够及时地查询和统计现在题库中试题的数量,为题库的扩充

34、和更新提供了很好的参照。由上述需求可以画出数据流程图。为了表达较为复杂问题的数据处理过程,用一张数据流图是不够 的,要按照问题的层次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。在这里一共使用了两层数据流图,即顶层图和底层图。它们是系统的关键部分,也是主要的部分。通过以上对数据流图的分析之后,我们已大体地了解了系统的功能和目标,接下来所要做的就是系统功能模块的划分和数据库的设计,也就是系统的概要设计。该系统分为两个子系统:题库管理系统和试卷生成系统。经过对系统的分析首先得到系统流程图如下:事务事务事务事务 试卷生成程序题库题库管理程序试卷操作记录3.3 需求分析本系需要实现以下一些

35、基本功能:3.3.1 题库管理试题管理的主要目的是维护题库中已有的试题及各项参数输出及题库查询。其中包括题库编辑、题库排序、题库查询。题库编辑;其内容包括新建题库,已存在题库的内容修改和增添、删除以及旧题库文件的删除这部分是对基本库文件直接进行操作,特别是删除操作,对库文件的潜在危害极大。因此应防止因用户误操作而对文件造成的损坏。题库查询:要编制试卷首先要清楚各个基本库文件中的试题分布情况,因此要对基本库文件做查询,将查询反馈给出卷者(用户),出卷者再根据库中试题分步情况来选题。3.3.2 试卷管理 该模块可根据要求实现试卷的自动/手工出卷自动生成的试卷试题由系统随机抽取,由于题库中的试题按照

36、题目的难易程度分类,故随机抽出的试题难易适中,既可满足一般考试的要求又避免了人为因素,增强了试卷的可信度。尽管自动生成试卷符合规范化考试的要求,但为了满足不同用户的特殊需要,特设置了手工出卷的操作,这样就增加了系统的通用性与灵活性。此外,该模块还可根据用户的查询要求生成关于试卷情况的文档。(1)试题编辑模块 本模块的主要功能是录入试题,同时可对试题内容进行编辑和修改。(2)试题编号的生成 试题库中的试题编号是区别试题的重要标志,因此必须保证试题编号的唯一性。为防止由于试题录入者的错误录入而造成的系统出错,同时减轻试题录入者的工作量,试题编号将由系统自动给出。在录入新试题时,系统给出的试题编号为

37、当前题库中的试题数加一。 (3)试题的录入 在连续录入试题时,试题的科目、题型、知识点等字段的值往往会重复出现,因此系统将保留前一题录入的某些字段值,以提高试题录入效率,减轻试题录入者的工作量。 (4)试题查询模块 本模块的主要功能是按照用户设置的查询条件对试题进行快速查询。用户可以根据科目、试题题型、试题难度、试题使用情况、试题编号以及试题知识点,来查询试题的内容、答案等信息。 (5)试题删除模块 本模块的主要功能是对一些旧题、错题进行逻辑删除或对已被逻辑删除的试题进行撤消删除操作。在试题录入过程中,系统自动生成的试题编号为题库中的试题数加一,因此如果随便对试题进行物理删除,题库中的试题编号

38、将会出现重复的情况,这是系统所不允许的。为解决这一问题,我们在题库中设置了一个“删除记号字段。当字段值为.t.时,表示该题已被逻辑删除;当字段值由.t.变为.f.时,表示对已被删除的试题进行撤消删除操作。(6)试卷生成与管理模块本模块完成试卷的组织与生成、查阅与打印及编辑功能。(7)试卷组织与生成模块本模块的主要功能是组织试卷结构,生成一份完整的试卷。(1)试卷的结构组织 一份试卷主要是由试卷标题、试卷内容及试卷答案三部分构成。其中试卷内容为试卷的主体,包含若干大题,每一大题中又有若干小题。由于试卷的大题数一般不会太多,因此在本系统中,我们规定大题数的上限为10。(2)试卷的选题 出卷者给出试

39、卷选题的要求,如试题的题型、难度等,系统将根据这些要求,从题库中找出满足条件的试题,并从中进行随机选题。如果出卷者对选题结果不满意,可以让系统重新选题或对个别试题进行调整。(8)试卷查阅与打印模块 本模块的主要功能是对历届的试卷进行查阅和打印。 (1)试卷查阅的安全性问题 (2)由于本系统允许有多个用户,所以需要采 取必要的措施,使任何一位用户所出的试卷不能被其他用户看到。在试卷的查阅过程中,如果将使用过的试和未使用过的试卷混在一起进行查阅,将是一种很不安全的做法。因此,本系统将自动隐藏未曾使用过的试卷用户如果希望对这些试卷进行查阅,就必须通过身份验证。3.4 系统总体结构设计 通用试卷生动生

40、成系统从功能上分为几大模块: 系统管理模块又分为用户权限的分配,赋予权限、修改密码,新增用户四个模块;试卷模块主要分为两大分支,手动生成试卷和自动生成试卷两大类,不同的题目对应不同的题型,根据不同的题型选择不同的数据源,最后显示在同一个表上。要改善的题库管理模块又分为题库的修改模块(包括增加、删除、编辑、新题录入)、查询模块,查询题库时可选择多条件查询,精确查询和模糊查询,细分模块,添加细节。比如,又将修改界面中其分为增加题目,修改题目信息、删除。试卷管理模块又分为题库自动生成模块、手动生成模块、试卷修改模块、试卷删除模块、试卷预览模块。3.5 试题设计流程图如下: 定制试卷题型分数自动生成-

41、章节选择-难度选择-试卷生成浏览-答案生成查看3.6数据模块窗体及bde的设置 本系统使用了一个数据模块窗体,这个数据模块窗体继于tdatamodule。在本系统中所有的数据存取组件和数据源组件都在此数据模块中进行了定义。在编写数据库应用程序时,经常要遇到这样的情况,即多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工作,而且要保证这些数据源的确是相同的也需花一番功夫。数据模块就把这些数据源集中管理做成的一个统一的模块,需要时就将该模块引入而不必直接操作数据源本身。简单说来,数据模块是用来集中管理数据源的一个窗体。该窗体可在需要的地方随时引入,不过一定要

42、的是在使用该数据组件时须在uses中加入该数据模块单元。4 前台用户部分模块设计4.1 用户登录窗口设计登陆模块供用户登陆进入系统使用,用户首先选择用户,只有当密码符合时,用户才被允许进入系统,实现方法是对用户表进行遍历搜索,若存在记录满足用户输入的密码,则打开主窗体,并记录登陆事件和相应资料。当密码三次输入错误时就退出。主要使用了ttable 的locate()方法。当输入的密码正确下,登陆窗体就将主窗体可以显示的标志为真,同时,把登陆人的号码和登陆人的姓名也传到主窗体中,作为其它的功能条件。如下图:4.2 主界面设计 主窗体在一定的程度是存放打开各功能菜单的一个窗体,按照设计,不同的用户登

43、陆能使用不同的菜单。在窗体显示的时候,就对用户进行权限检查,并打进相应的菜单,具体是根据登陆时传来的用户号,再读取数据库的权限来进行相应的操作。如下图: 4.3用户管理对该系统的所有用户进行管理包括删除用户名、添加用户名等。4.4权限管理该模块是选择一般用户所具有的功能,而管理员享有系统的所有功能。4.5密码管理 对一般用户和管理员的密码进行修改。4.6数据备份和数据还原该模块提供数据库的备份功能,并可根据用户的实际需要自行恢复,提高使用的方便性。 4.7 数据库表的设计思路 由于数据库中有大量复杂的数据,因此对于表的设计应特别注意,表的个数尽量少,表中属性应尽量直观,数量也要适中,因为要考虑

44、选题的多样性和自动生成的随机性,各个表之间有关联的情况要尽量少,这样就可以在对各个表操作时,保证数据的正确性。 4.8 数据库部分表的列举(1)系统用户表:列 名数据类型长度允许为空主键id char10yesnomi char6yesnoqx char1yesno(2) 题库结构的组成:列 名 数据类型 长度 允许为空主键 tno int4yesyestiganvarchar500yesnoxavarchar100yesnoxbvarchar100yesnoxcvarchar100yesnoxdvarchar100yesnoanswerchar1yesnoscoretinyint1yesno

45、difficultychar1yesnonotevarchar200yesno4.9 试卷生成试卷生成主要有两种方式:手动生成试卷和自动生成试卷。手动生成试卷让用户通过浏览题库,自己选择题目,当用户选择的试题重复时(比如:同一知识点在选择题中出现后,又在填空题中出现),系统要能自动检测出冲突,让用户重新选择。并在选择的过程统计各种题型的数目及分值,并总计题量及总分。、自动生成试卷通过设置向导设置条件,调用自动生成试卷程序生成试卷。整个过程如下:先让用户选择各种题型的分值,接着是选择考试的章,然后设置各个章的分值,最后再设置试卷的难度值。接着调用自动生成试卷算法来生成试卷,生成的试卷可以通过试卷

46、预览来查看,还可能根据需要打印试卷。5主要功能的实现代码5.1用户登入功能的实现代码用户登入主要代码实现:procedure tloginform.bitbtn2click(sender: tobject);beginif (messagedlg(确认要退出系统吗 ?,mtconfirmation,mbyes,mbno,0)=mryes thenapplication.terminate;end;procedure tloginform.formcreate(sender: tobject);beginflash:=false;t:=0;query1.close;query1.sql.clea

47、r;query1.sql.add(select * from u);query1.open;while not query1.eof dobegincombobox1.items.add(trim(query1.fieldbyname(id).asstring);query1.next;end;end;procedure tloginform.bitbtn1click(sender: tobject);beginquery1.close;query1.sql.clear; query1.sql.add(select * from u where id=:p1 and mi=:p2); quer

48、y1.params0.asstring:=combobox1.text; query1.params1.asstring:=edit1.text; query1.open; inc(t); if query1.recordcount0 then begin mainform.username:=combobox1.text; mainform.password:=edit1.text; mainform.statusbar1.panels1.text:=当前用户:+ combobox1.text; if query1.fieldbyname(qx).asstring=b then begin

49、if rightform.checkbox1.state=cbchecked then mainform.n3.enabled:=true else mainform.n3.enabled:=false; if rightform.checkbox2.state=cbchecked then mainform.n18.enabled:=true else mainform.n18.enabled:=false; if rightform.checkbox4.state=cbchecked then mainform.n6.enabled:=true else mainform.n6.enabl

50、ed:=false;if rightform.checkbox5.state=cbchecked then mainform.n7.enabled:=true else mainform.n7.enabled:=false; if rightform.checkbox7.state=cbchecked then mainform.n10.enabled:=true else mainform.n10.enabled:=false; end; if query1.fieldbyname(qx).asstring=a then begin mainform.n3.enabled:=true; ma

51、inform.n6.enabled:=true; mainform.n7.enabled:=true; mainform.n10.enabled:=true; mainform.n18.enabled:=true; end; havelogin:=true; loginform.close; end else begin showmessage(密码输入错误,请重新输入!); if t=3 then begin messagebox(handle,输入密码错误超过三次,程序退出!,信息,mb_ok); close; application.terminate; end else begin e

52、dit1.text:=; edit1.setfocus; end; end; end;procedure tloginform.edit1keydown(sender: tobject; var key: word; shift: tshiftstate);beginif key=13 thenbitbtn1click(sender);end;procedure tloginform.formshow(sender: tobject);begin edit1.setfocus;end;5.2 数据备份的实现代码procedure tbackupform.bitbtn1click(sender:

53、 tobject);varfailure:boolean;beginfailure:=false;if not copyfile(d:delphizydataa,pchar(trim(edit1.text),false) then failure:=true;if failure thenshowmessage(数据备份没有成功!)elseshowmessage(数据备份成功!);end;procedure tbackupform.speedbutton1click(sender: tobject);beginif savedialog1.execute thenedit1.text:=savedialog1.filename;end;procedure tbackupform.bitbtn3click(sender: tobject);vari:string;failure:boolean;beginfailure:=false;i:=extractfilepath(application.exename);if not copyfile(pchar(i+abao)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论