⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 33333.txt

📁 ASP网上考试系统源代码
💻 TXT
字号:
ASP网上考试系统源代码

数据库设计 

   首先建立一数据库exercise.mdb,其中包括两个表:user和test,user表中有包括三个字段: 

字段名称:user;字段类型:文本;字段大小:20。存储用户名 

字段名称:passwd;字段类型:文本;字段大小:20。存储用户密码 

字段名称:score;字段类型:数字;字段大小:整型。存储用户成绩 
test表中有五个字段: 
字段名称:question;字段类型:文本;字段大小:255。存储考试题目 

字段名称:a;字段类型:文本;字段大小:100。存储选项A的答案 

字段名称:b;字段类型:文本;字段大小:100。存储选项B的答案 

字段名称:c;字段类型:文本;字段大小:100。存储选项C的答案 

字段名称:d;字段类型:文本;字段大小:100。存储选项D的答案 

字段名称:ans;字段类型:文本;字段大小:2。存储正确答案 
二.程序原代码 
   下面是该系统中较核心的三段原程序,希望对开发类似系统的读者取到抛砖引玉的作用,读者也可对其进行改进以适应自己的系统。 

‘Login.asp源程序,检验用户是否合法 
< %@ 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.MapPath("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 
% > 
< HTML > 
< HEAD > 
< META NAME="GENERATOR" 
Content="Microsoft Visual Studio 6.0" > 
< TITLE >用户口令检查< /TITLE > 
< /HEAD > 
< BODY > 
< FORM action="login.asp" id=FORM1 
method=post name=FORM1 > 
< P title="" > < /P > 
< P title="" > < /P > 
< P title="" align=center >用户: 
< INPUT id=text1 name=name 
style="HEIGHT: 22px; WIDTH: 103px" >< /P > 
< P title="" align=center >口令: 
< INPUT id=password1 name=passwd 
style="HEIGHT: 23px; WIDTH: 101px" 
type=password >< /P > 
< P title="" align=center > 
< INPUT id=submit1 name=submit1 
type=submit value=" 进入 " style="FONT-SIZE: 
medium; FONT-STYLE: normal; 
FONT-VARIANT: normal; FONT-WEIGHT: 
bold" title="" >< /P > 
< P title="" align=center > 
< /P > 
< /FORM > 
< /BODY > 
< /HTML > 

‘test.asp源程序,从题库中提取试题供解答 
< %@ 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 ) 
% > 
‘计时函数 
< SCRIPT LANGUAGE="JavaScript" > 
var isn1=null; 
var isn2=false; 
today=new Date(); 

function stopit(){ 
if(isn2){ 
  clearTimeout(isn1); 
  } 
isn2 = false; 
} 
function startit(){ 
stopit(); 
isnclock(); 
} 

function isnclock(){ 
var now=new Date(); 
var hrs=now.getHours(); 
var min=now.getMinutes(); 
var sec=now.getSeconds(); 
document.clckh.disp.value=""+((hrs >12) ? 
hrs-12 : hrs); 
document.clckm.disp.value=((min< 10) ? "0" : "")+min; 
document.clcks.disp.value=((sec< 10) ? "0" : "")+sec; 
document.clck.disp.value=(hrs >=12) ? "p.m." : "a.m."; 
isn1=setTimeout("isnclock()",1000); 
isn2=true; 
} 
< /SCRIPT > 

< HTML > 
< HEAD > 
< META NAME="GENERATOR" 
Content="Microsoft Visual Studio 6.0" > 
< /HEAD > 
< BODY onLoad="startit()" BGCOLOR="FFFFFF" > 
< center > 
‘调用计时函数显示时间 
< TABLE BORDER=2 > 
< TR > 
< TD >Time< /TD >< TD >Hour< /TD >< TD >Min 
< /TD >< TD >Sec< /TD >< TD >< /TD > 
< /TR > 
< TR > 
< TD >< /TD > 
< TD VALIGN=TOP >< FORM NAME="clckh" onSubmit="0" > 
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" > 
< /FORM >< /TD > 
< TD VALIGN=TOP >< FORM NAME="clckm" onSubmit="0" > 
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" > 
< /FORM >< /TD > 
< TD VALIGN=TOP >< FORM NAME="clcks" onSubmit="0" > 
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" > 
< /FORM >< /TD > 
< TD VALIGN=TOP >< FORM NAME="clck" 
onSubmit="0" > 
< INPUT TYPE="text" NAME="disp" SIZE=4 VALUE ="" > 
< /FORM >< /TD >< /TR > 
< /center > 
‘显示试题供解答 
< FORM action="result.asp" id=FORM1 
method=post name=FORM1 > 
< P > < /P > 
< P > 
  < % 
  i=1 
  rs.movefirst 
  do while not rs.eof% > 
  < P > < %=rs("question")% >< /P > 
< TABLE align=center border=1 cellPadding=1 
cellSpacing=1 
width="80%" > 
  < TR > 
   < TD style="WIDTH: 50%" width="50%" 
< INPUT name=ans< %=i% > type=radio value="A" > 
< %=rs("a")% >< /TD > 
   < TD >< INPUT name=ans< %=i% > 
type=radio value="B" > 
   < %=rs("b")% >< /TD >< /TR > 
  < TR > 
   < TD >< INPUT name=ans< %=i% > 
type=radio value="C" > 
   < %=rs("c")% >< /TD > 
   < TD >< INPUT name=ans< %=i% > 
type=radio value="D" > 
   < %=rs("d")% >< /TD > 
  < /TR > 
< /TABLE > 
< % 
i=i+1 
rs.movenext 
loop 
% > 
< /P > 
< P > < /P > 
< P align=center >< INPUT id=submit1 name=submit1 
type=submit 
value=Submit >< INPUT id=reset1 name=reset1 
type=reset value=Reset >< /P >< /FORM > 
< /BODY > 
< /HTML > 















七、附录:源程序列表

  由于源代码繁多,限于篇幅,无法一一列举,现只公布部分代码,具体以系统实物为准。下面是录入试题.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='/images/hekai.jpg'>"
 Response.Write "恭喜!此为<i> " & lrz & "</i> 刚才录入的试题"
 Response.Write Picstr & " 试题编号:" & stbh 
 Response.Write "试题内容:" & stnr & "
"
 Response.Write "答案_A:" & A & "
"
  ┋ ┋ ┋
 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='/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 "
<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>
"
   Response.Write "试题内容:" & sa1("tmnr") & "
"
    ┋ ┋ ┋
  Response.Write "答案A:" & sa1("bxda_a") & "
"
  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> 













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -