asp網上考試系統程式碼分析

來源:互聯網
上載者:User
網上考試

隨著互連網技術的發展網上教學將成為人們接受再教育和終身教育的主要形式。在網上學校中,人們可以不受時間和空間的限制,隨時隨地選學任何地方的任何課程。網上學校的發展對網上考試的發展提出了迫切的要求。這裡是我用Asp和Access資料庫實現的一個網上考試系統。當使用者憑使用者名稱和口令登入時,系統首先檢查該使用者是否已參加過考試,若是則進行成績查詢,若否則從題庫中提取考題供使用者解答。等使用者提交答卷後,系統進行評分並將成績登記入庫。

一. 資料庫設計

首先建立一資料庫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 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" >
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" >
< /FORM >< /TD >
< TD VALIGN=TOP >< FORM NAME="clckm" >
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" >
< /FORM >< /TD >
< TD VALIGN=TOP >< FORM NAME="clcks" >
< INPUT TYPE="text" NAME="disp" SIZE=2 VALUE ="" >
< /FORM >< /TD >
< TD VALIGN=TOP >< FORM NAME="clck"
>
< 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 >

以下為引用的內容:
‘result.asp來源程式,對使用者答卷評分,
並將分數記錄入庫
< %@ Language=VBScript % >
< HTML >
< HEAD >
< META NAME="GENERATOR" Content="Microsoft
Visual Studio 6.0" >
< /HEAD >
< BODY >
< P > < /P >
< %
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 "< br >你的答案:"
score=int(ycorrect/rscount*100)
for i=1 to Request.Form.Count-1
Response.Write Request.Form(i)
next
Response.Write "< br >"
Response.Write "你的成績:"&score
if score< 60 then Response.Write " 你不及格!"&"< br >"
else if score >=60 Response.Write " 及格"&"< br >"
else Response.Write " 優秀!"
‘將成績登記入庫
strSql=”insert into user (result) values (”&score&”)
where user=’”&name&”’”
conn.execute(strSql)
% >
< /BODY >
< /HTML > 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。