明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

使用ASP與Access數(shù)據(jù)庫(kù)制作局域網(wǎng)網(wǎng)上答題系統(tǒng)

[摘要]信息社會(huì)對(duì)人的學(xué)歷、素質(zhì)要求越來(lái)越高,人們?yōu)榱苏业角巴靖、收入更加誘人的工作崗位,必須通過(guò)各種各樣的考試如注冊(cè)會(huì)計(jì)師資格考試、司法資格考試等等,而各種各樣的試題資料也應(yīng)運(yùn)而生,但所有的資料所共有的一個(gè)缺點(diǎn)就是使用上的不方便、不靈活、及效率不高,本網(wǎng)上答題系統(tǒng)正是為了彌補(bǔ)這些諸多不便而編制的、適合...
    信息社會(huì)對(duì)人的學(xué)歷、素質(zhì)要求越來(lái)越高,人們?yōu)榱苏业角巴靖、收入更加誘人的工作崗位,必須通過(guò)各種各樣的考試如注冊(cè)會(huì)計(jì)師資格考試、司法資格考試等等,而各種各樣的試題資料也應(yīng)運(yùn)而生,但所有的資料所共有的一個(gè)缺點(diǎn)就是使用上的不方便、不靈活、及效率不高,本網(wǎng)上答題系統(tǒng)正是為了彌補(bǔ)這些諸多不便而編制的、適合于局域網(wǎng)并能在單機(jī)上運(yùn)行的系統(tǒng),下面就詳細(xì)介紹本系統(tǒng)的編制及使用方法。 
一、界面  
如圖所示:  

二、程序組成 
本系統(tǒng)由Index. asp、Lkzk.asp、Save.asp、Db0.fun 四個(gè)小程序及Access數(shù)據(jù)庫(kù)文件lkzk.mdb組成各程序的功能分別是: 
1. Index. asp 是框架網(wǎng)頁(yè),負(fù)責(zé)導(dǎo)入Lkzk.asp、Save.asp兩個(gè)子網(wǎng)頁(yè)組成完整的程序頁(yè)面。 
2. Lkzk.asp 是隨機(jī)出題答題的交互頁(yè)面生成程序,主要完成隨機(jī)選題、題目顯示、答案輸入及正確率、總答題數(shù)顯示等功能。 
3. Save.asp 完成答題正誤判斷、顯示及成績(jī)登記(按客戶端IP地址)。 
4. Db0.fun 包含打開Access數(shù)據(jù)庫(kù)的多個(gè)函數(shù)(Lkzk.asp、Save.asp都用到的)。 
5. lkzk.mdb Access數(shù)據(jù)庫(kù)文件,由表“IP”和表“題庫(kù)”組成。 
表(IP)由編號(hào)字段ID(數(shù)字格式)、客戶機(jī)地址字段IP(文本格式)、錯(cuò)誤答案數(shù)字段nnn(數(shù)字格式)、正確答案數(shù)字段yyy(數(shù)字格式) 所組成; 
表“題庫(kù)” 由題號(hào)字段ID(數(shù)字格式)、單選多選標(biāo)記字段dx(數(shù)字格式)、答案字段xz(文本格式)、試題內(nèi)容字段na(備注格式)所組成。(注:試題內(nèi)容的選擇部分必須為“A. …… B. …… C. …… D. ……” 格式) 
--------------- Index. Asp----------------- 
<html> 
<head> 
<title>網(wǎng)上司考試題庫(kù)</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>此網(wǎng)頁(yè)使用了框架,但您的瀏覽器不支持框架。</p> 
</body> 
</noframes> 
</frameset> 
</html> 
--------------Lkzk.asp------------- 
<!-- #include virtual="/lkzk/DB0.fun" --> 
<% 
Set rsu2 = GetMdbStaticRecordset("lkzk.mdb", "IP")  
Set rs = GetMdbStaticRecordset("lkzk.mdb", "題庫(kù)") 
%> 
<HTML> 
<head> 
<title>網(wǎng)上司考試題庫(kù)</title> 
</head> 
<BODY > 
<font size="4" color="#000080">司考試題庫(kù)  
<%  
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)%> '顯示除選擇部分外的試題內(nèi)容 
<font color="red">  
<%=sx%> <BR> '顯示是單選還是多選題 
</font> 
<% s=Right(s,Len(s)-x+1)  
x=InStr(s,"B.") %> '以下開始顯示復(fù)選框及選擇部分 
<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">繼續(xù)做題</a> <BR> 
<%if rsu2("nnn")+rsu2("yyy")=0 then rsu2("yyy")=1 end if%> 
正確率:<%=FormatNumber(rsu2("yyy")/(rsu2("nnn")+rsu2("yyy"))*100, 2, True)%>%  
總答題數(shù):<%=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", "題庫(kù)") 
%> 
<HTML> 
<BODY > 
<% I=CInt(Request("AI")) 
rs.AbsolutePosition=I+1 
ssx="錯(cuò)"  
A=Replace( Request("A"), ", ", " ) 
if A=rs("xz") then '判斷答題正誤 
ssx="對(duì)"  
end if 
%>  
<FONT Color=Red> 
您答<%=ssx%>了 '顯示答案正誤等信息 
</FONT> 
試題庫(kù)總第<%=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="對(duì)" then 
rsu2("yyy") =rsu2("yyy")+1  
End if 
if ssx<>"對(duì)" then  
rsu2("nnn") =rsu2("nnn")+1  
End if 
rsu2.Update '以下將正誤結(jié)果記錄于數(shù)據(jù)庫(kù)表“IP”中 
%>  
</BODY>  
</HTML>  
--------------Db0.fun---------------- 
<% ' 以下為函數(shù)程序 
'--------------------------------------------------- 
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 
'--------------------------------------------------- 
%> 
三、運(yùn)行方法 
本系統(tǒng)運(yùn)行方法是先按文中所述格式制作好試題庫(kù)文件Lkzk.mdb連同上列四個(gè)程序COPY至主機(jī)的WWW 的根目錄中并執(zhí)行http://主機(jī)IP地址/Index.asp即可進(jìn)行答題。(本程序在單機(jī)windows98+pws+ODBC驅(qū)動(dòng) 及局域網(wǎng)windowsNT Server4.0 +IIS4.0+ODBC驅(qū)動(dòng) 環(huán)境下均測(cè)試通過(guò),各用戶可以根據(jù)具體情況對(duì)程序中的標(biāo)題稍加修改制作自己的試題庫(kù)系統(tǒng),還可以對(duì)其進(jìn)行擴(kuò)充增加各類其它功能,在這里因篇幅關(guān)系就不再敷述,有關(guān)ODBC驅(qū)動(dòng)的詳細(xì)情況可參閱相關(guān)資料或給我來(lái)信mailto: intcom@21cn.com 。