-
asp.net教程之用ASP实现网上考试系统
华中理工大学管理学院 胡新明
随着互连网技术的发展网上教学将成为人们接受再教育和终身教育的主要形式。在网上学校中,人们可以不受时间和空间的限制,随时随地选学任何地方的任何课程。网上学校的发展对网上考试的发展提出了迫切的要求。这里是我用Asp和Access数据库实现的一个网上考试系统。当用户凭用户名和口令登录时,系统首先检查该用户是否已参加过考试,若是则进行成绩查询,若否则从题库中提取考题供用户解答。等用户提交答卷后,系统进行评分并将成绩登记入库。
一. 数据库设计
首先建立一数据库exercise.mdb,其中包括两个表:user和test,user表中有包括三个字段:
字段名称:user;字段类型:文本;字段大小:20。存储用户名
字段名称:passwd;字段类型:文本;字段大小:20。存储用户密码
字段名称:score;字段类型:数字;字段大小:整型。存储用户成绩
test表中有五个字段:
字段名称:question;字段类型:文本;字段大小:255。存储考试题目
字段名称:a;字段类型:文本;字段大小:100。存储选项A的答案
字段名称:b;字段类型:文本;字段大小:100。存储选项B的答案
字段名称:c;字段类型:文本;字段大小:100。存储选项C的答案
字段名称:d;字段类型:文本;字段大小:100。存储选项D的答案
字段名称:ans;字段类型:文本;字段大小:2。存储正确答案
二.程序原代码
下面是该系统中较核心的三段原程序,希望对开发类似系统的读者取到抛砖引玉的作用,读者也可对其进行改进以适应自己的系统。
‘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.MapPath("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="" > < /P >
< P title="" > < /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 > < /P >
< P >
< %
i=1
rs.movefirst
do while not rs.eof% >
< P > < %=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=Submit >< 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 > < /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 >
随着互连网技术的发展网上教学将成为人们接受再教育和终身教育的主要形式。在网上学校中,人们可以不受时间和空间的限制,随时随地选学任何地方的任何课程。网上学校的发展对网上考试的发展提出了迫切的要求。这里是我用Asp和Access数据库实现的一个网上考试系统。当用户凭用户名和口令登录时,系统首先检查该用户是否已参加过考试,若是则进行成绩查询,若否则从题库中提取考题供用户解答。等用户提交答卷后,系统进行评分并将成绩登记入库。
一. 数据库设计
首先建立一数据库exercise.mdb,其中包括两个表:user和test,user表中有包括三个字段:
字段名称:user;字段类型:文本;字段大小:20。存储用户名
字段名称:passwd;字段类型:文本;字段大小:20。存储用户密码
字段名称:score;字段类型:数字;字段大小:整型。存储用户成绩
test表中有五个字段:
字段名称:question;字段类型:文本;字段大小:255。存储考试题目
字段名称:a;字段类型:文本;字段大小:100。存储选项A的答案
字段名称:b;字段类型:文本;字段大小:100。存储选项B的答案
字段名称:c;字段类型:文本;字段大小:100。存储选项C的答案
字段名称:d;字段类型:文本;字段大小:100。存储选项D的答案
字段名称:ans;字段类型:文本;字段大小:2。存储正确答案
二.程序原代码
下面是该系统中较核心的三段原程序,希望对开发类似系统的读者取到抛砖引玉的作用,读者也可对其进行改进以适应自己的系统。
‘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.MapPath("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="" > < /P >
< P title="" > < /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 > < /P >
< P >
< %
i=1
rs.movefirst
do while not rs.eof% >
< P > < %=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=Submit >< 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 > < /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 >
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式