用ASP开发试题库与在线考试系统(8)

七、附录:源程序列表

  由于源代码繁多,限于篇幅,无法一一列举,现只公布部分代码,具体以系统实物为准。下面是录入试题.asp文件:

<script language="VBScript">
<!-- 'Written by HeKai 2001
Function datacheck()'确保前台输入数据合法
 dim errflag, msg
 errflag = True
 if Len(Trim(luru.xzsj.value)) = 0 Then
  focusto(1); errflag = false; msg="请输入 '选自书籍名称'"
 ElseIf Len(Trim(luru.stnr.value)) = 0 Then
  focusto(9); errflag = false; msg=" '试题内容' 呢"
 ElseIf Len(Trim(luru.A.value)) = 0 Then
  focusto(10); errflag = false; msg=" '答案_A' 呢"
   ┋ ┋ ┋
 ElseIf Len(Trim(luru.F.value)) = 0 Then
  focusto(15); errflag = false; msg="请还原成默认值"
 End if
 If (errflag = false) then
  msg = msg & vbCRLF
  MsgBox msg, 64, "提示"
  Exit Function
 End if
  datacheck = errflag; luru.Submit
End Function

Sub focusto(x)'将鼠标定位在出错处
document.luru.elements(x).focus()
End Sub
--></script>

  以下是录入试题.inc文件:

<script Language="VBScript" RunAt="Server">
 Function check_Pass()'检查库中是否已有此数据
  kmxxmc = Request.Form("kmxxmc")
  stbh = Request.Form("stbh") stnr = Request.Form("stnr")
  SQLstr = "select * from " & kmxxmc & " where stbh=" & "'" & stbh & "'"
  SQLstr = SQLstr & " or tmnr=" & "'" & stnr & "'"
  set adocon=Server.CreateObject("ADODB.Connection")
  adocon.Open "zxtest"
  set sa1=adocon.Execute(SQLstr)
  If sa1.EOF Then
   check_Pass = False
  Else
   check_Pass = True
  End If
  sa1.Close adocon.Close
End Function

Sub Add_Comment()'开始插入数据并显示出来
 Dim kmxxmc,xzsj,tmlx,nycd,jxyq,stbh,stnr
 Dim A,B,C,D,E,F,bzda,lrz,Picstr,SQLstr,lr_date,zhang,jie
 kmxxmc = Request.Form("kmxxmc") xzsj = Request.Form("xzsj")
  ┋ ┋ ┋
 bzda = Request.Form("bzda") zhang = Request.form("zhang")
 set adocon=Server.CreateObject("ADODB.Connection")
 adocon.Open "zxtest"
 SQLstr = "insert into " & kmxxmc & " (xzsj,tmlx,tmnd,jxyq,stbh,tmnr,  bxda_a,"
 SQLstr = SQLstr & ",jie,lrz) values (" & "'" & xzsj & "'," & "'" & tmlx & "',"
  ┋ ┋ ┋
 SQLstr = SQLstr & "'," & "'" & date & "'," & "'" & zhang & "'," & "'" & jie & "'," SQLstr = SQLstr & "'" & lrz & "')"
 set sa1 = adocon.Execute(SQLstr)
 Picstr="<img src='http://edu.cnzz.cn/images/hekai.jpg'>"
 Response.Write "恭喜!此为<i> " & lrz & "</i> 刚才录入的试题"
 Response.Write Picstr & " 试题编号:" & stbh
 Response.Write "试题内容:" & stnr & "<br>"
 Response.Write "答案_A:" & A & "<br>"
  ┋ ┋ ┋
 adocon.Close
End Sub

Sub Register()
 If check_Pass() Then '如果库中已有的话,则给出提示信息
  Show_Warning()
 Else '否则添加进去
  Add_Comment()
 End If
End Sub

Sub Show_Warning()'给出提示信息的函数
 Response.Write("<p>")
 Response.Write("<center>很抱歉<p>")
 Response.Write("库中已有此试题编号或试题内容,请返回前页修改!")
 Response.Write("</center>")
 Response.Write("Made by hekai himself in 2001")
