网络编程
位置:首页>> 网络编程>> Asp编程>> asp网上考试设计思路是怎样的?(2)

asp网上考试设计思路是怎样的?(2)

  发布时间:2010-07-14 21:09:00 

标签:考试,asp

我们进入了试题页面redirect.asp。它将考生送到实际生成试题的ASP页面,如果数据库中没有所选择的科目的任何题目,就会显示错误信息和返回链接。如果数据库有题,则这一页就被重新引导到exam.asp页面,考生就可以进行在线考试了。
redirect.asp

id = Request.QueryString ("section")
' 先调用查询字符串部分,将值存入变量 id中
SQL = "select tbl_name from paper where id="&id
Set RS = Application("Conn").Execute(SQL)
subject= RS(0)
' 再使用SQL声明传递试卷表格中的域名table_name,结果存储在subject中
MyString = Split(subject,"tbl",-1,1)
' 分离变量subject,将其存储在MyString中.注意,此处用Split 函数在客户端显示测验名是为了更好地显示
IF RS_subject.BOF AND RS_subject.EOF Then
Response.Write Online " & MyString(1) & 题库正在创建中,请稍后再来! < a href=default.asp >返回< /a >"
Else 
Response.Redirect ("exam.asp?section="&id )
End If

exam.asp是标准试卷页面,代码共分两大部分:计时器函数和本页查询选取试题。显示试题,并以单选按钮方式供考生答题。从数据库中选择的试题,本设计采用了随机函数,这也是目前题库生成试卷的通用方式。题目的个数设定为10个,考生每次回答5个。时间限定为20秒,剩余的时间在屏幕底部的状态窗口中显示。所有的试题都一起显示出来,然后开始计时。时间和试题个数都可以改变。
exam.asp

' 以下是计时器函数
< script language="JavaScript" >
var ck=0;
var tf=0;
var timeUp=0;
var timeLeft=0;
var tcount=0;
TimerFunc();
function TimerFunc() { 
tf=window.setTimeout("TimerFunc();",1000);
tcount++;
timeLeft=20 - tcount;
window.status = "嘻嘻,做得的好快哦,还剩" +timeLeft + "秒";
}
< /script >
id = Request.QueryString ("section")
session("id") = id
' 查询字符串存储在一个 session("id")中,按顺序启动查询
sql_tblname = "select tbl_name from paper where id="&id
' SQL声明的目的是从试卷表格中找到表格名,如果找到了表格名就开始向指定表格的查询
Set RS_tblname = Application("Conn").Execute(sql_tblname)
subject= RS_tblname(0)
MyString = Split(subject,"tbl",-1,1)
' split 函数从结果中去掉tbl, 本设计使用了表格名前加tbl前缀的命名惯例

sql_details = "select a.id, a.question, a.choice1, a.choice2,a.choice3, " &_
" a.choice4 from " & subject & " a where a.id="&MyArray(Counter)
' 用随机函数生成从1-10之间的任意数字, MyArray(Counter)是已经生成的随机数字,用来从指定的科目表格中选取id.id、question、 choice1、choice2、choice3、choice4 都是科目表格域名

考试成绩单result.asp,显示结果,并将这些结果增加到数据库细节表格中,以供查询
result.asp

for each item in Request.Form
sql_check = "select Count(*) from "&subject&" where answer ='" & Request.Form(item) & "'"
Set RS_check = Application("Conn").Execute(sql_check)
if RS_check(0) > 0 then
result = result + 1
end if
next
' 变量result存储结果。
  
percent = round(( 100 * result )/count)
' 百分数换算
sql_id = "select id from loginuser where username='" & Session("username") &"'"
Set RS_id = Application("Conn").Execute(sql_id)
id= RS_id(0)
SQL_insert = "insert into details (ref_id,subject,score) values('" & id & "','" _ 
& subject & "', '" & percent &"') "
' 执行查询,将结果存储在数据库中.

view.asp 文件查询是否在此参加过考试。
view.asp

sql_id= "select id from loginuser where username='" & Session("username") &"'"
Set RS_id = Application("Conn").Execute(sql_id)
id= RS_id(0)
sql_count = "Select count(*) from details where ref_id = '" & id &"'"
Set RS_count = Application("Conn").Execute(sql_count)
If RS_count(0) < > 0 Then
response.redirect "viewrecord.asp"
' 如果已参加过考试,则转到viewrecord.asp页面
End If
If RS_count(0) = 0 Then
Session("noview") = "噢,您还没在我们这儿考过试呢!"
response.redirect "default.asp"
End If

viewrecord.asp文件以表格形式显示注册用户的信息。
viewrecord.asp

