考试题目录入系统

目 录

摘  要

ABSTRACT

第一章 绪论

1.1 题库定义

1.1.1 试题库建设及在国内外的发展及研究状况

1.1.2 试题库建设及组卷系统的发展趋势

1.2 开发工具VISUAL BASIC 6.0

1.2.1 Visual Basic 6.0的特点

1.2.2 Visual Basic 6.0的运行环境

1.3 数据库基础

1.3.1 数据库的设计

1.3.2 Microsoft Access介绍

1.4 论文结构

第二章 试题库系统的开发

2.1 题库总体数据结构

2.1.1 题库开发的原因

2.1.2 题库总体数据结构定义

2.1.3 在实际中的应用

2.1.4 设计时需考虑的问题

2.2 系统开发

2.2.1 模块分析

2.2.2 数据库的建立

2.2.3 试题库管理系统总流程图

第三章  试题库系统

3.1 题库介绍

3.1.1 运行环境

3.1.2 题库组卷功能的实现

3.1.3 题库打印功能的实现

3.2 系统的功能和使用方法

3.2.1 欢迎界面

3.2.2 主界面

3.2.3 手工组卷菜单

3.2.4 查询菜单

3.2.5 试题维护菜单

3.2.6 用户管理界面

3.2.7 修改密码菜单

3.2.8 打印菜单

3.2.9 系统菜单

第四章  试题库系统的测试

4.1 软件测试

4.1.1 软件测试的基本概念

4.1.2 软件测试的任务

4.1.3 软件测试基本原则

4.3 试题库测试

4.3.1 边编写代码边测试

4.3.2 窗口代码完成后统一测试

4.4 运行与维护

4.4.1 程序打包

4.4.2 运行

第五章 总结

5.1 本试题库优点

5.2 不足之处

5.3 展望

参考文献

致谢

附录

考试题目录入系统的设计与实现

摘 要:一般情况教师想出一份试卷,是从几本相关的书里把题一道一道挑出来。这样即费时又费力,而且很难保证试题的覆盖面和把握好试卷的难度。正是为了能够帮助教师轻松的出一份高质量的试卷而开发了本软件。

利用现代电脑功能强大、运算速度快的优点,试题库管理系统可对试题实行科学、集中、有序、有效的管理。组卷灵活、更新方便、查询快捷还可在组卷结束后通过打印机直接打印成试卷,大大降低了劳动强度,需用密码登录系统,具有一定的安全性。

本试题库系统的开发,是为了方便管理、抽取试题,减轻教师的负担。其在学校具有很大的应用价值。它除了具备试题库必备的入库、组卷、维护和打印功能,还具有密码保护机制的用户登录,试卷查询,试题查询,用户管理和密码修改等功能。

它具有保密性、操作简便、易于使用、抽题时具有很大的随机性以及具备打印功能等特点。在开发软件的同时,使本人掌握了软件开发的基本知识,以及学到解决问题的方法。

本软件是以Win2003为平台,Visual Basic 6.0为软件开发工具编写而成的。本软件的通用性很好,可以在大多数操作平台上使用。

关键词:试题库,试题库管理,组卷,打印

Test directory into system design and implementation

Abstract: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 thinks out a high quality paper is the destination of develop this software.

Making use of the powerful function and high speed computing advantages of modern computers, the test bank management system can be implemented on the test of science, focused, orderly and effective management. Flexible, easy to update, query quickly, after the end of test papers can also print directly through the printer to papers, greatly reduced labor intensity, and need password system to login system, so it has a certain security.

The design of test bank system is to make the management and selecting more comfortable, reduce the duty of teachers. It has great application value at school. In addition to essential functions of the test bank, test storage, build paper, Maintenance, Management and printing function, however, it also has a password-protected user login mechanisms, paper query, questions query,user management and password modify functions .

 This software is based on the Win2003, and uses the Visual Basic 6.0 as software design tools. This software is general use, so can be fit for most Platforms.

Key words: test bank, test bank management, buildup paper, print  

第一章 绪论 

1.1 题库定义

题库(ITEM BANK)是“按照一定的教育测量理论,在计算机系统中实现的某个学科题目的集合”见文献[1],它是严格遵循教育测量理论,在精确的数学模型基础上建立起来教育测量工具。

建立试题库是一个复杂的系统工程,首先要建立系统的数学模型,然后确定试题的属性指标以及试题的组成机构,再编写试题。为了保证这些试题的科学性和有效性,还要组织大量的被试样本,进行抽样测试,对试题参数标注的有效性进行校正[2]。

1.1.1 试题库建设及在国内外的发展及研究状况

针对传统纸面化考试的种种缺陷,目前在国内外就网络化考试系统在理论研究和技术实践方面的探索,大体经历的三个阶段发展:

一是单机化考试,即基于单机的计算机考试系统,典型的例子如“全国计算机等级水平考试系统”。单机化考试,考前逐机安装考试系统,考后,逐机手工阅卷,用软盘回收成绩,然后将成绩汇总上报。在回收过程中一旦软盘或软驱发生故障则需要换盘或修复软驱后重新回收。这种“半手工半机器”的单机化考试,更没有充分利用网络的优点。在当今学校规模不断扩大,参加考试的学生不断增加的情况下,单机化考试的工作量越来越重。

二是C/S架构下的网络化考试,这是一种基于局域网的考试。它用于考试的机器分为服务器(Server)和客户机(Client)两种,优点是做到了对客户机的灵活控制和试卷的自动回收,缺点是需要分别开发和安装相应的考试服务系统和考试客户系统,在这点上与单机化考试的考前准备工作量相比是有增无减见文献[3]。

三是B/S架构下的网络化考试,这是一种基于Web的网络化考试,目前应用比较广泛,如清华大学的“清华网络学堂”、“清华在线教育”等网络教学平台中都采用了这种考试方式,以适应和促进网络教学和远程教育。它将软件、试题、成绩等全部存放在服务器上,客户机只要是能上网的微机即可;它突破时空限制[4],可在任何时间、任何能够上网的地点进行远程考试和考务工作。它可自动生成和打印试卷;它能实现中途换机等意外情况下的继续考试;考试结束时可迅速给出客观题考试成绩,主观题部分也是以网上阅卷的方式进行并实时提交成绩。这种阅卷给了考生最大的公平感。这些都使得网络化考试比传统的纸面考试和单机化考试具有无以比拟的效率和公平上的优越性[5]。

我国因历史上的种种原因,现代技术与基础条件比较落后,所以国内对试卷库的研究开发对计算机辅助教学的实践起步比较晚,但发展很快。党的十一届三中全会以后,改革开放带来了经济、教育的迅速发展,为了适应全国大规模考试制度改革、教育改革以及各行各业多类型多层次的学历考试、资格证书考试、素质能力水平检测的需要,试题库和试卷库的建设工作受到了国家教委的高度重视,从80年代开始,就有计划、有重点地进行全国考试试题库以及某些重点院校内的一些重点学科课程题库的建设工作。经过这些年的试卷,就全国考试试题库而言,建设有中国特色的大规模题库的理论与实践方面,取得了长足的进展。国内有许多大学依各自的特点开展了对试卷库系统的研究,取得了一定的成绩。如今计算机辅助教学在我国正方兴未艾,计算机试卷库系统的建立不但是我国教育改革的重要内容之一,而且是教学单位考务工作管理科学化、现代化、规范化的重要标志。

1.1.2 试题库建设及组卷系统的发展趋势

随着网络的发展,网络教学在各学样应用越来越广泛,服务器版的试题库及组卷系统将作为一个教育测量工具,它不仅仅是只有试题管理和组卷的功能,它更重要的功能是收集测试数据,并对这些测试数据进行统计与分析,发现题库中所存在的问题,发现教师教学过程中的问题,发现学生学习过程中的问题。这些问题都隐藏在考试分数的后面,题库系统应该通过分析考试数据,发掘信息,提供给教师以更多的教学过程信息,这将是现代化考试(即试题库及组卷系统)的发展的方向[6]。

