网上考试设计思路是怎样的?

global.asa 

< script LANGUAGE=VBScript RUNAT=Server >

Sub Application_OnStart

dbPath = "DBQ=" & Server.Mappath("onlinetest.mdb")

dbConnectionString =  "DRIVER={Microsoft Access Driver (*.mdb)}; " & dbPath

Set Application("Conn") = Server.CreateObject ("ADODB.Connection")

Application("Conn").Open dbConnectionString

End Sub

Sub Application_OnEnd

Application("Conn").Close

Set Application("Conn") = Nothing

End Sub

Sub Session_OnStart

End Sub

Sub Session_OnEnd

End Sub

< /script >

----------------------------------------------------------------------------------------------------------------

注册页面index.asp。其中有两个输入域:用户名和口令,这两个输入域需要客户机端的&#106avascript确认,以便不把它们作为空白域来传递。非考生要想参加考试必须先注册。这个页面还要显示一些错误信息,如“用户名或口令错误”、“请重新选择一个用户名”等。注册表单中还应包含考生一些个人的信息,如Emai、年龄、教育程度等。登录后,考生就可以参答考试站点的其它试卷了。

index.asp

<title>撼雪喷云之网上考试设计思路</title>

if (theForm.username.value == "")

{

alert("考生姓名\"User Name\"");

theForm.username.focus();

return (false);

}

if (theForm.password.value == "")

{

alert("考生口令\"Password\"");

theForm.password.focus();

return (false);

}

< table border="0" cellpadding="0" >

< tr >

< td width="50%" >

< font face="Verdana" size="2" >姓名:< /font >

< /td >

< td width="50%" >

< font face="Verdana" size="2" >< input type=text name=username size=20 maxlength=50 >< /font >

< /td >

< /tr >

< tr >

< td width="50%" >

< font face="Verdana" size="2" >口令:< /font >

< /td >

< td width="50%" >

< font face="Vedana" size=2 >< input type=password name=password size=20 maxlength= 50 >< /font >

< /td >

< /tr >

< tr >

< td width="100%" colspan="2" align="center" >

< font face="Verdana" size="2" >< br > < input type="submit" value="提交" name="B3" >

< input type="reset" value="重写" name="B4" >

< /font >

< /td >

< /tr >

< /table >

----------------------------------------------------------------------------------------------------------------

登录文件register.asp,当考生登录或新注册后,就显示这一页。我们可以利用它来询问考生的个人信息。该表单被提交后,转到sendregister.asp页面。

----------------------------------------------------------------------------------------------------------------

验证和发送文件sendregister.asp。该页面从register.asp 中取得表单域的内容,查询数据库验证输入的用户名是否已经存在,如果存在,则将考生重新引回register.asp页面,并被提示要求重新选择用户名;如果用户名通过,则输入的内容就被传递并插入到数据库中。

sendregister.asp

sql_findmember = "select count(*) from loginuser where username = '" & username &"'"

Set RS_findmember = Application("Conn").Execute(sql_findmember)

If RS_findmember(0) < > 0 Then

Session("message") = "噢,您输入的名字已经存在,请重新选择一个名字!"

response.redirect "register.asp"

' 如果RS_findmember(0) 返回的值大于0,用户就被引导回注册主页,并被要求填写一个新的用户名.

End If

If RS_findmember(0) = 0 Then

sql_insert = "insert into loginuser (username,useremail,password) _

values('" & username & "','" & useremail & "', '" & pwd &"') "

Set RS_insert = Application("Conn").Execute(sql_insert)

Session("message") = "THE ENtrY HAS BEEN INSERTED .. Thank You"

response.redirect "index.asp"

' 如果RS_findmember(0) 返回的值是0,就表示用户名在数据库中不存在,名字就被存入.这意味着,考生可以参答站点其它的试卷了.

End If

username = replace(request.form("txt_name"),"'","''")

' 防止非法进入数据库哦.替换函数,当访问者键入了"'"单撇号,就用"''"代替.

----------------------------------------------------------------------------------------------------------------

checkuser.asp

' 考生登录验证文件.

sql_check = "select count(*) from loginuser where username ='" & _

username &"' and password = '" & useremail &"'"