End Sub
</script>

此为"检索试题"的程序代码:
<script Language="VBScript" RunAt="Server">
Function adjust_sql(adj_str)
 '目的---转换查询字符串中的特殊字符至SQL指令
 Dim final_str, i 'WRITE BY HEKAI2001
 adj_str = Trim(adj_str)
 final_str = "" '每次从传进来的字符串中取出一个字符,并判断是否为下述三个字符之一: DOS的Filter符号"|"、左中括号"["以及单引号"'"
 If Len(adj_str) > 0 Then
  For i = 1 To Len(adj_str)
   Select Case Mid(adj_str, i, 1)
     Case "[": final_str = final_str & "[[]"
     Case "|": final_str = final_str & "[{-}]"
     Case "'": final_str = final_str & "[&-()"
     Case Else: '以上皆非则什么事都不做!
     final_str = final_str & Mid(adj_str, i, 1)
   End Select
  Next
 End If
 adjust_sql = final_str
End Function

Sub Output_shiti()
 Dim kmxxmc,xzsj,stbh,zhang,jie,tmlx,nycd,jxyq,lrz,stnr,cond_count, Picstr
 Dim SQLstr,mf,zhangfw,jiefw,stbhfw,nycdfw,lr_datefw,lr_date
 '记录指定条件的栏位总数
 cond_count = 10; mf = "%"
 Picstr="<img src='http://edu.cnzz.cn/images/hk.gif'>"
 '取得表单栏位内容
 kmxxmc = Request.Form("kmxxmc")
 stbh = Request.Form("stbh")
  ┋ ┋ ┋
 stnr = Request.Form("stnr")
 '调整SQL指令中的特定字元
 kmxxmc = adjust_sql(kmxxmc)
 stbh = adjust_sql(stbh)
  ┋ ┋ ┋
 stnr = adjust_sql(stnr)
 If Len(xzsj) = 0 Then cond_count = cond_count - 1
  If Len(stbh) = 0 Then cond_count = cond_count - 1
  ┋ ┋ ┋
  If Len(stnr) = 0 Then cond_count = cond_count - 1
   SQLstr = "select * from " & kmxxmc & " where "
  If Len(stbh) > 0 Then
   SQLstr = SQLstr & " stbh " & stbhfw & "'" & stbh & "'"
  If cond_count > 1 Then
   SQLstr = SQLstr & " and "
   cond_count = cond_count - 1
  End If
 End If
  ┋ ┋ ┋
 If Len(stnr) > 0 Then
  SQLstr = SQLstr & " tmnr like " & "'" & mf & stnr & mf & "'"
  If cond_count > 1 Then
   SQLstr = SQLstr & " and "
   cond_count = cond_count - 1
  End If
 End If
 SQLstr = SQLstr & " order by lr_date DESC "
 set adocon=Server.CreateObject("ADODB.Connection")
 adocon.Open "zxtest"
 set sa1 = adocon.Execute(SQLstr)
 If sa1.EOF Then
  Response.Write "<br><center><h1>"
  Response.Write "Sorry!<p>"
  Response.Write "没有找到试题,"
  esponse.Write "请重试一次!</center><p>"
  Response.Write "<hr></h1>"
 Else
  i = 0
  Response.Write "<h2>"
  Response.Write "符合条件的试题相关内容如下:"
  Response.Write "</h2>"
  While Not sa1.EOF
   i = i + 1
   Response.Write "第 <i>" & i & "</i>题 题编号:<i>" & sa1("stbh") & "</i><br>"
   Response.Write "试题内容:" & sa1("tmnr") & "<br>"
    ┋ ┋ ┋
  Response.Write "答案A:" & sa1("bxda_a") & "<br>"
  sa1.MoveNext
  WEnd
  adocon.Close
 End If
End Sub
</script>