题库系统是计算机辅助测验系统的一种重要形式,在国内外得到了越来越广泛的应用。它在生成试卷、进行试题和试卷分析等方面可以为教师节省大量的时间,而且能够在大范围内进行高质量的测验,这无疑会对提高教学质量产生积极的促进作用,因此受到普遍的重视。但多数题库系统仍是以脱机形式实施测验,阅卷评分也是由人工完成。这样固然会有许多工作要教师去完成,但可以省去许多设备,(例如,如果用计算机实施测验,那至少要有几十台终端或微型机),有利于普及和推广。再则,用计算机实施测验和阅卷评分,主要是对客观题有效。这限制了试题的形式,只能是选择题、判断题、匹配题等,这样的测验有其局限性,它不能测验考生的综合能力、理解能力和文字表达能力。

可见,题库系统虽然只完成了测验中的一部分工作,许多事情还得教师去作,但它给人们带来的效益都是十分显著的,因此,题库系统已经被广泛应用于计算机辅助测试中。

1.2 开发工具Visual Basic 6.0

本试卷库管理系统采用Visual Basic 6.0(以下简称VB)为软件开发工具以及Microsoft access2000作为数据库平台。下面介绍VB与数据库的理论知识。

Visual Basic即“可视化的”Basic程序设计语言。“Basic”是Beginners All-Purpose Symbolit Instruction Code(初学者通用符号指令代码)的缩写,它诞生于20世纪60年代初期,是一种国际通用的比较简单易懂的计算机程序设计语言。

Microsoft Windows 的推出,特别是Windows3.1 及后来的Windows95/98的推出,使得操作计算机的方式和软件开发过程发生了很大的变化。Windows是一个功能强大的图形界面窗口式操作环境的软件,它提供了不同以往DOS操作系统的命令行的操作手段,对计算机的操作是通过对窗口、对话框、菜单等图形画面和符号的操作来实现的。Windows各个应用程序之间风格一致,只要学会了某些基本技巧,就可以充分利用各种各样的程序和工具。

基于以上 Windows的优点,各种程序开发语言也纷纷支持Windows,极大的方便了用户开发自己的Windows程序。

Microsoft Visual Basic 6.0是微软公司推出的可视化编程语言程序,特别是Borland C++, Visual C++, Visual Basic等开发语言的推出[4],它采用面向对象和事件驱动的两种程序设计的新机制,把过程化和结构化的编程结合在一起。VB的界面设计非常容易,是面向对象的,虽然应用程序的过程部分不是面向对象的,但是VB使用的面向事件的机制(或事件驱动方法)使开发者使用比C语言或其它语言少的多的程序代码就可以完成同样的界面设计,而且更方便、快捷。此外,VB和用户程序间始终有良好的交互和反馈。VB向程序设计者提供了一个功能强大、使用方便的调试工具以及进行错误陷阱程序设计的相关语句和命令。

1.2.1 Visual Basic 6.0的特点

Visual Basic 6.0是Microsoft公司推出的可视化开发工具组件 Visual Studio 6.0的组件之一。Visual意为“可视化的”,指的是开发图形用户界面(GUI)的方法。Basic指的是BASIC语言。是一种简单易懂、面向初学者的语言。Visual  Basic 6.0是基于BASIC的可视化程序设计语言。Visual  Basic 6.0既继承了BASIC语言的简单易懂的特点,又采用了面向对象、事件驱动的编程机制,提供了一种所见即所得的可视化程序设计方法。

Visual Basic 6.0有学习版、专业版、企业版三个版本,以满足不同层次开发者的需求[5]。

Visual Basic是一个强大的Windows平台上的开发工具,从开发个人或小组使用的小工具,到大型企业应用系统,甚至通过Internet的遍及全球分布式应用程序,都可以在Visual Basic提供的工具中各取所需。Visual Basic之所以有这么广泛的用途是因为它具有以下特点[5]:

(1) 真正的面向对象编辑,使开发人员在维护系统运行时只需要修改很小的代码,同时也加快了系统开发的速度。

(2) 可视化的编程方法,以及向导的功能,使开发人员几乎不用加入太多的代码就可以开发出标准的Windows程序。

(3) 数据访问特性允许对包括Microsoft SQL Server和其他企业数据库在内的大部分数据格式建立数据库和前端应用程序。

(4) 通过ActiveX技术可使用其他应用程序提供的功能,例如Microsoft Word字处理器、Microsoft Excel电子数据表及其他Windows应用程序,甚至可直接使用Visual Basic创建的应用程序和对象。

(5) Internet能力强大,使得在应用程序内很容易通过Internet访问文档和应用程序。

(6) 已完成的应用程序是真正的.exe文件,供运行时的可自由发布的动态链界库(DLL)。

1.2.2 Visual Basic 6.0的运行环境

⑴硬件:586或更高的CPU(Central Processing Unit,中央处理器),300MB以上的硬盘剩余空间,32MB以上的内存。

⑵软件:Microsoft  Windows98或以上的更高版本,或Microsoft  Windows NT 4.0或更高版本[6]。

1.3 数据库基础

首先介绍一下数据库的基本概念。当人们从不同的角度来描述数据库这一概念时有不同的定义。例如,称数据库是一个“记录保存系统””该定义强调了数据库是否是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然抽象,但并不严谨。严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库” [7]。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。

J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。

在程序设计中,使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间;实现数据资源的充分共享等。此外,数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序。数据库是通过数据库管理系统DBMS(database management system,数据管理系统)软件来实现数据的存储、管理见文献[8]。

数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。

1.3.1 数据库的设计

数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS(database management system,数据管理系统)提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。

1.3.2 Microsoft Access介绍

Access 是微软公司推出的基于Windows的桌面关系数据库管理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。

Access,一种交换机的主干道模式。2台交换机的2个端口之间是否能够建立干道连接,取决于这2个端口模式的组合。常见的还有

(普通)access

(干道)Trunk

(自适应)Dynamic-auto

(期望)Dynamic-desirable

Microsoft Access在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序见文献[9]。

它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。不少 Access 的功能(表单,报告,序列和VB代码)可以用作其他数据库的后期应用,包括 JET(档案为主的数据库引擎,Access 缺省使用)、Microsoft SQL Server、Oracle等产品。这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。

1.4 论文结构

本文首先介绍了课题的所使用的开发工具Visual Basic 6.0和数据库Microsoft Access相关理论。第二章的第一节是对课题的研究背景,发展现状以及具体的试题库开发作了介绍,为方案设计打基础。在第二节中对试题库的各个模块(主要是组卷和打印模块)做了具体的介绍,并且建立数据库,对参数进行设置,最后系统总流程图把设计思路展示出来。第三章的第一节对试题库的运行环境和组卷打印功能的具体实现方法做了详细的介绍。在第二节主要是介绍试题库实现的各个功能。第四章是试题库系统测试,包括统一测试和各个功能的测试。在第五章对毕业设计的成果做了总结,包括此试题库的优缺点。此时题库系统开发的主要程序代码在附录中,并且对重要部分加了注释。

第二章 试题库系统的开发

2.1 题库总体数据结构

2.1.1 题库开发的原因

随着科学发展和技术进步,计算机已经应用于每个学科领域。现代信息技术在教育领域的广泛应用,对传统教育带来的深刻变革是前所未有的。试题库系统就是随着现代化教学的发展应运而生的,它是教育和教学活动的前言阵地,是其他各类课程建设信息系统的基础和根本,是教育测试的有力工具。

“试题库”是指按照一定的教育测量理论,在计算机系统中实现的学科题目的集合。它是集试题管理、试卷命题和统计分析等功能为一体的管理软件。凭借它可以使教师便捷地对试卷库中的试题进行管理;按要求轻松地命题多份试卷以及对试卷质量做综合评价。使每套生成的试卷都具有组卷随机性、题型一致性、题量等同性、结构合理性、覆盖全面性重复相异性考核科学性。

试题库系统除了具备灵活、方便的试卷生成功能之外,还可以对试题库中的试题进行添加、编辑、删除、浏览等全方位的管理。此外,系统还提供了对生成试卷和库中试题在题型、分值、难度等各方面的统计、汇总的辅助功能。使用户在使用系统的同时,获取必要的测试数据和相关信息。

2.1.2 题库总体数据结构定义

题库总体数据结构是指所有试题及其所有相关信息被组织存储的形式结构。总体数据结构的确立要从建库目标和功能要求出发,力求节省存储空间,方便计算机处理和用户使用,保证有较快的检索和处理速度。