' 验证用户名和口令是否存在于数据库中.

Set RS_check = Application("Conn").Execute(sql_check)

If RS_check(0) < > 0 Then

Session("username") = request.form("username")

response.redirect "default.asp"

' 如果已注册,引导到default.asp页.

End If

If RS_check(0) = 0 Then

Session("error") = "对不起,您的姓名或口令无效,请重新输入!"

response.redirect "index.asp"

' 检查用户是否已经注册,如果返回值为0,表明用户名或口令无效,回注册页

End If

username = replace(request.form("username"),"'","''")

useremail = replace(request.form("password"),"'","''")

' 替换函数.

----------------------------------------------------------------------------------------------------------------

选择试卷页面default.asp。登录成功后,进入该页面。在这儿,考生可以选择的考试科目列表。在本设计中,用了001html 和002html两个,在实际应用中,可以增加表格以增加考试科目数。default.asp 要求表格安装一个下拉菜单,其中包含科目的列表,然后查询数据库,从试卷的表格中搜集两个域。

default.asp

sql_papers = "select *id, topic from paper sort order by topic asc"

SET RS_papers = Application("Conn").Execute(sql_papers)

' 以下代码是为了在下拉菜单中显示结果.

select size=1 name=select1 onchange="msec(document.form1._

select1.options[document.form1.select1.selectedIndex].value);" >

< option value="0" >选择科目考试

< %Do while not RS_papers.EOF% >

< option value="< %=RS_papers("id")% >" >< %=lcase(RS_papers("topic"))% >< /OPTION >

< %

RS_papers.MoveNext

Loop

% >

function msec(x)

' msec函数在X值的基础上调用 redirect.asp,把查询字符串: ?x的值作为下拉菜单中被选择的项的值.

{if (x==0)

{ alert("欢迎参加撼雪喷云之精英考试,请选择一个考试科目!")

}

else

{ location.href="redirect.asp?section=" + x

}

}

----------------------------------------------------------------------------------------------------------------

终于可以参加精英赛了!我们进入了试题页面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="&#106avascript" >

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)

----------------------------------------------------------------------------------------------------------------

[1]

(0)

