計(jì)算機(jī)課程設(shè)計(jì)----實(shí)用網(wǎng)絡(luò)考試系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  實(shí)用網(wǎng)絡(luò)考試系統(tǒng)</b></p><p><b>  題目: </b></p><p><b>  實(shí)用網(wǎng)絡(luò)考試系統(tǒng)</b></p><p>  系 別: </p><p>  專 業(yè): </p>&l

2、t;p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  2012年 5月 16 日</p><p><b>  目 錄</b></p><p>  摘 要錯(cuò)誤!未定義書

3、簽。</p><p>  引 言錯(cuò)誤!未定義書簽。</p><p>  1系統(tǒng)簡(jiǎn)介錯(cuò)誤!未定義書簽。</p><p>  1.1主要功能錯(cuò)誤!未定義書簽。</p><p>  1.2開發(fā)工具的選擇錯(cuò)誤!未定義書簽。</p><p>  2網(wǎng)絡(luò)考試系統(tǒng)功能分析與應(yīng)用程序框架的建立錯(cuò)誤!未定義書簽。</p

4、><p>  2.1考試系統(tǒng)流程8</p><p>  2.2考試系統(tǒng)模塊的劃分與功能9</p><p>  2.3 創(chuàng)建考試管理系統(tǒng)應(yīng)用程序框架9</p><p>  3考試管理系統(tǒng)概要設(shè)計(jì)9</p><p>  3.1 網(wǎng)絡(luò)考試系統(tǒng)應(yīng)用環(huán)境圖10</p><p>  3.2考試管理系統(tǒng)

5、流程10</p><p>  3.3考試管理系統(tǒng)模塊的詳細(xì)劃分11</p><p>  4考試管理系統(tǒng)詳細(xì)設(shè)計(jì)14</p><p>  4.1 網(wǎng)絡(luò)通信的實(shí)現(xiàn)與設(shè)計(jì)14</p><p>  4.2 考試管理機(jī)的軟件初步設(shè)計(jì)16</p><p>  4.3 考試管理機(jī)核心功能的實(shí)現(xiàn)與編制16</p>

6、;<p>  4.4 考試管理系統(tǒng)詳細(xì)設(shè)計(jì)錯(cuò)誤!未定義書簽。</p><p>  4.5考試進(jìn)程管理的設(shè)計(jì)錯(cuò)誤!未定義書簽。</p><p>  5 測(cè)試與調(diào)試22</p><p><b>  5.1調(diào)試27</b></p><p><b>  5.2分調(diào)27</b><

7、/p><p><b>  5.3總調(diào)27</b></p><p><b>  6結(jié)束語28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  附 錄31</b></p><p><b&

8、gt;  摘 要</b></p><p>  在網(wǎng)絡(luò)技術(shù)逐漸滲入社會(huì)生活各個(gè)層面的今天,傳統(tǒng)的考試方式也面臨著變革,而網(wǎng)絡(luò)考試則是一個(gè)很重要的方向。基于網(wǎng)絡(luò)的考試系統(tǒng)是傳統(tǒng)考場(chǎng)的延伸,加上數(shù)據(jù)庫(kù)技術(shù)的利用,大大簡(jiǎn)化了傳統(tǒng)考試的過程。因此網(wǎng)絡(luò)考試系統(tǒng)是電子化教學(xué)不可缺少的一個(gè)重要環(huán)節(jié)。所以現(xiàn)在較好的考試方法為網(wǎng)絡(luò)考試,考生通過姓名、準(zhǔn)考證號(hào)碼或口令進(jìn)行登錄,試卷可以根據(jù)題庫(kù)中的內(nèi)容即時(shí)生成,可避免考試前

9、的壓題;而且可以采用大量標(biāo)準(zhǔn)化試題,從而使用計(jì)算機(jī)判卷,大大提高閱卷效率;還可以直接把成績(jī)送到數(shù)據(jù)庫(kù)中,進(jìn)行統(tǒng)計(jì)、排序等操作。因此,采用網(wǎng)絡(luò)考試方式將是以后考試發(fā)展的趨勢(shì)。</p><p>  關(guān)鍵詞:上機(jī)考試 考試模塊 閱卷系統(tǒng)</p><p><b>  Abstract</b></p><p>  In network technolog

10、y graduall</p><p>  y infiltrated all levels of social life today, the traditional test method is also faced with changes, and the test network is a very important direction. Web based examination system is

11、an extension of the traditional examination room, coupled with the use of database technology, greatly simplifies the traditional examination process. </p><p>  Therefore the network test system is an indisp

12、ensable electronic teaching is an important link in. So now 's a good way to test the network examination, candidates by name, ticket number and password to log, test questions can be generated in real-time content,

13、can avoid the pressure before the exam questions; and a large number of standardized test can be used, in order to use the computer grading, greatly enhance the efficiency of marking; also can be directly results to the

14、database, statisti</p><p>  Key words: computer examination examination module marking system</p><p><b>  引言</b></p><p>  系統(tǒng)分為三大模塊:考試模塊,系統(tǒng)管理模塊和用戶注冊(cè)模塊。其中系統(tǒng)管理模塊是進(jìn)行題目的添加、存儲(chǔ)

15、和刪除,是系統(tǒng)運(yùn)行的基礎(chǔ);查詢子模塊實(shí)現(xiàn)了對(duì)學(xué)生考試信息查詢??荚嚹K是客戶端學(xué)生或教師通過自己的姓名和學(xué)號(hào)以及密碼登陸系統(tǒng),進(jìn)入界面時(shí)由系統(tǒng)按照出題教師預(yù)先設(shè)置好的試卷結(jié)構(gòu)從題庫(kù)中隨機(jī)抽取適合的題目,形成試卷。第三部分是用戶注冊(cè)模塊,這一模塊的任務(wù)是完成師生的注冊(cè)和刪除。 </p><p><b>  1系統(tǒng)簡(jiǎn)介</b></p><p><b>  .1.

16、1主要功能</b></p><p>  .1.1.1本考試系統(tǒng)的主要功能包括以下四大部考生信息和試題的管理和維護(hù),這部分由考生信息和試題的數(shù)據(jù)庫(kù)功能模塊完成。客戶機(jī)考試環(huán)境的提供,這部分由客戶機(jī)考試應(yīng)用程序?qū)崿F(xiàn)。</p><p>  .1.1.2服務(wù)器考試過程控制,其中主要包含客戶機(jī)遠(yuǎn)程控制、考試機(jī)狀態(tài)管 理與設(shè)置、備份機(jī)狀態(tài)管理與配置、考試過程監(jiān)督與管理、試卷評(píng)閱與

17、成績(jī)計(jì)算等功能。這部分功能由服務(wù)器考試管理系統(tǒng)完成。</p><p>  .1.1.3考試過程有效信息的備份與恢復(fù),這部分由考試備份系統(tǒng)實(shí)現(xiàn)。</p><p>  1.2 開發(fā)工具的選擇</p><p>  Microsoft Visual Basic 6.0是非常流行的基于Basic語言的可視化編程工具,其開發(fā)界面如圖1-1所示。</p><p

18、>  sql="select stuKey from stuPaper where stuID='"&stuExamID&"' and examID="&examID&" order by paperID asc"</p><p>  set rs=conn.execute(sql)</p>