2.1.3 在实际中的应用

对于较大的题库系统,其试题库总体结构是分层分块的,总库下有子库,子库中有分库等。试题信息常按题文(题目中的文字部分)、题图(题目中的附图)、答案(答案信息为文字)、答图(答案信息为图形)、属性指标等分类,分别存放于不同的子库当中;全部试题又常按课程内容、或体型、或按测试目标层次分类存储,这样每个子库被相应地分成若干分库。各个子库要设定相同的关键字,利用关键字把同一道试题的各种信息联系在一起(例如同题号作关键字,那么在各子库中部应有题号这个数据项)。为了提高检索和库管理速度,一般要根据需要建立各种索引文件,如对各个子库建立各分库的题号索引,以指出各分库中存放的试题题号范围。通常可用分库中第一个试题的题序号和该库中存放的试题总数目来标明该范围(因题库中题号是有顺序的,题目按题号有序地存储在分库中)见文献[10] 。

2.1.4 设计时需考虑的问题

设计题库总体数据结构时要考虑图形存储问题。许多科学题库都不可避免地存储带有图形的试题,而图形需要占据大量存储空间,应采用数据压缩技术解决节省图形存储空间的问题。有关压缩存储的方法很多,针对不同学科的图形特点可设计不同的方法来实现图形数据压缩。例如,将试题中的图形以图段拼成,而图段则由一些图元组成,每个图元给予不同的编码,不同的编码值代表不同的作图算法,然后用参数表明图的大小及它的相对位置。这样使用适当的编辑命令,就能很方便地绘制题目中所需要的图形。可以看出,这种方法已把一幅图形变成一些代码和参数存储起来。当图形显示时,失调出相应的图形记录,分解并解释那些代码和参数,然后根据代码值所表示的算法,绘出每个图段的各图形元,这样一幅题图接显示出来。采用这种办法存储图形,占满监视器一屏幕的单线图(如电路图)仅约占2K字节的存储空间。这比用点阵数据存储图形节省了三分之二的存储[11]。

2.2 系统开发

2.2.1 模块分析

  1. 组卷模块

组卷模块用于按照一定的要求生成试卷,本系统采用的是手工组卷的模式。本模块是本系统的核心,手工组卷是将试题库中的试题按要求显示出来,由出题人自己来选取要考哪些试题,系统将随时显示有关选题的信息(如某种题型已选出多少道题等),手动组卷功能就是根据用户的需求随机列举满足用户要求的试题,允许用户做自由的选择,该种方法的特点是人机交互功能强大、灵活。

  1. 打印模块

包括试题打印和试卷打印。当试卷或试题编辑完成之后,点击打印即可对试卷或试题进行打印。在这个模块中需要设置边距、字体与表格之间的间距、页标题、页标题字体大小和打印方向等参数。

  1. 系统管理模块

这一模块包括用户管理和密码修改两部分。其中,用户管理功能部分可用户、操作人员进行添加和删除,并指定用户、操作人员的权限;密码修改功能是当前用户的密码修改。

  1. 帮助信息模块

一个好的软件应该给用户提供帮助服务以便用户随时了解该软件的功能和使用方法。本系统介绍该软件的版本以及该系统的操作指南等。

  1. 系统退出模块

当需退出系统时,用户可以选择注销或退出系统,当点击关闭窗口时系统也会弹出提示已确认是否要退出。

2.2.2 数据库的建立

创建数据库:使用Access2000创建一个名为sdk.mdb的数据库,其中建表四张,分别为教师信息表,临时表,试卷信息表和试题信息表。

图2.2 数据库sdk

试题信息:用来记录教师录入到本系统的试题的所有信息,供组卷时调用、查询。可进行修改、删除等操作。具体信息见表2.1。

表2.1 试题信息

表名

序号

字段

字符类型

宽度

索引

备注

1

题号

数字

长整形

题号

2

难度

文本

10

共有四种

3

试题类型

文本

10

是非题、单选题、多选题

4

试题题目

文本

250

5

答案

文本

8

6

工号

数字

整形

登录系统的教师工号

7

日期

日期/时间

试题的录入时间

试卷信息:用来记录添加到试卷中的试题的所有信息,供组卷预览、打印试卷时调用、查询。可进行删除操作。具体信息见表2.2。

表2.2 试卷信息

序号

字段

字符类型

宽度

索引

备注

1

试卷号

数字

长整形

2

题号

数字

长整形

3

试题题目

文本

250

4

难度

文本

10

共有四种

5

试题类型

文本

10

是非题、单选题、多选题

6

考试日期

日期/时间

组卷日期

7

答案

文本

8

8

分数

数字

整形

组卷时设置的各题型分值

教师信息:用来记录可登录到本系统的教师工号、姓名以及登录密码等信息。系统管理员有添加、删除查询权限。其他用户只能查询和修改自己的密码。具体信息见表2.3

表2.3 教师信息

表名

序号

字段

字符类型

宽度

索引

备注

教师信息

1

工号

数字

长整形

工号

2

教师姓名

文本

8

3

密码

文本

8

登录时的密码

临时表:用来存放预览试卷的某一卷号所有试题的信息,供浏览时调用,退出后清空。具体信息如表2.4。

表2.4  临时表

表名

序号

字段

字符类型

宽度

索引

备注

1

序号

数字

长整形

重新分配试题号

2

题号

数字

长整形

3

试题题目

文本

250

2.2.3 试题库管理系统总流程图

图2.1 系统总流程图

第三章  试题库系统

3.1 题库介绍

系统基于Windows平台,采用Visual Basic 6.0编程和Access数据库技术。

方便使用计算机录入、存储、检索试题,具有调用试题组卷、编辑、保存、检索、预览、打印等功能。

3.1.1 运行环境

本题库只要配置好数据库接口,即可在局域网内与其他电脑的题库连接。

数据库采用的是Microsoft Access,是一小型数据库,这有利于提高数据运算速度,并使整个系统管理规范化,数据的完整性、安全性得到保障。

硬件要求:硬件环境不限,包括PC机、手持式电脑、电视机顶置盒和网络电脑等。

3.1.2 题库组卷功能的实现

组卷是用于按照一定的要求生成试卷,本系统采用的是手工组卷的模式。手工组卷是将试题库中的试题按要求显示出来,由出题人自己来选取要考哪些试题,系统将随时显示有关选题的信息(如某种题型已选出多少道题等),手动组卷功能就是根据用户的需求随机列举满足用户要求的试题,允许用户做自由的选择,该种方法的特点是人机交互功能强大、灵活。

本试题库系统的手工组卷按菜单“试卷管理”,选“手工组卷”(点手工组卷按钮),打开设置对话框,输入题型比例和题型分值,单击“确定”,打开“试题查询”对话框,选择要生成的科目和题型,点查询后,进入“试题编辑”窗口,选择窗口左边的试题,输入试卷号,单击“加到试卷” 后添加试题到试卷中。点击“返回编辑”可回到查询窗口。

3.1.3 题库打印功能的实现

打印分为试题打印和试卷打印。当试卷或试题编辑完成之后,点击打印即可对试卷或试题进行打印。在这个模块中需要设置边距、字体与表格之间的间距、页标题、页标题字体大小和打印方向等参数。

属性说明:

Prn_Bm    上边距

Prn_Tm    下边距

Prn_Lm    左边距

Prn_Bh    字体与表格之间的间距

Prn_BT    页标题

Prn_BtFont 页标题字体

Prn_BtFontSize 页标题字体大小

Prn_Wz    页尾注

P_Fx      打印方向

prn_z      纵向打印

prn_h      横向打印

函数说明

HG_Tz (Gd As Object) '表格MSHFlexGrid,MSFlexGrid列宽自动调整为1000

  Gd 为表格的控件名称

PrwHFlex(Grid As Object, IsPrint As Boolean)

'MsHFlexGrid  MsFlexGrid 表格控件中的内容,打印/预览函数。

Grid 是表格控件名称

IsPrint 是打印和预览的开关

False 为预览

True  为打印

PrwDGrid(Grid As Object, Rs As Recordset, IsPrint As Boolean)

'DataGrid 表格控件中的内容,打印/预览函数。

Grid 是表格控件名称

Rs 是绑定表格的记录集