<% '"检索试卷"的查询方式源代码
 mf="%"
 select case request("findfs")
  case "sjbh"
   sqlstr="SELECT * FROM tbsjxx WHERE " & " sjbh LIKE"
   sqlstr=sqlstr & "'" & mf & request("findfsz") & mf & "'order by ksrq DESC"
   ┋ ┋ ┋
  case "lr_date"
   sqlstr="SELECT * FROM tbsjxx WHERE " & " lr_date LIKE"
   sqlstr=sqlstr & "'" & mf & request("findfsz") & mf & "'order by ksrq DESC"
  case else
   sqlstr="SELECT * FROM tbsjxx order by ksrq DESC"
end select %>

  下面是考试的时间自动控制程序(便于演示只设了60秒钟,实际应用应以系统调出试卷的考试时间为准!):

<SCRIPT language=JavaScript>
<!-- Write by HEKAI for TestTimeContorl
var timerID = null;var timerRunning = false
var stardate = new Date();var startime = gettotalsecond(stardate)
var totaltime = 60; var lasttime;var facetime
function Stepclock(){
// hk made by himself
if(timerRunning)
clearTimeout(timerID)
timerRunning = false }
function startclock(){
Stepclock();showtime() }
function gettotalsecond(getdate){
var hours = getdate.getHours()
var minutes = getdate.getMinutes();var seconds = getdate.getSeconds()
var gettotalsecond = seconds + minutes * 60 + hours * 3600
return(gettotalsecond) }
function showtime(){
var now = new Date();var timeValue = gettotalsecond(now)
document.clock.face.value = timeValue - startime
facetime = document.clock.face.value;lasttime = totaltime - facetime
document.clock.sytime.value = lasttime
timerID = setTimeout("showtime()",1000)
timerRunning = true
if (lasttime == 20){
for(i=1;i<=3;i++){
alert('考试时间只剩下最后20秒!')}}
if (lasttime == 0){
for(i=1;i<=5;i++){
alert('时间完毕!请迅速交卷!!')}}
if (lasttime == -10){
for(i=1;i<=10;i++){
alert('考试时间超过10秒,关闭此窗口!')}}
}//-->
</SCRIPT>  

  八、后记

  此系统从研究设计到投入实际应用历时4个月之余,通过多次细致的测试及鉴定,证明系统完全具有可行性与可扩充性,就最近传来的消息,该系统获得了湖南省科技厅的普遍好评。另外,系统还有待于进一步升级,并将实现试卷的主观题部分和多媒体试卷。因此,仍有大量的工作需要开展。若有不详或不妥之处,请您以应用程序为准以及提出良好的意见与建议。

时间: 2025-01-25 04:41:27

用ASP开发试题库与在线考试系统(8)的相关文章

用ASP开发试题库与在线考试系统(1)

摘 要 利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,我们基于B/S模式研究开发了试题库与在线考试系统这一ASP应用程序.它运用方便.操作简单,效率很高,现阶段虽只实现了试卷的客观题部分,但已具有试题(卷)录入.修改和查询,手工组卷与自动组卷以及进行在线考试等重要功能,也就是说实现了真正的无纸化考试,满足任何授权的考生随时随地考试并迅速获得成绩,并给出其详细的成绩分析与试卷评估,同时也大大减轻了教师出题.组卷和改卷等繁重的工作量. 引 言 现阶段,学校与社会上的各种考

用ASP开发试题库与在线考试系统

  摘 要利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,我们基于B/S模式研究开发了试题库与在线考试系统这一ASP应用程序.它运用方便.操作简单,效率很高,现阶段虽只实现了试卷的客观题部分,但已具有试题(卷)录入.修改和查询,手工组卷与自动组卷以及进行在线考试等重要功能,也就是说实现了真正的无纸化考试,满足任何授权的考生随时随地考试并迅速获得成绩,并给出其详细的成绩分析与试卷评估,同时也大大减轻了教师出题.组卷和改卷等繁重的工作量. 引 言 现阶段,学校与社会上的各种

用ASP开发试题库与在线考试系统(2)

