趙 偉
[摘要]分析在線考試的優點,研究在線考試系統的總體設計,及在線考試系統最終的實現。
[關鍵詞]在線考試系統 B/S模式 ASP Microsoft Office Access2003 數據庫
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0120044-01
隨著Internet/Intranet的迅速發展和廣泛普及,建立在其上的遠程教育成為現代教育技術未來發展方向之一,在線考試作為遠程教育的一個子系統也成為一個重要的研究課題。目前,網絡軟件運行的模式主要有Client/Server(C/S)模式和Browse/Server(B/S)模式兩類。C/S模式通過將任務合理分配到Client端和Server端,降低了系統的通訊開銷,可以充分利用兩端硬件環境的優勢,但在維護、升級方面較麻煩,早期的軟件系統多以此作為首選設計標準;B/S模式是隨著Internet技術的興起,對C/S結構的一種變化或者說改進。在此結構下,用戶界面完全通過WWW瀏覽器實現,少部分事務邏輯在瀏覽器端實現,主要事務邏輯在服務器端實現。B/S結構,主要利用WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript)和ActiveX技術,用瀏覽器就實現了原來需要復雜專用軟件才能實現的強大功能,并節約了開發成本,是一種相當實用的軟件系統構造技術。隨著Windows 98/Windows 2000將瀏覽器技術植入操作系統內部,這種結構更成為當今應用軟件的首選體系結構,在操作上簡便,效率高,但對計算機的配置要求也很高,尤其是服務器端。
一、在線考試系統的開發/運行環境及相關技術問題介紹
(一)在線考試系統的開發環境
操作系統:Microsoft Windows XP。
開發工具:Internet Information Server、ASP Dreamweaver 8.0、Flash 8.0、PhotoshopCS2。
數據庫:Microsoft Office Access2003數據庫。
(二)在線考試系統的運行環境
客戶端:IE 5.0以上等可解釋常規HTML碼的瀏覽器。
服務器端:Microsoft Windows 2000以上、Internet Information Server具有Active X Server Component功能。
(三)在線考試系統的需求分析與技術問題
在線考試面向在校生,為避免他人的進入,登錄考試系統需要身份驗證,再根據自己的學習情況,選擇訓練或考試。在線考試由于是單機進行,考試地點可能在機房等機器相距密集的場所,為做到規范、公平和公正,必須保證對每位應試者:題量相等、內容不同,因此要求試卷在基于網絡環境下,從服務器的數據庫中隨機抽取動態生成。為控制學生考試次數,在試題生成時還需要進行考試權限的驗證。另外,還要求在限定的時間內完成,否則自動結束考試,交卷后自動評分、當場顯示成績及考試機會。同時為了提高學生的學習效率和考試及格率,給學生提供實時訓練,及答案參考,以便學生進行自我檢測和自我評估。
系統的基本功能模塊的技術問題:
1.用戶登錄模塊:要求與管理員錄入的數據庫進行對比驗證以獲取登錄權限;
2.在線教學模塊:利用在線新聞、教學視頻等給學生提供知識點回顧、新知識介紹等;
3.模擬訓練模塊:給學生提供模擬考試環境,并提供參考答案;
4.綜合考試模塊:為學生提供在線考試,系統實現判斷、單選、多選等考題的自動、隨機、不重復的抽取,時間的監控與權限的控制,交卷后自動評分、即時顯示成績與考試的機會狀況等;
5.成績查詢模塊:為師生提供查詢成績的平臺;
6.系統管理模塊:為管理員和任課教師提供人員的信息管理、密碼設定與修改、成績打印等諸多方面的功能。
二、在線考試系統的設計思想、分析和具體實現
1.基本設計思想:基于B/S模式的前提,要實現在線考試系統的設計,首先解決網頁與數據庫的連接問題,本系統采用ADO對象實現數據庫的訪問,即在ASP腳本中構造一個ADO的Connection對象去連接Microsoft Office Access2003數據庫,然后通過Command和RecordSet對象實現對數據庫的操作;其次利用ASP內置對象Request和Response等完成對頁面的訪問;同時利用Session對象完成用戶在多頁面間跳轉時的信息共享。
2.系統設計流程圖如圖1所示:

3.系統主要功能隨機抽取考試題部分的實現方法:本系統中的判斷題、單選題和多選題的抽題部分相互獨立,但抽題的算法相類似,因此下面僅以判斷題為例,給出抽題的關鍵代碼。
i1=1
i2=0
for i1=1 to 15
dimsqlstr
m=19
n=1
randomize
r1=int(rnd()*m-n+1)+n
for i=1 to session("judgenumber")
i2=i2+1
r=r1
set rs=server.createobject("adodb.recordset")
sql="select * from t_judge where selected=0 andt_area="&i1&"and id_n="&r&"+("&i1&"-1)*20 and subject='"&session("selectsubjectname")&"'"
rs.open sql,conn,3,2
R1=r1+1
參考文獻:
[1]滿在龍,完全手冊ASP網絡開發詳解,電子工業出版社,2007.
[2]黃雷、楊志、游坤,ASP+HTML+Dreamweaver+Access開發動態網站實例薈萃,機械工業出版社,2006.
作者簡介:
趙偉,女,漢族,副教授,工學碩士學位,現就職于沈陽職業技術學院計算機系,研究方向為多媒體。