19、;<p>  if not(rs.eof or rs.bof) then stuKey=rs("stuKey")</p><p>  rs.movenext</p><p>  while not(rs.eof or rs.bof)</p><p>  stuKey=stuKey&"|"&rs(&

20、quot;stuKey")</p><p>  rs.movenext</p><p><b>  wend</b></p><p>  sql="update stuScore set stuKey='"&stuKey&"', stuScore="&st

21、uScoreSum&", stuStatus='over' where stuID='"&stuExamID&"' and examID="&examID</p><p>  set rs=conn.execute(sql) if not(rs.eof or rs.bof) then stuKey=rs(&qu

22、ot;stuKey")</p><p>  rs.movenext</p><p>  while not(rs.eof or rs.bof)</p><p>  stuKey=stuKey&"|"&rs("stuKey")</p><p>  rs.movenext</

23、p><p>  圖1.1 Visual Basic集成開發(fā)環(huán)境</p><p>  Microsoft Visual Basic 6.0能夠成為當(dāng)今最流行的軟件開發(fā)工具之一,是</p><p>  與其卓越的性能分不開的,它匯集了微軟(Microsoft)公司的技術(shù)精華,不僅全面使用了面向?qū)ο蟮募夹g(shù),而且在編譯技術(shù)上也作了優(yōu)化。</p><p>

24、  與其他開發(fā)工具相比,Visual Basic 6.0具有明顯的優(yōu)勢(shì):</p><p>  1.1.1.使用Basic語言作為基礎(chǔ),開發(fā)難度低、開發(fā)工作量小。</p><p>  1.1.2.Visual Basic 6.0開發(fā)環(huán)境十分友好,強(qiáng)大的可視化開發(fā)方式能夠幫助用戶</p><p>  輕松地開發(fā)出多種類型的應(yīng)用程序。</p><p&g

25、t;  1.1.3.由于微軟公司在PC操作系統(tǒng)市場(chǎng)上的壟斷地位,使用微軟發(fā)行的編程軟</p><p>  件能夠提供與Windows操作系統(tǒng)的最大兼容性。 </p><p>  2功能分析與應(yīng)用程序框架的建立</p><p>  實(shí)行計(jì)算機(jī)化考試與傳統(tǒng)的考試不同,傳統(tǒng)的考試由于人的參與,靈活性很強(qiáng),可以根據(jù)現(xiàn)場(chǎng)情況靈活處理應(yīng)急事件:</p><p

26、><b>  2.1考試系統(tǒng)流程</b></p><p>  一個(gè)完整的計(jì)算機(jī)考試,要經(jīng)過注冊(cè)考生、考試和取得考試成績(jī)單等步驟,</p><p>  具體流程如圖2-1所示:</p><p>  圖2.1考試系統(tǒng)流程</p><p>  考生要使用考試系統(tǒng)進(jìn)行考試,必須首先進(jìn)行考生注冊(cè),確認(rèn)身份后考生會(huì)獲得一個(gè)在整

27、個(gè)考試系統(tǒng)中唯一的準(zhǔn)考證號(hào)。在規(guī)定的考試日期中,考生在考試系統(tǒng)上作答,系統(tǒng)自動(dòng)記錄考生的考試時(shí)間和答題記錄,出現(xiàn)意外情況不會(huì)影響考生的考試。</p><p>  當(dāng)考生完成考試后,系統(tǒng)會(huì)自動(dòng)提交考生的試卷答案并進(jìn)行評(píng)閱,參照題庫(kù)中的標(biāo)準(zhǔn)答案為考生評(píng)分。最后考試系統(tǒng)能夠提供考試成績(jī)單的查詢。</p><p>  .2.2考試系統(tǒng)模塊的劃分與功能</p><p>  通

28、過前面的分析,已經(jīng)了解了使用考試系統(tǒng)完成考試的步驟,接下來則需要對(duì)考試系統(tǒng)的模塊進(jìn)行劃分。</p><p>  考試系統(tǒng)的模塊大體劃分為四個(gè)部分:數(shù)據(jù)庫(kù)管理系統(tǒng)、考試管理系統(tǒng)、客戶機(jī)考試系統(tǒng)和考試備份系統(tǒng)。其中每一部分都細(xì)分為多個(gè)模塊,如圖2-2所示:</p><p>  圖2.2模塊的劃分與功能</p><p>  .2.2.1數(shù)據(jù)庫(kù)管理系統(tǒng):</p>

29、<p>  數(shù)據(jù)庫(kù)管理系統(tǒng)包括了注冊(cè)、修改、刪除考生信息功能,相關(guān)考生、考試信息查詢等功能,以及建立和維護(hù)考試系統(tǒng)題庫(kù)。</p><p>  .2.2.2考試管理系統(tǒng):</p><p>  主要包含客戶機(jī)遠(yuǎn)程控制(此功能程序放置于客戶考試機(jī),且隨操作系統(tǒng)啟動(dòng)時(shí)加載,并運(yùn)行于后臺(tái))、考試機(jī)狀態(tài)管理與設(shè)置、備份機(jī)狀態(tài)管理與配置、考試過程監(jiān)督與管理、試卷評(píng)閱與成績(jī)計(jì)算等功能。<

30、;/p><p>  .2.2.3客戶機(jī)考試系統(tǒng):</p><p>  包括考生考試環(huán)境的提供——答題系統(tǒng)、自動(dòng)計(jì)時(shí)、鎖定考試機(jī)功能以及考試題庫(kù)。</p><p>  .2.2.4客戶機(jī)考試系統(tǒng):</p><p>  包括自動(dòng)按時(shí)備份考生試題答案,考試過程中出現(xiàn)意外情況后恢復(fù)有效答題,提交最終試卷答案等功能。</p><p>

31、;  .2.3創(chuàng)建考試管理系統(tǒng)應(yīng)用程序框架</p><p>  首先要?jiǎng)?chuàng)建工程,進(jìn)入Visual Basic 6.0的集成開發(fā)環(huán)境,在“新建工程”</p><p>  對(duì)話框中選擇[標(biāo)準(zhǔn)EXE]選項(xiàng),單擊確定,就創(chuàng)建了一個(gè)新的Visual Basic工程。接下來,要為工程文件命名,在開發(fā)環(huán)境右側(cè)工程管理器窗口中,在工程1選項(xiàng)下的屬性窗口中輸入“考試管理系統(tǒng)”,即完成工程的命名。窗體的命名則

32、在屬性窗口的[名稱]項(xiàng)目中輸入“ExamSeverMain” 。</p><p>  基本的工程建立完成后保存剛剛創(chuàng)建的工程,這樣,考試管理系統(tǒng)的應(yīng)用程序簡(jiǎn)單框架就創(chuàng)建完畢。</p><p>  3考試管理系統(tǒng)概要設(shè)計(jì)</p><p>  .3 .1網(wǎng)絡(luò)考試系統(tǒng)應(yīng)用環(huán)境圖</p><p>  圖3.1 網(wǎng)絡(luò)考試系統(tǒng)應(yīng)用環(huán)境圖</p>