IsPrint 是打印和预览的开关

False 为预览

True  为打印

PrwLView(Grid As Object, IsPrint As Boolean)

'ListView 表格控件中的内容,打印/预览函数。

Grid 是表格控件名称

IsPrint 是打印和预览的开关

False 为预览

True  为打印

3.2 系统的功能和使用方法

3.2.1 欢迎界面

利用弹出式窗口的方式,显示出欢迎界面,如图3.1所示。通过在登录窗口输入用户名和相应的密码,根据不同的用户名,登录后系统给予不同的权限,密码不对则不予登录。登录三次不成功,则关闭登录窗口。

图3.1 登陆界面

a.普通用户登录:可进行试题录入、试题的编辑、手工组卷、试卷编辑、试题查询、试卷查询、试卷预览、试卷打印以及用户浏览、密码修改等大部分功能的操作。

b. 管理员身份登录:具有普通用户所拥有的一切权限外,还具有用户管理权限,即还可进行本系统用户的添加、删除的功能。本软件默认的系统管理员用户名为“Admin”、密码也为“Admin”,不区分大小写。可修改密码,但不可删除“Admin”用户名。

3.2.2 主界面

主界面包括:试卷管理、查询信息、系统管理、帮助信息五个菜单和手工组卷、试题维护、试卷查询、试题查询、用户管理、密码修改六个工具栏,其界面如图3.2所示。

图3.2 系统主界面

3.2.3 手工组卷菜单

在手工组卷的菜单中包括设置题型比例、题型分值设置完毕之后,对应有重设、确定和关闭控键。如图3.3所示。

图3.3手工试卷

a.题型比例和题型分值:其中题型包括:判断题、单选题、多选题、填空题和简答题。首先设置试题总分值,再在对应的题目中设置分值比例。各题型试题的分数之和应和总分一致,对于题数设置不是整数道试题时,系统及时给予提示,如图3.4所示。当各个题型设置的分数超过总分时,系统会给予提示如图3.5.确认设置后,系统通过查询,按试题类型分类添加,并提示尚可添加的分数,直到达到设置的分数后提示结束,系统自动把各试题类型的分数值添加到试卷库的试题信息中,并统计试卷中的分数。设置完分数之后,点击确定则弹出试题查询的窗口,点击重设则所填数值清除,重新设置,点击关闭回到主菜单见文献[12] 。

      

图3.4 设置提示                          图3.5 错误提示  

b.添加试题:从试题库中挑选试题添加到试卷中,系统提示输入试卷号,当添加的试题号已在该试卷中,系统将给予提示,防止同一试卷中出现相同的试题。添加完成后保存到试卷信息库中。添加到试卷信息库中的信息主要有试卷号、题号、试题题目、科目、试题类型、考试日期、答案、分数等。其中考试日期为默认的组卷日期。

c.试题删除:当导入的试题有误时,可通过删除来更新试卷中试题。

3.2.4 查询菜单

它包括试题查询和试卷查询。

试题查询,它包括题型和难度。其中,题型一栏包括填空题、判断题、单选题、多选题、简答题,在查询界面的题型下拉列表框中列出试题库中的所有题型,选中该题型按查询后,在试题编辑窗口罗列出该题型的所有试题,选中某一题后显示出详细信息,供修改或添加到试卷库中。在难度一栏中可以在基本题、稍难题、中等题、提高题之间进行选择[12],它的界面如下图3.6所示。

图3.6 试题查询

  • 试卷查询,它在查询条件中包括难度级别和试卷号,用户可在其中输入有关内容。接下来是试卷,另外就是查询和返回两个按钮,如下图3.7所示。

图3.7 试卷查询

按下打印按钮会出现试卷及答案打印窗口,如下图3.8所示。

图3.8 试卷及答案打印

点击确定按钮即可完成打印功能。

3.2.5 试题维护菜单

包括编辑试题、编辑试卷,打印试卷,编辑试题又包括添加试题、保存试题、修改试题删除试题。编辑试卷包括选择试卷号,加到试卷、返回试卷和查看试卷,如图3.9所示。

图3.9 试题维护

3.2.6 用户管理界面

用户管理,在它的功能一栏中包括用户信息、添加用户和删除用户和关闭窗口三项,可以在这四项之间进行选择来完成有关操作。用户信息又包括用户名、工号。它的界面如下图3.10所示。

图3.10 用户管理

选定一个用户之后点击删除用户,则可删除选定用户。点击添加用户,则弹出如图3.11的添加用户界面。添加项包括工号,用户名,密码和确认密码,点击添加则可完成对用户的添加。

图3.11添加用户

3.2.7 修改密码菜单

输入用户名和设置的新密码之后,点击确定则可完成对密码的修改。如图3.10所示。

图3.10 用户管理

3.2.8 打印菜单

包括试题打印和试卷打印。

  • 试题打印,打印按钮设置在试题编辑框的下角,当完成对试题的编辑后,点击打印则可对试题进行打印。同时会出现打印提示框,如图3.11所示。

图3.11 试题打印

②试卷打印,包括打印信息和功能项。当完成对试卷的编辑后,点击预览试卷,可以对试卷进行预览。点击打印,则完成对试卷的打印。

3.2.9 系统菜单

包括关于系统和退出项。

①关于系统,它的界面如下图所示。点击确定则可退出该界面。如图3.13所示。

图3.13 关于菜单

②系统信息,可点系统信息则出现如下界面。在系统信息里可以查阅到系统的硬件资源、组件、软件环境和Internet设置。同时,你还可以利用查找搜索你所需要的信息[13]。如图3.14所示。

图3.14 系统信息

第四章  试题库系统的测试

4.1 软件测试

在件生命周期的各个阶段,都有可能会产生差错,虽然在每个阶段结束之前都有严格的复审,以期能尽早地发现错误。但是,经验表明审查并不能发现所有差错。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分错误,则这些错误迟早会在运行过程中暴露出来甚至会造成严重的后果,等到那时去改正这些错误的代价会很高[14]。

测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程。

4.1.1 软件测试的基本概念

测试是为了发现程序中的错误而执行程序的过程,好的测试方案是尽可能的发现至今尚未发现的错误的测试万案。成功的测试则是发现出至今尚未发现的错误的测试。

Dijkstra曾说:"测试只能证明错误的存在,但不能证明错误不存在。"所以,测试并不能保证程序是完全正确的,成功的测试也不应是没有发现错误的测试。

4.1.2 软件测试的任务

软件测试是软件开发过程中的重要阶段,是软件质量保证的重要手段。其任务可归纳为三个方面:

1) 预防软件发生错误

2) 发现改正程序错误

3) 提供错误诊断信息

在软件开发时,应该把测试的设计和实现所做的思考和分析穿插在软件开发的各个阶段,从而较早地预防和排除错误。利用系统设计的万法,在精心控制的环境下,检验程序,从而发现程序的错误。软件测试中,必须提供有关错误的性质、原因和位置的必要的信息,以利于排错。

4.1.3 软件测试基本原则

(1)尽早地,不断地进行软件测试,把软件测试贯穿于开发过程的始终。从而尽早发现和预防错误,达到减少软件开发费用和提高软件质量的目的。

(2)测试实例应由测试输入数据和对输入数据所期望 (预测)的程序结果两部分组成。

(3)程序员应避免检查自己编制的程序。

(4)全面检查每一测试结果,以防遗漏。

(5)测试实例设计,应包括:有效和期望的输入条件以及无效的和不期望的输入条件。

(6)除检查程序应完成的任务外,还应检查程序是否做了它不应该做的事。

(7)一般认为:程序中尚未发现的错误的数量与在该程序段已发现的错误数量往往成正比[14]。

4.3 试题库测试

只有经过测试、修改,再测试、再修改,系统才可以正常运行,达到设计目的。系统输入、输出如图4.1所示。

   

图4.1 输入、输出示意图

4.3.1 边编写代码边测试

