<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于C/S架構(gòu)的通用計算機(jī)在線考試系統(tǒng)的實現(xiàn)

          基于C/S架構(gòu)的通用計算機(jī)在線考試系統(tǒng)的實現(xiàn)

          作者: 時間:2012-09-13 來源:網(wǎng)絡(luò) 收藏


          4.1 中間業(yè)務(wù)邏輯層設(shè)計

          中間層服務(wù)器是設(shè)計的關(guān)鍵,在中間層上設(shè)計了大量的遠(yuǎn)程方法供客戶端調(diào)用,這種方式稱為“瘦客戶機(jī),胖服務(wù)器”模式。使用該模式,當(dāng)客戶功能有所變動時,只需更改中間層上的方法,而不用重新分發(fā)客戶端。在Delphi7中使用DataSetProvider控件提供RPC服務(wù),對于客戶端的每一個操作,都可以通過在中間層服務(wù)器中設(shè)計相應(yīng)的方法實現(xiàn)[5]。在中間層設(shè)計的兩個主要方法如下:
          (1)function ExeClientSql(const MySql: WideString): WordBool; safecall;
          //執(zhí)行SQL的更新、插入、刪除等操作,返回是否成功;
          (2)function GetClientData(const MySql: WideString): OleVariant; safecall;
          //執(zhí)行SQL的查詢操作,返回查詢結(jié)果。

          4.2 軟件的主要技術(shù)特點

          (1)考試時由考生隨機(jī)抽題組卷,同時確保相鄰考生抽取不同的試題。實現(xiàn)該功能的存儲過程如下:

          CREATE PROCEDURE cp_Paper_Sel
          @tblDL char(20),
          @MyPrior int,
          @MyNext int,
          @MyKM char(30)
          AS
          exec(′select top 1 套題編號,套題名稱 from tblcrecord where 套題編號 not in
          (select 套題編號 from ′+@tblDL+′ where IP序號=′+@MyPrior+′or IP序號=′+@MyNext+′) and 科目名稱=‘’‘+@MyKM+’‘’and 是否抽取=′′是′′ order by newid()′)
          GO

          (2)IP安全技術(shù):考試中將考試IP限定在某一區(qū)域內(nèi),如192.168.36.1到192.168.36.200,可以防止在考場外進(jìn)行替考,同時在考試時通過“禁止未登錄考生參加考試”功能,在考生登錄之后進(jìn)一步避免了場外替考現(xiàn)象的發(fā)生。此外,將考生考號和考生機(jī)器IP地址進(jìn)行綁定,考生在考試過程中,只能在一臺上答題,以防止考生之間相互換題等作弊行為。當(dāng)考生登錄到考試系統(tǒng)以后,將考生機(jī)器IP地址寫入考生信息表以及登錄IP表,防止一個考號在兩臺機(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(′警告′,′無效的考試請求!′,
          mtWarning ,[mbOK],0);
          exit;
          end ;
          except
          raise ;
          end;

          (3)考試時間限制:考生第一次取題開始計時,到規(guī)定的時間結(jié)束,考生只有在該時間內(nèi)可以取題,其他時間都不能取題,計時由服務(wù)器完成,同時,若考試過程中由于意外情況導(dǎo)致考試終止時,監(jiān)考老師可以通過輸入二次答題密碼的方式讓考生繼續(xù)答題,從而實現(xiàn)考生考試時間的公平性,又加強(qiáng)了試題的安全性。

          (4)大量應(yīng)用存儲過程,保障系統(tǒng)的快速反應(yīng)和高效運(yùn)行。例如,將考生抽取的試題加入到考試數(shù)據(jù)庫中的存儲過程:

          CREATE PROCEDURE cp_Paper_Add
          @tblKS char(20),
          @MyNo char(10),
          @Mynum char(20),
          @Mytbl char(10)
          AS

          exec(′insert into′+@tblKS+′ (學(xué)生學(xué)號,套題編號,試題序號,試題內(nèi)容,試題答案,試題分?jǐn)?shù),是否答題,套題名稱,考試科目,試題類型,學(xué)生分?jǐn)?shù),類別序號) select '''+@MyNo+''','''+@Mynum+''',試題序號,試題內(nèi)容,試題答案,試題分?jǐn)?shù),′′否′′,套題名稱,科目名稱,試題類型,0,類別序號 from ′+@Mytbl+′ where 套題編號='''+@mynum+''')
          GO

          (5)數(shù)據(jù)加密功能。軟件系統(tǒng)中使用了關(guān)鍵數(shù)據(jù)加密和數(shù)據(jù)庫動態(tài)加密兩種技術(shù)。對于考試系統(tǒng)中的重要數(shù)據(jù)使用關(guān)鍵數(shù)據(jù)加密技術(shù),如試題庫中的試題采用加密的方式存儲,用戶登錄時的密碼加密后保存到數(shù)據(jù)庫中,以免被他人獲取并泄漏。而用戶每次登錄數(shù)據(jù)庫時,系統(tǒng)都會自動修改數(shù)據(jù)庫密碼并進(jìn)行加密存儲,這樣使得數(shù)據(jù)庫密碼具有不確定性,大大增加了數(shù)據(jù)庫的安全性,實現(xiàn)數(shù)據(jù)庫動態(tài)加密[6]。

          (6)試題錄入功能獨立于主系統(tǒng)。將試題錄入功能與主系統(tǒng)分開,既保障了系統(tǒng)的安全性,又方便教師進(jìn)行試題錄入。通過設(shè)置登錄賬號和錄入科目,限制教師只能在指定時間內(nèi)根據(jù)指定的驗證碼錄入指定科目試題,增加了題庫的安全性。

          采用C/S模式多層結(jié)構(gòu)開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng),比傳統(tǒng)的C/S模式結(jié)構(gòu)有著無法比擬的優(yōu)勢。該軟件系統(tǒng)主要采用了多層結(jié)構(gòu)使得業(yè)務(wù)邏輯從客戶端分離出來,在最為關(guān)鍵的中間層上,設(shè)計了大量的遠(yuǎn)程方法供客戶端調(diào)用,從而形成“瘦客戶機(jī),胖服務(wù)器”模式,不但很好地實現(xiàn)了軟件系統(tǒng)的各項功能,而且簡化了程序設(shè)計,大大減少了網(wǎng)絡(luò)流量,從而提高軟件系統(tǒng)的運(yùn)行效率、可維護(hù)性和整體性能。

          本文引用地址:http://www.ex-cimer.com/article/202188.htm

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();