33、;<p>  在網(wǎng)絡(luò)考試系統(tǒng)中,管理機(jī)統(tǒng)一控制管理所有考試機(jī),備份機(jī)在管理機(jī)配置工作狀態(tài)后獨(dú)立自動(dòng)完成備份工作。因此考試管理機(jī)有統(tǒng)管整個(gè)考試全局的功能與作用。</p><p>  .3.2考試管理系統(tǒng)流程</p><p>  在以前的內(nèi)容中簡(jiǎn)要介紹了整體的網(wǎng)絡(luò)考試系統(tǒng)流程和功能分析,從現(xiàn)在開始將要詳細(xì)介紹作者本人負(fù)責(zé)的考試管理系統(tǒng)。下圖3-2是考試管理系統(tǒng)的整體流程:<

34、/p><p>  圖3.2 考試管理系統(tǒng)流程</p><p>  啟動(dòng)考試管理系統(tǒng)應(yīng)用程序后有兩種模式可供選擇進(jìn)入,一種是查詢模式,只可以調(diào)用數(shù)據(jù)庫(kù)查詢系統(tǒng),另一種是管理模式,需要正確輸入管理員密碼后進(jìn)入,管理系統(tǒng)的所有功能都有效。</p><p>  進(jìn)入管理模式后可以對(duì)考試機(jī)進(jìn)行掃描設(shè)置,對(duì)備份機(jī)進(jìn)行連接配置。在進(jìn)行上述兩項(xiàng)設(shè)置之后即可進(jìn)入考試進(jìn)程管理。</

35、p><p>  考試結(jié)束后對(duì)考生試卷進(jìn)行評(píng)分,然后輸出成績(jī)單。</p><p>  .3.3考試管理系統(tǒng)模塊的詳細(xì)劃分</p><p>  服務(wù)器考試管理系統(tǒng)按照功能的分類劃分為遠(yuǎn)程控制、考試機(jī)狀態(tài)管理與設(shè)置、備份機(jī)狀態(tài)管理與配置、考試過程監(jiān)督與管理、試卷評(píng)閱與成績(jī)計(jì)算五大部分。然而,管理機(jī)要控制整個(gè)考試過程,這需要在設(shè)計(jì)前分析和考慮好將遇到的情況和相應(yīng)的功能,因此有必

36、要對(duì)之前的基礎(chǔ)上逐步細(xì)化考試管理系統(tǒng)模塊。如下圖3-3所示:</p><p>  圖3.3 考試管理系統(tǒng)模塊圖</p><p>  .3.3.1考試機(jī)狀態(tài)管理</p><p>  先進(jìn)行網(wǎng)絡(luò)掃描,得到考試機(jī)的網(wǎng)絡(luò)狀況,看是否連接正常,然后可以選擇添加經(jīng)過掃描的考試機(jī),添加的網(wǎng)絡(luò)狀態(tài)正常連接的考試機(jī)將作為有效的考試機(jī)用于考生考試。</p><p&

37、gt;  .3.3.2備份機(jī)狀態(tài)管理</p><p>  首先將管理機(jī)與備份機(jī)建立連接,然后管理機(jī)可以自動(dòng)對(duì)備份機(jī)進(jìn)行配置,讓其工作在穩(wěn)定、高效的狀態(tài)下。</p><p>  .3.3.3考試進(jìn)程管理</p><p>  這部分功能主要是控制和監(jiān)督考試的,先遠(yuǎn)程控制考試機(jī)啟動(dòng)考試程序,然后從數(shù)據(jù)庫(kù)導(dǎo)入考生信息用于考生登錄考試,設(shè)置考試時(shí)間后清理考場(chǎng)(即使考試機(jī)處于初

38、始狀態(tài)),抽取試題后即可考試計(jì)時(shí)考試,到時(shí)間后鎖定考試機(jī),</p><p>  從備份機(jī)收取考生最終提交的試卷答案,所有考試結(jié)束后,可以遠(yuǎn)控關(guān)閉考試機(jī)考試程序。</p><p>  .3.3.4成績(jī)計(jì)算和統(tǒng)計(jì)</p><p>  考試結(jié)束后管理機(jī)通過收取的考生試卷答案按照題庫(kù)中標(biāo)準(zhǔn)答案進(jìn)行計(jì)算機(jī)閱卷評(píng)分,然后將每個(gè)考生的成績(jī)輸入到每個(gè)人的考生注冊(cè)的信息表中的成績(jī)字段

39、中以供查詢。</p><p>  .3.3.5遠(yuǎn)程控制</p><p>  這一部分功能的實(shí)現(xiàn)是通過將一個(gè)用于接收來自管理機(jī)命令的遠(yuǎn)控客戶端程序放置于考試機(jī),只要使這個(gè)程序隨操作系統(tǒng)啟動(dòng)時(shí)加載到后臺(tái)運(yùn)行即可響應(yīng)管理機(jī)的各種指令。</p><p>  4考試管理系統(tǒng)詳細(xì)設(shè)計(jì)</p><p>  在確立了考試管理系統(tǒng)的總體結(jié)構(gòu),并考慮出了該系統(tǒng)中

40、各個(gè)組成模塊間的聯(lián)系。接下來的工作,就是要在上述結(jié)果的基礎(chǔ)上,考慮“怎樣實(shí)現(xiàn)”這個(gè)軟件系統(tǒng)</p><p>  .4 網(wǎng)絡(luò)通信的實(shí)現(xiàn)與設(shè)計(jì)</p><p>  .4.1 網(wǎng)絡(luò)協(xié)議基礎(chǔ)</p><p>  .TCP/IP參考模型</p><p>  TCP/IP是協(xié)議的集合,其名稱代表它的兩個(gè)基本協(xié)議,TCP(Transmission Cont

41、rol Protocol,傳輸控制協(xié)議)和IP(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)。雖然從名稱上來說只有兩個(gè)協(xié)議,其實(shí)TCP/IP是一個(gè)由4層協(xié)議系統(tǒng),由以下4層組成: 應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層。</p><p>  互聯(lián)網(wǎng)上的每一個(gè)接口必須有唯一的Internet地址也就是IP地址。一個(gè)IP地址通常由4個(gè)用點(diǎn)隔開的8個(gè)二進(jìn)制位的數(shù)字(從0到255)組成的。</p><p&

42、gt;  在TCP/IP連接過程中,都是通過采用16位端口號(hào)來識(shí)別的。因?yàn)镮P地址只是標(biāo)志了一臺(tái)機(jī)器在網(wǎng)絡(luò)中的位置。而IP端口是對(duì)應(yīng)了一個(gè)主機(jī)上運(yùn)行的應(yīng)用程序。</p><p>  TCP和UDP協(xié)議使用的較為廣泛,而TCP和UDP都是基于IP協(xié)議的。</p><p><b>  .TCP協(xié)議</b></p><p>  TCP協(xié)議是支持面向連

43、接的可靠的數(shù)據(jù)傳輸,提供體積可變的滑動(dòng)窗口機(jī)制,支持端到端的流量控制。TCP數(shù)據(jù)包格式如圖4-1所示。</p><p>  圖4.1 TCP報(bào)頭</p><p>  其中,序列號(hào)字段是指該報(bào)頭段在發(fā)送方字節(jié)流中的位置確認(rèn)序號(hào)是指接收方希望接收的下一個(gè)報(bào)文段序號(hào),窗口字段是指接收緩沖區(qū)的大小,碼元比特字段是一個(gè)6位的標(biāo)志字段,緊急指針字段是用來處理帶外數(shù)據(jù)(DOOB)而設(shè)的;最大段長(zhǎng)度用來選

