毕业设计论文基于VB和Access的考试系统设计Word格式文档下载.docx
《毕业设计论文基于VB和Access的考试系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于VB和Access的考试系统设计Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。
![毕业设计论文基于VB和Access的考试系统设计Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/150eb447-5212-4e0d-95e3-00ad2ffb6314/150eb447-5212-4e0d-95e3-00ad2ffb63141.gif)
2.2Access数据库………………………………………………………3
三考试系统的开发与设计……………………………………………5
3.1考试系统组成…………………………………………………………5
3.2考生登录模块设计……………………………………………………5
3.3随机抽题组卷设计……………………………………………………7
3.3.1随机抽题……………………………………………………………7
3.3.2自动组卷……………………………………………………………8
3.3.3试卷删除功能………………………………………………………9
3.4考试系统的答题界面…………………………………………………9
3.5交卷功能的设计……………………………………………………10
3.6自动评分功能………………………………………………………10
3.7计时功能实现………………………………………………………10
3.8Access数据库的设计………………………………………………10
3.8.1数据库设计…………………………………………………………10
3.8.2数据库的访问………………………………………………………12
3.8.3数据库的管理和维护………………………………………………12
四结束语……………………………………………………………13
谢辞……………………………………………………………………14
参考文献………………………………………………………………15
附录……………………………………………………………………16
一 引言
1.1课题研究的背景及意义
本课题主要应用于无纸化考试。
所谓无纸化考试是充分利用了计算机和互联网的优势,即由计算机在考试题库中随机抽题进行组卷,由学生在规定的时间内在计算机上进行答题。
考试是学校教学过程中一个必不可少的环节,老师通过考试来检验教学工作和教学质量,学生则可通过考试来检验自己对知识的掌握情况,巩固所学的知识点,从而进一步更好的完成教学任务。
然而,传统的考试是一个漫长而又复杂的过程,这种考试不仅要求老师拟定试卷、打印试卷、封装试卷、收集试卷、批改试卷,而且要在考试过程中安排大量的老师进行监考和巡场。
显然这种考试已经不适应现代教学的需要了。
随着学生人数的增加和计算机的普及,网上教学已成为现代远程教育的发展方向,实现教学及无纸化考试已成为必然趋势。
无纸化考试系统是基于计算机技术和数据库技术的应用系统,它依靠现代信息技术手段和优越的数据库资源,通过综合组卷生成无纸化考试试题。
与传统的考试相比,它有传统考试所不可比拟的优越性。
由于无纸化考试是在题库中随机出题自由组卷,每个考生的考试题目都不一样,避免了学生之间相互照抄作弊。
这种考试方式还可以大大降低老师的工作量,老师既不用费心费神的出卷又不用没日没夜的阅卷。
老师只需要对考试题库进行定期修整即可省去每次考试都要出题,印题,装订,阅卷的苦恼。
而且这种考试方式还能够实现考试成绩的准确性,由于无纸化考试评分是由计算机完成的,最大限度的排除了人为因素的影响,避免了人工评卷所带来的一些主观和客观的误差,从而保证了考试的客观性、实时行和阅卷标准的一致性。
高质量、高效率的完成对学生的测评。
1.2考试系统设计的目标和指导思想
利用VB和Access设计出《MATLAB和系统仿真》课程考试系统。
完成考生注册、考生登录、自动计时、自动出题、自动阅卷和成绩查询功能,利用计算机技术实现无纸化考试,对数据库中的内容易于维护和管理。
该系统的主要目标是:
·
试题库和考生信息按照统一格式分别写入到Access数据库中,并可随时对试题库和考生信息进行修改、添加或删除。
通过计算机的自动组卷可以实现任何学生的试卷都不完全相同。
考试界面布局合理美观,方便学生答题。
允许考生提前交卷结束考试,如果考试时间到,系统将会强制考生退出考试。
通过计算机的自动评分可以实现评分的高效性和客观公正性。
实现试题数据在每次考试结束后能够进行快速恢复。
二 系统开发的关键技术
考试系统的设计可采用多种编程语言,如:
C语言、Java等。
而本系统采用了VB6.0编程语言,因为VB不仅简单易学、效率高,而且功能强大。
他其中包含了很多已经编译好的控件,能够直接运用,方便简单。
在数据库方面,本系统才用了Office办公软件中的Access数据库,对比其他数据库来说,Access数据库具有许多其他数据库不具备的优点。
下面就简单的介绍一下本系统所采用的这两种软件。
2.1VisualBasic编程语言及特点
2.1.1VisualBasic简介
VisualBasic语言是20世纪60年代美国Dartmouth学院的两位教授共同设计的计算机程序设计语言。
它简单易学,人机对话方便,程序运行调试方便,因此,很快得到了广泛的应用。
VisualBasic有三种不同的版本,即学习版、专业版和企业版,用来满足不同的开发需要,这些版本是在相同的基础上建立起来的,因此大多数应用程序可在三种版本中通用。
学习版是VisualBasic的基础版本,他适用于普通学习者及大多数使用VisualBasic开发一般应用程序的人员;
专业版适用于专业的计算机程序开发人员,他为专业的程序开发人员提供了一整套用于软件开发的功能完备的工具,包括了学习版的全部功能以及Internet控件开发工具之类的高级特性;
企业版可供专业编程人员开发功能强大的组内分布式应用程序,除了包含专业版全部的内容外,还有自动化构件管理器、数据库管理器等工具[1]。
2.1.2VisualBasic特点
VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,他简单易学、效率高,且功能强大,使用Windows内部的应用程序接口(API)函数、动态链接库(DLL)、开放式数据连接(ODBC)、动态数据交换(ODE)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统[2]。
它的特点是:
(1)有面向对象的可视化设计工具
传统程序设计语言都是通过编写程序代码来设计用户界面,开发者在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察,如果想要修改界面效果,必须要返回到程序中进行修改,这样就影响了开发效率。
在VB中,应用面向对象的程序设计方法,把程序和数据封装起来视为一个对象,每个对象都是可视的。
开发者只需要按设计要求的屏幕布局,用系统提供的工具,直接在屏幕上画出窗口、菜单、命令按钮等不同类型的对象,并为每个对象设置属性即可,这种方式极大的方便了界面设计。
程序员所要编写的程序仅仅是针对对象要完成的事件过程的代码,所以极大的提高了设计效率。
(2)提供了易学易用的应用程序集成开发环境
在VB集成的开发环境中,用户可设计界面、编写代码和调试程序,把应用程序编译成可执行文件,直至把应用程序制作成安装盘,以便能够在脱离VB系统的Windows环境中运行。
(3)事件驱动的编程机制
事件驱动的编程方式非常适合图形用户界面。
在VB编程环境中,图形用户界面的应用程序是由用户的动作即事件掌握着程序的运行流向的。
每个事件都能驱动一段程序的运行,程序设计人员只要编写响应用户动作的代码,各个动作之间不一定有联系。
这样编写出的应用程序代码较短,使得程序既易于编写又易于维护。
(4)结构化的程序设计语言
VB具有丰富的数据类型,众多的内部函数,模块化、结构化的程序设计机制,结构清晰,简单易学。
VB语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。
(5)强大的数据库操纵功能
VB中利用数据控件可以访问多种数据库系统,如MicrosoftAccess等,也可访问多种电子表格。
VB6.0新增功能强大、使用方便的ADO技术,该技术包括了现有的ODBC,而且占有内存少,访问速度更快。
同时提供的ADO控件,不但可以用最少的代码创建数据库应用程序,也可以取代Data和RDO控件,支持多种数据库系统的访问。
(6)Active技术
Active是在原有的OLE技术上发展起来的更先进的技术,它使开发人员摆脱了特定语言的束缚,可方便的使用其他应用程序提供的功能。
使用VB能够开发集声音、图像、动画、字处理、电子表格和Web等对象于一体的应用程序。
(7)动态链接库(DLL)
VB是一种高级程序设计语言,所以不具备低级语言的功能,很难实现对机器硬件的访问。
但他可以通过动态链接库技术将C/C++语言或汇编语言编写的程序加入到VB应用程序中,可以像调用内部函数一样调用其他语言编写的函数。
另外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能[3]。
2.2Access数据库
Access作为Microsoft的office套件产品之一,成为世界上最流行的桌面数据库系统。
Access是Office系列软件中用来专门管理数据库的应用软件。
所谓数据库是指经过组织的、关于特定主题或对象的信息集合。
Access数据库与许多优秀的关系数据库一样,可以让你很容易的连接相关的信息而且还对其他的数据库系统有所补充。
它能操作其它来源的资料,包括许多流行的PC数据库程序和服务器、小型机及大型机上的许多SQL数据库。
Access还完全支持Microsoft的OLE技术。
Access将所有有名字的东西都视为对象(object),最重要的对象有表,查询,窗体,报表,宏和模块,下面对这些对象作一下简单介绍。
表:
用户定义的存储资料的对象,是关系数据库系统的基础。
表中的单个信息单元(列)称为字段,在表的顶部可以看到这些字段名;
表的一行中所有数据字段的集合,称为记录。
查询:
为来自一个或多个表的资料提供定制视图的对象。
通过使用查询,用户可以指定如何表示数据,选择构成查询的表,并可以从所选表中提取出最多255个特定的字段。
窗体:
窗体是数据库和用户的一个联系界面,大量的操作都要通过窗体完成,用于显示包含在表或查询结果中的数据,或操作数据库中的数据。
报表:
为格式化、计算、打印选定资料而设计的对象。
它是衡量一个优秀的数据库的重要标准(有时甚至是唯一的标准)。
宏:
为了响应已定义的事件,需要让Access去执行一个或多个操作,而宏就是对这些操作的结构化的定义对象。
模块:
包括用VBA编码的定制过程的一个对象。
在模块中使用VBA代码的目的主要有两个:
一是创建在窗体、报表和查询中使用的自定义函数;
二是提供在所有类模块中都可以使用的公共子过程。
模块能直接响应窗体或报表事件,也可以从应用程序的任何地方被调用。
Access是一种小型的数据库系统,但提供一组功能强大的工具,这些工具提供的功能相当完善,能够满足专业开发人员的需要,而且对于新用户来说,还十分易于上手[4]。
由于VB和Access数据库有以上诸多特点,所以本系统采用了这两种软件进行设计。
三 考试系统的开发与设计
3.1考试系统组成
该考试系统由考生登录模块,答题模块和数据库组成。
该系统主要能够实现考生登录时身份的验证,动态组卷,自动评分和数据库的管理等功能。
系统组成结构图见图3-1。
考生打开系统后,首先进入的是登录界面。
考生需要输入自己的学号来进行身份验证。
当考生身份验证有误时,系统会提示考生,让考生重新输入。
当考生身份验证无误后,就进入了答题界面。
系统通过访问数据库,随机抽出题目来生成试卷,考生即可开始答题。
在答题过程中,考生只能答题,如果考生点击交卷按钮,则系统会做出判断,给出提示,询问考生“时间未到,是否交卷”,如果考生要交卷就点击“是”那么系统就会按照给定的正确答案进行自动评分并给出答错题目的提示。
如果考生是误点击,就可以点击“否”系统就会返回答题界面让考生继续答题,评分结束后将会退出系统。
如果考生在规定的时间内没能完成全部题目,没能人为交卷,系统将会强制考生退出考试并由系统自动评分功能对已经做出的题目进行评判,给出相应得分数。
系统操作流程图见图3-2。
图3-1 系统组成结构图
3.2考生登录模块设计
当双击考试系统的快捷键后,系统进入了考生登录模块,在考生登录界面中有两个按钮—确定和取消,分别用来完成身份输入后的确定和取消功能。
考生登录模块的主要功能是用来识别考生的身份是否符合考试要求,对考生身份进行判断,将考生的浏览界面指向答题页面。
考生打开系统后,在登录框中输入学号(每名学生的学号是唯一的),计算机禁止两人或多人使用同一学号同时登录,点击确定后,系统会指向数据库中的考生信息表,使用学号查询来获得数据库中考生的信息,与该表中存储的考生信息进行比较。
当与考生输入的学号信息比较无误时,则可以进入答题环境,如果输入的学号出现错误,那么系统将会提示“没有该考生”,按确定后,考生就可以自行检查,重新输入学号。
登录界面示意图见图3-3。
图3-2 系统操作流程图
图3-3 登录界面示意图
下面将登录模块的主要程序代码介绍如下:
PrivateSubForm_Load()
Data1.DatabaseName=CurDir+"
\"
+"
db1"
;
指向数据库考生信息表中的内容;
EndSub
PrivateSubLabel4_Click()
DimStudent_nameAsString
DimStudent_numAsString
Student_num=Text1
Data1.Recordset.FindFirst"
[学号]="
'
"
+Text1+"
查找学号;
IfData1.Recordset.NoMatchThen
MsgBox"
没有该考生"
48,"
警告"
判断学号;
Else
Num_stu=Data1.Recordset.Fields("
学号"
)
Name_stu=Data1.Recordset.Fields("
姓名"
Form2.Show
Form1.Hide
EndIf
PrivateSubLabel5_Click()
UnloadMe;
取消按钮的设置,当点击后将退出考试系统;
3.3随机抽题组卷设计
无纸化考试系统普遍采用随机组卷来自动生成试卷,随机组卷是题库的最终目的。
本系统就是采用的随机自动组卷,用这种方式生成的试题客观性比较强,不容易产生雷同的试卷。
对于整个系统来说,组卷功能是十分重要的,也是程序设计的关键。
3.3.1随机抽题
随机抽题就是在已经建好的试题库中,随机抽出符合要求数量的题目,还要确保抽出的题目不重复。
这就要求有一个随机函数来完成在试题数据库动态指针不确定的指向。
在本系统中,采用了一个随机数组来实现,该数组随机产生一个数,指向试题库的相应题目,然后将试题存放到试卷库中,再产生一个随机数,指向试题数据库相应题目,取出来与已经确定的试题进行比较,如果不重复,就将新取出的题目放到试卷库中,如果与已取出的题目重复,则放弃该题目,由随机数组重新在产生一个随机数,再一次进行比较,直到组成试卷为止。
所以,要生成i道题目,那么至少要比较i-1次才能完成试卷的组合。
功能图见图3-4。
由于随机抽题是考试系统中的灵魂,所以在这里将主要的随机抽题源代码加以介绍,以供参考:
Randomize
Fori=1To20;
设置题目数量为20道;
Arry_num(i)=Int(Rnd*60+1);
由随机数组在题库中任意指向一个题目;
Compare:
Forj=1Toi–1;
另定义一个变量,用于比较抽出的题目是否重复;
IfArry_num(j)=Arry_num(i)Then;
如果抽出的题目与已经抽出的重复,则随机数组重新产生一个指向题库的随机数;
Arry_num(i)=Int(Rnd*60+1)
GoToCompare;
继续比较,直到完成组卷;
Nextj
Nexti
OnErrorResumeNext
图3-4 随机抽题功能图
3.3.2自动组卷
系统将随机从试题库中抽出的题目,存放到数据库中考卷表中。
本系统中,Date1是指向考卷表的,Date2是指向题库表的,由Date2从题库中取出的“题目”答案选A、B、C和标准答案分别与Date1所指向的对应的表的位置相等,这样,就能把题库中的试题和选项分别存放到了考卷的对应位置,即完成了自动组卷的过程。
3.3.3试卷删除功能
由于试卷是存放在数据库中,所以在提交完试卷后,系统应该能够自动将已经用过的试卷进行删除,以方便下一次在运行程序时能够重新进行抽题组卷功能。
在本系统中,先设定一个变量i,使i的取值范围为1到n,n=Data1.Recordset.RecordCount,即n是数据库中试题的数量。
Date1首先指向第一个数据,通过Data1.Recordset.Delete这一语句可将存放的第一个数据删除,再利用Data1.Recordset.MoveNext语句使指针下移一位再进行删除,直到将所有的存放在试卷库中的题目删完为止。
所以,在执行完这一组程序后,试卷库中应为空。
3.4考试系统的答题界面
在答题界面中,有无纸化考试系统答题的基本按钮:
上下题目的选择按钮、抽题和交卷按钮。
有考生的基本信息:
学号和姓名。
如果在身份验证时输入的是别人的学号,而这个学号又是存在于数据库当中的,那么在登录时候系统将不能做出判断,依然允许进入答题界面,考生就可以在这个界面中进一步验证自己的身份,以保证自己的考试不受影响。
答题界面中还有试题显示区域、答案内容显示区域及答案选项。
而且,在学生答题的时候,倒计时的时钟也将显示在界面上,能够提醒考生剩余的时间。
而且,在这个系统中,将选项“A”、“B”、“C”分别设定成不同的颜色,有利于提醒考生,防止考生由于眼睛疲劳将选项看错而将答案填错。
答题界面示意图见图3-5。
图3-5 答题界面示意图
3.5交卷功能的设计
考试最终要把答案交到数据库当中,在本系统中,由于采用了计时功能设计,所以交卷分为考生主动交卷和系统强制交卷两种。
第一种,考生主动交卷。
如果考生答完试题检查无误或者是想结束答题而进行交卷,由于系统不能判断出是考生主观上想交卷还是由于误操作而交卷,系统将不会马上接受交卷命令,而是给出考生提示信息“时间未到,是否交卷”,如果是考生主观就想马上交卷,则可点击按钮“是”,这样系统将会接受考生的交卷指令。
如果是考生的误操作,考生仍想继续答题,则可点击按钮“否”,那么系统将不接受交卷指令,而是返回到答题界面允许考生继续答题。
第二种,系统强制交卷。
如果考生在规定的时间内没能完成所有题目,系统也不会给考生更多的时间继续答题,因为系统给每个考生的答题时间都是相同的,他不会偏向于哪一个考生,这就是无纸化考试系统的客观公正性。
但是,系统不会因为考生没有