用户注册。如果submit的值为“管理”就转到admin文件夹中的login.asp页。重点程序如下:
set rs = server.createobject("adodb.recordset")
rs是一个变量,用来存放一个recordset对象。
sql="select * from student where studentname='" & Request.Form("studentname") & "' and studentpassword='" & Request.Form("studentpassword") & "'"
变量sql代表一个SQL语句,功能是从表student中选出用户名和密码与考生提交的用户名和密码都相同的记录。
rs.open sql,conn,1,1
该语句的功能是执行sql语句并把记录集结果存储在变量rs中。
rs.close的作用是关闭纪录。
session("studentname")=request.form("studentname")
该句的意思是把表单提交的变量studentname的值赋给一个session对象studentname。这个对象用来存储用户名,它在该用户对每个页面的访问中有效。
set rs=nothing含义是清空rs变量。
call endConnection()是调用conn.asp中的过程,用来关闭于数据库的连接。
3.<register.asp>
该文件实现了用户注册的功能,用户只要填写想要注册的用户名及密码,文件首先查看用户名是否已经存在,如果存在就提示该用户名已经存在,否则就将用户输入的信息添加到数据库中的student表内。然后用户就可以使用自己注册的用户名和密码登录在线考试系统进行在线考试。
在文件中,表单提交给register.Asp自身进行处理,如果submit值为“注册”首先进行判断看用户名或密码是否为空。如果为空就显示“错误!用户名或密码不能为空!”的信息。如果不为空,进行下一步判断,看student表中是否已经存在用户想要注册的用户名,如果存在,就显示信息“错误!该用学生存在!”,如果不存在就将要注册的用户名和密码写入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")
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>