44、擇適當(dāng)?shù)腗SS,目的是與MTU相符合,如果取值過小會(huì)導(dǎo)致帶寬利用率太低,而如果取值過大又會(huì)造成IP數(shù)據(jù)包分段,若分段丟失導(dǎo)致重發(fā)整個(gè)報(bào)文,這樣會(huì)浪費(fèi)網(wǎng)絡(luò)資源。最佳長(zhǎng)度是使攜帶了長(zhǎng)度S的TCP報(bào)文段的IP數(shù)據(jù)包在從源至目的地的路徑上不被分段。</p><p>  .4.1.1UDP協(xié)議</p><p>  UDP協(xié)議是面向操作的,未提供提交和復(fù)制保護(hù),是不可靠的傳輸協(xié)議。UDP數(shù)據(jù)包格式如圖

45、4.2所示。</p><p>  圖4.2 UDP數(shù)據(jù)包格式</p><p>  偽首部是為了計(jì)算檢驗(yàn)而設(shè)置的;偽首部包含IP首部一些字段,其目的是讓UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地。使用UDP協(xié)議時(shí),“協(xié)議”字為17。源端口是可選的,不用時(shí)時(shí)置0。報(bào)文長(zhǎng)度是包括頭部和數(shù)據(jù)區(qū)的總長(zhǎng)度,最小8個(gè)字節(jié)。校驗(yàn)和是以16位為單位,各位求補(bǔ)(首位為符號(hào)位)將和相加,之后再求補(bǔ)。</p

46、><p>  因?yàn)閁DP協(xié)議是無差錯(cuò)控制的,所以發(fā)送過程與IP協(xié)議類似,就是先IP分組,然后再用ARP協(xié)議來解析物理地址,然后發(fā)送。</p><p>  .4.2網(wǎng)絡(luò)協(xié)議的選擇</p><p>  由于考慮到備份機(jī)在整個(gè)考試系統(tǒng)中的重要性,以及管理機(jī)與備份機(jī)間網(wǎng)絡(luò)傳輸?shù)目煽啃砸筝^高,且備份機(jī)數(shù)量只是一臺(tái),所以選擇了應(yīng)用能夠提供可靠數(shù)據(jù)傳送的TCP協(xié)議來完成管理機(jī)與備份

47、機(jī)間的數(shù)據(jù)通信。</p><p>  然而考慮到考試客戶機(jī)的數(shù)量很多,網(wǎng)絡(luò)間數(shù)據(jù)傳送量相對(duì)較少,且UDP協(xié)議相對(duì)于TCP協(xié)議有很大的速度優(yōu)勢(shì),所以選擇了UDP協(xié)議來完成管理機(jī)與考試機(jī)間的數(shù)據(jù)通信。</p><p>  .4.3網(wǎng)絡(luò)與通信控件</p><p>  在Visual Basic中,進(jìn)行網(wǎng)絡(luò)通信開發(fā)是非常方便的。Visual Basic提供了豐富的控件。目前

48、絕大部分的應(yīng)用層程序都是利用Socket來進(jìn)行開發(fā)。在Windows操作系統(tǒng)中,又稱為Winsock開發(fā)。對(duì)于眾多的基層網(wǎng)絡(luò)協(xié)議,Winsock是訪問它們的首選接口。</p><p>  4.3.1Winsock規(guī)范</p><p>  Windows Sockets規(guī)范以U.C.Berkeley大學(xué)BSD UNIX中流行的Socket接口為范例定義了一套Microsoft Windows

49、下網(wǎng)絡(luò)編程接口。它不僅包含了人們所熟悉的Berkeley Socket風(fēng)格的庫(kù)函數(shù);也包含了一組針對(duì)Windows的擴(kuò)展庫(kù)函數(shù),以使程序員能充分地利用Windows消息驅(qū)動(dòng)機(jī)制進(jìn)行編程。 Windows Sockets規(guī)范定義了應(yīng)用程序開發(fā)者能夠使用,并且網(wǎng)絡(luò)軟件供應(yīng)商能夠?qū)崿F(xiàn)的一套庫(kù)函數(shù)調(diào)用和相關(guān)語義。</p><p>  4.3.2Winsock控件</p><p>  Winsock

50、控件對(duì)用戶來說是不可見的,它提供了訪問TCP和UDP網(wǎng)絡(luò)服務(wù)的方便途徑。Microsoft Access、VisualBasic、VisualC++或VisualFoxPro的開發(fā)人員都可使用它。為編寫客戶或服務(wù)器應(yīng)用程序,不必了解TCP的細(xì)節(jié)或調(diào)用低級(jí)的WinsockAPI。通過設(shè)置控件的屬性并調(diào)用其方法就可輕易地連接到一臺(tái)遠(yuǎn)程計(jì)算機(jī)上去,并且還可雙向交換數(shù)據(jù)。</p><p>  利用VB開發(fā)網(wǎng)絡(luò)應(yīng)用程序,更

51、多的是利用Winsock控件來實(shí)現(xiàn),而很少使用WinsockAPI。直接使用Winsock控件的效率比直接使用API容易,同時(shí)效率也高很多。</p><p>  下圖4-3是應(yīng)用程序與Winsock控件的關(guān)系。</p><p>  圖4.3 應(yīng)用程序與Winsock控件的關(guān)系</p><p>  應(yīng)用程序調(diào)用Windows Sockets的API實(shí)現(xiàn)相互之間的通信

52、。Windows Sockets又利用下層的網(wǎng)絡(luò)通信協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作。每一個(gè)正在被使用的套接字都有它的類型和與其相關(guān)的進(jìn)程。套接字存在于通</p><p><b>  信域中。</b></p><p>  建立Winsock規(guī)范的主要目的是提供一個(gè)與協(xié)議無關(guān)的傳送接口。利用Winsock對(duì)象來實(shí)現(xiàn)各種應(yīng)用程序的開發(fā),并不需要知道數(shù)據(jù)在網(wǎng)絡(luò)中是如

53、何傳輸?shù)摹?lt;/p><p>  4.3.3 Winsock控件的使用</p><p>  利用Winsock控件可以與遠(yuǎn)程計(jì)算機(jī)建立連接,并通過用戶數(shù)據(jù)文報(bào)協(xié)議(UDP)或者傳輸控制協(xié)議(TCP)進(jìn)行數(shù)據(jù)交換。這兩種協(xié)議都可以用來創(chuàng)建客戶與服務(wù)器應(yīng)用程序。與Timer控件類似,Winsock控件在運(yùn)行時(shí)是不可見的。</p><p>  在使用Winsock控件時(shí),首

54、先需要考慮使用什么協(xié)議。可以使用的協(xié)議包括TCP和UDP。兩種協(xié)議之間的重要區(qū)別在于它們的連接狀態(tài)</p><p>  Winsock控件的屬性、方法以及事件請(qǐng)參看附錄內(nèi)容。</p><p> ?、?通信中自定義的數(shù)據(jù)流幀格式規(guī)程說明</p><p>  在管理機(jī)和備份機(jī)以及考試機(jī)之間的通信是通過判斷傳輸過來的自定義字符串來轉(zhuǎn)到相應(yīng)子程序中的。本網(wǎng)絡(luò)考試系統(tǒng)中統(tǒng)一規(guī)

