信息社會對人的學(xué)歷、素質(zhì)要求越來越高,人們?yōu)榱苏业角巴靖、收入更加誘人的工作崗位,必須通過各種各樣的考試如注冊會計師資格考試、司法資格考試等等,而各種各樣的試題資料也應(yīng)運而生,但所有的資料所共有的一個缺點就是使用上的不方便、不靈活、及效率不高,本網(wǎng)上答題系統(tǒng)正是為了彌補這些諸多不便而編制的、適合于局域網(wǎng)并能在單機上運行的系統(tǒng),下面就詳細(xì)介紹本系統(tǒng)的編制及使用方法。 一、界面 如圖所示:
 二、程序組成 本系統(tǒng)由Index. asp、Lkzk.asp、Save.asp、Db0.fun 四個小程序及Access數(shù)據(jù)庫文件lkzk.mdb組成各程序的功能分別是: 1. Index. asp 是框架網(wǎng)頁,負(fù)責(zé)導(dǎo)入Lkzk.asp、Save.asp兩個子網(wǎng)頁組成完整的程序頁面。 2. Lkzk.asp 是隨機出題答題的交互頁面生成程序,主要完成隨機選題、題目顯示、答案輸入及正確率、總答題數(shù)顯示等功能。 3. Save.asp 完成答題正誤判斷、顯示及成績登記(按客戶端IP地址)。 4. Db0.fun 包含打開Access數(shù)據(jù)庫的多個函數(shù)(Lkzk.asp、Save.asp都用到的)。 5. lkzk.mdb Access數(shù)據(jù)庫文件,由表“IP”和表“題庫”組成。 表(IP)由編號字段ID(數(shù)字格式)、客戶機地址字段IP(文本格式)、錯誤答案數(shù)字段nnn(數(shù)字格式)、正確答案數(shù)字段yyy(數(shù)字格式) 所組成; 表“題庫” 由題號字段ID(數(shù)字格式)、單選多選標(biāo)記字段dx(數(shù)字格式)、答案字段xz(文本格式)、試題內(nèi)容字段na(備注格式)所組成。(注:試題內(nèi)容的選擇部分必須為“A. …… B. …… C. …… D. ……” 格式) --------------- Index. Asp----------------- <html> <head> <title>網(wǎng)上司考試題庫</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)頁使用了框架,但您的瀏覽器不支持框架。</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>網(wǎng)上司考試題庫</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)%> '顯示除選擇部分外的試題內(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", "題庫") %> <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 '以下將正誤結(jié)果記錄于數(shù)據(jù)庫表“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 '--------------------------------------------------- %> 三、運行方法 本系統(tǒng)運行方法是先按文中所述格式制作好試題庫文件Lkzk.mdb連同上列四個程序COPY至主機的WWW 的根目錄中并執(zhí)行http://主機IP地址/Index.asp即可進行答題。(本程序在單機windows98+pws+ODBC驅(qū)動 及局域網(wǎng)windowsNT Server4.0 +IIS4.0+ODBC驅(qū)動 環(huán)境下均測試通過,各用戶可以根據(jù)具體情況對程序中的標(biāo)題稍加修改制作自己的試題庫系統(tǒng),還可以對其進行擴充增加各類其它功能,在這里因篇幅關(guān)系就不再敷述,有關(guān)ODBC驅(qū)動的詳細(xì)情況可參閱相關(guān)資料或給我來信mailto: intcom@21cn.com 。
|