摘 要:本文在調(diào)查分析在線考試系統(tǒng)現(xiàn)狀的基礎(chǔ)上,結(jié)合具體的需求分析,采用MVC模式及JSP技術(shù)設(shè)計(jì)開(kāi)發(fā)了一個(gè)在線考試系統(tǒng),基本上能滿(mǎn)足中小型學(xué)?;騿挝辉诰€考試要求,有較好的實(shí)際應(yīng)用意義。
關(guān)鍵詞:在線考試 MVC模式 JSP WEB
中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2008)15-0049-03
隨著Web技術(shù)的發(fā)展,考試的技術(shù)手段和載體發(fā)生了革命性的變化,Web的開(kāi)放性、分布性的特點(diǎn)和基于Web的巨大計(jì)算能力使得考試突破了時(shí)間和空間的限制?;赪eb的考試系統(tǒng)正成為人們的研究熱點(diǎn)之一。
本文根據(jù)一般院校等中小型機(jī)構(gòu)在線考試的要求,通過(guò)調(diào)查分析,采用適當(dāng)?shù)募夹g(shù)方案設(shè)計(jì)并開(kāi)發(fā)了一個(gè)在線考試系統(tǒng),該系統(tǒng)是在網(wǎng)上模擬考試的應(yīng)用程序,它存儲(chǔ)著考生、題庫(kù)、管理員等信息,包含教師出題、考生在線考試、自動(dòng)判卷以及相關(guān)的系統(tǒng)維護(hù)等功能,使得只要有瀏覽器的地方,就能使用它來(lái)學(xué)習(xí)、考試,并且功能也比較全面,可以滿(mǎn)足一般中小型學(xué)?;蚱髽I(yè)的需要,有較好的社會(huì)實(shí)用價(jià)值。
一、系統(tǒng)的技術(shù)方案
由于JSP是基于JAVA Servlet及整個(gè)JAVA體系的Web開(kāi)發(fā)技術(shù),利用這一技術(shù)可以建立動(dòng)態(tài)的、高性能的、安全的、跨平臺(tái)的動(dòng)態(tài)網(wǎng)站。因此,我們采用JSP作為表示層,Java Bean作為中間層,SQL Server作為數(shù)據(jù)庫(kù)的技術(shù)方案,對(duì)于中小型單位的題庫(kù)管理、考試功能來(lái)說(shuō)已經(jīng)基本能夠滿(mǎn)足,并且容易實(shí)現(xiàn),需要投入的人力、物力相對(duì)較小,技術(shù)含量不是太高。相對(duì)于國(guó)外大型的考試系統(tǒng),以EJB作為中間層,Oracle作為數(shù)據(jù)庫(kù)而言,本系統(tǒng)顯得性?xún)r(jià)比較高,很實(shí)用。為了使系統(tǒng)將來(lái)的維護(hù)、升級(jí)等工作方便、簡(jiǎn)單,我們采用MVC開(kāi)發(fā)模式,使得表示層、邏輯層、數(shù)據(jù)層的分工明顯。在修改頁(yè)面的時(shí)候,因?yàn)槔锩姘倪壿嫶a較少,所以不必關(guān)心系統(tǒng)的邏輯工作,只需要美工就能完成工作;在邏輯層部分,編程人員只需要專(zhuān)注于代碼的開(kāi)發(fā),而不需要關(guān)心數(shù)據(jù)庫(kù)的實(shí)現(xiàn),因?yàn)閿?shù)據(jù)的調(diào)用只需要通過(guò)接口實(shí)現(xiàn)即可;同樣數(shù)據(jù)庫(kù)開(kāi)發(fā)人員也只需要完成其數(shù)據(jù)開(kāi)發(fā)工作即可。這樣使得分工明確,容易合作,便于團(tuán)隊(duì)開(kāi)發(fā)。因此,我們歸納出以下的技術(shù)路線:
(1)用Dreamweaver來(lái)實(shí)現(xiàn)靜態(tài)代碼部分的設(shè)計(jì),用photoshop來(lái)做一些美工方面的工作。
(2)用JSP來(lái)實(shí)現(xiàn)動(dòng)態(tài)代碼部分的設(shè)計(jì),如一些簡(jiǎn)單的邏輯操作,數(shù)據(jù)庫(kù)查詢(xún)和一些結(jié)果的輸出都能用它來(lái)實(shí)現(xiàn)。
(3)用Java Script實(shí)現(xiàn)一些簡(jiǎn)單頁(yè)面控制,如考試時(shí)間的控制,輸入為空等方面的操作。
(4)用Java Bean作為數(shù)據(jù)庫(kù)的調(diào)用接口,JSP代碼可以通過(guò)該Java Bean來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的調(diào)用。
(5)對(duì)數(shù)據(jù)庫(kù)方面的設(shè)計(jì),首先需要設(shè)計(jì)數(shù)據(jù)表,處理好表與表之間的關(guān)聯(lián)、約束等問(wèn)題,再用SQL Server建立數(shù)據(jù)表。
二、功能需求分析與設(shè)計(jì)
通過(guò)對(duì)一般院校等小型機(jī)構(gòu)在線考試系統(tǒng)的調(diào)查研究,該系統(tǒng)必須滿(mǎn)足以下功能:
(1)提供考生注冊(cè)、登錄、考試功能。
(2)試卷支持多題型,并且有監(jiān)控中心,到考試時(shí)間能夠自動(dòng)交卷。
(3)支持題庫(kù)管理、考生試卷管理、制訂考試科目、設(shè)置考試內(nèi)容、發(fā)布試卷,成績(jī)查詢(xún)等操作。
(4)支持系統(tǒng)管理,管理者能在系統(tǒng)里面升級(jí)管理員,添加系統(tǒng)管理者和注冊(cè)考生等操作。
通過(guò)以上的需求分析,本系統(tǒng)大致分為考生考試模塊、系統(tǒng)管理模塊、考生管理模塊、題庫(kù)管理模塊、監(jiān)控中心模塊五個(gè)模塊??忌荚嚹K包括考生登錄、顯示考生信息、選擇考試科目、考試交卷;系統(tǒng)管理模塊包括管理員登錄、更改密碼、添加院系、添加科目、添加管理員、刪除管理員、升級(jí)管理員、審批試卷等;考生管理模塊包括考生注冊(cè)、試卷的修改、記錄分?jǐn)?shù)、考生個(gè)人信息查詢(xún)、考生集體信息查詢(xún);題庫(kù)管理模塊包括基本屬性設(shè)置、自定義試卷、題型設(shè)置、問(wèn)題設(shè)置、隨機(jī)生成試卷、生成問(wèn)題、預(yù)覽試卷;監(jiān)控中心模塊包括控制考試和監(jiān)視中心。系統(tǒng)的整體流程如圖1所示。
三、數(shù)據(jù)庫(kù)的設(shè)計(jì)
根據(jù)需要本系統(tǒng)共設(shè)計(jì)了九個(gè)表。具體如下:管理員信息表、考生信息表、考生成績(jī)表、考生試卷答案表、院系信息表、科目信息表、試卷屬性表、問(wèn)題屬性表、問(wèn)題庫(kù)表。
各表的數(shù)據(jù)結(jié)構(gòu)如下:
管理員信息(管理員ID,密碼,管理員姓名,性別,院系,身份等級(jí));
考生信息(準(zhǔn)考證號(hào),密碼,考生姓名,性別,學(xué)號(hào),年級(jí),班級(jí),院系號(hào),考試狀態(tài),考試權(quán)限);
考生成績(jī)(準(zhǔn)考證號(hào),科目號(hào),試卷號(hào),科目名稱(chēng),成績(jī),補(bǔ)考成績(jī));
考生試卷答案(準(zhǔn)考證號(hào),科目號(hào),試卷號(hào),問(wèn)題號(hào),答案);
院系信息(院系號(hào),院系名);
科目信息(科目號(hào),科目名,院系號(hào));
試卷屬性(科目號(hào),試卷號(hào),試卷標(biāo)題,院系,試卷屬性,管理員ID,試卷狀態(tài));
問(wèn)題屬性(科目號(hào),試卷號(hào),問(wèn)題號(hào),問(wèn)題,題型,難度,分?jǐn)?shù),狀態(tài),提取次數(shù));
問(wèn)題庫(kù)(問(wèn)題,科目號(hào),選項(xiàng)號(hào),選項(xiàng)內(nèi)容,答案)。
各表之間的關(guān)系如圖2所示。
四、系統(tǒng)實(shí)現(xiàn)
1.表現(xiàn)層實(shí)現(xiàn)
用Dreamweaver設(shè)計(jì)基本的頁(yè)面框架,包括*.htm和*.jsp頁(yè)面。如里面的表單提交、按鈕繪制、插入圖像、列表的選擇、單選、多選的實(shí)現(xiàn)等等都可以用Dreamweaver來(lái)設(shè)計(jì)。
JSP主要用來(lái)實(shí)現(xiàn)一些動(dòng)態(tài)頁(yè)面,其主要工作是導(dǎo)入一個(gè)Java Bean或一些JAVA的內(nèi)部類(lèi)實(shí)現(xiàn)一些邏輯操作或?qū)?shù)據(jù)庫(kù)的查詢(xún),并根據(jù)查詢(xún)的結(jié)果將數(shù)據(jù)輸出到客戶(hù)端。主要用到JSP的一些request、out等一些內(nèi)置對(duì)象和ResultSet類(lèi)的一些函數(shù)等。
另外用photoshop繪制一些頁(yè)面圖案等。
2.中間層實(shí)現(xiàn)
中間層的Java Bean是一種基于java的軟件組件。JSP為JavaBean組件提供了完善的支持。這種支持不僅能縮短開(kāi)發(fā)時(shí)間,也為JSP應(yīng)用帶來(lái)了更多的可伸縮性。
本系統(tǒng)把數(shù)據(jù)庫(kù)的連接參數(shù)寫(xiě)入一個(gè)名為jdbcsql.properties的配置文件中,這樣在程序運(yùn)行時(shí)如果環(huán)境變化,可以方便地修改數(shù)據(jù)庫(kù)配置。
jdbcsql.properties的代碼如下所示:
driver=sun.jdbc.odbc.JdbcOdbcDriver//驅(qū)動(dòng)程序
url=jdbc:odbc:kaoshi//連接字符串
username=sa//用戶(hù)名
password=sa//密碼
通過(guò)編寫(xiě)JavaBean來(lái)讀取配置文件(jdbcsql.properties)來(lái)連接數(shù)據(jù)庫(kù),文件名為DBConnectionBean.java,里面封裝了對(duì)jdbc-odbc的加載,對(duì)數(shù)據(jù)庫(kù)的連接,查詢(xún)executeQuery(String sql),更新executeUpdate(String sql)等功能。
3.實(shí)現(xiàn)結(jié)果及關(guān)鍵代碼
由于篇幅所限,這里我們只給出考生考試頁(yè)面和系統(tǒng)管理頁(yè)面的運(yùn)行結(jié)果及一些實(shí)現(xiàn)的關(guān)鍵代碼??忌荚嚹K包括考生登錄、考生信息、選擇考試科目、考試交卷等頁(yè)面,考試頁(yè)面的結(jié)果如圖3所示。實(shí)現(xiàn)的關(guān)鍵代碼如下:
String wnum=new String(request.getParameter(“wnum”).trim().getBytes(“8859_1”));
String word=new String(request.getParameter(“word”).trim().getBytes(“8859_1”));
String sql=”select * from student where snum=’”+wnum+”’ and spswd=’”+word+”’”;
系統(tǒng)管理模塊的運(yùn)行頁(yè)面如圖4所示。
五、結(jié)束語(yǔ)
本系統(tǒng)完成后,經(jīng)過(guò)修改和測(cè)試,系統(tǒng)的各項(xiàng)功能基本達(dá)到預(yù)期的要求,系統(tǒng)相對(duì)比較穩(wěn)定,功能相對(duì)比較齊全,基本能適用于中小型學(xué)??荚嚨男枨?。系統(tǒng)管理模塊的功能相對(duì)比較多,能適用于多種題型,比較靈活;數(shù)據(jù)庫(kù)表的建立相對(duì)合理,但在表與表的關(guān)聯(lián)方面有些復(fù)雜??偠灾撓到y(tǒng)功能較完善,實(shí)用性較好,但由于時(shí)間關(guān)系,還存在一些不足之處,有待于在使用過(guò)程中不斷完善。
參考文獻(xiàn):
[1]Steven John Metshker.設(shè)計(jì)模式——Java手冊(cè)[M].北京:機(jī)械工業(yè)出版社,2005.3.
[2]林邦杰.JSP交互網(wǎng)站實(shí)務(wù)經(jīng)典[M].北京:中國(guó)青年出版社,2001.3.
[3]黃理.JSP深入編程[M].北京希望電腦公司,2001.10.
[4]雨陽(yáng)隆春等.深入JSP網(wǎng)絡(luò)編程[M].北京:清華大學(xué)出版社,2001.6.
[5]Cay S.Horstmann, Gary Cornell.Java 2核心技術(shù)(卷I)[M].北京:機(jī)械工業(yè)出版社,2005.3.
[6]甑廣啟.JAVA數(shù)據(jù)庫(kù)編程[M].北京:電子工業(yè)出版社,2004.10.
[7]張運(yùn)濤,龔玲.Eclipse精要與高級(jí)開(kāi)發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2005.7.