55、定數(shù)據(jù)流的幀格式如圖4-4所示。</p><p>  圖4.4 自定義數(shù)據(jù)流幀格式</p><p>  幀頭:以“@S”2個(gè)字節(jié)的符號(hào)表示數(shù)據(jù)幀的開始。</p><p>  LEN長(zhǎng)度:用于標(biāo)記該次傳送的數(shù)據(jù)幀長(zhǎng),占3個(gè)字節(jié)。</p><p>  源和目的:標(biāo)記發(fā)送端和接收端的機(jī)器號(hào),可以通過查詢事先配置好的數(shù)組</p><

56、;p>  查找到對(duì)應(yīng)發(fā)送端和接收端的IP地址,各占2個(gè)字節(jié)。</p><p>  控制位:占6個(gè)字節(jié),其中裝有約定好的具有特殊意義的控制字符,為6個(gè)</p><p>  大寫英文字母。根據(jù)規(guī)定好的方式來檢出數(shù)據(jù)區(qū)的數(shù)據(jù)信息格式,得</p><p>  到有用的信息數(shù)據(jù)或執(zhí)行命令位中的語句(或得到響應(yīng)位)。</p><p> ?、?命令/

57、響應(yīng)位:1) 命令位也同樣是6個(gè)字節(jié),規(guī)定為6個(gè)大寫英文字母,具</p><p>  有事先約定好的功能命令。</p><p>  2)當(dāng)使用UDP協(xié)議傳輸時(shí),每次收到數(shù)據(jù)時(shí)都要返回一個(gè)帶有</p><p>  響應(yīng)位的響應(yīng)幀,表示接收成功。</p><p> ?、?數(shù)據(jù)區(qū):它是不定長(zhǎng)的,但按照控制位的不同有不同預(yù)先約定好的格式以便</

58、p><p><b>  于檢出有用信息。</b></p><p> ?、?CRC循環(huán)校驗(yàn):對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行差錯(cuò)校驗(yàn)。</p><p>  以上對(duì)于網(wǎng)絡(luò)協(xié)議的選擇、開發(fā)工具中的網(wǎng)絡(luò)通信控件的選擇以及網(wǎng)絡(luò)通信中數(shù)據(jù)流幀格式的規(guī)定都已經(jīng)完成,由此網(wǎng)絡(luò)通信的實(shí)現(xiàn)和簡(jiǎn)單的設(shè)計(jì)就已經(jīng)初步完成。</p><p>  4.4考試管理機(jī)的軟件

59、初步設(shè)計(jì)</p><p>  在事先建立應(yīng)用程序框架的新工程ExamSeverMain中添加一個(gè)模塊,在其中聲明一些全局變量、程序運(yùn)行中常需要調(diào)用的函數(shù)和經(jīng)常使用到的常量。</p><p>  在網(wǎng)絡(luò)考試系統(tǒng)中,管理機(jī)經(jīng)常要控制和掃描考試客戶機(jī),為了便于管理和掃描考試機(jī)處于的狀態(tài),在模塊中聲明了一個(gè)變量數(shù)組,用于存儲(chǔ)考試機(jī)的相關(guān)信息和狀態(tài),如下所示:</p><p>

60、;  Public ExamClient(1 To 40, 1 To 10) As String</p><p>  上面的代碼是在模塊中聲明的一個(gè)二維數(shù)組,表示了1到40號(hào)機(jī)器的10組相關(guān)信息和狀態(tài),詳細(xì)說明如下:</p><p>  ExamClient(i, 1)配置的考試機(jī)IP地址</p><p>  ExamClient(i, 2)設(shè)定考試機(jī)網(wǎng)絡(luò)狀態(tài)——0

61、:未響應(yīng);1:連接正常;2:未知</p><p>  ExamClient(i, 3)設(shè)定考試機(jī)初始選定狀態(tài)——0:未選定;1:預(yù)選;2:選定</p><p>  ExamClient(i, 4)設(shè)定考試機(jī)初始有效狀態(tài)——0:無效;1:有效;2:正在使用</p><p>  ExamClient(i, 5)設(shè)定考試機(jī)當(dāng)前狀態(tài)——0:未知;1:考試系統(tǒng)未啟動(dòng);2:考試

62、系統(tǒng)已啟動(dòng);3:顯示準(zhǔn)考證查詢界面;4:正在考試答題;5:考生已經(jīng)提交試卷;6:考試系統(tǒng)已關(guān)閉</p><p>  ExamClient(i, 6)存放隨機(jī)生成的試題題號(hào)</p><p>  其中i表示機(jī)器號(hào),7到10的信息狀態(tài)暫時(shí)未應(yīng)用,用于以后的擴(kuò)展。</p><p>  程序執(zhí)行的一開始要對(duì)這個(gè)考試機(jī)信息狀態(tài)的數(shù)組進(jìn)行初始化,因此在模塊</p>

63、<p>  中聲明了一個(gè)初始化的函數(shù),在程序加載時(shí)調(diào)用即可,詳細(xì)的函數(shù)編制如下:</p><p>  Public Function ClientManagerStatuSet()</p><p>  Dim i As Integer</p><p>  For i = 1 To 40</p><p>  ExamClient(i,

64、 2) = "2" '設(shè)定考試機(jī)初始網(wǎng)絡(luò)狀態(tài)為“未知</p><p>  ExamClient(i, 3) = "0" '設(shè)定考試機(jī)初始選定狀態(tài)為“未選定” </p><p>  ExamClient(i, 4) = "0" '設(shè)定考試機(jī)初始有效狀態(tài)為“無效” </p>

65、<p>  ExamClient(i, 5) = "0" '設(shè)定考試機(jī)當(dāng)前狀態(tài)為“未知”</p><p>  ExamClient(i, 6) = "" '設(shè)定考試機(jī)當(dāng)前存放的試題號(hào)為空</p><p><b>  Next i</b></p><p>  E

66、nd Function</p><p>  在考試過程中管理機(jī)與考試機(jī)、備份機(jī)之間需要進(jìn)行網(wǎng)絡(luò)通信,這就需要事先統(tǒng)一規(guī)定一下所要使用的端口號(hào),在模塊中聲明了這些常量之后,在整個(gè)程序中隨時(shí)都可以調(diào)用,十分方便。下面的代碼就是一部分常量的聲明:</p><p>  Public Const ClientPort As Long = 3500</p><p>  Publ

67、ic Const SeverPort As Long = 9700</p><p>  Public Const BackupPort As Long = 8500</p><p>  4.4.1考試管理機(jī)核心功能的實(shí)現(xiàn)與編制</p><p>  在對(duì)軟件的初步設(shè)計(jì)以及用戶操作界面的設(shè)計(jì)制作之后,就應(yīng)該考慮設(shè)計(jì)實(shí)現(xiàn)考試管理的主要功能了。</p><

