

版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)課程設(shè)計(jì)
- 計(jì)算機(jī)課程設(shè)計(jì)----銷售管理系統(tǒng)
- vf計(jì)算機(jī)課程設(shè)計(jì)
- 計(jì)算機(jī)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)課程設(shè)計(jì)--人事管理系統(tǒng)
- 計(jì)算機(jī)課程設(shè)計(jì)---冒泡排序
- 微型計(jì)算機(jī)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)課程無紙化網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 微型計(jì)算機(jī)課程設(shè)計(jì)--數(shù)據(jù)采集系統(tǒng)
- 計(jì)算機(jī)課程設(shè)計(jì)——水箱水位控制系統(tǒng)設(shè)計(jì)
- 電加熱爐計(jì)算機(jī)溫度測(cè)控系統(tǒng)設(shè)計(jì)-計(jì)算機(jī)課程設(shè)計(jì)
- 計(jì)算機(jī)課程分析
- 計(jì)算機(jī)課程網(wǎng)絡(luò)教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)課程設(shè)計(jì)--交通燈模擬控制
- 上政計(jì)算機(jī)課程考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 計(jì)算機(jī)課程設(shè)計(jì)---二相步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)
- 計(jì)算機(jī)課程設(shè)計(jì)---大功率電機(jī)運(yùn)行狀態(tài)計(jì)算機(jī)監(jiān)測(cè)系統(tǒng)
- 計(jì)算機(jī)課程設(shè)計(jì)報(bào)告---網(wǎng)上書店訂單管理子系統(tǒng)
- 中學(xué)計(jì)算機(jī)課程的教學(xué)設(shè)計(jì)
- 微型計(jì)算機(jī)課程設(shè)計(jì)---數(shù)字錄音機(jī)
評(píng)論
0/150
提交評(píng)論