在完成窗口设计后,接着就是编写代码,由于本人编程水平不是很多,经验不足,经常出现这样那样的问题,因此采取编一个功能,测试一个功能,编好一个窗口,测试通过后再编写另一个窗口代码,编程过程中问题最大、出错机率最高的是数据类型匹配的问题,有从文本框中取数据的,有从变量中取数据的,有取字符型数据,也有取整形数据,变化万千。这些都在测试通不过时进行修改,使之于数据库中的数据类型相符。比如,把试题添加保存到试题库时,对应的题号、科目等信息直接用”trim(text2.text)\trim(Combo1)”造成添加不成功,经过仔细检查才发现题号为整形类型,改为’” & clng(val(text2.text))& “’才正常运行。类似的少了一对单引号,检查后才修改正确的情况时有发生。象这些不该犯的错误,应该会在今后经验积累后少发生。

4.3.2 窗口代码完成后统一测试

在系统测试过程中还发现不少问题,比如系统管理员添加用户时,使用明文密码,经指导老师提醒后才改正为用“*”表示。还有如修改密码模块中,”Updata”语句少了”where”修饰,结果是一人改密码,大家一起改,别人用原密码就登录不了,加了”where”修饰后,密码修改正常。

系统测试的问题还会存在,第一是水平有限,第二是测试的次数不足,第三是测试可能不够全面,这有待本系统的使用者提出宝贵的意见,本人及时对系统进行必要的修改。

4.4 运行与维护

测试通过后,接着进行打包运行和维护。

4.4.1 程序打包

在VB设计界面中,点击“文件”菜单,选“工程组另存为”选项,打开“保存工程组”对话框,保存为“试题库管理系统”文件。然后再点击“文件”菜单,选“生成试题库管理系统.EXE”选项,打开“生成工程”对话框,按确定后系统自动生成可执行文件,文件名为“试题库管理系统.EXE”。

4.4.2 运行

双击“试题库管理系统.EXE”文件。

登录系统:首先打开“欢迎使用试题库管理系统”的登录对话框,输入姓名和密码后按登录进入系统,进入程序主窗口。

试题维护:

a.添加试题:按菜单 “试卷管理”,选“试题维护”(点试题维护按钮),打开试题编辑对话框,单击“添加试题”,系统初始化,默认工号为登录用户工号,日期为系统日期,输入题号、选择科目、选择试题类型、输入答案、题目等信息后按“保存试题”,完成试题添加。

b.删除试题:在试题库浏览框中,点击要查看的试题,那么该试题的所有信息都在右边显示出来,点击“删除试题” 按钮确认后删除选中的试题。

c.修改试题:在试题库浏览框中,点击要修改的试题,那么该试题的所有信息都在右边显示出来,修改其中的信息后,点击“修改保存”按钮确认后更新选中的试题信息。

手工组卷:按菜单“试卷管理”,选“手工组卷”(点手工组卷按钮),打开手工组卷设置对话框,输入题型比例和题型分值,单击“确定”,打开“试题查询”对话框,选择要生成的科目和题型,点查询后,进入“试题编辑”窗口,选择窗口左边的试题,输入试卷号,单击“加到试卷” 后添加试题到试卷中。点击“返回编辑”可回到查询窗口。

试卷查询:按菜单“查询信息”,选“试卷查询”(点试卷查询按钮),打开试卷查询对话框,选择要查询的科目和卷号,点查询后,进入“试卷编辑”窗口,选择窗口左边的试题,可显示详细信息,单击“删除试题”后删除试卷中选中的试题。单击“预览试卷”,打开试卷预览窗口,进行试卷的预览,点击打印按钮,可从打印机打印输出。点击“返回”可回到试卷查询窗口。

试题查询:同手工组卷中的试题查询。

用户管理:按菜单“系统管理”,选“用户管理”(点用户管理按钮),打开用户管理窗口,一般用户右浏览本系统登录人员的工号、姓名。管理员用户可点击“删除用户”,确认后删除选中的用户。点击“添加用户”,进入添加用户窗口,输入“工号”、“用户密码修改:按菜单“系统管理”,选“密码修改”(点密码修改按钮),打开密码修改窗口,系统默认工号为登录到本系统的工号,输入新密码,确认后,单击确定完成密码的修改。

退出系统:按菜单“试卷管理”,选“注销”,打开注销对话框,确定后退出,并重新打开登录窗口。选“退出系统”后系统提示“真的退出系统吗?”,确定则退出系统。

软件维护:提供软件升级支持,由于本程序乃毕业设计之作,有很多不完善的地方,根据用户对该系统的使用情况反馈,应及时对本程序进行升级、修正错误、增加功能,以更好地方便用户。

第五章 总结

5.1 本试题库优点

  1. 除了完成本课题任务书所要求的组卷和打印功能外,我还对试题库的功能做了完善和改进。
  2. 安全性提高。登陆窗口密码的设置提高了试题库系统的安全性,由于试题库本身的性质保密性显得尤为重要,所以我们添加了密码登陆以及密码设置的功能来提高软件的安全性和可靠性。
  3. 更为人性化。此试题库系统的一个重要特别是使用简单方便,除此之外,还设置用户管理这个功能,可以添加和删减用户,每一个用户都有独立的密码,所以使得使用更为方便和人性化。
  4. 我简洁,功能完善。们在一些细节的地方做了一些改进,比如当你点击某一个菜单时,界面下面会同时显示你点击的菜单名称。这些细微之处,让人机交互更为友好。
  5. 开放性要好。软件系统.应采用对用户开放性的设计原则,使用Windows2000以上等通用软件作为操作平台。
  6. 试卷质量应比较高。打印效果比较好。
  7. 应用环境宽要。系统需386及以上微机、支持各种彩显和单显。还支持各种打印机。
  8. 实用性要强。系统需操作方便,界面美观。

5.2 不足之处 

虽然我无比重视毕业设计,并且用尽精力和时间。但是我不得不承认此试题库仍有不足之处。

①自动组卷。虽然已具备手动组卷的功能,但是我原本的计划是既有手动组卷又有自动组卷,但是由于本人水平有限加之时间紧迫,虽然我已经尝试过很多次,到最后还是没有能实现。

②图形题目无法添加。这是此题库的一个瑕疵,由于数据库使用的是Microsoft access,添加图形就显得非常困难,所以我们在题型上仅设置为判断题,单选择题,多选题,填空题和简答题。

5.3 展望

试题库系统是一个相当复杂的系统,它的建立需要专业课教师、程序设计人员和教育测量专家的分工合作:

1.教育测量专家为建立题库提供经典的或现代的教育测量理论,使题库具有科学的数学模型。这样建立起来的题库不只是为教师提供各种试卷,免除教师出题之苦,更重要的是能够根据不同要求生成高水平的试卷,并能对考试结果进行科学地统计、分析和评价,真正起到促进教学研究、提高教学质量的作用。

2.程序设计者的任务是设计程序,使之实现题库系统的各种功能,并能迅速、协调和可靠地工作。因此,程序设计者的工作情况,直接影响着题库系统的质量。具体说,程序设计者应完成以下工作:

(1) 根据需要选择题库的运行环境。 计算机系统是题库系统赖以生存的物质基础,它为建立题库、使用题库提供了必不可少的环境。也可以认为,计算机系统是题库系统的重要组成部分。因此,在具体建库之前,要根据题库的规模、功能和速度要求,选用合适的硬件环境和软件环境,包括计算机主机的类型、内存的容量、外存储器的容量以及监示器和打印机等硬设备。由于计算机软件对硬件有极强的依赖性,因此,在选择硬件环境时还要考虑它的先进性和使用的广泛程度,以利题库的发展和推广。软件环境的选择包括操作系统和编程工具。例如选择高级程序设计语言、数据库管理系统以及题库生成系统等。

(2) 根据对题库的功能要求,设计题库系统的结构框图。 对题库的功能要求是由建库的目标决定的。一方面考虑近期要达到的目标,例如组卷、项目分析、试卷分析、自动修改试题指标等。另一方面还要考虑今后的发展目标,使题库能够不断地完善和发展。

当对题库的功能要求确定之后,就可以着手设计题库系统的结构框图。即把整个系统分成若干个子系统,每个子系统完成一个固定的功能,并用方框把它框起来,方框之间用带箭头的线连结,表示它们之间的数据流动和控制关系。这样就构成了结构图,需要指出的是,把整个系统分成多个子系统,并不是机械地按功能要求来分的,还要考虑生成题库软件时的一些技术问题。例如上-小节提供的一个题库系统结构图,就把"组卷"功能分成"交互式组卷"和"自动组卷"两个子系统来实现;把题库分成五个子库,共同完成试题的存储,这也是从技术实现上考虑才这样作的。另外,为了使各子系统成为一个整体,方便用户使用,还要有主控模块,菜单结构,为用户提供良好的界面。