68、;p><b>  .1網(wǎng)絡(luò)掃描的設(shè)計(jì)</b></p><p>  網(wǎng)絡(luò)掃描的主要設(shè)計(jì)思想是利用UDP協(xié)議向考試機(jī)發(fā)送事先規(guī)定的探測(cè)幀,如果考試機(jī)中后臺(tái)加載的遠(yuǎn)控程序接收到之后則會(huì)返回一個(gè)響應(yīng)幀,管理機(jī)收到響應(yīng)幀則表示掃描的該網(wǎng)絡(luò)連接正常,即該考試機(jī)連接正常可用;如果管理機(jī)在一定時(shí)間內(nèi)未收到響應(yīng)幀,則會(huì)延時(shí)重發(fā)探測(cè)幀,并監(jiān)測(cè)響應(yīng)幀的返回,若重發(fā)次數(shù)達(dá)到最大預(yù)設(shè)值,則表明掃描的該網(wǎng)絡(luò)未響應(yīng)

69、,即該考試機(jī)無法通信使用。</p><p>  具體實(shí)現(xiàn)的設(shè)計(jì)方法如下:</p><p>  在掃描前要先設(shè)置需要掃描的機(jī)器號(hào)范圍最小機(jī)器號(hào)topnum和最大機(jī)器號(hào)botmnum,用時(shí)鐘控件來控制掃描延時(shí),設(shè)置重新掃描的最大次數(shù)flagtime1 = 3,在程序加載時(shí)設(shè)置掃描標(biāo)志為flag1 = 0,如果收到響應(yīng)幀則將其置1,表示連接正常,如果一定時(shí)間內(nèi)仍然為0,則需要重發(fā)探測(cè)幀。部分代碼

70、如下:</p><p>  Private Sub SckCliManager_DataArrival(ByVal bytesTotal As Long)</p><p>  Dim mydata As String</p><p>  Dim itmx As ListItem</p><p>  SckCliManager.GetData

71、mydata '接收到數(shù)據(jù)流</p><p>  If Left$(mydata, 2) = "@S" Then '對(duì)數(shù)據(jù)流進(jìn)行檢測(cè)</p><p>  pclocal = Mid$(mydata, 8, 2)</p><p>  pcremote = Mid$(mydata, 6, 2)&l

72、t;/p><p>  controldata = Mid$(mydata, 10, 6)</p><p>  orderdata = Mid$(mydata, 16, 6)</p><p>  usedata = Mid$(mydata, 22, 1)</p><p><b>  End If</b></p>

73、<p>  If controldata = "NETSHW" Then</p><p>  If orderdata = "ASKASK" Then '檢測(cè)到響應(yīng)幀</p><p>  flag1 = 1 '標(biāo)志位置1</p><p

74、>  ExamClient(pccount - 1, 2) = "1"</p><p>  If usedata = "1" Then ExamClient(pccount - 1, 5) = "1"</p><p>  If usedata = "2" Then ExamClient(pccount -

75、 1, 5) = "2"</p><p><b>  End If</b></p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  Private Sub Timer1_Timer()<

76、/p><p>  Select Case flag1 '查看檢測(cè)標(biāo)志位</p><p>  Case 0 '0表示需要重發(fā),重發(fā)的記數(shù)減1</p><p>  pccount = pccount - 1</p><p>  flagtime1

77、= flagtime1 - 1</p><p><b>  Case 1</b></p><p><b>  flag1 = 0</b></p><p>  flagtime1 = netflagtimes</p><p>  End Select</p><p>  If

78、pccount > botmnum Then '若當(dāng)前掃描的機(jī)器號(hào)大于了最大掃描機(jī)器</p><p><b>  號(hào)則退出掃描過程</b></p><p>  Timer1.Enabled = False</p><p>  LabStatu.Caption = ""</p><p>

79、;  MsgBox "掃描完畢!"</p><p>  CmdStartScan.Enabled = True</p><p>  CmdScanAll.Enabled = True</p><p>  CmdPauseScan.Enabled = False</p><p>  CmdStopScan.Enabled =

80、 False</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  LabStatu.Caption = "正在掃描" & LTrim$(Str$(pccount)) & "號(hào)機(jī): " &

81、 ExamClient(pccount, 1) & ":3500 請(qǐng)稍等......"</p><p>  If flagtime1 > 0 Then '若重發(fā)次數(shù)小于3次則掃描該考試機(jī)</p><p>  SckCliManager.RemoteHost = ExamClient(pccount, 1)</p>&l

82、t;p>  Dim fadata As String '發(fā)送探測(cè)幀</p><p>  Dim pcnum As String</p><p>  pcnum = Str$(pccount)</p><p>  If pccount < 10 Then</p><p>  fadata =

83、 "@S000300" & LTrim$(pcnum) & "NETSHWGETINF"</p><p><b>  Else</b></p><p>  fadata = "@S00030" & LTrim$(pcnum) & "NETSHWGETINF"

84、</p><p><b>  End If</b></p><p>  SckCliManager.SendData fadata</p><p><b>  Else:</b></p><p><b>  flag1 = 1</b></p><p> 

85、 ExamClient(pccount, 2) = "0" '掃描次數(shù)大于3,該考試機(jī)未響應(yīng)</p><p><b>  End If</b></p><p>  pccount = pccount + 1</p><p>  scannum = pccount</p><p>  If

86、scanflag = 1 Then</p><p>  Timer1.Enabled = False</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  掃描后的考試機(jī)陳列在列表之中,添加、刪除考試機(jī)的設(shè)計(jì)思路為:檢測(cè)列表中被選擇

87、的項(xiàng)目行,并將這些行加入到新的列表中或從中刪除。下面給出添加的設(shè)計(jì)代碼:</p><p>  Private Sub CmdAddClient_Click()</p><p>  Dim n As Integer</p><p>  For n = 0 To (List1.ListCount - 1) '設(shè)置循環(huán)檢測(cè)被選行</p>

88、<p>  If List1.Selected(n) = True Then</p><p>  If ExamClient(n + 1, 3) = 0 Then</p><p>  If ExamClient(n + 1, 2) <> 2 Then</p><p>  LabStatu.Caption = ""</

89、p><p>  List2.AddItem List1.List(n) '被選中的行添加到新的列表中</p><p>  ExamClient(n + 1, 3) = 1</p><p>  Else: LabStatu.Caption = "注意:未經(jīng)掃描的考試機(jī)禁止添加!"</p><p><b&g

90、t;  End If</b></p><p>  Else: LabStatu.Caption = "注意:已經(jīng)添加的考試機(jī)禁止重復(fù)添加!"</p><p><b>  End If</b></p><p><b>  End If</b></p><p><b

91、>  Next</b></p><p>  CmdDelClient.Enabled = True</p><p>  CmdClearClient.Enabled = True</p><p><b>  End Sub</b></p><p>  在掃描設(shè)置考試機(jī)后,連接備份機(jī),對(duì)其進(jìn)行配置,使其工

92、作在穩(wěn)定高效的工作狀態(tài)下。主要是將考試機(jī)的當(dāng)前狀態(tài)傳輸配置給備份機(jī),備份機(jī)則對(duì)正在進(jìn)行考試的考試機(jī)進(jìn)行備份。當(dāng)管理機(jī)與備份機(jī)之間建立連接后,則將連接標(biāo)志位置1,計(jì)時(shí)器開始工作,每隔20秒就將當(dāng)前考試機(jī)的狀態(tài)傳輸配置給備份機(jī)一次。具體實(shí)現(xiàn)方法請(qǐng)參看下面的代碼:</p><p>  Private Sub Timer1_Timer()</p><p>  Dim i As Integer<

93、;/p><p>  Dim setinfo As String</p><p>  Dim datasend As String</p><p>  timecount = timecount + 1 '計(jì)數(shù)加1</p><p>  If timecount > 20 Then '20秒到后進(jìn)行配置

