如何制作在张试卷
作者:未知 来源:未知 添加时间:2006-5-21 10:12:09首先你必须先建立一个储存考试资料的数据库,数据库表格和字段名称定义如下:
考试卷
题目编号 自动编号
题目 文字 (255字符)
答案 文字 (255字符)
答案 文字 (255字符)
答案 文字 (255字符)
答案 文字 (255字符)
正确答案 文字 (255字符)
警示语 文字 (255字符)
接下来让我们看看执行测验功能的程序该如何撰写
quiz.asp
<html>
<body marginheight="30"
marginwidth="30"
topmargin="180"
leftmargin="250" background=/images/yellow_bg.gif
text=blue >
<%'建立数据库连结
set conntemp = server.createobject("adoDB.Connection")
'指定数据库路径
myDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("/asp/quiz/quiz.mdb") & ";DefaultDir=" &
Server.MapPath("/asp/quiz") & ";DriverId=25;FILE=MS
Access;MaxBufferSize=512;PageTimeout=5"
conntemp.Open myDSN
'计算题目总数
Dim rsTotalRecords
strSQL = "SELECT COUNT(*) FROM 考试卷"
Set rsTotalRecords = conntemp.Execute(strSQL)
%><%Records=Cint(rsTotalRecords(0))%>
<% If Request.Form("Records")="" then
Y = Records
else
Y = Request.Form("Records")
end if
'目前的题目编号
CurQ = Request.Form("CurQ")
'作答者所选的答案
Answ = Request.Form("Answ")
'答对的题目总数
correct=Request.Form("Correct")
'答错的题目总数
wrong=Request.Form("Wrong")%>
<%'如果所有题目都回答完了,笔者在数据库所建的资料只有2笔
If CurQ >2 Then%>
<p>恭喜你,你已经完成这次的测验 ,你一共答错<%=wrong%> 题</p><bR>
<p>答对了<%=correct%>题,你的分数是<font color=red><%=(100/Records)*correct%></font>分</p>
<%I=(100/Records)*correct%>
<%'计算总分
IF I < 50 then%>
<p>你被当了</p>
<%else %>
<p>算你运气好</p>
<%end if%>
<%Response.End%>
<%End If%>
<%'进入考场的第一个画面
If CurQ=empty Then %><p>欢迎进入考场,这一次的测验共有<%
=Records%>道题目,每题<%=100/Records%>分 </p>
<%'将题目指定在第一题
CurQ = 1
'答对的题数一开始为0
correct = 0
'答错的题数一开始为0
wrong = 0
End If
'如果还没开始作答就显示第一道题目
If Answ=empty Then%><% set conntemp = server.createobject("adoDB.Connection")
myDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("/asp/quiz/quiz.mdb") & ";DefaultDir=" &
Server.MapPath("/asp/quiz") & ";DriverId=25;FILE=MS
Access;MaxBufferSize=512;PageTimeout=5"
conntemp.Open myDSN
mySQL = "SELECT * FROM 考试卷 WHERE 题目编号=" & CurQ
set rsTemp= conntemp.Execute(mySQL)
%>
<%'将题目即选项显示于Client端%>
<h2><p>这是第<%=rsTemp("题目编号")%>道题目</P> </h2>
<form method=POST action="quiz.ASP">
<%'将目前的题目编号传递出去%>
<input type=hidden name=CurQ value=<%=CurQ%>>
问题<%=rsTemp("题目编号")%>: <%=rsTemp("题目")%>
选项:
<select name="AnsW">
<option value=1><%=rsTemp("A")%></option>
<option value=2><%=rsTemp("B")%></option>
<option value=3><%=rsTemp("C")%></option>
<option value=4><%=rsTemp("D")%></option>
</select>
<%'将答对的题目总数传递出去%>
<input type=hidden name=correct value="<%=correct%>">
<%'将剩余的题目总数传递出去%>
<input type=hidden name=records value="<%=Y-1%>">
<%'将答错的题目总数传递出去%>
<input type=hidden name=wrong value="<%=wrong%>">
<input type=reset value="重选"><input type=submit value="回答!">
</form>
<%'如果已经回答问题就验证答案的正确性%>
<% Else %>
<% set conntemp = server.createobject("adoDB.Connection")
myDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("/asp/quiz/quiz.mdb") & ";DefaultDir=" &
Server.MapPath("/asp/quiz") & ";DriverId=25;FILE=MS
Access;MaxBufferSize=512;PageTimeout=5"
conntemp.Open myDSN
mySQL = "SELECT * FROM 考试卷 WHERE 题目编号=" & CurQ
set rsTemp= conntemp.Execute(mySQL)
'如果答对了就给予鼓励
If AnsW = rsTemp("正确答案") Then
%> <%
'将答对题数加1
correct = correct + 1 %>
正确答案是<%=rsTemp("正确答案")%>
<p>恭喜你,你答对了</p>
<%'如果题目还没做完就告知考生还有多少题目未做
if Y>0 then%>
还有<%=Y%>道题目
<%else%>
测验结束
<%end if%>
<%'如果答错了就给予警告%>
<% Else %>
正确答案是<%=rsTemp("正确答案")%>
<p>你真笨,连这个都不会: </p>
<p><%=rsTemp("警示语")%></p>
<%
'将答对题数减1
wrong = wrong + 1 %>
<%if Y>0 then%>
还有<%=Y%>道题目
<%else%>
测验结束
<%end if%>
<% End If %>
<%'如果题目还没做完就显示下一题的按钮
if curQ < 2 then%>
<form method=POST action="quiz.ASP">
<input type="hidden" name=curQ value="<%=curQ+1%>">
<input type="hidden" name=correct value="<%=correct%>">
<input type="hidden" name=wrong value="<%=wrong%>">
<input type=hidden name=records value="<%=Y-1%>">
<input type="submit" value="下一个问题">
</form>
<%
'如果题目做完了就请考生观看成绩
else%>
<form method=POST action="quiz.ASP">
<input type="hidden" name=curQ value="<%=curQ+1%>">
<input type="hidden" name=correct value="<%=correct%>">
<input type="hidden" name=wrong value="<%=wrong%>">
<input type="submit" value="看看你的测验成绩吧!!">
</form>
<% End If %>
<% End If %>
上面的程序只是一个简单的范例,你可以依照个人需求更改程序,譬如你可以让考生选择会做的题目先做,而不用一题一题依照顺序,你也可以在数据库里面多设一个字段(考生姓名),让每一个考生的题目都不一样,为了避免考生按上一页重选答案,你还可以加一点小技巧让浏览器的上一页按钮失效,这个程序虽小但弹性可是蛮大的喔!!
站内搜索