学院首页>网页制作>心得技巧>如何制作在张试卷

如何制作在张试卷

作者:未知 来源:未知 添加时间: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 %>


上面的程序只是一个简单的范例,你可以依照个人需求更改程序,譬如你可以让考生选择会做的题目先做,而不用一题一题依照顺序,你也可以在数据库里面多设一个字段(考生姓名),让每一个考生的题目都不一样,为了避免考生按上一页重选答案,你还可以加一点小技巧让浏览器的上一页按钮失效,这个程序虽小但弹性可是蛮大的喔!!
站内搜索