94、</p><p>  If flag1 = 1 Then</p><p>  For i = 1 To 40</p><p>  setinfo = setinfo & ExamClient(i, 5) '收集考試機(jī)的狀態(tài)</p><p><b>  Next i</b></p>&l

95、t;p>  datasend = "@S0000530BACKUPSETCLI" & setinfo</p><p>  SckBackManager.SendData datasend '發(fā)送配置信息</p><p>  timecount = 0 '計(jì)時(shí)器清0<

96、/p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  .4.5考試進(jìn)程管理的設(shè)計(jì)</p><p>  4.5.1 在考試進(jìn)程管理中大多數(shù)功能主要由遠(yuǎn)程控制來完成,例如啟動(dòng)考試應(yīng)用程序、關(guān)閉考試程序、鎖定考試機(jī)等等,都是通過網(wǎng)絡(luò)發(fā)出一個(gè)命令

97、幀,考試機(jī)客戶端檢測(cè)出指令后執(zhí)行該功能,下面舉出啟動(dòng)考試應(yīng)用程序的設(shè)計(jì)示例,其他的都是與其極為相似,在這里不再贅述。</p><p>  Private Sub CmdLoadClient_Click()</p><p>  sckBOnet.SendData "@S0001630NETSHWEXMRUN" '發(fā)送命令幀</p><

98、p>  Timer1.Enabled = True</p><p>  Label2.Caption = "考試程序啟動(dòng)完畢"</p><p><b>  End Sub</b></p><p>  當(dāng)考試客戶機(jī)接收檢測(cè)到此命令就會(huì)利用Shell函數(shù)啟動(dòng)考試程序。</p><p>  4.5.2

99、因?yàn)楣芾頇C(jī)與考試客戶機(jī)之間應(yīng)用UDP協(xié)議來通信,因此考試進(jìn)程中要不斷的掃描網(wǎng)絡(luò)來查看網(wǎng)絡(luò)連接是否保持正常,這一部分的實(shí)現(xiàn)與網(wǎng)絡(luò)掃描的原理相同,只不過這里只自動(dòng)按時(shí)掃描已被選擇用作考試的客戶機(jī),當(dāng)發(fā)現(xiàn)出現(xiàn)網(wǎng)絡(luò)不響應(yīng)的機(jī)器時(shí)立即發(fā)出警告信息。</p><p>  4.5.3考試倒計(jì)時(shí)的設(shè)計(jì)實(shí)現(xiàn)</p><p>  首先創(chuàng)建一個(gè)Timer控件,將其時(shí)間間隔設(shè)為1000毫秒,然后將由用戶設(shè)置的考試

100、時(shí)間換算成秒,將這個(gè)總時(shí)間作為倒數(shù)的總時(shí)間,每經(jīng)過一秒鐘將其進(jìn)行一次減一操作,并將剩余時(shí)間顯示出來供管理員查看。當(dāng)減到0時(shí)則倒數(shù)完畢,即考試時(shí)間到時(shí),應(yīng)結(jié)束考試。以下為部分代碼:</p><p>  Private Sub TimerLeft_Timer()</p><p>  intremainder = intremainder – 1 '總時(shí)間的秒數(shù)減一</p

101、><p>  inthour = intremainder \ 3600 '將剩余時(shí)間換算成00:00:00形式</p><p>  intminute = intremainder \ 60 Mod 60</p><p>  intsecond = intremainder Mod 60</p><p>  If Len(LTr

102、im$(Str$(intminute))) = 1 Then '顯示剩余時(shí)間</p><p>  If Len(LTrim$(Str$(intsecond))) = 1 Then</p><p>  Label1 = "0" & inthour & " : " & "0" &

103、; intminute & " : " & "0" & intsecond</p><p><b>  Else</b></p><p>  Label1 = "0" & inthour & " : " & "0" &am

104、p; intminute & " : " & intsecond</p><p><b>  End If</b></p><p><b>  Else</b></p><p>  If Len(LTrim$(Str$(intsecond))) = 1 Then</p>&

105、lt;p><b>  End If</b></p><p><b>  End If</b></p><p>  If intremainder = 0 Then</p><p>  TimerLeft.Enabled = False</p><p>  SckExamManager.Send

106、Data "@S0000030NETSHWEXMLCK" '發(fā)送鎖定考試機(jī)的指令</p><p>  Label2.Caption = "已經(jīng)鎖定考試機(jī)"</p><p><b>  End If</b></p><p><b>  End Sub</b></p&g

107、t;<p>  4.5.4抽取試題的實(shí)現(xiàn)</p><p>  抽取試題主要是按照題庫(kù)中試題編號(hào)的范圍隨機(jī)生成,同一套試題中不允許有重復(fù)的試題,共生成40套試卷(因?yàn)榭紙?chǎng)最多只有40臺(tái)機(jī)器可用),抽取后的試卷題號(hào)存儲(chǔ)到ExamClient(i, 6)中,當(dāng)相應(yīng)的考試機(jī)有考生登錄考試時(shí),在考生正確登錄后,將考試試卷題號(hào)存放到考生的信息數(shù)據(jù)庫(kù)表的字段中去。</p><p>  4.

108、5.5考場(chǎng)的清理</p><p>  考場(chǎng)清理是由管理機(jī)發(fā)出一個(gè)命令幀使考試機(jī)的考試程序恢復(fù)到起始狀</p><p>  等待考生登錄。同時(shí)管理機(jī)將ExamClient(1 To 40, 1 To 10)考試機(jī)相關(guān)信息和狀態(tài)初始化,請(qǐng)查看4.2節(jié)的相關(guān)說明。</p><p>  . 5測(cè)試與調(diào)試</p><p><b

109、>  5.1 調(diào)試</b></p><p>  系統(tǒng)調(diào)試的目的是發(fā)現(xiàn)程序和系統(tǒng)中的錯(cuò)誤并及時(shí)予以糾正。在一個(gè)系統(tǒng)中調(diào)試應(yīng)該包括程序調(diào)試、功能調(diào)試(分調(diào))、總調(diào),在庫(kù)存管理系統(tǒng)中用的調(diào)試方法也包括這些:</p><p><b>  5.1.1程序調(diào)試</b></p><p>  包括語法調(diào)試和邏輯檢查,測(cè)試數(shù)據(jù)除采用正常數(shù)據(jù)外,

110、還應(yīng)用一些異常資料,用來考驗(yàn)程序的正確性。</p><p> ?、?用正常資料調(diào)試。</p><p> ?、?用異常資料調(diào)試。</p><p>  ③ 用錯(cuò)誤資料調(diào)試。</p><p><b>  .5.2分調(diào)</b></p><p>  即將一個(gè)功能內(nèi)所有程序按次序串聯(lián)起來調(diào)試。 </p&

111、gt;<p><b>  .5.3總調(diào)</b></p><p>  將主控制調(diào)度程序和功能模塊聯(lián)結(jié)起來調(diào)試。</p><p><b>  .5.4測(cè)試</b></p><p>  測(cè)試是系統(tǒng)開發(fā)周期中一個(gè)十分重要的階段,其重要性體現(xiàn)在它是保證系統(tǒng)質(zhì)量與可靠性的最后關(guān)口,是對(duì)整個(gè)系統(tǒng)開發(fā)過程的最終審查,如果錯(cuò)誤