(3) 画出流程图,进行程序设计。 在完成结构设计之后,可对每个子系统进一步加细,首先是做出流程图,然后进行程序设计。当然,在整个软件编制完之后,还需不断调试,排除和修改错误,使之能实现预先提出的各种要求。

3.专业课教师的任务是为建库提出目标,并提供有足够数量的题卡。题卡建设是建库的基础工作,也是工作量最大的-项工作。一般,一个题库要储存有几千道试题,这些试题既能覆盖-门课程的各个方面,又能反映不同层次的要求,其类型也多种多样,有客观题,也有问答题。对于入库的每一道试题,都要按统一的形式建题卡,描述试题的正文和题图、解答和答图、以及难度、区分度等指标。此外,还要对每题注明编号、章、节号、试题来源等参数。难度和区分度是由教师根据已有的经验和资料提出来的,在后来的使用中进行不断的修正。(加题卡的图片,上面有题卡的格式和一个题卡实例)

建设题库系统是一项工作量很大的系统工程,它的完成不仅需要大量的人力和时间,还要有周密的施实计划和方案,并在实践的过程中进行不断的调整。

如上所述,题库系统是计算机辅助测验系统的一种重要形式,在国内外得到了越来越广泛的应用。它在生成试卷、进行试题和试卷分析等方面可以为教师节省大量的时间,而且能够在大范围内进行高质量的测验,这无疑会对提高教学质量产生积极的促进作用,因此受到普遍的重视。但多数题库系统仍是以脱机形式实施测验,阅卷评分也是由人工完成。这样固然会有许多工作要教师去完成,但可以省去许多设备,(例如,如果用计算机实施测验,那至少要有几十台终端或微型机),有利于普及和推广。再则,用计算机实施测验和阅卷评分,主要是对客观题有效。这限制了试题的形式,只能是选择题、判断题、匹配题等,这样的测验有其局限性,它不能测验考生的综合能力、理解能力和文字表达能力。

可见,题库系统虽然只完成了测验中的一部分工作,许多事情还得教师去作,但它给人们带来的效益都是十分显著的,因此,题库系统已经被广泛应用于计算机辅助测试中。随着计算机业的发展,各行各业对于计算机的使用也在普及。

参考文献

[1] Bob Reselman , Richard Peasley , Wayne Pruchniak.Visual Basic 6.0 使用指南[M].北京:电子工业出版社,1999.20~70

[2] 骆原. Visual Basic6.0中文版参考详解[M].北京:清华大学出版社, 1999.50~90

[3] [美]Carsten Thomsen.Database Programming with Visual Basic [M].北京:中国电力出版社,2003.10~50

[4] 石磊.Visual Basic与数据库开发[M].北京:人民邮电出版社. 2000.30~80

[5] 万峰平.全面掌握Visual Basic 6.0应用程序开发[M].北京:清华大学出版社.2000.50~200

[6] 骆娟.Visual Basic 6.0数据库系统开发实例导航[M].北京:人民邮电出版社.2000.20~150

[7] (美)佩雷著,戴红译.学用Visual Basic6.0[M].北京: 清华大学出版社.1999.30~100

[8] (美)荷兹纳著,详实翻译组译.Visual Basic6.0技术内幕[M].北京:北京机械工业出版社. 1999.20~70

[9] (美)福克斯尔著,王建华译.Visual Basic6.0编程标准[M].北京: 北京机械工业出版社.2000.10~100

[10] 王玲,王明俊.“用试题库计算机管理系统”的开发与研究[J]. 信息与控制,2001,30(7) :612-615.

[11]肖春宝,孙斌,罗小波. 通用试题库管理系统的设计与实现[DB]. 中国学位论文全文数据库

[12] 路平,王敏娟,万昆. 试题库自动组卷策略研究[J]. 电脑开发与应用,2001, 14(2):9-11.

[13] 汤志伟,钟毅,方波.通用在线考试管理信息系统的研究[J].电子科技大学学报社科版 2003年(第5卷)第1期

[14] 蒋东升, 江效尧.通用试题库系统的开发[J].安庆师范学院学报(自然科学版) 2001年11月第7卷第4期

致 谢

毕业设计即将完成,在此,向大学期间所有帮助过我的老师、同学和朋友表示我最诚挚的谢意。

首先特别感谢我的指导教师,感谢您的教导与细致的修改,帮助我完成这大学里最后的任务。在做毕业设计期间,遇到很多问题,大到设计思路,小到错别字标点符号,张老师都给予了我悉心的帮助。在这个过程中我学到的不只是理论知识还有严谨的态度,相信这会影响我以后的做事及做人方式。

感谢在大学期间给过我教诲的所有老师,是你们教会我用知识充实自己,用知识引导自己,用知识武装自己。

感谢所有曾经帮助过我的朋友们。是你们的鼓励让我走出困境,直面生活。

最后,感谢在繁忙工作中抽出宝贵时间审阅本文的老师。

附录

由于原程序代码实在太长,本附录只附录部分由作者编写的主要模块的程序代码。

欢迎界面代码

Private Sub cmdCancel_Click()

  End

End Sub

Private Sub cmdOK_Click()

    Dim cn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sdk.mdb"

    

    Dim User As String

    Dim pwd As String

    User = Text1

    pwd = Text2

    

    Set rs = New ADODB.Recordset

    'rs.Open "教师信息", cn, adOpenKeyset, adLockOptimistic

    Dim strSQL As String

        strSQL = "select * from 教师信息 where 教师姓名='" & User & "' and 密码='" & pwd & "'"

        

        rs.Open strSQL, cn

        

        On Error Resume Next

        

         Number = rs("工号")

         

         Users = rs!教师姓名

    '用户密码错误的次数,如果错误次数超过3次,则退出系统

    Static nTryCount As Integer

    

      

      If rs.EOF Then   '登录失败

       MsgBox "对不起,无此用户或者密码不正确!请重新输入!!", vbCritical, "错误"

       Text1.SetFocus

       Text1.SelStart = 0

        nTryCount = nTryCount + 1

           If nTryCount >= 3 Then

             MsgBox "您无权操作本系统!再见!", vbCritical, "无权限"

             Unload Me

           End If

           Else            '登陆成功

         

      Form2.Show

      Unload Form1

     End If

     rs.Close

    cn.Close

End Sub

主界面代码

'帮助。版本信息

Private Sub bbxx_Click()

   frmAbout.Show

End Sub

Private Sub Form_Unload(Cancel As Integer)

 '关闭窗口

   If MsgBox("真的想退出系统吗?", vbOKCancel, "警告!") = vbOK Then

    End

  End If

    

    Dim Lsb As String

    Lsb = "delete from 临时表"

    Db.Execute Lsb

  

   End Sub

Private Sub kmcx_Click()   '试卷查询

    Form4.Show

 End Sub

Private Sub mmxg_Click()     '密码修改

    Form6.Show

End Sub

'试题维护

Private Sub sjul_Click()

    Form5.Show

    Form5.Command1.Enabled = True

    Form5.Command5.Enabled = True

    Form5.Command6.Enabled = True

    Form5.Frame5.Enabled = False

    Form5.Frame1.Enabled = True

    Form5.Text5.Enabled = True

    

End Sub

Private Sub tcxt_Click()     '退出系统

If MsgBox("真的想退出系统吗?", vbOKCancel, "警告!") = vbOK Then

    End

  End If

End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button.Key

Case "key1"

Call xcsj_Click

'Form11.Show

StatusBar1.Panels(1) = "试题库管理系统———手工组卷"

Case "key2"

Call sjul_Click

'Form5.Show

StatusBar1.Panels(1) = "试题库管理系统———试题维护"

Case "key3"

Call kmcx_Click

'Form4.Show

StatusBar1.Panels(1) = "试题库管理系统———试卷查询"

Case "key4"

Call txcx_Click

'Form3.Show

StatusBar1.Panels(1) = "试题库管理系统———试题查询"

Case "key5"

Call yhgl_Click