二.运行环境与系统结构 此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网.其运行要求和逻辑结构分别如下: 客户端:Windows95/98,Internet Explorer(IE)等 服务器端:Windows NT/Windows2000,Internet Information Server (IIS)4.0及其以上版本,IE等:或者Windows98,Personal Web Server(PWS),IE等. 数据库:采用SQL Server,运行于服务器端. 试

用ASP开发试题库与在线考试系统(6)

基本算法: {定义参数,获得整套试卷的共同限制参数,即包括输入必要条件得到必要参数和 输入任选条件得到任选参数} 必要参数组合= A1 AND A2 ~~AND An:任选参数组合= B1 OR B2 ~~OR Bn:大题数dts =3 '默认为3道大题:小题数xts=0 '默认为50道小题:IF 无判断题 THEN dts=dts - 1 END IF '开始计算大题数IF 无单选题 THEN dts=dts - 1 END IFIF 无多选题 THEN dts=dts - 1 END IF

用ASP开发试题库与在线考试系统(4)

4.2.2.试卷结构 试卷一般包括客观题(判断题.单选题或多选题)和主观题(填空题.短文字题或长文字题),即一套试卷包括若干大题,每道大题包含若干小题.但是,本系统的试卷目前只涉及客观题部分.故大题数暂定为最多3道,小题数总和若干,而且,在此表中只存贮该科目试卷相应的试题编号,其试题内容则在调用时到相应科目中查询获得. 4.2.3.用户.留言信息结构 A.超级用户:在此系统中有且仅有一个,即系统管理员.他具有一般用户所没有的至高无上的权力,即具有删除用户.留言.试题以及试卷等信息的权力.它不需注

用ASP开发试题库与在线考试系统(7)

五.ADO--ActiveX Data Object操作数据库的几个步骤 第一步 数据库数据来源设定.若要访问数据库,需在"控制面板"中的"ODBC Data Sources",建立数据库名称(选择Users DSN),点击"Add"按钮,选定数据库所用的驱动程序和文件等. 第二步 使用"Server.CreateObject"建立连接的对象,并使用"Open"打开待访问的数据库.set adocon=Se

用ASP开发试题库与在线考试系统(5)

4.3.2.查询模块 系统中的所有用户均可检索试题.试卷.用户及留言等信息.只是试题检索界面较复杂,但它已实现了多种条件的组合查询,非常适合于数量繁大的试题库.而后三者相对来说比较简单,"默认"或"空白"的情况下,则按该表中的系统默认的字段显示其全部信息.使用起来比较灵活.方便. 4.3.3.修改模块 用户除了只修改自己的部分资料(包括用户帐号.密码和E-Mail)外,还可修改试题及试卷,而留言则不许修改.只要用户选择科目和输入编号,即可进行修改.不过,对于各表中的

用ASP开发试题库与在线考试系统(3)

四.详细设计 4.1.试题(客观题部分)设计 在以往的考试中,判断题常常是通过画" ╳ "," "来判断:而单选题往往在四个供选的答案A.B.C.D中选择唯一正确的答案:另外,多选题跟单选题在根本上没什么区别,只是供选的答案和标准答案多一些.因而,本系统中所涉及的单选题和多选题跟过去的大体相同,主要不同在于把判断题巧妙地转化为只有两个选项的单选题,并且假设多选题一般情况下也是最多提供六个备选答案,标准答案至少有一个.故各题型的样题设计如下: 判断题-->如:重

用ASP开发一个在线考试系统

在线 本文所介绍的应用程序是以ASP编程的初学者为读者的.虽然这个例子非常简单,但是它对于那些试图在线对他们的雇员.学生或客户进行考试的组织是非常有用的. 关于这个应用程序 我们的应用程序中的第一个界面包含在index.asp 中,由一个注册页组成,其中有两个输入域,一个是用户名,另一个是口令.非会员要想参加考试的话必须要注册.这一页是初始屏幕,为用户提供用户名和口令的输入框. 开发一个在线考试系统-asp在线考试系统"> 需要注意的是,这两个将要批准的会员域应该有客户机端的JavaScr