使用ASP與Access數據庫制作局域網網上答題系統
發表時間:2024-02-26 來源:明輝站整理相關軟件相關文章人氣:
[摘要]信息社會對人的學歷、素質要求越來越高,人們為了找到前途更好、收入更加誘人的工作崗位,必須通過各種各樣的考試如注冊會計師資格考試、司法資格考試等等,而各種各樣的試題資料也應運而生,但所有的資料所共有的一個缺點就是使用上的不方便、不靈活、及效率不高,本網上答題系統正是為了彌補這些諸多不便而編制的、適合...
信息社會對人的學歷、素質要求越來越高,人們為了找到前途更好、收入更加誘人的工作崗位,必須通過各種各樣的考試如注冊會計師資格考試、司法資格考試等等,而各種各樣的試題資料也應運而生,但所有的資料所共有的一個缺點就是使用上的不方便、不靈活、及效率不高,本網上答題系統正是為了彌補這些諸多不便而編制的、適合于局域網并能在單機上運行的系統,下面就詳細介紹本系統的編制及使用方法。
一、界面
如圖所示:

二、程序組成
本系統由Index. asp、Lkzk.asp、Save.asp、Db0.fun 四個小程序及Access數據庫文件lkzk.mdb組成各程序的功能分別是:
1. Index. asp 是框架網頁,負責導入Lkzk.asp、Save.asp兩個子網頁組成完整的程序頁面。
2. Lkzk.asp 是隨機出題答題的交互頁面生成程序,主要完成隨機選題、題目顯示、答案輸入及正確率、總答題數顯示等功能。
3. Save.asp 完成答題正誤判斷、顯示及成績登記(按客戶端IP地址)。
4. Db0.fun 包含打開Access數據庫的多個函數(Lkzk.asp、Save.asp都用到的)。
5. lkzk.mdb Access數據庫文件,由表“IP”和表“題庫”組成。
表(IP)由編號字段ID(數字格式)、客戶機地址字段IP(文本格式)、錯誤答案數字段nnn(數字格式)、正確答案數字段yyy(數字格式) 所組成;
表“題庫” 由題號字段ID(數字格式)、單選多選標記字段dx(數字格式)、答案字段xz(文本格式)、試題內容字段na(備注格式)所組成。(注:試題內容的選擇部分必須為“A. …… B. …… C. …… D. ……” 格式)
--------------- Index. Asp-----------------
<html>
<head>
<title>網上司考試題庫</title>
</head>
<frameset rows="87%,*" framespacing="0">
<frame name="top" src="lkzk.asp" scrolling="auto">
<frame name="bottom" scrolling="auto" marginwidth="0" marginheight="0">
<noframes>
<body>
<p>此網頁使用了框架,但您的瀏覽器不支持框架。</p>
</body>
</noframes>
</frameset>
</html>
--------------Lkzk.asp-------------
<!-- #include virtual="/lkzk/DB0.fun" -->
<%
Set rsu2 = GetMdbStaticRecordset("lkzk.mdb", "IP")
Set rs = GetMdbStaticRecordset("lkzk.mdb", "題庫")
%>
<HTML>
<head>
<title>網上司考試題庫</title>
</head>
<BODY >
<font size="4" color="#000080">司考試題庫
<%
ClientIP = Request.ServerVariables("REMOTE_ADDR")
userIP=Right(ClientIP,Len(ClientIP)-InStrRev(ClientIP,"."))
rsu2.AbsolutePosition=userIP
Randomize
I=Fix(Rnd*1800)
rs.AbsolutePosition=I+1
%>
總第<%=CStr(I+6)%>題 <%'=rs("type")%>
<FORM Action=save.asp Method=GET target="bottom">
<INPUT Type=Hidden Name=AI Value="<%=I%>">
<HR>
<% s=rs("na")
x=InStr(s,"A.")
sx="多選"
if rs("dx")=0 then
sx="單選"
end if %>
<%=Left(s,x-1)%> '顯示除選擇部分外的試題內容
<font color="red">
<%=sx%> <BR> '顯示是單選還是多選題
</font>
<% s=Right(s,Len(s)-x+1)
x=InStr(s,"B.") %> '以下開始顯示復選框及選擇部分
<INPUT Type=CheckBox Name=A Value="a">
<%=Left(s,x-1)%><BR>
<%s=Right(s,Len(s)-x+1)
x=InStr(s,"C.")%>
<INPUT Type=CheckBox Name=A Value="b">
<%=Left(s,x-1)%><BR>
<%s=Right(s,Len(s)-x+1)
x=InStr(s,"D.")%>
<INPUT Type=CheckBox Name=A Value="c">
<%=Left(s,x-1)%><BR>
<%s=Right(s,Len(s)-x+1)%>
<INPUT Type=CheckBox Name=A Value="d"> <%=s%>
<BR>
<INPUT Type=Submit Value="查看答案">
<a href="lkzk.asp" target="_self">繼續做題</a> <BR>
<%if rsu2("nnn")+rsu2("yyy")=0 then rsu2("yyy")=1 end if%>
正確率:<%=FormatNumber(rsu2("yyy")/(rsu2("nnn")+rsu2("yyy"))*100, 2, True)%>%
總答題數:<%=rsu2("nnn")+rsu2("yyy")%>
</form>
</font>
</BODY>
-----------------Save.asp-------------------
<!-- #include virtual="/lkzk/DB0.fun" -->
<%
Set rsu2 = GetMdbStaticRecordset("lkzk.mdb", "IP")
Set rs = GetMdbStaticRecordset("lkzk.mdb", "題庫")
%>
<HTML>
<BODY >
<% I=CInt(Request("AI"))
rs.AbsolutePosition=I+1
ssx="錯"
A=Replace( Request("A"), ", ", " )
if A=rs("xz") then '判斷答題正誤
ssx="對"
end if
%>
<FONT Color=Red>
您答<%=ssx%>了 '顯示答案正誤等信息
</FONT>
試題庫總第<%=CStr(I+1+5)%>題 您的答案是:<%=A%>
參考答案是:<%=rs("xz")%>
<%
ClientIP = Request.ServerVariables("REMOTE_ADDR")
userIP=Right(ClientIP,Len(ClientIP)-InStrRev(ClientIP,"."))
rsu2.AbsolutePosition=userIP
rsu2.Update
If ssx="對" then
rsu2("yyy") =rsu2("yyy")+1
End if
if ssx<>"對" then
rsu2("nnn") =rsu2("nnn")+1
End if
rsu2.Update '以下將正誤結果記錄于數據庫表“IP”中
%>
</BODY>
</HTML>
--------------Db0.fun----------------
<% ' 以下為函數程序
'---------------------------------------------------
Function GetMdbConnection( FileName )
Dim Provider, DBPath
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath(FileName)
Set GetMdbConnection = GetConnection( Provider & DBPath )
End Function
'---------------------------------------------------
Function GetMdbRecordset( FileName, Source )
Set GetMdbRecordset = GetMdbRs( FileName, Source, 2, " )
End Function
'---------------------------------------------------
Function GetMdbStaticRecordset( FileName, Source )
Set GetMdbStaticRecordset = GetMdbRs( FileName, Source, 3, " )
End Function
'---------------------------------------------------
Function GetConnection( Param )
Dim conn
On Error Resume Next
Set GetConnection = Nothing
Set conn = Server.CreateObject("ADODB.Connection")
If Err.Number <> 0 Then Exit Function
conn.Open Param
If Err.Number <> 0 Then Exit Function
Set GetConnection = conn
End Function
'---------------------------------------------------
Function GetMdbRs( FileName, Source, Cursor, Password )
Dim conn, rs
On Error Resume Next
Set GetMdbRs = Nothing
If Len(Password) = 0 Then
Set conn = GetMdbConnection( FileName )
Else
Set conn = GetSecuredMdbConnection( FileName, Password )
End If
If conn Is Nothing Then Exit Function
Set rs = Server.CreateObject("ADODB.Recordset")
If Err.Number <> 0 Then Exit Function
rs.Open source, conn, Cursor, 2
If Err.Number <> 0 Then Exit Function
Set GetMdbRs = rs
End Function
'---------------------------------------------------
%>
三、運行方法
本系統運行方法是先按文中所述格式制作好試題庫文件Lkzk.mdb連同上列四個程序COPY至主機的WWW 的根目錄中并執行http://主機IP地址/Index.asp即可進行答題。(本程序在單機windows98+pws+ODBC驅動 及局域網windowsNT Server4.0 +IIS4.0+ODBC驅動 環境下均測試通過,各用戶可以根據具體情況對程序中的標題稍加修改制作自己的試題庫系統,還可以對其進行擴充增加各類其它功能,在這里因篇幅關系就不再敷述,有關ODBC驅動的詳細情況可參閱相關資料或給我來信mailto:
[email protected] 。