'Form4.Show

StatusBar1.Panels(1) = "试题库管理系统———用户管理"

Case "key6"

Call mmxg_Click

'Form4.Show

StatusBar1.Panels(1) = "试题库管理系统———密码修改"

End Select

End Sub

Private Sub txcx_Click()   '试题查询

    Form3.Show

End Sub

'形成试卷

Private Sub xcsj_Click()

    Form10.Show

    

End Sub

Private Sub yhgl_Click()

'用户管理

Form8.Show

End Sub

'注销

Private Sub zx_Click()

 If MsgBox("确实要注销吗?", vbOKCancel, "警告") = vbOK Then

   form2.Hide

   Form1.Show

 End If

End Sub

'数据文本框初始化。

Function Addinit()

    Text1.Text = ""

    Text2.Text = ""

    Text3.Text = ""

    Text4.Text = ""

    Text5.Text = ""

End Function

试题手工组卷代码

Private Sub Command1_Click()

   '重新设定分值

   Text1.Text = 0

   Text2.Text = 0

   Text3.Text = 0

   Text4.Text = 0

   Text5.Text = 0

   Text6.Text = 0

   Text7.Text = 0

End Sub

Private Sub Command2_Click()

   '确定设定

   Form3.Show

   flag11 = False   '关闭试题维护功能

End Sub

Private Sub Command3_Click()

   '取消设定

   form2.Show

   Unload Me

End Sub

Private Sub Form_Load()

    '初始化

  Call Cinit

  

   

End Sub

Function Cinit()

   Text1.Text = ""

   Text2.Text = ""

   Text3.Text = ""

   Text4.Text = ""

   Text5.Text = ""

   Text6.Text = ""

   Text7.Text = ""

End Function

Private Sub Text1_Change()

  '总分值设定

     If Text1.Text = "" Then

        MsgBox "输入分值", vbOKOnly, "提示"

        Exit Sub

     End If

     Zfint = Text1.Text

     Text2.Enabled = True

     

End Sub

Private Sub Text2_Change()

  '是非题分值设定

     If Text2.Text = "" Then

        MsgBox "输入分值", vbOKOnly, "提示"

        Exit Sub

     End If

     

   Sftint = Text2.Text

     

   If Sftint <= Zfint Then

       Text3.Enabled = True

    Else

       Text2.Text = 0

       MsgBox "错误!分值超过总分,请重新设定", vbOKOnly, "提示:"

   End If

End Sub

Private Sub Text3_Change()

 ' 单选题分值设定

     If Text3.Text = "" Then

        MsgBox "输入分值", vbOKOnly, "提示"

        Exit Sub

     End If

     

   Dxtint = Text3.Text

   

   If Zfint >= Sftint + Dxtint Then

       Text4.Enabled = True

       Call Text4_Click

    Else

       Text3.Text = 0

       MsgBox "错误!分值超过总分,请重新设定", vbOKOnly, "提示:"

   End If

End Sub

Private Sub Text4_Click()

 '多选题分值设定

    

    If Zfint >= Sftint + Dxtint Then

       Text4.Text = Zfint - Sftint - Dxtint

       Dxtint2 = Text4.Text

   End If

End Sub

Private Sub Text5_Change()

  If Text2.Text Mod Text5.Text Then

     MsgBox "你的题数不是整数,请重新取分!", vbOKOnly, "提示"

  End If

End Sub

Private Sub Text6_Change()

  If Text3.Text Mod Text6.Text Then

     MsgBox "你的题数不是整数,请重新取分!", vbOKOnly, "提示"

  End If

End Sub

Private Sub Text7_Change()

  If Text4.Text Mod Text7.Text Then

     MsgBox "你的题数不是整数,请重新取分!", vbOKOnly, "提示"

  End If

End Sub

打印

Private Sub Command9_Click()

Dim Prnt As New HsPrn.Prntt

Prnt.Prn_Bh = 1 '字体与表格之间的间距

Prnt.Prn_Bm = 20 '上边距

Prnt.Prn_Tm = 20 '下边距

Prnt.Prn_Lm = 5 '左边距

Prnt.Prn_Bt = "试题库管理系统" '页标题

Prnt.Prn_BtFont = "宋体" '页标题字体

Prnt.Prn_BtFontSize = 14 '页标题字体大小

Prnt.Prn_Fx = prn_z '打印方向

'    prn_z 纵向打印

'    Prn_h 横向打印

Prnt.Prn_Wz = "操作员:admin" '表尾注

Prnt.PrwDGrid Form5.DataGrid1, Adodc1.Recordset, True   '表格打印

End Sub

试卷查询代码

Private Sub Combo1_Click()

Dim rsclass3 As New ADODB.Recordset

Set rsclass3 = New ADODB.Recordset

Dim Sjh As String

kmstring = Combo1.Text

    Sjh = "select distinct 试卷号 from 试卷信息 where 难度 = '" & kmstring & "'"

      rsclass3.Open Sjh, Db

       Combo2.Clear

      While Not rsclass3.EOF

     

     Combo2.AddItem rsclass3("试卷号")

        rsclass3.MoveNext

    Wend

    Combo2.ListIndex = 0

End Sub

Private Sub Command1_Click(Index As Integer)

   If Index = 0 Then   '查询按钮

       kmstring = Combo1.Text

       KmString2 = Combo2.Text

       Form7.Show

       Form7.Text1.Text = Combo2.Text

       

       DoEvents

       Form5.Adodc1.Refresh

       Form5.DataGrid1.Refresh

     Else

        

       Unload Me '取消按钮

       form2.Show

    End If

End Sub

Private Sub Form_Load()

   Dim rsclass As New ADODB.Recordset

   Set rsclass = New ADODB.Recordset

   Dim rsclass3 As New ADODB.Recordset

Set rsclass3 = New ADODB.Recordset

Dim Sjh As String

    Dim Sjkm As String

         

    Sjkm = "select distinct 难度 from 试卷信息"

      rsclass.Open Sjkm, Db

     

    '将所查到的rsClass中的内容来填充combo1

      Combo1.Clear

      Combo2.Clear

      While Not rsclass.EOF

      Combo1.AddItem rsclass("难度")

     ' Combo2.AddItem rsclass("试卷号")

        rsclass.MoveNext

    Wend

    Combo1.ListIndex = 0

    

     ' ------

    kmstring = Combo1.Text

  

    Sjh = "select distinct 试卷号 from 试卷信息 where 难度 = '" & kmstring & "'"

      rsclass3.Open Sjh, Db

       Combo2.Clear

      While Not rsclass3.EOF

     

     Combo2.AddItem rsclass3("试卷号")

        rsclass3.MoveNext

    Wend

    Combo2.ListIndex = 0

    

    '----

   

End Sub

Private Sub Option1_Click()  '试卷查询

   Form7.Show

End Sub

登陆管理代码

Private Sub Command1_Click()

       

       Dim Passwordchar As String

       If Text2.Text = "" Or Text3.Text = "" Then

         MsgBox "请输入新密码并进行确认!", vbOKOnly, "提示"

         Exit Sub

       End If

      

     '修改新密码

       If Text2.Text = Text3.Text Then

           Passwordchar = "update 教师信息 set 密码='" & Trim(Text2.Text) & "' where 工号=" & CLng(Val(Combo1.Text)) & " "

           Db.Execute Passwordchar

           MsgBox "密码修改成功!", vbOKOnly, "提示:"

          Unload Me

        Else

          MsgBox "错误信息:" + Err.Description, vbOKOnly, "提示"

        End If

  

End Sub

Private Sub Command2_Click()

'取消用户密码修改

   Unload Me

End Sub

Private Sub Form_Load()

   Dim rsclass As New ADODB.Recordset

   Set rsclass = New ADODB.Recordset

    Dim UserName As String

         

    UserName = "select distinct 教师姓名 from 教师信息"

      rsclass.Open UserName, Db

         

    '将所查到的rsClass中的内容来填充combo1

    

      Combo1.Clear

    While Not rsclass.EOF

      Combo1.AddItem rsclass("教师姓名")

      rsclass.MoveNext

    Wend

     Combo1.ListIndex = 0

    

    Combo1.Text = Number

    Combo1.Enabled = False

    

End Sub

用户管理代码