112、不能在測(cè)試階段被發(fā)現(xiàn)并糾正,就會(huì)造成不堪設(shè)想的后果。在上機(jī)考試系統(tǒng)中測(cè)試的對(duì)象不僅僅是源程序,而是整個(gè)軟件。系統(tǒng)測(cè)試是以找錯(cuò)誤為目的,不是要證明程序無錯(cuò),而是要精心選取那些易于發(fā)生錯(cuò)誤的測(cè)試數(shù)據(jù),以十分挑剔的態(tài)度,證明程序有錯(cuò)。</p><p>  在上機(jī)考試系統(tǒng)中,所用到的測(cè)試方法有人工測(cè)試和機(jī)器測(cè)試。在人工測(cè)試中用的是個(gè)人復(fù)查,即當(dāng)源程序編完以后,由自己進(jìn)行檢查,但這種測(cè)試方法存在不足之處:由于心理上對(duì)自己程

113、序的偏愛,因此有些習(xí)慣性的錯(cuò)誤不易發(fā)現(xiàn),如果對(duì)功能理解有誤,自己也不易糾正,所以在個(gè)人復(fù)查的基礎(chǔ)上又用了機(jī)器測(cè)試中的白盒測(cè)試和黑盒測(cè)試。</p><p>  5.4.1白盒測(cè)試:也稱結(jié)構(gòu)測(cè)試,將軟件看作一個(gè)透明的白盒子,按照程序的內(nèi)部結(jié)構(gòu)和處理邏輯來選定測(cè)試用例,對(duì)軟件的邏輯路徑及過程進(jìn)行測(cè)試,檢查它與設(shè)計(jì)是否符。在進(jìn)行白盒測(cè)試時(shí),開發(fā)者對(duì)其軟件進(jìn)行測(cè)試,在完全了解系統(tǒng)功能、內(nèi)部結(jié)構(gòu)的前提下對(duì)系統(tǒng)進(jìn)行測(cè)試,看實(shí)現(xiàn)

114、的功能與想要實(shí)現(xiàn)的設(shè)計(jì)有什么沖突不符,并及時(shí)改正。</p><p>  5.4.2黑盒測(cè)試:也稱功能測(cè)試,將軟件看作黑盒子,在完全不考慮程序的內(nèi)部結(jié)構(gòu)和特性的情況下,測(cè)試軟件的外部特性,根據(jù)軟件的需求規(guī)格說明書設(shè)計(jì)測(cè)試用例,從程序的輸入和輸出特性上測(cè)試是否滿足設(shè)定的功能。在進(jìn)行黑盒測(cè)試時(shí),開發(fā)者以使用者的身份對(duì)其軟件進(jìn)行測(cè)試,多次輸入符合條件的數(shù)據(jù),看結(jié)果是否與預(yù)期相符,如果相符則說明程序?qū)斎氲臈l件反映正確,如

115、果不符則說明程序有錯(cuò),所以這種黑盒測(cè)試只能證明程序有錯(cuò)而不能證明程序無錯(cuò)。</p><p>  典型的面向?qū)ο蟪绦蚓哂欣^承、封裝和多態(tài)的新特性,這使得傳統(tǒng)的測(cè)試策略必須有所改變。封裝是對(duì)數(shù)據(jù)的隱藏,外界只能通過被提供的操作來訪問或修改數(shù)據(jù),這樣降低了數(shù)據(jù)被任意修改和讀寫的可能性,降低了傳統(tǒng)程序中對(duì)數(shù)據(jù)非法操作的測(cè)試。繼承是面向以對(duì)程序的重要特點(diǎn),繼承使得代碼的重用率提高,同時(shí)也使錯(cuò)誤傳播的概率提高。多態(tài)性使得面向

116、對(duì)象程序?qū)ν獬尸F(xiàn)出強(qiáng)大的處理能力。但同時(shí)去使得程序內(nèi)“同一”函數(shù)的行為復(fù)雜化,測(cè)試時(shí)不得不考慮不同類型具體執(zhí)行的代碼和產(chǎn)生 的行為。</p><p>  5.4.3功能測(cè)試:測(cè)試是否滿足開發(fā)要求,是否能夠提供設(shè)計(jì)所描述的功能,是否用戶的需求都得到滿足。功能測(cè)試是系統(tǒng)測(cè)試最常用和必須的測(cè)試,通常還會(huì)以正式的軟件說明書為測(cè)試標(biāo)準(zhǔn)。</p><p>  5.4.4強(qiáng)度測(cè)試及性能測(cè)試:測(cè)試系統(tǒng)的能

117、力最高實(shí)際限度,即軟件在一些超負(fù)荷的情況,功能實(shí)現(xiàn)情況,如要求軟件某一行為的大量重復(fù)、輸入大量的數(shù)據(jù)、對(duì)數(shù)據(jù)庫(kù)大量復(fù)雜性的查詢等。測(cè)試軟件的運(yùn)行性能。這種測(cè)試常常與強(qiáng)度測(cè)試結(jié)合進(jìn)行,需要事先對(duì)被測(cè)試軟件提出性能指標(biāo),如傳輸連接的最長(zhǎng)時(shí)限、傳輸?shù)腻e(cuò)誤率、計(jì)算的精度 、記錄的精度、響應(yīng)的時(shí)限和恢復(fù)時(shí)限等</p><p><b>  6結(jié)束語</b></p><p>  經(jīng)

118、過對(duì)考試管理系統(tǒng)的開發(fā),我掌握了Visual Basic 6.0的基本編程原理和使用方法,熟悉了網(wǎng)絡(luò)編程的思想,對(duì)軟件工程理論在軟件實(shí)際開發(fā)過程中的作用有了更深的了解,對(duì)C/S體系結(jié)構(gòu)有了進(jìn)一步的了解。在本系統(tǒng)的開發(fā)過程中,某些功能還存在一些不足,同時(shí)由于時(shí)間原因某些功能還未實(shí)現(xiàn)。在我完成這篇畢業(yè)論文期間,得到了許多老師的熱情幫助和悉心指導(dǎo),從他們身上,我不僅僅學(xué)到了VB編程的理論知識(shí),更重要的是學(xué)到了嚴(yán)謹(jǐn)治學(xué)的態(tài)度和忘我的工作精神,還

119、有如何做人,如何處世,這些將令我受益終生。</p><p>  我衷心的感謝關(guān)心和指導(dǎo)我的xx老師,感謝他對(duì)我的教育、指導(dǎo);同時(shí)也衷心的感謝xx老師,感謝他給我的指導(dǎo)和幫助;還要感謝與我共同完成此次網(wǎng)絡(luò)考試系統(tǒng)開發(fā)的其他同學(xué)的協(xié)助。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]周國(guó)民、李國(guó)軍主編.Visual Bas

120、ic+Access數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)與實(shí)例[M]. 北京:人民郵電出版社,2009,9,55-70</p><p>  [2]黃明、梁旭主編.Visual Basic 6.0信息系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例[M]. 北京:機(jī)械工業(yè)出版社,2008,6,20-33</p><p>  [3]陳明主編.Visual Basic程序設(shè)計(jì)[M].北京:中央廣播電視大學(xué)出版社,2001.8,69-87<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論