在线考试系统论文论文.docx
《在线考试系统论文论文.docx》由会员分享,可在线阅读,更多相关《在线考试系统论文论文.docx(29页珍藏版)》请在冰点文库上搜索。
在线考试系统论文论文
摘要:
本文主要研究了题库管理系统的设计与开发,研究该课题的主要目的是便于学生进行测试、复习知识,学生可以登录此系统进行答题,实现考、测一体化,提高学校的教学质量和效率。
系统主要用VS2005以及SQL2005来实现。
关键字:
在线考试系统题库Sql2005
第1章系统分析
1.1开发背景
随着互联网的发展、广泛普及以及校园网的发展,计算机考试已成为一种趋势,运用计算机考试一方面可以节省人力物力,另一方面也给师生带来了方便,所以设计出一款界面友好型、经济实用型的软件已经迫在眉睫、刻不容缓。
现代高等教育中,网络的运用是提高学校教学效果和教学效率、提高科研和管理水平的必要手段。
目前的一个发展趋势是采用大规模试题库的计算机网络考试模式,随着计算机网络在生产生活、科技教育中的普及,传统的考试出卷、答卷方式以及学绩管理正发生着巨大的变革,因此,如何使考试过程变得方便、高效、快捷、公正,是现代教育的一个重要课题。
当前国际上许多考试认证,例如GRE、CISCO,其出题、答卷以及评分都是在计算机上完成的。
无纸化的考试形式有着其科学、及时、准确、公平等优点,具有传统考试形式无法替代和比拟的优势,一方面可以防止考生心存侥幸,投机取巧;另一方面它保密性高,考试时间灵活,提高了学校的教学水平。
本文设计的是一套基于微软SQLserver2005数据库的网络软件系统.
1.2系统需求分析
1.功能需求
系统应提供用户登录识别,对试题进行增、删、改、查询功能,自动生成试题,自动判卷功能等。
2.性能需求【1】
系统反应时间应在2s内,主存容量应该为256MB,磁盘容量最少应为80GB,在安全性方面应该防止SQL注入等。
3.可靠性可用性需求
在考试期间不能出现系统崩溃情况,当遇到的断电等突发情况,应该有一定的恢复措施,在一个月内在任何一台计算机上该系统不可用的时间不能超过2%。
4.出错处理需求
当插入的数据出现是系统应该给一个友好的提示,比如弹出一个对话框进行提示等。
1.3开发环境
数据库是数据管理的最新技术,是计算机科学的重要分支【2】。
今天,信息资源已成为各个部门的重要财富和资源。
十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。
由于数据库具有数据的结构化、可控冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,因此,作为信息系统核心和和基础的数据库技术得到了越来越广泛的应用,越来越多的新的应用领域采用数据库技术来存储和处理信息资源,较大的信息系统都是建立在数据库设计之上的。
由于用到的数据表格多,学生基本信息的变动较大,我们选用SQLServer作为数据库开发,而不用Access,主要是因为Access存放的记录,在实际运用中不适合此系统;而SQLServer是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,使用方便快捷,故选用SQLServer数据库。
用VB语言进行编码。
VB编程语言是微软在.NET计划中重要的开发语言,它具有语法简单,功能强大,快速应用,语言自由,强大的Web服务器控件,支持跨平台,与XML相融合等。
因此选择VB编程语言。
第2章系统设计
2.1系统架构
整个系统分为三个部分,管理员、学生和主界面。
由于每个用户的权限不同,所以用户进入系统应该进行身份验证。
根据不同的身份权限进入不同的操作界面,进行不同的操作,浏览不同的页面。
学生进入考试系统后,能进行考试,以及查看自己的考分。
对于每个考试者来说,试卷的试题和题量都应是相同的,并且为了保证考试的公平性,每个考生只限制抽取一次题。
考试者选择答案提交后,由计算机自动判卷,得到成绩后立即显示出来。
考试完毕后,用户应该退出系统。
对于管理员来说,可以根据需要往数据库录入试题,还能对题库进行增、删、改、查、等操作。
本系统是以WindowsXP系统为操作平台,在.NET2005环境下编程实现。
系统ER图:
2.2系统功能模块
本题库管理系统分为用户管理模块、学生管理模块、题库管理模块、试卷生成管理模块、考试查询模块、考试页面管理模块六个模块。
图2-2系统模块图
学生用例图【3】:
图2-3学生用例图
管理员用例图:
图2-4管理员用例图
2.3系统数据库设计
综合以上分析,要实现上面的所有功能模块,本题库系统共有8个数据表,分别是:
选择题信息表、判断题信息表、填空题信息表、问答题信息表、试题科目表、管理员信息表、试卷信息表和试卷内容表。
表2-1管理员信息表(admin)
列名
含义
数据类型
长度
缺省值
允许空
admin_id
用户名
Varchar
100
无
否
admin_pwd
密码
Varchar
100
无
否
表2-2试题科目表(Sub)
列名
含义
数据类型
长度
缺省值
允许空
QuestionSub
试题科目
nvarchar
50
无
否
表2-3选择题信息表(SingleSel)
列名
含义
数据类型
长度
缺省值
允许空
QuestionID
试题编号
char
20
无
否
Question
试题内容
ntext
16
无
否
列名
含义
数据类型
长度
缺省值
允许空
Choice_A
选项A
nvarchar
50
无
否
Choice_B
选项B
nvarchar
50
无
否
Choice_C
选项C
nvarchar
50
无
否
Choice_D
选项D
nvarchar
50
无
否
Answer
正确答案
char
10
无
否
QuestionSub
所属科目
nvarchar
50
无
否
QuestionTime
录入时间
nvarchar
50
无
否
QuestionType
试题类型
nvarchar
50
无
否
表2-4判断题信息表(RightOrWrong)
列名
含义
数据类型
长度
缺省值
允许空
QuestionID
试题编号
char
20
无
否
Question
试题内容
ntext
16
无
否
Answer
正确答案
char
10
无
否
QuestionSub
所属科目
nvarchar
50
无
否
QuestionTime
录入时间
nvarchar
50
无
否
QuestionType
试题类型
nvarchar
50
无
否
表2-5填空题信息表(Filling)
列名
含义
数据类型
长度
缺省值
允许空
QuestionID
试题编号
char
20
无
否
Question
试题内容
ntext
16
无
否
Answer
正确答案
nvarchar
50
无
否
QuestionSub
所属科目
nvarchar
50
无
否
QuestionTime
录入时间
nvarchar
50
无
否
QuestionType
试题类型
nvarchar
50
无
否
表2-6问答题信息表(EssayQuestion)
列名
含义
数据类型
长度
缺省值
允许空
QuestionID
试题编号
char
20
无
否
Question
试题内容
ntext
16
无
否
Answer
正确答案
ntext
16
无
否
QuestionSub
所属科目
nvarchar
50
无
否
QuestionTime
录入时间
nvarchar
50
无
否
QuestionType
试题类型
nvarchar
50
无
否
表2-7试卷信息表(test1)
列名
含义
数据类型
长度
缺省值
允许空
test_number
试卷编号
char
20
无
否
test_name
试卷名称
nvarchar
100
无
否
test_sub
试卷科目
nvarchar
100
无
否
test_score
试卷分值
float
8
无
否
xzQuantity
选择题数量
int
4
无
是
xzScore
选择题分值
float
8
无
是
pdQuantity
判断题数量
int
4
无
是
pdScore
判断题分值
float
8
无
是
tkQuantity
填空题数量
int
4
无
是
tkScore
填空题分值
float
8
无
是
wdQuantity
问答题数量
int
4
无
是
wdScore
问答题分值
float
8
无
是
表2-8试卷内容表(QuestionPaper)
列名
含义
数据类型
长度
缺省值
允许空
test_number
试卷编号
char
20
无
否
PaperSerial
试卷中的题号
char
20
无
是
QuestionID
试题编号
char
20
无
否
QuestionType
试题类型
varchar
50
无
否
Score
试题分值
float
8
无
否
第3章系统实现
3.1管理员主页面
管理员页面包括用户登录Login.aspx页面.
图3-1学生主界面
对于用户名用RequiredFieldValidator控件【4】来判断其不能为空,对于判断登录用户是否合法,用If(dr.Read())来判断。
Dimusername,passwordAsString
username=TexUserName.Text.ToString().Trim()
password=TexPassword.Text.ToString().Trim()
DimconnAsNewOleDbConnection("Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=ExamTest;DataSource=.")
DimcmdAsNewOleDbCommand("select*fromadminwhereadmin_id='"&username&"'andadmin_pwd='"&password&"'",conn)
conn.Open()
DimdrAsOleDbDataReader=cmd.ExecuteReader()
If(dr.Read())Then
Session("admin_id")=username
IfDropDLAdmin.SelectedItem.Value="管理员"Then
Response.Redirect("admin.aspx")
ElseIfDropDLAdmin.SelectedItem.Value="学生"Then
Response.Redirect("Student.aspx")
EndIf
ElseIfMsgBox("你输入的用户名密码有误!
!
!
")Then
EndIf
conn.Close()
Admin.aspx管理员主页面:
图3-2题库管理主界面
使用普通按钮Response.Redirect("PassWordAlter.aspx")语句来实现页面之间的跳转。
Response.Redirect("PassWordAlter.aspx")
PassWordAlter.aspx页面来修改密码(其中Session("admin_id")为从Login.aspx页面传来的变量):
图3-3密码修改界面
Dimjiumima,xinmima1,xinmima2AsString
jiumima=TextBox1.Text.ToString().Trim()
xinmima1=TextBox2.Text.ToString().Trim()
xinmima2=TextBox3.Text.ToString().Trim()
DimconnAsNewOleDbConnection("Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=ExamTest;DataSource=.")
Dimcmd1AsNewOleDbCommand("select*fromadminwhereadmin_id='"&Session("admin_id")&"'andadmin_pwd='"&jiumima&"'",conn)
conn.Open()
Dimdr1AsOleDbDataReader=cmd1.ExecuteReader()
'判断记录是否存在
If(dr1.Read())Then
IfTextBox2.Text=TextBox3.TextThen
Dimcmd2AsNewOleDbCommand("updateadminsetadmin_pwd='"&xinmima1&"'whereadmin_id='"&Session("admin_id")&"'",conn)
Dimdr2AsOleDbDataReader=cmd2.ExecuteReader()
MsgBox("恭喜,密码修改成功")
ElseIfMsgBox("两次输入的密码不一致")Then
EndIf
ElseIfMsgBox("你输入的密码有误!
!
!
")Then
EndIf
conn.Close()
添加试题、查询试题页面(试题管理页面)TestManagement.aspx,其中在页面TestManagement.aspx用Session("biaoming")来保存表名。
图3-4试题管理界面
页面加载时代码如下:
Session("QuestionType")=DropDownList1.Text.ToString().Trim()
添加试题按钮单击事件代码如下:
IfDropDownList1.Text="选择题"Then
Response.Redirect("AddSingle.aspx")
ElseIfDropDownList1.Text="填空题"Then
Response.Redirect("AddFilling.aspx")
ElseIfDropDownList1.Text="判断题"Then
Response.Redirect("AddRightOrWrong.aspx")
ElseIfDropDownList1.Text="问答题"Then
Response.Redirect("AddEssayQuestion.aspx")
EndIf
查询按钮单击事件代码如下:
DataBindGridView()
DataBindGridView子过程代码如下:
SubDataBindGridView()
Dimstrsql1,strsql2,strsql3,strsql4AsString
strsql1="selectQuestionID,Question,QuestionSub,QuestionTime,QuestionTypefromSingleSelwhereQuestionSub='"&DropDKM.Text.ToString().Trim()&"'andQuestionType='"&DropDTX.Text.ToString().Trim()&"'andQuestionTime='"&TexSJ.Text.ToString().Trim()&"'"
strsql2="selectQuestionID,Question,QuestionSub,QuestionTime,QuestionTypefromRightOrWrongwhereQuestionSub='"&DropDKM.Text.ToString().Trim()&"'andQuestionType='"&DropDTX.Text.ToString().Trim()&"'andQuestionTime='"&TexSJ.Text.ToString().Trim()&"'"
strsql3="selectQuestionID,Question,QuestionSub,QuestionTime,QuestionTypefromFillingwhereQuestionSub='"&DropDKM.Text.ToString.Trim()&"'andQuestionType='"&DropDTX.Text.ToString().Trim()&"'andQuestionTime='"&TexSJ.Text.ToString().Trim()&"'"
strsql4="selectQuestionID,Question,QuestionSub,QuestionTime,QuestionTypefromEssayQuestionwhereQuestionSub='"&DropDKM.Text.ToString().Trim()&"'andQuestionType='"&DropDTX.Text.ToString().Trim()&"'andQuestionTime='"&TexSJ.Text.ToString().Trim()&"'"
DimconnAsNewOleDbConnection("Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=ExamTest;DataSource=.")
Dimcmd1AsNewOleDbCommand(strsql1,conn)
Dimcmd2AsNewOleDbCommand(strsql2,conn)
Dimcmd3AsNewOleDbCommand(strsql3,conn)
Dimcmd4AsNewOleDbCommand(strsql4,conn)
conn.Open()
IfDropDTX.Text="选择题"Then
Dimdr1AsOleDbDataReader=cmd1.ExecuteReader()
GridView1.DataSource=dr1
GridView1.DataBind()
Session("biaoming")="SingleSel"
ElseIfDropDTX.Text="判断题"Then
Dimdr2AsOleDbDataReader=cmd2.ExecuteReader()
GridView1.DataSource=dr2
GridView1.DataBind()
Session("biaoming")="RightOrWrong"
ElseIfDropDTX.Text="填空题"Then
Dimdr3AsOleDbDataReader=cmd3.ExecuteReader()
GridView1.DataSource=dr3
GridView1.DataBind()
Session("biaoming")="Filling"
ElseIfDropDTX.Text="问答题"Then
Dimdr4AsOleDbDataReader=cmd4.ExecuteReader()
GridView1.DataSource=dr4
GridView1.DataBind()
Session("biaoming")="EssayQuestion"
EndIf
conn.Close()
EndSub
其中DataBindGridView1子过程代码如下:
SubDataBindGridView1()
DimstrsqlAsString
'建立Connection对象
DimconnAsNewOleDbConnection("Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=ExamTest;DataSource=.")
'建立Command对象
strsql="selectQuestionID,Question,QuestionSub,QuestionTime,QuestionTypefrom"&Session("biaoming")&"whereQuestionID='"&Session("ID").ToString().Trim()&"'"
DimcmdAsNewOleDbCommand(strsql,conn)
'建立DataAdapter对象
DimadpAsNewOleDbDataAdapter(cmd)
'建立DataSet对象
DimdsAsNewDataSet()
'填充DataSet对象
adp.Fill(ds,"link")
'绑定数据对象
GridView1.DataSource=ds.Tables("link").DefaultView'指定数据源
GridView1.DataBind()'执行绑定
EndSub
对选择题进行操作的页面AddSingle.aspx:
图3-5插入选择题界面
其中插入按钮点击事件代码如下:
Dimstrsql,shitibianhao,suoshukemu,chuangjianshijian,shitineirong,xuanxiangA,xuanxiangB,xuanxiangC,xuanxiangD,daanAsString
shitibianhao=TexSTBH.Text.ToString().Trim()