相关推荐

  • C#影院售票系统毕业设计(3)

    前一篇文章<C#影院售票系统毕业设计(2)>中总结了动态绘制控件.票类型的切换以及数据在窗体中的展现.今天继续总结! 本文总结项目中最核心的部分--购票.座位颜色状态的改变及场次座位状态的显示. 分析: 1.在选中时间(场次)后更新出座位状态(label实现),售出的为红色,未售出的显示为黄色. 2.已售出提示已经售出并不进行任何操作,未售出的询问是否购买. 3.根据选择的是普通票.赠票.还是学生票分别创建不同的票对象 如果选择赠票则需要检测赠送者否填写 如果选择的是学生票需要检测折扣是否选择

  • 我的php学习笔记(毕业设计)

    php语法简单,应用也非常好,而且类库强大,确实能写出很强大的服务器端.对于我这种只需要小功能服务器的人来说,再好不过了. 单纯的说学习php,我觉得还是看手册的好.花了几天时间看了看语法,因为有编程基础,所以现在看起来就比较快了.刚用php写完一个简单的服务器,当然是有目的,准备用来支持一个订票系统的客户端.下面是我学习过程的笔记.以后也好有个回顾. 当不存在某个类的对象时,可以通过作用域分辨符(::)来调用某个类中的方法; 访问基类中的方法时可以写成 parent::method(); se

  • ASP.NET网站聊天室的设计与实现(第3节)

    大家都玩过网站聊天室吧,那知道它是怎么实现的吗? 今天我们就来设计一个网站聊天室,用户输入用户名登陆聊天室,采用框架结构实现. 学习内容: 第一步,聊天室首页与简单计数器设计 1.打开VS2008.在"解决方案'101'下新建网站,命名为Chatroom.默认首页文件为Default.aspx. 2.为Default.aspx添加窗体控件,切换到"设计"视图,从左侧工具箱标准组中拖出2个Lable控件,1个Textbox控件,一个Button控件,最后给输入昵称的Textbo

  • php 网上商城促销设计实例代码

    大体的思想,每一个促销要新建一个促销类,有专门的开关来控制是否生效. 用商品里面的促销识别码来判断具体调用哪一个促销实例. 首先,在添加商品的时候,分两步,第一步是添加状态,第二步是把购物车内的商品显示这个状态. 一,添加步骤几个重要的点: 1,添加商品之前,遍历所有的促销互斥条件. 例如,某一款商品不可以和另一个商品同时在一个购物车内:或者某个用户权限,不可以购买特定的一件商品等等. 2,添加商品之前,选择特定的促销实例,来进行添加之前的操作. 注:第二点与第一点的区别在于1是要遍历所有的促销

  • 管理员登录设计(第7节)

    本文实现管理员登录效果,当用户名和密码正确时,弹出登录成功提示,否则弹出用户名或密码错误提示. 今天有以下三大学习任务: 学习任务一 了解命名空间的定义 定义   namespace 空间名   {  类  }  引用  using 空间名 学习任务二 实现管理员登陆界面的设计 界面布局具体如图所示: 小提示:在插入表格的时候,应注意表格的大小.布局.边框.背景的设置,提前做好准备,可以节省接下来的工作:第二点就是区分image与imagebutton. 学习任务三 实现登录界面的验证 步骤1:

  • C#影院售票系统毕业设计(4)

    回顾:上一篇文章总结了影院售票系统核心部分-售票,整个项目也就完成了2/3了,需求中也要求了对销售信息的保存,今天就继续总结销售信息的保存以及加载销售信息. 分析:退出程序时将已售出票集合中的对象循环写入到文本文件中,读取时循环读入并加入到已售出票集合中,下面看具体实现 public void Save() { //保存的文件 FileStream fs = new FileStream("soldTickets.txt", FileMode.OpenOrCreate); Stream

  • C#影院售票系统毕业设计(2)

    本文继续更新,动态绘制控件.票类型的切换以及数据在窗体中的展现. 先从简单的开始,票类型的切换. 分析: 1.当点击普通票时 学生折扣和赠送者是禁用的 2.点击赠票时 启用赠送者,禁用学生折扣 3.点击学生票时 启用学生折扣,禁用赠送者 学生折扣ComboBox下拉框可以选择折扣,根据折扣实时折扣计算价格到优惠价上. 需要注意的是: 如果没有选择ListView的电影场次(也就是时间),选择赠票和学生票是没有意义的甚至会引发学生票实时计算时的异常,所以我们要判断  if (this.treeVi

  • JavaWeb搭建网上图书商城毕业设计

    以前一直接触.net相关的web开发,现在猛然使用javaWeb还是很不习惯,就连搭个框架也是第一次. 一.谈谈项目架构 一开始接触.net相关的开发所以对于.net相关的开发还是比较熟悉的,但我在学校学的java方向的开发,而我打算把这两种平台结合起来,使用java做后台也就是服务提供者,将所有业务逻辑在java平台完成并使用我比较熟悉的.net做Web端的开发.这样一来安卓app,web端就都有了.客户端统一通过分布式框架调用服务.找了很久最终选择了Hprose,这一轻量级.跨语言.跨平台.

  • C#影院售票系统毕业设计(1)

    C#学习经历从基本语法结构到窗体再到面向对象终于走完了.NET初级程序员的道路,用了大概一天半的时间做完这个练手项目<影院售票系统>,先上效果截图一张 抽出时间做些这个对目前的我来说算不小的项目. 用到的知识点有:面向对象思想.TreeView.XML读取.File文件流.泛型集合,这里面对我来说难度最大的是面向对象与泛型集合的结合,看来学习一门编程语言的难点还是在设计思想上. 再来介绍一下项目需求:在影片列表中选择某个时段的一场电影,单击座位选择一个种类的电影票,并创建电影,计算价格并打印影

  • php网上商城购物车设计代码分享

    首先,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id 购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price 商品商城售价 7. goods_price 商品真实售价(与shop_price的区别在于,当打折的时候,shop_price是打折之前商品的售价,而goods_price是打折之后的) 8. goods_number 数量 9. weight 商品重量 10. goods_attr

随机推荐