使用ASP與Access數(shù)據(jù)庫(kù)制作局域網(wǎng)網(wǎng)上答題系統(tǒng)
發(fā)表時(shí)間:2024-06-19 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]信息社會(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 。