在线考试系统论文(源代码+流程图) 第12页

在线考试系统论文源代码流程图|免费论文
注册的用户名,如果存在,就显示信息“错误!该用学生存在!”,如果不存在就将要注册的用户名和密码写入student表。代码如下:
sql="insert into student(studentname,studentpassword) values('" & cstr(trim(request("studentname"))) & "','" & cstr(trim(request("studentpassword"))) & "')"
conn.execute sql
最后,用一个Vbscrip语言编写的消息框显示注册成功信息。
4.<selectsubject.asp>
该文件是实现用户登录在线考试系统后进行考试科目选择的功能,选择科目后进入考试界面。
该文件首先是将subject表中所有的纪录都以单选项的方式选出来,如果没有纪录,则显示“对不起,暂时没有任何考试科目。”用户按提交后,表单仍然提交给文件自身。处理程序首先判断用户是否选择了一个考试科目,如果没有选择显示“你没有选择考试科目,请选择考试科目!”如果选择了某个考试科目,先把该科目赋值给一个session变量selectsubjectname,然后从subject表中选出该科的相关信息,并也都设成session变量。Singlenumber表示单选试题数量,multinumber表示多选试题数量,singleper表示单选试题分值,multiper表示多选试题分值,testtime表示考试总时间。接着进入考试界面。
5.<test.asp>
该文件就是考试界面,实现真正的动态随机选题,并对每个考生的考试时间进行监控,到结束时间后自动给出提示。
该文件的总体构架是使用了if else 语句进行了一个选择,刚进入该页面submit1得值肯定不等于“开始考试”,所以先显示出“开始考试”的按钮。按下以后,首先把当前时间以分种为单位存储在session的变量starttime中。然后进入随机抽取试题部分,单选题和多选题的抽取很相似,只不过一个是单选按钮,一个是多选按钮罢了。这里只解释单选题的部分。
strid1=""是定义了一个字符串变量,并先赋值为空。
Randomize是产生随机种子,在使用rnd()函数之前一定要先用Randomize产生随机种子才能实现其产生0~1之间随机数的功能。
for i=1 to session("singlenumber")直到next是选择singlenumber(代表某科目的单选题数量)个单选题。
下面的代码实现了从数据库中随机不重复的选题:
set rs=server.createobject("adodb.recordset")
sql="select * from question where subjectname='"&session("selectsubjectname") & "'and type='单选题' and haveselect=0 "
rs.open sql,conn,3,2
count=rs.recordcount
temp=fix(count*rnd(10))
rs.move temp
rs("haveselect")=1
rs.update
strid1=strid1 & rs("ID") & ","
其中haveselect标志某题是否已经被选过。
Count变量用来存放所有未被选过的单选题的总数。
temp变量用来存放0~Count之间的随机整数值。
rs.move temp是将当前记录移到第temp条纪录。
rs("haveselect")=1是将当前选出的纪录的标志位设为1,然后用rs.update把数据库中的相应标志位改为1。
strid1=strid1 & rs("ID") & ","是将所有选出的试题的id号用逗号分割后存储在strid1一个变量中,以方便的把所有选出的试题的id号传到result.Asp文件中,这也是本设计的一个独特的地方。需要说明的是strid1变量的最后是一个逗号,在下一个文件中会详细说明如何进行处理。
set rs=server.createobject("adodb.recordset")
sql="select * from question where haveselect=1 "
rs.open sql,conn,3,2
rs.movefirst
do while  not rs.eof 
rs("haveselect")=0
rs.update
rs.movenext
loop
上面一段程序是在选完题之后将所有已经设成1的haveselect改写成0,这样自己下次或别人就仍可以选择所有的试题。
最后一段程序是用来计时的,考试时间到了之后自动给出提示。
6.<result.asp>
考生提交答卷以后,该文件就把考生的答案同question表中的正确答案进行比较,最后得出考生的得分。
首先是变量赋值,取得session对象的一些变量值,以方便使用。endtime=now()是去的考试结束时间。
selectstr1=request.form("hidQuestID1")和
selectstr2=request.form("hidQuestID2")是获取存放被选单选和多选试题的id号的两个字符串。
len1=len(selectstr1)和
len2=len(selectstr2)是取得两个字符串的长度。
str1=left(selectstr1,len1-1)
str2=left(selectstr2,len2-1)是把两个字符串的结尾(也就是逗号)取掉。
dim id1,id2
id1=split(str1,",")
id2=split(str2,",")是用split()函数将存有id号的字符串拆开并存放到数组当中,以便调用。
以上就实现了所有被选中的试题的id号的传递。
下面这段程序就实现了单选试题的答案于正确答案的比较,并得出单选题应得分数。
for i=1 to singlenumber
result=request.form("no"&id1(i-1))
if  not isempty(result) then
sql="select * from question where id="& clng(id1(i-1))
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2    
if result=rs("answer") then
score=score+cint(singleper)
end if
rs.close
set rs=nothing
else
end if
next
多选题与单选题程序基本相同,这里就不赘述了。
接着就是将考试结果纪录存入score表中,并对考生显示出考试成绩。
上面是在线考试系统考试部分的程序及其解释,该部分是系统最主要的部分,所以解释得比较详细。管理部分很多文件功能都很相似,这里就只挑功能最全又比较重要的文件作以解释。(这些文件都放在admin文件夹下)
7.<primary.asp>
该文件实现的功能是管理员选择进行管理的项目,也就是管理主界面。
8.<mgstudent.asp>
该文件实现对用户进行管理(删除或添加)的功能。

 << 上一页  [11] [12] [13] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有