下面就是满足你设想的几个主程序,你还可以在实际应用中不断完善和扩充:
login.asp ' 考生验证 <%@ Language=VBScript%> <% name=trim(request("name")) passwd=trim(request("passwd")) if name<>"" and passwd<>"" then ' 检查考生是否输入用户名和密码 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver(*.mdb)}; dbq="& Server.MapPat("exercise.mdb") set rs= server.createobject("adodb.recordset") sql= "select * from user where user= '" &name&"' and passwd='" & passwd &"'" Set rs= conn.Execute(sql) ' 验证考生合法性 if not(rs.eof) then if rs("score")<>0 then ' 检查考生是否已参加过考试,若是则进行成绩查询 response.write rs("user")&"的考试成绩是"&rs("score") else session("pass")=1 session("user")=name response.redirect "test.asp" end if else Response.Write "噢,您输入的用户名或密码不正确!" end if else end if %> <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <TITLE>精彩春风之考生登录</TITLE> </HEAD> <BODY> <FORM action="login.asp" id= FORM1 method=post name=FORM1> <P title="">&nbsp;</P> <P title="">&nbsp;</P> <P title="" align=center>考生: <INPUT id=text1 name=name style="HEIGHT:22px; WIDTH: 103px"></P> <P title="" align=center>密码: <INPUT id=password1 name=passwd style="HEIGHT: 23px; WIDTH: 101px" type=password></P> <P title="" align=center> <INPUT id=submit1 name=submit1 type=submit value="进入 " style="FONT-SIZE: medium; FONT-STYLE: normal; FONT-VARIANT:normal; FONT-WEIGHT: bold" title=""></P> <P title="" align=center> </P> </FORM> </BODY> </HTML>
test.asp ' 从题库中取题考试 <%@ Language=VBScript %> <% if session("pass")<>1 then response.redirect "login.asp" else end if Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)}; dbq="& Server.MapPath("exercise.mdb") sql="select * from test" Set rs = conn.Execute( sql ) ' 提取试题 %>
<SCRIPT LANGUAGE="JavaScript"> var isn1=null; var isn2=false; today=new Date(); function stopit(){ if(isn2){ clearTimeout(isn1); } isn2 = false; } function startit(){ stopit(); isnclock(); } function isnclock(){ var now=new Date(); var hrs=now.getHours(); var min=now.getMinutes(); var sec=now.getSeconds(); document.clckh.disp.value=""+((hrs>12) ? hrs-12 : hrs); document.clckm.disp.value=((min<10) ? "0" : "")+min; document.clcks.disp.value=((sec<10) ? "0" : "")+sec; document.clck.disp.value=(hrs>=12) ? "p.m." : "a.m."; isn1=setTimeout("isnclock()",1000); isn2=true; } </SCRIPT> ' 以上是一个计时函数
<HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <BODY onLoad="startit()" BGCOLOR="FFFFFF"> <center> ' 调用计时函数显示时间 <TABLE BORDER=2> <TR> <TD>Time</TD><TD>Hour</TD><TD>Min</TD><TD>Sec</TD><TD></TD> </TR> <TR> <TD></TD> <TD VALIGN=TOP><FORM NAME="clckh" onSubmit="0"> <INPUT TYPE="text" NAME="disp" SIZE=2 VALUE =""> </FORM></TD> <TD VALIGN=TOP><FORM NAME="clckm" onSubmit="0"> <INPUT TYPE="text" NAME="disp" SIZE=2 VALUE =""> </FORM></TD> <TD VALIGN=TOP><FORM NAME="clcks" onSubmit="0"> <INPUT TYPE="text" NAME="disp" SIZE=2 VALUE =""> </FORM></TD> <TD VALIGN=TOP><FORM NAME="clck" onSubmit="0"> <INPUT TYPE="text" NAME="disp" SIZE=4 VALUE =""> </FORM></TD></TR> </center>
<FORM action="result.asp" id=FORM1 method=post name=FORM1> ' 显示试题 <P>&nbsp;</P> <P> <% i=1 rs.movefirst do while not rs.eof%> <P>&nbsp;&nbsp; <%=rs("question")%></P> <TABLE align=center border=1 cellPadding=1 cellSpacing=1 width="80%"> <TR> <TD style="WIDTH: 50%" width="50%"> <INPUT name=ans<%=i%> type=radio value="A"><%=rs("a")%></TD> <TD><INPUT name=ans<%=i% > type=radio value="B"><%=rs("b")%></TD></TR> <TR> <TD><INPUT name=ans<%=i%> type=radio value="C"><%=rs("c")%></TD> <TD><INPUT name=ans<%=i%> type=radio value="D"><%=rs("d")%></TD> </TR> </TABLE> <% i=i+1 rs.movenext loop %> </P> <P></P> <P align=center><INPUT id=submit1 name=submit1 type=submit value=交卷> <INPUT id=reset1 name=reset1 type=reset value=Reset></P></FORM> </BODY> </HTML>
result.asp ' 评分并将成绩记录到数据库 <%@ Language=VBScript %> <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <BODY> <P>&nbsp;</P> <% name=session("user") dim score Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver(*.mdb)}; dbq=" & Server.MapPath("exercise.mdb") sql="select ans from test" Set rs = conn.Execute( sql ) ycorrect=0 rsCount=0
Response.Write "标准答案:" ' 给出标准答案并评分 Do while not rs.eof Response.Write rs("ans") rsCount=rsCount+1 if Request.Form(rsCount)=rs("ans") then ycorrect=ycorrect+1 end if rs.movenext loop Response.Write "<br>您的答案:" score=int(ycorrect/rscount*100) for i=1 to Request.Form.Count-1 Response.Write Request.Form(i) next Response.Write "<br>" Response.Write "您的成绩:"&score if score<60 then Response.Write "别难过,您不及格!"&"<br>" else if score>=60 Response.Write "幸好,您及格了!"&"<br>" else Response.Write "恭喜,您获得了优秀!"
strSql="insert into user (result) values ("&score&") where user='"&name&"'" conn.execute(strSql) ' 将成绩存到数据库 %> </BODY> </HTML>
exercise.mdb数据库,包含两个表:user 和test: user表: 序号 字段名称 字段类型 字段大小 作 用 1 user 文本 20 考生名 2 passwd 文本 20 考生密码 3 score 数字 整型 考生成绩
test表: 序号 字段名称 字段类型 字段大小 作 用 1 question 文本 255 考试题目 2 a 文本 100 选项A答案 3 b 文本 100 选项B答案 4 c 文本 100 选项C答案 5 d 文本 100 选项D答案 6 ans 文本 2 标准答案
|