商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何实现网上考试?

如何实现网上考试?

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

一个在线考试系统,最核心的环节无非就是登录、答题和出分。下面这份基于 ASP + Access 的代码,把这三个步骤拆得清清楚楚,逻辑非常直白——对于刚接触 Web 开发的朋友来说,是很好的练手素材。

login.asp

登录页负责接收考生的用户名和密码,然后去数据库里比对身份。代码先判断输入框是否为空,接着连上数据库,用一条动态拼接的 SQL 语句去查询用户表。

' 考生验证.
<%@ 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
%> 



撼雪喷云之考生登录


考生:

密码:

这里用了最简单直接的字符串拼接来构造 SQL,虽然演示方便,但实际项目中一定要警惕 SQL 注入风险。另外,如果考生之前考过(成绩字段不为 0),页面会直接显示历史分数,避免重复考试。

test.asp

考试页的第一步是验证会话——没登录的人会被强制跳回 login.asp。通过验证后,从题库表(test)里拉取所有试题,一件件展示出来,每道题四个选项用单选按钮呈现。页面顶部的时钟用了 Ja vaScript 的setTimeout做实时刷新,算是个轻量计时器。

' 从题库中取题考试.
<%@ 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 )
' 提取试题.
%>

' 以上是一个计时函数.





' 调用计时函数显示时间. ' 显示试题.

<% i=1 rs.movefirst do while not rs.eof%>

<%=rs("question")%>

TimeHourMinSec
type=radio value="A"><%=rs("a")%> type=radio value="B"><%=rs("b")%>
type=radio value="C"><%=rs("c")%> type=radio value="D"><%=rs("d")%>
<% i=i+1 rs.movenext loop %>

试题的序号通过循环变量i动态生成,每个答案框的 name 属性是 ans1ans2……这样在结果页就可以按顺序拿到所有选项。注意这里的do while not rs.eof循环,把题库里所有题目一次性全显示出来,题量大的话页面会很长,但逻辑上很清晰。

result.asp

交卷后跳转到结果页。这里先取出标准答案(从 test 表的 ans 字段),然后通过Request.Form逐题比较考生答案,累加正确数,最后算出百分制分数。分数低于 60 给一句安慰,超过 60 说“及格”,满分则恭喜。成绩最终写回用户表。

' 评分并将成绩记录到数据库.
<%@ Language=VBScript %>





<% 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 "
您的答案:" score=int(ycorrect/rscount*100) for i=1 to Request.Form.Count-1 Response.Write Request.Form(i) next Response.Write "
" Response.Write "您的成绩:"&score if score<60 then Response.Write "别难过,您不及格!"&"
" else if score>=60 Response.Write "幸好,您及格了!"&"
" else Response.Write "恭喜,您获得了优秀!" strSql="insert into user (result) values ("&score&") where user='"&name&"'" conn.execute(strSql) ' 将成绩存到数据库. %>

这个版本的成绩存储用了 INSERT 语句加上 WHERE 条件——严格来说应该用 UPDATE 来更新已有记录,但这里的设计意图很明显:如果考生是第一次考试,则插入一条新记录(不过前提是用户表里已经有该考生的基本信息,否则会失败)。从代码的注释里能看出,整个流程都围绕着“一个用户只能考一次”的约束来设计,思路很传统,但对于小型练习系统来说完全够用。

整体来看,这三个页面构成了一个完整的在线测试闭环,结构简单、代码好读,适合作为初学者理解 ASP 数据库编程的参考。

本文转载于:https://www.jb51.net/article/4794.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注