- 相關推薦
基于Web技術的網絡考試系統
摘要】 本文講述了基于Web技術的網絡考試系統的設計與實現,描述了網絡考試系統的組成與結構,闡述了系統的設計方案、實現方法以及所采用的開發工具和相關技術,還重點剖析了部分環節的程序設計。 【關鍵詞】網絡 考試 Web DB2 ASP 一、 網絡考試系統概述在網絡技術逐漸滲入社會生活各個層面的今天,傳統的考試方式也面臨著變革,而網絡考試則是一個很重要的方向。基于Web技術的網絡考試系統可以借助于遍布全球的因特網進行,因此考試既可以在本地進行,也可以在異地進行,大大拓展了考試的靈活性。試卷可以根據題庫中的內容即時生成,可避免考試前的壓題;而且可以采用大量標準化試題,從而使用計算機判卷,大大提高閱卷效率;還可以直接把成績送到數據庫中,進行統計、排序等操作。所以現在較好的考試方法為網絡考試,試題內容放在服務器上,考生通過姓名、準考證號碼和口令進行登錄,考試答案也存放在服務器中,這樣考試的公平性、答案的安全性可以得到有效的保證。因此,采用網絡考試方式將是以后考試發展的趨勢。
網絡考試系統的實現技術有多種,可以采用傳統的客戶機/服務器型的MIS型架構,即試題內容放在遠程的服務器上,在考試機上安裝考試應用程序和數據庫客戶機配置,因此每次考試時要對機器進行安裝、配置,考務工作比較煩瑣,而且考試程序放在客戶機上,安全性也受到一定影響,因此本文討論的網絡考試系統采用Web 技術實現。Web技術超越了傳統的"客戶機/服務器"兩層結構,采用了三層體系結構:用戶界面層/事務層/數據庫層,因此Web結構有著更好的安全性,在用戶機上不需要安裝任何應用程序,應用程序可以安裝在事務層所在的計算機上,試題存放在數據庫服務器上,當然,事務層和數據庫可以是同一臺機器(如果條件允許,還是應該把這兩層分開在不同的計算機上),所以,本文所討論的考試系統采用Web 技術實現。
本系統的數據庫采用IBM公司的大型數據庫DB2,網站服務器采用IIS 4,網頁設計采用FrontPage 2000和ASP,閱卷系統采用Borland公司的Delphi 5.0。
二、 網絡考試系統的構成
網絡考試系統的結構如圖1所示,下面我們對該圖作一下簡單的描述:
圖1 網絡考試系統結構圖
(一)考試子系統
考試子系統是網絡考試系統的核心部分,它的工作流程如圖2所示,由于采用Web技術實現,所以從理論上講,考試可以在任何時候、任何地方進行,但是為了使考場易于組織和管理,所以本系統對考試時間作了嚴格的限制,因此在進入網站時首先判斷當前時間是否為考試規定的時間,由于判斷的時間是服務器端的時間,所以跟考試機器的時間無關,即使考生修改所在機器的時間,也無濟于事。如果時間符合要求,則顯示登錄頁面,考生在這個頁面輸入自己的信息,如姓名、身份證號碼、密碼等等,單擊"提交"后進入信息處理程序(在服務器端執行),如信息不正確(包括有些考生試圖繞過登錄頁面,直接進入試卷頁面的情況,此時由于沒有登錄信息,系統也會認為是非法考生),系統給出提示信息,并重新定位到登錄頁面;如信息正確,則顯示試卷頁面,試卷頁面上的試題內容根據考生輸入的試卷代號從數據庫中取出符合條件的記錄動態地生成。同時在頁面上動態地顯示考試所剩時間,當考試時間到或考生點擊"交卷"按鈕時,則系統把考生答案傳送至服務器的數據庫中保存起來,并把數據庫中標記考生是否參加過某門課程考試的標記置"1"(它的初始值為"0")。
圖2 考試子系統流程圖
(二)成績查詢子系統
為了能讓考生及時、方便地了解自己的考試成績,查詢子系統也采用Web方式實現,考生在頁面輸入自己的信息后,服務器就能把成績信息傳送到考生的機器上。
(三)閱卷子系統
本系統對考生來說是不可見的,用DELPHI 和DB2實現。它是一個應用程序,不能通過WEB方式訪問。
1、評分模塊
該模塊能調出學生答案并自動給出客觀題的成績,教師根據學生的答案給出每題得分并輸入計算機。
2、成績統計、排序模塊
計算機能根據學生的成績進行各類統計,生成成績分布圖等,還能按照給定的條件進行排序。
3、信息維護模塊
本模塊能對試題、考生信息進行維護,教師可以增、刪、改、查題目、考生信息,是閱卷子系統的重要組成部分。
(四)數據庫子系統
網絡考試系統離不開數據庫系統的支持,不論是試題、答案,還是考生信息都需要存放在數據庫中,而且數據庫獨立于程序而存在,具有較好的安全性,本例中的數據庫采用IBM公司的大型數據庫系統DB2實現,數據庫名為test_net,其中主要表結構的描述如下:
kaosheng表:用來記錄考生信息,其中有一字段 jsjjc_dl,如果其值為0,則表明該考生還沒參加過《計算機基礎》的考試,如果為1:則表示已經參加過該門課程的考試,jsjjc_cj字段存儲了《計算機基礎》課程的成績;
kaosda表:記錄考生的選擇題、填空題以及問答題答案,這三類答案分別用三個字段描述,每題答案之間用"$$$"分隔;
xuanzt表 :存放選擇題題目,其中有題目字段、四個選項字段、試卷代號字段以及答案字段;
tiankt表:存放填空題的題目、試卷代號及答案(問答題的處理與填空題類似,這里不作描述)
在ASP程序中,與數據庫相關的典型語句如下:
<% exec_xzt="select * from xuanzt "
set conn=server.createobject("adodb.connection")
conn.open "dsn=test_net;uid=db2admin;pwd=db2admin"
set rs_xzt=conn.execute(exec_xzt) %>
在上述四行語句執行完后,rs_xzt中為符合條件的記錄集。
三、 考試系統的實現方案
考試子系統是網絡考試系統的核心部分,下面就該系統中一些常見問題的程序設計方案作一下具體說明。
(一)安全性考慮
1、 考試時間
(1)進入考試網站時首先檢查當前時間是否為考試時間,以控制考生在規定的時間內參加考試;
<% dim time_cur
time_cur=now 'time_cur為當前時間
if time_cur>=cdate("2000-06-08 8:30:00 ") and time_cur<=cdate("2000-06-08 10:30:00 ") then%>
'顯示登錄頁面…………
<%else%>
<font face="隸書" color="#0000FF" size="6">現在不是考試時間</font>
<%end if %>
(2)在進入試卷頁面后還要控制考試的總時間,在卷面上動態顯示目前剩余時間,當總時間已到,系統會自動提交考生的答案,并且把數據庫中的相關字段,如jsjjc_dl設置為1,這樣他就不能再次進入試卷頁面,這段程序利用客戶端程序實現,而且在試卷頁面加載時就要設置timeout()的參數,本例中設它為1000ms,即每隔1秒timeout過程執行一次。
<script language="vbscript">
'客戶端程序,求出剩余時間,利用timeout(每1000ms產生一次事件)
dim counter,t,fen,miao
counter=61 '這里假設考試時間為1分,即60秒
'頁面的加栽事件
sub window_onload
t=settimeout("timeout()",1000) '每隔1000毫秒timeout過程被執行一次
end sub
sub timeout
counter=counter - 1
if counter>=0 then '還有剩余時間
'根據counter的值求出剩余的分、秒,并把它顯示在頁面上
fen=counter \ 60 :miao=counter mod 60 : T1.value=fen : T2.value=miao
t=settimeout("timeout()",1000)
else
form1.submit '假如考試時間已到,則自動提交表單中的內容
end if
end sub
</script>
2、 身份驗證
根據考生的姓名、身份證號碼、密碼到數據庫中查找相應記錄,如果庫中有該考生的記錄,則允許進入,并且把考生信息記錄在session中,否則給出信息,不允許進入。
<% dim xm,sfzhm,dw,mm,sjdh,exec1,xm_tj,sfzhm_tj,mm_tj,condition,exec2
'(略)……根據上一個頁面中的信息查詢庫中是否有該考生的記錄記錄
if (not rs.eof) then ' 如果條件為真,則表示庫中有該考生的記錄
if rs("jsjjc_dl")=0 then '如果庫中有該考生記錄,則繼續判斷該考生是否參加過這門課程的考試
'如果該考生沒有參加過這門課程的考試,則用session記錄下考生信息
session("xingming")=xm :session("shenfzh")=sfzhm:session("mima")=mm %>
'………… 顯示試卷頁面
<%else
response.write "您已經參加過測試,不能再次進入" '如果rs("jsjjc_dl")<>0 則表明考生已經
end if '參加過考試
else%>
<script language=vbscript>
alert("您輸入的信息不對,請重新輸入!") '如果表中沒有查到該考生的記錄,則顯示提示窗口
set w2=open("default.asp") '并且重新定位到登錄頁面,使考生重新輸入信息。
</script>
<%end if%>
(二) 試卷的生成:
試卷頁面是采用ASP技術動態生成的。數據庫中有一個字段,標記試卷代號,可以根據考生輸入的試卷代號從數據庫中選取相應記錄,并把它按照一定的布局顯示在頁面上。從前面我們可以知道,選擇題有一個表,先從選擇題表中取出相應記錄,同時動態生成表單域。然后從填空題表中選取符合條件的記錄,本例以生成選擇題為例說明試卷頁面的生成。
<% '……從數據庫中取出符合條件的記錄,并存放在rs_xzt中
<p> <% i=1 'I為題號
do while (not rs_xzt.eof) %> <p>
<%=i%>、<%=rs_xzt("timu")%> <%rb_name="rb"&i %>
</p> <p><input type="radio" value="a" name="<%=rb_name%>"><font color="#3333CC">A</font>: <%=rs_xzt("xuanxa")%>
<input type="radio" name="<%=rb_name%>" value="b"><font color="#3333CC">B</font>: <%=rs_xzt("xuanxb")%> <input type="radio" name="<%=rb_name%>" value="c"><font color="#3333CC">C</font>: <%=rs_xzt("xuanxc")%>
<input type="radio" name="<%=rb_name%>" value="d"><font color="#3333CC">D</font>:<%=rs_xzt("xuanxd")%></p>
<% i=i+1 : rs_xzt.movenext : loop
rs_xzt.close %>
(三) 答案的存放
先從試卷頁面中收集選擇題、填空題及問答題答案,并把它們分別保存在三個字符串中,然后利用SQL語句向數據庫中存放,如果數據庫已經有該考生的答案記錄,則用UPDATE語句更新,否則用INSERT語句插入。程序略。
四、 結束語
綜上所述,基于Web技術的網絡考試系統易用、靈活,也具有良好的安全性,由于采用了大型的數據庫系統,所以試題、答案也具有較好的安全性,閱卷系統采用DELPHI 實現,限于篇幅,這里沒有對這部分作深入的剖析,用DELPHI實現的閱卷系統界面友好、功能完善,生成的統計圖直觀、正確,可以為教師的命題、教學提供有益的參考,當然,還可以在本系統的基礎上進一步完善,如本方案的題目基本上是試卷庫,而不是試題庫,可以進一步做成試題庫,在表中加兩個字段,一個字段記錄知識點,一個字段記錄分值,在生成試卷頁面時按照一定的規則、算法(知識點、分值)從表中取出相應的記錄,這樣考試系統就能再上一個臺階。
本文是筆者對網絡考試系統研制工作的一個總結,讀者朋友如對其有興趣,筆者很愿意跟各位一起探討,一起提高。
參考文獻:
1、《IIS 4 系統管理員手冊》 (美)David Iseminger 著 電子工業出版社
2、《DB2認證指南》(美)Grant Certification & Calene Janacek 著 電子工業出版社
3、《ASP開發全攻略寶典》 唐青松 編著 中國水利水電出版社
4、《Delphi 4 從入門到精通》 (美)Marco Cantu 著 電子工業出版社
英文摘要:
A networked examination system based on web technology
Chen Jianhong
(Nanjing College of Electric Power
Dept. Of Communication Engineering,210013,Nanjing,China)
Abstract:This paper describes the design and implementation of a web-based examination system. It also highlights the architecture, design, some implementation details and the related tools and technology. In addition to that, this paper also gives some analysis on some programming issues.
Keywords: network 、examination、 Web、 DB2、 ASP
【基于Web技術的網絡考試系統】相關文章:
基于WEB的勞資人事管理系統08-06
基于Web的網絡課程的實現方法08-06
基于指紋認證技術的WEB訪問控制08-06
基于Web 的遠程教育系統的實現08-06
開發基于Web的地震目錄數據庫查詢系統08-06
基于Web的交互式數據庫查詢技術08-06
基于ORACLE技術的WWW信息查詢系統08-06
基于LonWorks的在系統編程技術08-06