发布于2026-07-22 阅读(0)
扫一扫,手机访问
一个在线考试系统,最核心的环节无非就是登录、答题和出分。下面这份基于 ASP + Access 的代码,把这三个步骤拆得清清楚楚,逻辑非常直白——对于刚接触 Web 开发的朋友来说,是很好的练手素材。
登录页负责接收考生的用户名和密码,然后去数据库里比对身份。代码先判断输入框是否为空,接着连上数据库,用一条动态拼接的 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),页面会直接显示历史分数,避免重复考试。
考试页的第一步是验证会话——没登录的人会被强制跳回 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 )
' 提取试题.
%>
' 以上是一个计时函数.
' 调用计时函数显示时间.
Time Hour Min Sec
试题的序号通过循环变量i动态生成,每个答案框的 name 属性是 ans1、ans2……这样在结果页就可以按顺序拿到所有选项。注意这里的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删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。
产品推荐
-
售后无忧
立即购买>
- DAEMON Tools Lite 10【序列号终身授权 + 中文版 + Win】
-
¥150.00
office旗舰店
-
售后无忧
立即购买>
- DAEMON Tools Ultra 5【序列号终身授权 + 中文版 + Win】
-
¥198.00
office旗舰店
-
售后无忧
立即购买>
- DAEMON Tools Pro 8【序列号终身授权 + 中文版 + Win】
-
¥189.00
office旗舰店
-
售后无忧
立即购买>
- CorelDRAW X8 简体中文【标准版 + Win】
-
¥1788.00
office旗舰店
-
正版软件
- using namespace 使用中遇到的问题怎么解决
- 命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,
-
9天前
0
-
正版软件
- c语言函数递归 实操经验总结:这些技巧很实用
- 理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接
-
9天前
0
-
正版软件
- c语言函数递归 怎么选?常见方案对比分析
- 递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的
-
9天前
0
-
正版软件
- Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
- 理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的
-
9天前
0
-
正版软件
- 如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
- 理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de
-
9天前
0
最新发布
-
1
-
2
-
3
- C语言中\n是什么意思?换行转义字符详解
- 342天前
-
4
- 探析Spring Boot框架的优点和特色
- 657天前
-
5
- 深入比较PyCharm社区版和专业版的功能
- 595天前
-
6
- 专家观点:谷歌是否会继续支持Golang的探讨
- 571天前
-
7
-
8
- Python实战教程:批量转换多种音乐格式
- 1203天前
-
9
- 如何在在线答题中实现试卷的自动批改和自动评分
- 1031天前
相关推荐
热门关注
-
- PixPin
- ¥8.00-¥8.00
-
- Total Uninstall
- ¥29.00-¥29.00
-
- 酷呆桌面
- ¥31.50-¥35.00
-
- ByePhotos
- ¥31.50-¥45.00
-
- TTime
- ¥3.00-¥3.00