摘 要: 數(shù)字化教學(xué)與學(xué)習(xí)環(huán)境建設(shè)是高校數(shù)字化校園建設(shè)的核心內(nèi)容。利用開(kāi)發(fā)工具Borland Delphi 7 和SQL Server 2000開(kāi)發(fā)出適用于多學(xué)科的通用計(jì)算機(jī)在線(xiàn)考試軟件系統(tǒng),,實(shí)現(xiàn)了考試過(guò)程與管理的數(shù)字化,、信息化和自動(dòng)化。由于采用多層結(jié)構(gòu),,在最為關(guān)鍵的中間層,,設(shè)計(jì)采用了大量的遠(yuǎn)程方法供客戶(hù)端調(diào)用,,從而形成“瘦客戶(hù)機(jī),胖服務(wù)器”模式,,完全避免了傳統(tǒng)C/S模式中“胖客戶(hù)機(jī),、瘦服務(wù)器”的缺陷。不但使業(yè)務(wù)邏輯的改變從客戶(hù)端分離出來(lái),,同時(shí)大大減少了網(wǎng)絡(luò)流量,,提高了軟件系統(tǒng)的性能。
關(guān)鍵詞: C/S模式,;多層結(jié)構(gòu),;在線(xiàn)考試;SQL Server,;存儲(chǔ)過(guò)程
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)的飛速發(fā)展,,高校的信息化建設(shè)進(jìn)程日益深入,其中數(shù)字化校園建設(shè)成為其核心內(nèi)容,??v觀全國(guó)各高校的數(shù)字化校園建設(shè),大多以建設(shè)數(shù)字化網(wǎng)絡(luò)環(huán)境,、數(shù)字化教學(xué)資源,、數(shù)字化教學(xué)與學(xué)習(xí)環(huán)境、數(shù)字化管理手段和工作環(huán)境,;實(shí)現(xiàn)數(shù)字化科研和管理,;創(chuàng)建數(shù)字化生活空間;實(shí)現(xiàn)教育的信息化和現(xiàn)代化等為最終目標(biāo)[1],。為推動(dòng)數(shù)字化校園建設(shè)進(jìn)程,,創(chuàng)建數(shù)字化教學(xué)環(huán)境,開(kāi)發(fā)出適用于多學(xué)科的計(jì)算機(jī)在線(xiàn)考試軟件系統(tǒng),。通過(guò)此軟件可以實(shí)現(xiàn)多學(xué)科網(wǎng)上在線(xiàn)考試,,既能把教師從繁重的批閱試卷、復(fù)核試卷,、試卷分析等工作中解放出來(lái),,又免去了印制紙質(zhì)試卷、按考場(chǎng)分發(fā)試卷,、紙質(zhì)試卷保存等很多繁重工作,,而且提高了試卷的保密性。
1 C/S模式的多層結(jié)構(gòu)
C/S模式是一種普遍應(yīng)用的網(wǎng)絡(luò)計(jì)算模式,。傳統(tǒng)的C/S模式是兩層結(jié)構(gòu),,在這種模式下,網(wǎng)絡(luò)中的計(jì)算機(jī)分為兩個(gè)有機(jī)部分:客戶(hù)機(jī)和服務(wù)器,。服務(wù)器只負(fù)責(zé)各種數(shù)據(jù)的處理和維護(hù),,為各個(gè)客戶(hù)機(jī)應(yīng)用程序管理數(shù)據(jù),;客戶(hù)機(jī)包含文檔處理軟件、決策支持工具,、數(shù)據(jù)查詢(xún)等應(yīng)用邏輯程序,,通過(guò)網(wǎng)絡(luò)使用SQL語(yǔ)言發(fā)送、請(qǐng)求和分析從服務(wù)器接收數(shù)據(jù),。這是一種“胖客戶(hù)機(jī)(Fat Client)”,、“瘦服務(wù)器(Thin Server)”的網(wǎng)絡(luò)結(jié)構(gòu)模式。隨著C/S結(jié)構(gòu)應(yīng)用范圍的不斷擴(kuò)大和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,,這種結(jié)構(gòu)的缺陷日益明顯,,如系統(tǒng)的可靠性有所降低、缺乏靈活性,、資源浪費(fèi)嚴(yán)重,、維護(hù)費(fèi)用較高等[2]。
為解決這一問(wèn)題,,網(wǎng)絡(luò)計(jì)算模式逐漸從兩層擴(kuò)展到N層,,形成多層結(jié)構(gòu)。在多層結(jié)構(gòu)中把業(yè)務(wù)邏輯獨(dú)立出來(lái),,使得應(yīng)用系統(tǒng)的開(kāi)發(fā)模式變?yōu)橄旅嫘问剑?br />
(1)客戶(hù)端。只注重人機(jī)界面的設(shè)計(jì),,不必關(guān)心業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),,使開(kāi)發(fā)大大簡(jiǎn)化,并且使得原兩層結(jié)構(gòu)的胖客戶(hù)機(jī)變成瘦客戶(hù)機(jī),。
(2)中間業(yè)務(wù)邏輯層,。提供客戶(hù)端程序調(diào)用的業(yè)務(wù)邏輯規(guī)則,以完成其業(yè)務(wù)操作,。當(dāng)業(yè)務(wù)邏輯改變時(shí),,客戶(hù)端不必改變。
(3)數(shù)據(jù)庫(kù)服務(wù)層,。提供對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作的方法,,由中間業(yè)務(wù)邏輯層調(diào)用完成業(yè)務(wù)邏輯。
可以看出,,在多層結(jié)構(gòu)中,,層次劃分不是物理上的劃分,而是結(jié)構(gòu)邏輯上的劃分,,即按應(yīng)用目標(biāo)劃分,。如果客戶(hù)端要求響應(yīng)速度很快,業(yè)務(wù)組件的體積較小,,業(yè)務(wù)組件可以放在客戶(hù)端,;如果業(yè)務(wù)組件包含大量對(duì)數(shù)據(jù)庫(kù)的操作,,可以配置在數(shù)據(jù)庫(kù)服務(wù)器上,以減少網(wǎng)絡(luò)負(fù)載,,提高運(yùn)算速度,;如果業(yè)務(wù)組件可供大多數(shù)客戶(hù)機(jī)程序訪(fǎng)問(wèn),則可以使用業(yè)務(wù)組件構(gòu)成一個(gè)應(yīng)用服務(wù)器,供大家訪(fǎng)問(wèn),。由于多層結(jié)構(gòu)的運(yùn)行機(jī)制,,使得多層結(jié)構(gòu)具備以下優(yōu)點(diǎn)[3]。
(1)可伸縮性好,??砂磻?yīng)用要求部署邏輯層次,適應(yīng)于本地網(wǎng)和廣域網(wǎng),。
(2)網(wǎng)絡(luò)效率高,。通過(guò)合理布局,因網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量大大減少,,網(wǎng)絡(luò)效率得到提高,。
(3)可管理性強(qiáng)??蛻?hù)端基本實(shí)現(xiàn)“零維護(hù)”,,主要管理工作集中在應(yīng)用邏輯層,業(yè)務(wù)邏輯的修改對(duì)客戶(hù)端沒(méi)有影響,。
(4)可重用性好,。按可提供的服務(wù)構(gòu)筑應(yīng)用,每種服務(wù)可以被不同的應(yīng)用再次使用,。由于系統(tǒng)采用面向?qū)ο蟮慕M件構(gòu)成,,進(jìn)一步增加了可重用性。
2 系統(tǒng)需求分析
數(shù)字化教學(xué)環(huán)境是學(xué)校數(shù)據(jù)化校園建設(shè)的重要組成部分,。而數(shù)字化教學(xué)環(huán)境以建立網(wǎng)上教務(wù)管理系統(tǒng),、網(wǎng)上考試系統(tǒng)、網(wǎng)上答疑系統(tǒng)和網(wǎng)上討論系統(tǒng)等為主要內(nèi)容,。目前,,已實(shí)現(xiàn)網(wǎng)上教務(wù)管理、網(wǎng)上答疑和網(wǎng)上討論目標(biāo),。為實(shí)現(xiàn)網(wǎng)上考試目標(biāo),,探索開(kāi)發(fā)適用于多學(xué)科的計(jì)算機(jī)在線(xiàn)考試軟件系統(tǒng)成為關(guān)鍵。要開(kāi)發(fā)出適用于多學(xué)科的平臺(tái)型計(jì)算機(jī)在線(xiàn)考試系統(tǒng),,首先對(duì)試題內(nèi)容,、試題形式、評(píng)分標(biāo)準(zhǔn)、試題數(shù)量,、試卷分析等問(wèn)題要進(jìn)行周密的考慮,,據(jù)此設(shè)計(jì)出一種能夠適用于多學(xué)科的平臺(tái)型試卷模板,在網(wǎng)絡(luò)環(huán)境正常運(yùn)行的前提下,,實(shí)現(xiàn)網(wǎng)上在線(xiàn)考試,。通過(guò)該考試系統(tǒng),完成自動(dòng)抽取試卷,、自動(dòng)批閱試卷,、自動(dòng)回收成績(jī)、自動(dòng)分析試卷,、打印成績(jī)單等功能,。針對(duì)軟件系統(tǒng)的功能和性能等實(shí)際需求,設(shè)計(jì)服務(wù)器開(kāi)發(fā)環(huán)境采用安全性較高穩(wěn)定性較好的數(shù)據(jù)服務(wù)器SQL Server 2000,,采用Windows 2003 Server 作為服務(wù)器操作系統(tǒng),,C/S結(jié)構(gòu)前端采用Borland Delphi 7作為開(kāi)發(fā)工具[4]。
3 系統(tǒng)功能設(shè)計(jì)
在需求分析的基礎(chǔ)上,,確定計(jì)算機(jī)在線(xiàn)考試軟件系統(tǒng)包括服務(wù)器管理,、學(xué)生管理、考試管理,、題庫(kù)管理,、自動(dòng)閱卷、試卷分析和系統(tǒng)維護(hù)等功能,,其軟件結(jié)構(gòu)圖如圖1所示,。
4 系統(tǒng)實(shí)現(xiàn)
由于軟件系統(tǒng)中的服務(wù)器要同時(shí)與大量的考試終端發(fā)生信息交互,為了避免由于服務(wù)器處理負(fù)荷過(guò)重而引起的系統(tǒng)崩潰,,同時(shí)要保證整個(gè)系統(tǒng)在網(wǎng)絡(luò)環(huán)境中的安全性,,設(shè)計(jì)采用C/S模式多層網(wǎng)絡(luò)計(jì)算模式,。通過(guò)將任務(wù)合理分配到客戶(hù)端和服務(wù)器端,,再充分利用兩端的硬件環(huán)境優(yōu)勢(shì),提高系統(tǒng)的整體數(shù)據(jù)處理效率并實(shí)現(xiàn)考試終端和管理中心的雙向通信,。軟件系統(tǒng)客戶(hù)端運(yùn)行時(shí)的主界面如圖2所示,。
4.1 中間業(yè)務(wù)邏輯層設(shè)計(jì)
中間層服務(wù)器是系統(tǒng)設(shè)計(jì)的關(guān)鍵,在中間層上設(shè)計(jì)了大量的遠(yuǎn)程方法供客戶(hù)端調(diào)用,,這種方式稱(chēng)為“瘦客戶(hù)機(jī),,胖服務(wù)器”模式。使用該模式,,當(dāng)客戶(hù)功能有所變動(dòng)時(shí),,只需更改中間層上的方法,而不用重新分發(fā)客戶(hù)端,。在Delphi7中使用DataSetProvider控件提供RPC服務(wù),,對(duì)于客戶(hù)端的每一個(gè)操作,,都可以通過(guò)在中間層服務(wù)器中設(shè)計(jì)相應(yīng)的方法實(shí)現(xiàn)[5]。在中間層設(shè)計(jì)的兩個(gè)主要方法如下:
(1)function ExeClientSql(const MySql: WideString): WordBool; safecall;
//執(zhí)行SQL的更新,、插入,、刪除等操作,返回是否成功;
(2)function GetClientData(const MySql: WideString): OleVariant; safecall;
//執(zhí)行SQL的查詢(xún)操作,,返回查詢(xún)結(jié)果,。
4.2 軟件系統(tǒng)的主要技術(shù)特點(diǎn)
(1)考試時(shí)由考生隨機(jī)抽題組卷,同時(shí)確保相鄰考生抽取不同的試題,。實(shí)現(xiàn)該功能的存儲(chǔ)過(guò)程如下:
CREATE PROCEDURE cp_Paper_Sel
@tblDL char(20),
@MyPrior int,
@MyNext int,
@MyKM char(30)
AS
exec(′select top 1 套題編號(hào),套題名稱(chēng) from tblcrecord where 套題編號(hào) not in
(select 套題編號(hào) from ′+@tblDL+′ where IP序號(hào)=′+@MyPrior+′or IP序號(hào)=′+@MyNext+′) and 科目名稱(chēng)=‘’‘+@MyKM+’‘’and 是否抽取=′′是′′ order by newid()′)
GO
(2)IP安全技術(shù):考試系統(tǒng)中將考試IP限定在某一區(qū)域內(nèi),,如192.168.36.1到192.168.36.200,可以防止在考場(chǎng)外進(jìn)行替考,,同時(shí)在考試時(shí)通過(guò)“禁止未登錄考生參加考試”功能,,在考生登錄之后進(jìn)一步避免了場(chǎng)外替考現(xiàn)象的發(fā)生。此外,,將考生考號(hào)和考生機(jī)器IP地址進(jìn)行綁定,,考生在考試過(guò)程中,只能在一臺(tái)計(jì)算機(jī)上答題,,以防止考生之間相互換題等作弊行為,。當(dāng)考生登錄到考試系統(tǒng)以后,將考生機(jī)器IP地址寫(xiě)入考生信息表以及登錄IP表,,防止一個(gè)考號(hào)在兩臺(tái)機(jī)器上登錄,。
//檢查是否同一IP登錄
with cds2 do
begin
Close ;
SQL.Clear ;
SQL.Add(′exec sp_Query_All:fldName,:tblName′);;
Params.ParamByName(′fldname′).Value :=′*′;
Params.ParamByName(′tblName′).Value:=
dm.tblDL+′ where登錄IP='''+dm.MyIP+''';
try
Open;
if recordcount<>0 then
begin
sMessageDlg(′警告′,′無(wú)效的考試請(qǐng)求!′,
mtWarning ,[mbOK],0);
exit;
end ;
except
raise ;
end;
(3)考試時(shí)間限制:考生第一次取題開(kāi)始計(jì)時(shí),,到規(guī)定的時(shí)間結(jié)束,,考生只有在該時(shí)間內(nèi)可以取題,其他時(shí)間都不能取題,,計(jì)時(shí)由服務(wù)器完成,,同時(shí),若考試過(guò)程中由于意外情況導(dǎo)致考試終止時(shí),,監(jiān)考老師可以通過(guò)輸入二次答題密碼的方式讓考生繼續(xù)答題,,從而實(shí)現(xiàn)考生考試時(shí)間的公平性,又加強(qiáng)了試題的安全性,。
(4)大量應(yīng)用存儲(chǔ)過(guò)程,,保障系統(tǒng)的快速反應(yīng)和高效運(yùn)行。例如,,將考生抽取的試題加入到考試數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程:
CREATE PROCEDURE cp_Paper_Add
@tblKS char(20),
@MyNo char(10),
@Mynum char(20),
@Mytbl char(10)
AS
exec(′insert into′+@tblKS+′ (學(xué)生學(xué)號(hào),套題編號(hào),試題序號(hào),試題內(nèi)容,試題答案,試題分?jǐn)?shù),是否答題,套題名稱(chēng),考試科目,試題類(lèi)型,學(xué)生分?jǐn)?shù),類(lèi)別序號(hào)) select '''+@MyNo+''','''+@Mynum+''',試題序號(hào),試題內(nèi)容,試題答案,試題分?jǐn)?shù),′′否′′,套題名稱(chēng),科目名稱(chēng),試題類(lèi)型,0,類(lèi)別序號(hào) from ′+@Mytbl+′ where 套題編號(hào)='''+@mynum+''')
GO
(5)數(shù)據(jù)加密功能,。軟件系統(tǒng)中使用了關(guān)鍵數(shù)據(jù)加密和數(shù)據(jù)庫(kù)動(dòng)態(tài)加密兩種技術(shù)。對(duì)于考試系統(tǒng)中的重要數(shù)據(jù)使用關(guān)鍵數(shù)據(jù)加密技術(shù),如試題庫(kù)中的試題采用加密的方式存儲(chǔ),,用戶(hù)登錄時(shí)的密碼加密后保存到數(shù)據(jù)庫(kù)中,以免被他人獲取并泄漏,。而用戶(hù)每次登錄數(shù)據(jù)庫(kù)時(shí),系統(tǒng)都會(huì)自動(dòng)修改數(shù)據(jù)庫(kù)密碼并進(jìn)行加密存儲(chǔ),這樣使得數(shù)據(jù)庫(kù)密碼具有不確定性,,大大增加了數(shù)據(jù)庫(kù)的安全性,,實(shí)現(xiàn)數(shù)據(jù)庫(kù)動(dòng)態(tài)加密[6]。
(6)試題錄入功能獨(dú)立于主系統(tǒng),。將試題錄入功能與主系統(tǒng)分開(kāi),,既保障了系統(tǒng)的安全性,又方便教師進(jìn)行試題錄入,。通過(guò)設(shè)置登錄賬號(hào)和錄入科目,,限制教師只能在指定時(shí)間內(nèi)根據(jù)指定的驗(yàn)證碼錄入指定科目試題,增加了題庫(kù)的安全性,。
采用C/S模式多層結(jié)構(gòu)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),,比傳統(tǒng)的C/S模式結(jié)構(gòu)有著無(wú)法比擬的優(yōu)勢(shì)。該軟件系統(tǒng)主要采用了多層結(jié)構(gòu)使得業(yè)務(wù)邏輯從客戶(hù)端分離出來(lái),,在最為關(guān)鍵的中間層上,,設(shè)計(jì)了大量的遠(yuǎn)程方法供客戶(hù)端調(diào)用,從而形成“瘦客戶(hù)機(jī),,胖服務(wù)器”模式,,不但很好地實(shí)現(xiàn)了軟件系統(tǒng)的各項(xiàng)功能,而且簡(jiǎn)化了程序設(shè)計(jì),,大大減少了網(wǎng)絡(luò)流量,,從而提高軟件系統(tǒng)的運(yùn)行效率、可維護(hù)性和整體性能,。
參考文獻(xiàn)
[1] 郭清順.高校數(shù)字化校園建設(shè)的整體目標(biāo)與實(shí)施策略[EB/OL].http://www.sysu.edu.cn/2003/xxzy/yth/text/
mubiao.ppt.
[2] 孫志鋒,,徐鏡春,歷小潤(rùn).數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)技術(shù)[M].杭州:浙江大學(xué)出版社,2004:186-189.
[3] 李舒,,陳麗君.高校學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].遼寧大學(xué)學(xué)報(bào).自然科學(xué)版,,2006,33(3):283-285.
[4] 席茂軍,,方勇,,吳少華,等.Delphi +SQL Server 2000平臺(tái)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),,2009,,30(5):1245-1246.
[5] 胡開(kāi)明,陳建華,,陳素燕,等.基于Delphi的SQL數(shù)據(jù)庫(kù)服務(wù)器安全監(jiān)控[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào)(自然科學(xué)
版),,2010,25(3):120-122.
[6] 吳小林,蔣先剛,高艷錦.基于Delphi的多層數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)連接技術(shù)的研究[J].華東交通大學(xué)學(xué)報(bào),,2005,,22(1):68-70.