利用ASP和Access資料庫製作區域網路網上答題系統

來源:互聯網
上載者:User
 資訊社會對人的學曆、素質要求越來越高,人們為了找到前途更好、收入更加誘人的工作崗位,必須通過各種各樣的考試如註冊會計師資格考試、司法資格考試等等,而各種各樣的試題資料也應運而生,但所有的資料所共有的一個缺點就是使用上的不方便、不靈活、及效率不高,本網上答題系統正是為了彌補這些諸多不便而編製的、適合於區域網路並能在單機上啟動並執行系統,下面就詳細介紹本系統的編製及使用方法。 
一、介面  
如圖所示:  

二、程式組成 
本系統由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: intcom@21cn.com 。 


聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.