sql_details = "Select *subject, score from details where ref_id = '" & id &"'"
Set RS_details = Application("Conn").Execute(sql_details)

相关数据库结构:
本设计中数据库名为onlinetest.mdb。共有5个表格:loginuser、paper、details、tbl001HTML、tbl002HTML。其中,001HTML、002HTML是按考试科目创建的单独的表格,我们可以根据考试科目的多少继续扩展或添加。

loginuser表结构:
序号 字段名 数据类型 描述
1 Id  Auto Number 主关键字
2 Username Text 注册用户
3 Useremail Text 用户电子邮件地址
4 Password Text 注册口令

details 表结构:
序号 字段名 数据类型 描述
1 Id  Auto Number 主关键字
2 Ref_id Text 考试ID号
3 Subject Text 选择的试题
4 Score Text 成绩

paper 表结构:
序号 字段名 数据类型 描述
1 Id Auto Number 主关键字
2 Topic Text 在线测验所要覆盖的部分/科目列表
3 Tbl_name Text 包含指定科目的相关表格名

tbl001HTML 表结构:
序号 字段名 数据类型 描述
1 Id Auto Number 主关键字
2 Question Text 要显示的试题
3 Choice1 Text 供选择的答案A
4 Choice2 Text 供选择的答案B
5 Choice3 Text 供选择的答案C
6 Choice4 Text 供选择的答案D
7 Answer Text 标准答案

tbl002HTML 表结构:
序号 字段名 数据类型 描述
1 Id Auto Number 主关键字
2 Question Text 要显示的试题
3 Choice1 Text 供选择的答案A
4 Choice2 Text 供选择的答案B
5 Choice3 Text 供选择的答案C
6 Choice4 Text 供选择的答案D
7 Answer Text 标准答案


 

0
投稿

猜你喜欢

  • 1引言实现磁带备份数据的功能有两方面的困难:首先,SQL Server(以下简称SQL)所提供的数据库的整体备份及恢复功能不能直接满足本系统
  • 最简单的方法:取整后判断是否和原值相等!javascript的取整函数是:parseIntif(parseInt(value)==value
  • YUI 中的 Grids CSS 主要有三个部分值得大家关注和学习:Yahoo!网站性能最佳体验的34条黄金守则—内容 1、布局的思想:使用
  • MySQL 一级防范检查列表以下是加固你的 Mysql 服务器安全所要做的工作的重要参考:Securing MySQL: step-by-s
  • 在Oracle 8i中,往往会出现要在存储过程中运行操作系统命令的情况。一般来说,利用Oracle Enterprise Manager设定
  • 讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么。在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面
  • 虽然说标题将的是首页的访问感受,但是同样适合于网站其它页面的用户体验设计,一个好的网站设计应当尽量做到首页和次页一视同仁。第一步(视觉设计)
  • Tag,直译标签,是一种由用户自定义的、用于描述信息 [1]的关键词。Tagging是用户为信息赋予Tag的行为。Delicious,Fli
  • 你一定很熟悉Youtube了,知道它是一个视频分享网站。是的,youtube目前十分流行,你也许会常常访问。这里有一些关于youtube u
  • CSS网页布局应该避免滥用div元素一直是我们倡导的,以合适的HTML标签组织文档是CSS网页布局的基础。页面中div与span元素的使用是
  • 是否看见大站的广告都是放在内容中间实现文字环绕的呢,一般普通小站广告只能放在内容开头或者结尾,也许大站的cms系统带这个功能吧,我们小站常用
  • 本文将演示如何使用SQL 7.0服务器的Enterprise Manager创建、配置一个示例数据库。我们还会演示如何增加具有合适权限的用户
  • 阅读上一篇:WEB前端开发经验总结 ⅠWEB标准篇现在我们接着来讲怎么在实际开发中结合我前面所讲的理论来开发制作页面吧。现在就来看看我们要制
  • iframe标签在网页中可以创建一个内嵌框架,通过指定src属性来调用另一个网页文档的内容。和frameset一样,用它来对网页结构进行拆分
  • 具体代码如下:Function ASTCreateFtpSite(IPAddress, RootDirectory,&n
  • 在学习与运用ASP中,response对象涉及到的方面也比较多,想全部都掌握也并非一两天的事,我也是最近才发现response对象中居然有这
  • SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如 创建
  • 在输入框里面预设一段提示文字,当焦点在输入框的时候清空这段文字,这在目前来说已经不是什么新鲜事了。淘宝的搜索框就用到了这样一种设计:这种设计
  • 代码如下:< % '功能:显示数据库中表名、字段名、字段内容 '原创:wangsdong
  • 引子编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。数据天生就是文静的
手机版 网络编程 asp之家 www.aspxhome.com