Private Sub Command1_Click()    '添加用户

   Form9.Show

   Unload Me

End Sub

'退出按钮

Private Sub Command2_Click()

   Unload Me

End Sub

'删除用户

Private Sub Command3_Click()

 On Error GoTo ErrMessage

   Dim Delstr As String

   Dim Scstr As String

   

   DataGrid1.Col = 1

   Scstr = DataGrid1.Text

   

   If Scstr = "admin" Then

      MsgBox "系统管理员用户名,不能删除!!!", vbOKOnly, "错误!"

      Exit Sub

    Else

     If MsgBox("确实要删除吗?", vbOKCancel, "警告!") = vbOK Then

     

       Delstr = "delete from 教师信息 where 教师姓名= '" & Scstr & "' "

       Db.Execute Delstr

    

       MsgBox "用户删除成功!", vbOKOnly, "提示"

    

       DoEvents

       Adodc1.Refresh

       DataGrid1.Refresh

    End If

  End If

      

ErrMessage:

    If Len(Err.Description) > 0 Then

        MsgBox "错误信息:" + Err.Description, vbOKOnly, "提示"

    End If

End Sub

Private Sub Command4_Click()

  '查询用户按钮

  If Option1.Value = True Then

     Adodc1.RecordSource = "select * from  教师信息 where 工号=" & CLng(Val(Text1.Text)) & " order by 工号"

  End If

  

  If Option2.Value = True Then

     Adodc1.RecordSource = "select * from  教师信息 where 教师姓名='" & Trim(Text2.Text) & "' order by 工号"

  End If

  

  Adodc1.Refresh

  DataGrid1.Refresh

  Call DataGrid1_Click

End Sub

Private Sub Command5_Click()

 '显示全部按钮

  Call Form_Load

End Sub

Private Sub DataGrid1_Click()

   On Error GoTo ErrMessage

    

    DataGrid1.Col = 0

    Text1.Text = DataGrid1.Text

    

    DataGrid1.Col = 1

    Text2.Text = DataGrid1.Text

    

  Exit Sub

  

ErrMessage:

    If Len(Err.Description) > 0 Then

        MsgBox "错误信息:" + Err.Description, vbOKOnly, "提示"

    End If

  

End Sub

Private Sub Form_Load()

      Adodc1.ConnectionString = gConString

      Adodc1.RecordSource = "select * from  教师信息 order by 工号"

      Adodc1.Refresh

      DataGrid1.Refresh

      

   If Users = "admin" Then

      Command1.Enabled = True

      Command3.Enabled = True

   End If

End Sub

添加用户界面代码

Dim User As String

Private Sub Command1_Click()

  '检查完整性

  Call Addinit

   '添加用户

    On Error GoTo ErrMessage

    

    If Text3.Text <> Text4.Text Then

        MsgBox "请重新输入密码!", vbOKOnly, "提示!"

        Text3.SetFocus

        Exit Sub

     Else

       

       User = "insert into 教师信息 (工号,教师姓名,密码)  values (" & CLng(Val(Text1.Text)) & ",'" & Trim(Text2.Text) & "','" & Trim(Text3.Text) & "')"

       Db.Execute User

       MsgBox "数据保存成功!", vbOKOnly, "提示"

        

      Exit Sub

    End If

    

ErrMessage:

    If Len(Err.Description) > 0 Then

        MsgBox "错误信息:" + Err.Description, vbOKOnly, "提示"

     End If

   

  End Sub

Private Sub Command2_Click()

   Unload Me

   Form8.Show

End Sub

Function Addinit()

    If Text1.Text = "" Then

        MsgBox "工号必须填写!", vbOKOnly, "提示"

        Text1.SetFocus

        Exit Function

    End If

    If Text2.Text = "" Then

        MsgBox "用户名必须填写!", vbOKOnly, "提示"

        Text2.SetFocus

        Exit Function

    End If

    If Text3.Text = "" Then

        MsgBox "密码必须填写!", vbOKOnly, "提示"

        Text3.SetFocus

        Exit Function

    End If

    End Function

关于试题库系统代码

Option Explicit

' 注册表关键字安全选项...

Const READ_CONTROL = &H20000

Const KEY_QUERY_VALUE = &H1

Const KEY_SET_VALUE = &H2

Const KEY_CREATE_SUB_KEY = &H4

Const KEY_ENUMERATE_SUB_KEYS = &H8

Const KEY_NOTIFY = &H10

Const KEY_CREATE_LINK = &H20

Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _

                       KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _

                       KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL

                     

' 注册表关键字 ROOT 类型...

Const HKEY_LOCAL_MACHINE = &H80000002

Const ERROR_SUCCESS = 0

Const REG_SZ = 1                         ' 独立的空的终结字符串

Const REG_DWORD = 4                      ' 32位数字

Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"

Const gREGVALSYSINFOLOC = "MSINFO"

Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"

Const gREGVALSYSINFO = "PATH"

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long

Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long

Private Sub cmdSysInfo_Click()

  Call StartSysInfo

End Sub

Private Sub cmdOK_Click()

  Unload Me

End Sub

Private Sub Form_Load()

    Me.Caption = "关于 " & App.Title

    lblVersion.Caption = "版本 " & App.Major & "." & App.Minor & "." & App.Revision

    lblTitle.Caption = App.Title

End Sub

Public Sub StartSysInfo()

    On Error GoTo SysInfoErr

  

    Dim rc As Long

    Dim SysInfoPath As String

    

    ' 试图从注册表中获得系统信息程序的路径及名称...

    If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then

    ' 试图仅从注册表中获得系统信息程序的路径...

    ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then

        ' 已知32位文件版本的有效位置

        If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then

            SysInfoPath = SysInfoPath & "\MSINFO32.EXE"

            

        ' 错误 - 文件不能被找到...

        Else

            GoTo SysInfoErr

        End If

    ' 错误 - 注册表相应条目不能被找到...

    Else

        GoTo SysInfoErr

    End If

    

    Call Shell(SysInfoPath, vbNormalFocus)

    

    Exit Sub

SysInfoErr:

    MsgBox "此时系统信息不可用", vbOKOnly

End Sub

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean

    Dim i As Long                                           ' 循环计数器

    Dim rc As Long                                          ' 返回代码

    Dim hKey As Long                                        ' 打开的注册表关键字句柄

    Dim hDepth As Long                                      '

    Dim KeyValType As Long                                  ' 注册表关键字数据类型

    Dim tmpVal As String                                    ' 注册表关键字值的临时存储器

    Dim KeyValSize As Long                                  ' 注册表关键自变量的尺寸

    ' 打开 {HKEY_LOCAL_MACHINE...} 下的 RegKey

       rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字

    

    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误...

    

    tmpVal = String$(1024, 0)                             ' 分配变量空间

    KeyValSize = 1024                                       ' 标记变量尺寸

    

    ' 检索注册表关键字的值...

    rc = RegQueryValueEx(hKey, SubKeyRef, 0, _

                         KeyValType, tmpVal, KeyValSize)    ' 获得/创建关键字值

                        

    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误

    

    If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then           ' Win95 外接程序空终结字符串...

        tmpVal = Left(tmpVal, KeyValSize - 1)               ' Null 被找到,从字符串中分离出来

    Else                                                    ' WinNT 没有空终结字符串...

        tmpVal = Left(tmpVal, KeyValSize)                   ' Null 没有被找到, 分离字符串

    End If

    ' 决定转换的关键字的值类型...

    Select Case KeyValType                                  ' 搜索数据类型...

    Case REG_SZ                                             ' 字符串注册关键字数据类型

        KeyVal = tmpVal                                     ' 复制字符串的值

    Case REG_DWORD                                          ' 四字节的注册表关键字数据类型

        For i = Len(tmpVal) To 1 Step -1                    ' 将每位进行转换

            KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' 生成值字符。 By Char。

        Next

        KeyVal = Format$("&h" + KeyVal)                     ' 转换四字节的字符为字符串

    End Select

    

    GetKeyValue = True                                      ' 返回成功

    rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字

    Exit Function                                           ' 退出

    

GetKeyError:      ' 错误发生后将其清除...

    KeyVal = ""                                             ' 设置返回值到空字符串

    GetKeyValue = False                                     ' 返回失败

    rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字

End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值