版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 圖片瀏覽器是日常應(yīng)用中必可少的應(yīng)用軟件之一,本次畢業(yè)設(shè)計(jì)中,運(yùn)用C#來(lái)設(shè)計(jì)圖片瀏覽器。文中詳細(xì)敘述了瀏覽器的詳細(xì)制作過(guò)程。采用C#提供的控件數(shù)組來(lái)實(shí)現(xiàn),并對(duì)可視區(qū)內(nèi)的圖形進(jìn)行局部更新方法進(jìn)行了詳述。</p><p> 系統(tǒng)功能主要有圖片的瀏覽、預(yù)覽、圖片拷貝、刪除、粘貼等功能。并增加了各種鍵盤控
2、制功能。實(shí)現(xiàn)了對(duì)多種格式圖形的瀏覽,包括gif、JPG、BMP、ICO等圖片格式。</p><p> 本圖片瀏覽程序具有實(shí)用性、穩(wěn)定性、易用性,和可維護(hù)性的特點(diǎn),系統(tǒng)留了擴(kuò)展接口,用戶可以根據(jù)實(shí)際需要對(duì)其功能進(jìn)行擴(kuò)充、完善與修改,使其符合自己的要求??傊?,本系統(tǒng)是一個(gè)逐步完善的系統(tǒng)。</p><p> 關(guān)鍵詞:圖片瀏覽器;控件數(shù)組;局部更新</p><p>&l
3、t;b> 目 錄</b></p><p> 摘 要III</p><p><b> 目 錄IV</b></p><p> 第一章 開(kāi)發(fā)環(huán)境的介紹1</p><p> 1.1 C#的由來(lái)1</p><p> 1.2 C#的特點(diǎn)1</p>
4、<p> 1.3 .NET開(kāi)發(fā)平臺(tái)3</p><p> 第二章 問(wèn)題的定義及可行性研究5</p><p> 2.1問(wèn)題的定義5</p><p> 2.2可行性研究5</p><p> 第三章 需求分析6</p><p> 3.1需求分析階段的任務(wù)6</p><p
5、> 3.2系統(tǒng)功能的詳細(xì)分析6</p><p> 第四章 總體設(shè)計(jì)7</p><p> 4.1總體設(shè)計(jì)階段的任務(wù)7</p><p> 4.2圖片瀏覽軟件功能的具體分析8</p><p> 第五章 詳細(xì)設(shè)計(jì)9</p><p> 5.1系統(tǒng)功能的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)9</p><
6、p> 5.1.1 MainForm窗體:9</p><p> 5.1.2 FrmCreateFolder窗體10</p><p> 5.1.3 FrmLoadPic窗體10</p><p> 5.1.4 PicInfo.cs窗體11</p><p> 5.1.5 Folder.cs窗體11</p>&l
7、t;p> 5.1.6 FrmCreateFolder.cs窗體12</p><p> 5.1.7 FrmLoadPic.cs窗體13</p><p> 5.1.8 MainForm.cs窗體14</p><p> 5.2關(guān)鍵技術(shù)介紹15</p><p> 第6章 測(cè) 試17</p><p>
8、 6.1軟件測(cè)試的目的和方法17</p><p> 6.2 軟件測(cè)試的步驟17</p><p> 第7章 總結(jié)與展望18</p><p><b> 致 謝19</b></p><p><b> 附錄120</b></p><p> 第一章 開(kāi)發(fā)環(huán)境
9、的介紹</p><p> 1.1 C#的由來(lái)</p><p> 在過(guò)去的一段時(shí)間中,C和C++一直是商業(yè)軟件的開(kāi)發(fā)領(lǐng)域中最具生命力的語(yǔ)言。雖然他們?yōu)槌绦騿T提供了豐富的功能。高度的靈活性和強(qiáng)大的底層控制力,但是利用C、C++語(yǔ)言開(kāi)發(fā)的Windows應(yīng)用程序顯然復(fù)雜了很多,同時(shí)也犧牲了一定的效率與VB相比,同等級(jí)的C、C++完成一個(gè)程序往往需要更多的時(shí)間來(lái)完成開(kāi)發(fā),因此各層人士都試圖尋找
10、一種新的語(yǔ)言,希望能在功能和功率之間找到一種更為理想的平衡點(diǎn)。</p><p> 針對(duì)這一問(wèn)題,微軟公司與2000年6月26日正式發(fā)布C#。C#是一種最新的、面向?qū)ο蟮木幊陶Z(yǔ)言,C#使得程序員可以在Miscrsoft開(kāi)發(fā)的最新的.NET平臺(tái)上快速的編寫應(yīng)用程序。</p><p> C#是一種簡(jiǎn)單、現(xiàn)代、面向?qū)ο笄翌愋桶踩木幊陶Z(yǔ)言,C#語(yǔ)言從C和C++語(yǔ)言演化而來(lái),同時(shí)C#具備了應(yīng)用程
11、序快速開(kāi)發(fā)(Rapid Application Development,RAD)語(yǔ)言的高效率和C++固有的強(qiáng)大能力,并吸收了Java和Delphi等語(yǔ)言的特點(diǎn)和精華,是.NET開(kāi)發(fā)的首選語(yǔ)言。</p><p> 1.2 C#的特點(diǎn)</p><p> 1 .簡(jiǎn)潔易用的語(yǔ)法</p><p> C#主要從C和C++繼承而來(lái),同時(shí)吸收J(rèn)ava和Delphi的優(yōu)點(diǎn),摒
12、棄了C和C++中一些比較復(fù)雜而且不常用的語(yǔ)法元素比如父類繼承。使用C和C++時(shí)最令程序員生畏的語(yǔ)法是什么?大多數(shù)程序員會(huì)說(shuō):指針!C和C++中的指針雖然功能強(qiáng)大,但極不安全,稍不小心就會(huì)導(dǎo)致程序出錯(cuò),甚至導(dǎo)致系統(tǒng)奔潰。C#取消了指針,不允許直接對(duì)內(nèi)存進(jìn)行操作,讓代碼運(yùn)行在安全的環(huán)境中。此外,C#語(yǔ)法的很多變化無(wú)不體現(xiàn)了C#的簡(jiǎn)潔之美。</p><p> 2 .自動(dòng)的資源回收機(jī)制</p><p
13、> C#與.NET的完美集成,使得C#完全擁有.NET的自動(dòng)回收機(jī)制。在windows中,提供給程序使用的一切軟、硬件統(tǒng)稱為資源。比如程序中需要在窗口上畫圖的筆就是一種資源,在早期的windows版本中,程序使用完資源后應(yīng)該及時(shí)解放,否則會(huì)導(dǎo)致系統(tǒng)資源不足而運(yùn)行變慢。在.NET框架中,由于資源使用完后由系統(tǒng)自動(dòng)清理,所以,編寫C#程序,不必小心翼翼地保證及時(shí)釋放資源,從而可以把更多的精力放在程序編寫的邏輯上。</p>
14、<p> 3 .與WEB的緊密結(jié)合</p><p> 網(wǎng)上辦公和電子商務(wù)在各行各業(yè)中的到越來(lái)越廣泛的的應(yīng)用,B/S模式程序的市場(chǎng)需求越來(lái)越多。在微軟的.NET開(kāi)發(fā)套件中,C#與ASP.NET是相互融合的。ASP.NET的應(yīng)用程序可以使用VB.NET語(yǔ)法,也可以使用C#語(yǔ)法。使用C#語(yǔ)法編寫的ASP.NET結(jié)構(gòu)更嚴(yán)謹(jǐn),運(yùn)行更高效。由于有了WEB服務(wù)框架的幫助,對(duì)程序員來(lái)說(shuō),網(wǎng)絡(luò)服務(wù)看起來(lái)就像是C#
15、的本地對(duì)象。程序員們能夠利用他們已有的面對(duì)對(duì)象的只是和技巧開(kāi)發(fā)WEB服務(wù)。僅需要使用簡(jiǎn)單的C#語(yǔ)言結(jié)構(gòu),C#組件就能夠方便地為WEB服務(wù),并允許它們通過(guò)Internet被運(yùn)行在任何操作系統(tǒng)上的任何語(yǔ)言所調(diào)用。</p><p> 4 .完整的安全性與錯(cuò)誤處理</p><p> 語(yǔ)言的安全性與錯(cuò)誤處理能力,是衡量一種語(yǔ)言是否優(yōu)秀的重要依據(jù)。任何人都會(huì)犯錯(cuò),即使是最熟練的程序員也不例外,如忘
16、記變量的初始化,對(duì)不屬于自己管理范圍內(nèi)存的空間進(jìn)行修改等。這些錯(cuò)誤常常產(chǎn)生難以預(yù)計(jì)的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡(jiǎn)單錯(cuò)誤的代價(jià)是讓人無(wú)法估計(jì)的。C#的先進(jìn)設(shè)計(jì)思想可以消除軟件開(kāi)發(fā)中的許多常見(jiàn)錯(cuò)誤,并提供了包括類型安全在內(nèi)的完整的安全性能。為減少開(kāi)發(fā)中的錯(cuò)誤,C#幫助開(kāi)發(fā)者通過(guò)更少的代碼完成相同的功能,這部大減輕了編程人員的工作量同時(shí)更有效的避免了從錯(cuò)誤的產(chǎn)生。</p><p><b>
17、 5 .版本處理技術(shù)</b></p><p> 升級(jí)軟件系統(tǒng)中的組件(模塊)是一件容易產(chǎn)生錯(cuò)誤的工作,在代碼的修改中可能對(duì)現(xiàn)存的軟件產(chǎn)生影響,很有可能導(dǎo)致程序的奔潰。為了幫助開(kāi)發(fā)人員處理這些問(wèn)題C#在語(yǔ)言中內(nèi)置了版本控制功能。C#提供內(nèi)置的版本支持來(lái)開(kāi)發(fā)費(fèi)用,使用C#將會(huì)使開(kāi)發(fā)人員更輕易地開(kāi)發(fā)和維護(hù)各種商業(yè)軟件。</p><p> 6 .靈活性和兼容性</p>
18、<p> 在簡(jiǎn)化語(yǔ)法的同時(shí),C#并沒(méi)有失去靈活性。盡管C#不是一種無(wú)限制語(yǔ)言,比如:他不能用來(lái)開(kāi)發(fā)硬件驅(qū)動(dòng)程序,在默認(rèn)的狀態(tài)下沒(méi)有指針等,但是學(xué)習(xí)過(guò)程中你將發(fā)現(xiàn),它仍然是那樣的靈巧。</p><p> 7. 快速應(yīng)用開(kāi)發(fā)(RAD)功能</p><p> 支持快速開(kāi)發(fā)(Rapid application development)可以說(shuō)是目前開(kāi)發(fā)語(yǔ)言最為重要的一大功能,也正
19、是C/C++的致命傷。網(wǎng)絡(luò)時(shí)代應(yīng)用系統(tǒng)的開(kāi)發(fā)必須按照網(wǎng)絡(luò)時(shí)代的速度來(lái)進(jìn)行,支持快速開(kāi)發(fā)可以使得開(kāi)發(fā)人員的開(kāi)發(fā)效率倍增,從而使得他們可以從繁重的重復(fù)性勞動(dòng)中解放出來(lái)。c#的RAD功能主要表現(xiàn)在例如垃圾收集、指代等眾多特性上。垃圾收集機(jī)制將減輕開(kāi)發(fā)人員對(duì)內(nèi)存的管理負(fù)擔(dān),而指代功能更是可以讓開(kāi)發(fā)者不經(jīng)過(guò)內(nèi)部類就調(diào)用函數(shù)。利用c#的這些功能,可以使開(kāi)發(fā)者通過(guò)較少的代碼來(lái)實(shí)現(xiàn)更強(qiáng)大的應(yīng)用程序,并且能夠更好地避免錯(cuò)誤發(fā)生,從而縮短了應(yīng)用系統(tǒng)的開(kāi)發(fā)周
20、期。</p><p><b> 8. 語(yǔ)言的自由性</b></p><p> 用C#編寫的程序能最大程度地和任何支持.NET的語(yǔ)言互相交換信息。能夠繼承和使用任何語(yǔ)言所編寫的程序可以稱得上是知識(shí)的繼承,這樣做的好處是節(jié)省了大量的工作,你不必把COBOL等語(yǔ)言強(qiáng)行改成另一種語(yǔ)言,.NET讓各種語(yǔ)言真正地互相交流了。</p><p> 9.
21、強(qiáng)大的Web服務(wù)端組件</p><p> 在c#的Web編程中,最讓人興奮的是Web服務(wù)端的組件,它們不僅包括傳統(tǒng)組件,還包括那些能夠自動(dòng)連接五花八門服務(wù)的可編程組件,你可以用c#編寫自己的服務(wù)器端組件,服務(wù)器端組件和標(biāo)準(zhǔn)的HTML提供的服務(wù)自然是不一樣的,使用它們可以更自由、更容易地進(jìn)行數(shù)據(jù)綁定。不久,那些視頻服務(wù)器組件也很快會(huì)出現(xiàn),有了這些強(qiáng)大的組件,我們可以設(shè)計(jì)出功能更加強(qiáng)勁的企業(yè)級(jí)分布式應(yīng)用系統(tǒng)。<
22、;/p><p><b> 10. 支持跨平臺(tái)</b></p><p> 隨著互聯(lián)網(wǎng)應(yīng)用程序的應(yīng)用越來(lái)越廣,人們逐漸意識(shí)到由于網(wǎng)絡(luò)系統(tǒng)錯(cuò)綜復(fù)雜,使用的硬件設(shè)備和軟件系統(tǒng)各不相同,開(kāi)發(fā)人員所設(shè)計(jì)的應(yīng)用程序必須具有強(qiáng)大的跨平臺(tái)性。C#編寫的應(yīng)用程序就具有強(qiáng)大的跨平臺(tái)性,這種跨平臺(tái)性也包括了c#程序的客戶端可以運(yùn)行在不同類型的客戶端上,比如PDA、手機(jī)等非PC裝置。</
23、p><p> 11. 與XML的融合</p><p> 由于XML技術(shù)真正融入到了.NET和c#之中,c#的編程變成了真正意義的網(wǎng)絡(luò)編程,甚至可以說(shuō).NET和c#是專為XML而設(shè)計(jì),使用C#的程序員可以輕松用c#內(nèi)含的類來(lái)使用XML技術(shù)。就這方面而言,目前c#提供給了程序員更多的自由和更好的性能來(lái)使用XML。</p><p> 12. 對(duì)C++的繼承</p&
24、gt;<p> C#繼承并保留了C++強(qiáng)大的功能,例如, c#保留了類型安全的檢測(cè)和重載功能,c#還提供了一些新功能取代了一些原來(lái)的ANSI C預(yù)處理程序的功能,提高了語(yǔ)言的類型安全等安全性</p><p> 1.3 .NET開(kāi)發(fā)平臺(tái)</p><p> .NET是一個(gè)用于建立應(yīng)用程序的平臺(tái),它在內(nèi)部封裝了大量的功能強(qiáng)大的應(yīng)用程序接口函數(shù)(API),利用這些函數(shù)可以開(kāi)發(fā)
25、各類Windows應(yīng)用軟件。.NET還是一個(gè)開(kāi)發(fā)平臺(tái),它向廣大的程序員提供了功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境(IDE)———Visual Studio .NET。在未來(lái),.NET還是一個(gè)運(yùn)行、發(fā)布應(yīng)用程序的平臺(tái),它可以將應(yīng)用程序作為一種服務(wù),通過(guò)Internet提供給分布在世界各個(gè)角落的網(wǎng)絡(luò)用戶。</p><p> .NET平臺(tái)對(duì)早期的開(kāi)發(fā)平臺(tái)作了重大改進(jìn)。.NET提供了一種新的軟件開(kāi)發(fā)模型,它允許用不同程序設(shè)計(jì)語(yǔ)言創(chuàng)建
26、的應(yīng)用程序能相互通信。這個(gè)平臺(tái)也允許開(kāi)發(fā)者創(chuàng)建基于Web的應(yīng)用程序,這些應(yīng)用程序能夠發(fā)布到多種不同的設(shè)備(甚至是無(wú)線電話)和臺(tái)式機(jī)上。</p><p> Microsoft的.NET 計(jì)劃為利用Internet和Web進(jìn)行軟件的開(kāi)發(fā)、設(shè)計(jì)和使用開(kāi)辟了廣闊的新前景。.NET策略的一個(gè)主要方面是它與具體的語(yǔ)言或平臺(tái)無(wú)關(guān)。它不需求程序員使用惟一的一種程序設(shè)計(jì)語(yǔ)言。程序員可以將多種與.NET兼容的語(yǔ)言(圖1-1)結(jié)合起
27、來(lái)開(kāi)發(fā).NET應(yīng)用程序。多個(gè)程序員可以共同參與同一個(gè)軟件項(xiàng)目,每個(gè)人可以使用自己最精通的.NET語(yǔ)言(如Visual C++ .NET、C#、Visual Basic®和其他許多語(yǔ)言)來(lái)編寫代碼。</p><p> 第二章 問(wèn)題的定義及可行性研究</p><p><b> 2.1問(wèn)題的定義</b></p><p> 開(kāi)發(fā)的圖片瀏
28、覽器要具備良好的人機(jī)交互界面、對(duì)圖片實(shí)現(xiàn)分目錄管理用戶可以自行創(chuàng)建并刪除存放圖片的目錄、對(duì)目錄下的圖片以縮略圖的方式進(jìn)行瀏覽、以實(shí)際大小或適合窗體大小瀏覽、對(duì)同目錄下的圖片以自動(dòng)播放形式進(jìn)行瀏覽并可以調(diào)整播放時(shí)間。</p><p> 圖片瀏覽器難點(diǎn)在于縮略圖的顯示,如果一個(gè)目錄中有很多圖片,而每張圖片的尺寸都比較大,把每張圖片都縮小并顯示出來(lái)需要花費(fèi)很長(zhǎng)的時(shí)間,這樣會(huì)導(dǎo)致應(yīng)用程序的假死現(xiàn)象(在沒(méi)有完成某項(xiàng)工作之
29、前,應(yīng)用程序無(wú)法進(jìn)行其他操作)。</p><p><b> 2.2可行性研究</b></p><p> 處理這個(gè)問(wèn)題可以采取多線程的方法,把顯示縮略圖的過(guò)程放在一個(gè)線程內(nèi),這樣在顯示縮略圖的過(guò)程中可以進(jìn)行其他操作。另外一種解決方法是給每張圖片生成一張縮略圖,并存放于數(shù)據(jù)庫(kù)中,在瀏覽縮略圖時(shí),直接從數(shù)據(jù)庫(kù)中讀取縮略圖并顯示。由于縮略圖非常小,并且是未經(jīng)壓縮的格式,讀
30、取速度非常快,這樣就能以很快的速度顯示完所有圖片的縮略圖。</p><p> 本次設(shè)計(jì)另辟蹊徑,以達(dá)到類似效果。在導(dǎo)入圖片的同時(shí),為圖片生成100*100像素的bmp格式的縮略圖(如果原圖的長(zhǎng)和寬都小于100像素,則按原圖尺寸生成縮略圖),把原圖和縮略圖分別存放于兩個(gè)目錄內(nèi),并一一對(duì)應(yīng)。通過(guò)原圖的文件名可以找到相對(duì)應(yīng)的縮略圖,如果縮略圖不存在,則即時(shí)生成相應(yīng)的縮略圖。實(shí)踐證明這樣做的效果令人滿意,能比較順暢的現(xiàn)
31、實(shí)多張圖片的縮略圖。</p><p><b> 第三章 需求分析</b></p><p> 3.1需求分析階段的任務(wù)</p><p> 1.分析該設(shè)計(jì)要實(shí)現(xiàn)哪些功能</p><p> ?。?)可以對(duì)目錄下的圖片以縮略的方式進(jìn)行瀏覽,并在瀏覽過(guò)程中可以刪除一張或多張圖片。</p><p>
32、(2)可以以實(shí)際大小或適合窗體尺寸的方式對(duì)單張圖片進(jìn)行瀏覽,并可以切換到同目錄下的上一張圖片或下一張圖片瀏覽。也可以對(duì)同目錄下的圖片以自動(dòng)播放的形式進(jìn)行瀏覽,并可以調(diào)整自動(dòng)播放的時(shí)間間隔。</p><p> ?。?)可以在瀏覽某張圖片時(shí)將其刪除。</p><p> ?。?)可以以全屏幕的方式瀏覽圖片。 </p><p> 2.分析該設(shè)計(jì)功能實(shí)現(xiàn)的步驟及過(guò)程<
33、;/p><p> ?。?)主窗體,可以用于瀏覽和查看圖片。</p><p> ?。?)目錄窗體,用于創(chuàng)建圖片的管理目錄。</p><p> (3)導(dǎo)入圖片窗體,用于向目錄中導(dǎo)入圖片。 </p><p> 3.2系統(tǒng)功能的詳細(xì)分析</p><p> 具有良好的人機(jī)交互界面,有一定的計(jì)算機(jī)操作經(jīng)驗(yàn)的用戶可以不經(jīng)
34、任何培訓(xùn)就可以直接使用該軟件。</p><p> 對(duì)圖片實(shí)現(xiàn)分目錄管理,用戶可以自行創(chuàng)建并刪除存放圖片的目錄,并可以方便地將各種圖片存放于相應(yīng)的目錄之中。</p><p> 可以對(duì)目錄下的圖片以縮略圖的方式進(jìn)行瀏覽,以方便用戶從眾多圖片中查找出自己想要的圖片,并在瀏覽過(guò)程中可以刪除一張或多張圖片。</p><p> 可以以實(shí)現(xiàn)大小或適合窗體尺寸的方式對(duì)單張圖片
35、進(jìn)行瀏覽,并可以切換到同目錄下的上一張圖片或下一張圖片進(jìn)行瀏覽。也可以對(duì)同目錄下的圖片以自動(dòng)播放的形式進(jìn)行瀏覽,并可以調(diào)整播放的時(shí)間間隔。</p><p> 可以為創(chuàng)建的目錄導(dǎo)入或刪除圖片。</p><p> 可以手動(dòng)的進(jìn)行圖片的瀏覽。</p><p> 該圖片瀏覽器應(yīng)該具有新增目錄,刪除目錄,導(dǎo)入圖像,刪除圖像,退出等功能,還有的功能可以在設(shè)計(jì)中不斷完善。&
36、lt;/p><p><b> 第四章 總體設(shè)計(jì)</b></p><p> 4.1總體設(shè)計(jì)階段的任務(wù)</p><p> 1. 界面設(shè)計(jì):程序包括三個(gè)窗體。</p><p> (1)MainForm窗體:程序的主窗體,可以用于瀏覽和查看圖片,并對(duì)圖片進(jìn)行管理。如圖4—1</p><p><b
37、> 圖4—1</b></p><p><b> 。</b></p><p> (2)FrmCreateFolder窗體:創(chuàng)建目錄窗體,用于創(chuàng)建圖片的管理目錄。如圖4—2</p><p><b> 圖4—2</b></p><p> (3)FrmLoadPic窗體:導(dǎo)入圖片
38、窗體,用于向目錄中導(dǎo)入圖片。如圖4—3</p><p><b> 圖4—3</b></p><p> 2. 代碼編寫:代碼包括5個(gè)文件。</p><p> (1) MainForm.cs:主窗體MainForm的代碼文件。</p><p> (2) FrmCreateFolde.cs:創(chuàng)建目錄窗體FrmCreat
39、eFolder的代碼文件。</p><p> (3) FrmLoadPic.cs:導(dǎo)入圖片窗體FrmLoadPic的代碼文件。</p><p> (4) PicInfo.cs:PicInfo類代碼文件。</p><p> (5) Folder.cs:Folder類代碼文件。</p><p> 4.2圖片瀏覽軟件功能的具體分析</
40、p><p> 1.目錄:自己手動(dòng)創(chuàng)建一個(gè)圖片存儲(chǔ)目錄。</p><p> 2.目錄:把已經(jīng)創(chuàng)建的一個(gè)圖片存儲(chǔ)目錄刪除。</p><p> 3.圖像:導(dǎo)入一張圖片到創(chuàng)建的目錄中去。</p><p> 4.圖像:刪除一張?jiān)谝呀?jīng)創(chuàng)建的目錄中的圖片。</p><p> 5.和后退按鈕:手動(dòng)控制圖片的前后瀏覽。</p
41、><p><b> 第五章 詳細(xì)設(shè)計(jì) </b></p><p> 5.1系統(tǒng)功能的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 5.1.1 MainForm窗體:</p><p> (1). 創(chuàng)建一個(gè)新項(xiàng)目“圖片管理器”。把窗體改名為MainForm,并設(shè)置它的屬性。</p><p> (2).在窗體中
42、放置一個(gè)ToolStrip控件,再添加5個(gè)工具按鈕并進(jìn)行改名和設(shè)置屬性。</p><p> (3).在工具欄中添加2個(gè)Separator。再在窗體中放2個(gè)ToolStrip控件并進(jìn)行命名和屬性的設(shè)置,再添加6個(gè)工具按鈕,1個(gè)組合框,2個(gè)分隔條,并進(jìn)行相應(yīng)的屬性改寫。</p><p> (4).在窗體上放置1個(gè)StatusStrip控件,它自動(dòng)放置在窗體的最底部,在狀態(tài)欄中添加1個(gè)Pro
43、gressBar和1個(gè)StatusLabel。</p><p> (5).在窗體上放置1個(gè)ListBox控件并進(jìn)行屬性設(shè)置。</p><p> (6).在LstFolder控件右邊放置一個(gè)Splitter控件,它會(huì)自動(dòng)貼向LstFolder的右邊界靠齊,這個(gè)控件的作用是可以再程序運(yùn)行時(shí)改變它左邊和右邊控件的寬度。</p><p> (7).在Splitter控
44、件的右側(cè)放置1個(gè)Panel控件,并設(shè)置它的屬性。</p><p> (8).在panel1上放置1個(gè)ListView控件,它用于顯示一個(gè)目錄下所有圖片的縮略圖。把它的OwnerDraw屬性設(shè)置為true,設(shè)置這個(gè)屬性后就可以手動(dòng)繪制ListView內(nèi)各個(gè)項(xiàng)的圖標(biāo)。并把View屬性設(shè)置為L(zhǎng)argeIcon,這樣ListView就會(huì)以大圖標(biāo)的方式顯示里面的每個(gè)項(xiàng)。在窗體上放置1個(gè)ImageList控件,并進(jìn)行相關(guān)屬
45、性設(shè)置。在這里,ImageSize控件的作用并不是存放圖片,而是控制ListView各個(gè)項(xiàng)的繪圖區(qū)域的大小。</p><p> (9).在panel1上放置1個(gè)PictureBox控件,命名為pbPic,用于顯示單張圖片。</p><p> (10).在窗體上放置1個(gè)OpenFileDialog控件。</p><p> (11).在窗體上放置1個(gè)Tinner控
46、件,把它的Interval書信設(shè)置為2000。至此,主窗體界面制作完畢。如圖5—1所示</p><p> 5.1.2 FrmCreateFolder窗體</p><p> (1).新建一窗體,命名為FrmCteateFolder。</p><p> (2).在窗體中放置1個(gè)TextBox控件,命名為txtFolderName。 </p><
47、p> (3).在窗體中放置2個(gè)Button控件,分別命名為btnOK和btnCancel。并把它們的Text屬性設(shè)置為“確定”和“取消”。</p><p> 5.1.3 FrmLoadPic窗體</p><p> (1).新建一窗體,命名為FrmLoadPic。</p><p> (2).在窗體上放置1個(gè)ComboBox控件,命名為cbFolder。D
48、ropDownStyle屬性設(shè)置為:DropDownList</p><p> (3).在窗體上放置1個(gè)CheckedListBox控件,命名為chklsPic。HorizontalScrollbar屬性設(shè)置為true。</p><p> (4).在窗體上放置1個(gè)TextBox控件,命名為txtPicName。</p><p> (5).在窗體上放置4個(gè)But
49、ton控件。</p><p> (6).在窗體上放置1個(gè)OpenFileDialog控件,命名為openFileDialogSelPic,并把它的Multiselect屬性設(shè)置為true。</p><p><b> 代碼編寫</b></p><p> MainForm.cs:主窗體MainForm的代碼文件。</p><
50、;p> FrmCreateFolder.cs:創(chuàng)建目錄窗體FrmCreateFolder的代碼文件。</p><p> FrmLoadPic.cs:導(dǎo)入圖片窗體FrmLoadPic的代碼文件。</p><p> PicInfo.cs:PicInfo類代碼文件。</p><p> Folder.cs:Folder類代碼文件。</p><
51、;p> 5.1.4 PicInfo.cs窗體</p><p> 在解決方案資源管理器中的圖片管理器項(xiàng)目上右擊鼠標(biāo),在彈出菜單中選擇添加新建項(xiàng)。在添加新項(xiàng)窗口中選擇類,在名稱編輯框內(nèi)輸入“PicInfo.cs”。最后單擊添加按鈕添加一個(gè)新的類。</p><p> PicInfo是一個(gè)自定義的類,什么是類?可以這樣去理解:類可以存放某些信息,并能實(shí)現(xiàn)特定功能。類里有屬性和方法,就好
52、比銀行的提款機(jī),通過(guò)使用提款機(jī),可以查詢賬戶里還有還剩多少錢,也可以通過(guò)提款機(jī)取錢。在編程中定義類是為了把一些相關(guān)的功能包裝起來(lái),放在一起,以方便在程序中使用。</p><p> Private string _fullName;</p><p> Private string _nameNoExtension;</p><p> 這兩行代碼聲明了兩個(gè)私有成員
53、變量,這兩個(gè)成員變量供類內(nèi)部使用,類的外部不可以直接訪問(wèn)它們,但可以通過(guò)屬性來(lái)訪問(wèn)和設(shè)置它們的值。</p><p> Public override string ToString ()</p><p><b> {</b></p><p> Return _fullName;</p><p><b>
54、 }</b></p><p> 這幾行代碼,重載了ToString()方法,由于PicInfo類的作用是把類實(shí)例作為項(xiàng)存放于復(fù)選列表框內(nèi)。而每個(gè)項(xiàng)顯示的文字正是通過(guò)訪問(wèn)ToString()方法而獲得,重載這個(gè)方法,正是為了在復(fù)選列表框內(nèi)顯示指定的文字。</p><p> 5.1.5 Folder.cs窗體 </p><p> 在(解決方案資源管理器
55、)中的(圖片管理器)項(xiàng)目上右擊鼠標(biāo),在彈出菜單中選擇(添加)(新建項(xiàng))。在(添加新項(xiàng))窗口中選擇(類),在(名稱)編輯框內(nèi)輸入“Folder.cs”。最后單擊(添加)按鈕添加一個(gè)新的類。</p><p> 在第一次瀏覽一個(gè)目錄時(shí),需要從硬盤讀取這個(gè)目錄下的所有縮略圖并顯示,此時(shí)所有縮略圖被載入內(nèi)存。如果切換到其他目錄時(shí)就從內(nèi)存中釋放這些數(shù)據(jù),再次瀏覽這個(gè)目錄時(shí)就導(dǎo)致程序重新從硬盤讀取數(shù)據(jù),這樣會(huì)使得縮略圖的顯示
56、速度變慢(內(nèi)存的速度遠(yuǎn)勝于硬盤)。本案例中,只要瀏覽了某個(gè)目錄,就讓這個(gè)目錄下的所有縮略圖常駐于內(nèi)存,以供下次瀏覽時(shí)調(diào)用,直到應(yīng)用程序關(guān)閉為止。這樣做可能導(dǎo)致程序的內(nèi)存使用加大,但在一定程度上彌補(bǔ)了沒(méi)有使用多線程技術(shù)的遺憾。Folder類正是用于實(shí)現(xiàn)這個(gè)功能的,它封裝了縮略圖的生成、讀取、刪除、計(jì)算邊界的功能。</p><p> Foreach (string sourceFile in Directory.G
57、etFiles(_sourcePath))</p><p> 這一行的Directory.GetFiles(_sourcePath)方法訪問(wèn)指定文件夾(_sourcePath)中的所有文件,并將它們的文件名存放于字符串?dāng)?shù)組中返回。</p><p> Public override string ToString()</p><p><b> {<
58、;/b></p><p> Return _name;</p><p><b> }</b></p><p> 這幾行代碼重載了ToString()方法,這樣做是為了在ListBox內(nèi)顯示指定的字符串,即目錄名稱。</p><p> 5.1.6 FrmCreateFolder.cs窗體</p>
59、<p> 打開(kāi)FrmCreateFolder的設(shè)計(jì)窗體,分別雙擊(確定)和(取消)按鈕,為它們生成按鈕的單機(jī)事件。 </p><p> FrmCreateFolder窗體的作用是創(chuàng)建一個(gè)新的圖片管理目錄,所有圖片都存放于可執(zhí)行文件所在目錄下的(圖片目錄)文件夾之下,新建一個(gè)管理目錄會(huì)在(圖片目錄)文件夾下創(chuàng)建一個(gè)以管理目錄命名的文件夾。由于FrmCreateFolder窗體需要操作主窗體的列表
60、框控件,這就會(huì)涉及在不同窗體間傳遞參數(shù)的問(wèn)題。在不同窗體間傳遞參數(shù)有很多種方法,本案例只使用其中的一種,就是在窗體構(gòu)造方法中傳遞參數(shù),這就需要重載窗體的構(gòu)造方法。</p><p> Public FrmCreateFolder()</p><p><b> {</b></p><p> InitializeComponent();<
61、/p><p><b> }</b></p><p> 這幾行代碼是Visual Studio 2005自動(dòng)問(wèn)窗體生成的構(gòu)造方法。</p><p> Public FrmCreateFolder(ListBox lst)</p><p><b> {</b></p><p>
62、; InitializeComponent();</p><p> lstFolder=lst; </p><p><b> }</b></p><p> 這幾行代碼則是手動(dòng)編寫的重載的構(gòu)造方法。它使用了一個(gè)ListBox類型的參數(shù),由于ListBox是一個(gè)引用的類型,這樣當(dāng)主窗體把一個(gè)ListBox類型當(dāng)做參數(shù)傳遞給FrmCreate
63、Folder窗體的構(gòu)造方法后,就可以在FrmCreateFolder窗體中控制這個(gè)ListBox。</p><p> Private ListBox lstFolder;</p><p> 這行代碼聲明了一個(gè)ListBox類型的成員變量,用于存放從構(gòu)造方法傳遞進(jìn)來(lái)的ListBox引用,以方便在整個(gè)窗體范圍內(nèi)進(jìn)行調(diào)用。</p><p> String path=
64、Application.StartupPath+\\圖片目錄\\</p><p> 這行代碼中的Application.StartupPath屬性返回當(dāng)前程序可執(zhí)行文件所在路徑。</p><p> 5.1.7 FrmLoadPic.cs窗體</p><p> 打開(kāi)FrmLoadPic窗口,雙擊窗口空白處,為窗口生成一個(gè)load事件,</p>&l
65、t;p> FrmLoadPic窗體用于將圖片導(dǎo)入程序目錄中,它需要控制主窗體中的列表框和狀態(tài)欄兩個(gè)控件,所以在這幾行代碼的重載構(gòu)造方法中使用了兩個(gè)參數(shù),以傳遞對(duì)這兩個(gè)控件的引用。 </p><p> OpenFileDialogSelPic.Filter=“圖像文件(*.BMP;*.JPG;*.GIF;“+”*.jpeg;*.ico) *.BMP;*.JPG;*.GIF;*.jpeg;*.ico”;&l
66、t;/p><p> 這行代碼設(shè)置打開(kāi)文件對(duì)話框的文件篩選器,這樣在使用打開(kāi)文件對(duì)話框時(shí),就只能選擇指定的文件類型。</p><p> 雙擊(瀏覽)按鈕,生成一個(gè)按鈕的單擊事件。為復(fù)選列表框chklsPics生成一個(gè)SelectedIndexChange事件。雙擊(修改)按鈕,生成一個(gè)按鈕的單擊事件。 </p><p> PicInfo picInfo=new Pi
67、cInfo(s);</p><p> 這行代碼使用了前面所編寫的PicInfo類,編寫它的主要原因是如果給圖像改名,需要有地方存放修改后的名字。</p><p> chklsPics.Items.Add(picInfo,true);</p><p> 這行代碼直接將上一行代碼所創(chuàng)建的PicInfo對(duì)象作為元素添加進(jìn)復(fù)選列表框內(nèi)。復(fù)選列表框的項(xiàng)所顯示的文字將是P
68、icInfo對(duì)象的ToString()方法所返回的字符串。</p><p> 分別雙擊(確定)和(取消)按鈕,為它們生成按鈕單擊事件,</p><p> 載入圖像時(shí),需要考慮一下幾個(gè)因素。</p><p> 1.由于可以從多個(gè)路徑選擇圖片,有可能出現(xiàn)圖片文件名相同但路徑不同的情況,把它復(fù)制到同一文件夾時(shí)會(huì)由于文件名相同而導(dǎo)致出錯(cuò)。</p><
69、;p> 2.在把圖片復(fù)制到某文件夾時(shí),文件夾有可能本身已有同名的文件,這樣同樣會(huì)導(dǎo)致出錯(cuò)。常見(jiàn)的解決方案如看圖軟件ACDSee,在復(fù)制過(guò)程中如出現(xiàn)同名文件,將彈出提示窗口,供用戶進(jìn)行改名或放棄復(fù)制操作。本案例使用了不同的方法,出現(xiàn)同名文件時(shí)并不提示用戶,而直接給圖片改名。</p><p> 給圖片重命名的算法如下所述:</p><p> 1.給取目的文件夾(所有圖片將被復(fù)制到這
70、個(gè)文件夾)下的所有已存在的圖片名稱,并放入Arraylist內(nèi)。</p><p> 2.將ArrayList內(nèi)的圖片名稱從小到大進(jìn)行排序。</p><p> 3.在圖片被復(fù)制到目的文件夾之前,首先跟ArrayList內(nèi)的圖片名稱一一對(duì)比,如果發(fā)現(xiàn)同名文件,則在文件名后加“-”號(hào)和數(shù)字“1”。把更改后的名稱繼續(xù)跟ArrayList內(nèi)的下一個(gè)圖片名稱進(jìn)行對(duì)比,如果重名,則把數(shù)字“1”變?yōu)椤?/p>
71、2”。直到在ArrayList內(nèi)找到比它大的名稱,則把它插入到這個(gè)位置。</p><p> 4.將圖片復(fù)制到目的文件夾,對(duì)下一張圖片重復(fù)第③步操作,直到所有圖片被復(fù)制到目的文件夾為止。</p><p> 5.1.8 MainForm.cs窗體</p><p> 雙擊(新增目錄)工具按鈕,生成按鈕的單擊事件,這里使用模式窗體的方式打開(kāi)前面所創(chuàng)建的FrmCreat
72、eFolder窗體。</p><p> 雙擊(刪除目錄)工具按鈕,生成按鈕的單擊事件</p><p> 雙擊(導(dǎo)入圖像)工具按鈕,生成按鈕的單擊事件</p><p> 選中l(wèi)vView控件,在事件窗口中雙擊DrawItem事件,生成一個(gè)繪制項(xiàng)的事件,當(dāng)ListView的OwnerDraw屬性為true時(shí),可以通過(guò)DrawItem事件手動(dòng)繪制ListView中的
73、每一個(gè)項(xiàng)。在DrawItem事件方法中,參數(shù)e的Bounds屬性返回這個(gè)項(xiàng)所占用的矩形,可以在這個(gè)矩形里繪制圖形和文字。</p><p> 選中列表框lstFolder,為它生成一個(gè)SelectedIndexChanged事件</p><p> 為(刪除圖像)和(退出)工具按鈕分別生成單擊(Click)事件 </p><p> 選中l(wèi)vView控件,在事件窗口
74、中雙擊DoubleClick事件,生成一個(gè)事件 </p><p> 分別雙擊窗體下方工具欄的(返回目錄)、(上一幅圖像)(tsbtnPeriod)、(下一幅圖像)(tsBtnNext)工具按鈕,為它們生成相應(yīng)的單擊事件</p><p> 顯示圖像有兩種模式:</p><p> 1 .按原圖尺寸顯示:當(dāng)圖像尺寸大于裝載它的容器(panell)時(shí),則顯示圖像的中間
75、部分。</p><p> 2 .顯示全圖:當(dāng)圖像尺寸大于裝載它的容器時(shí),則按比例對(duì)原圖進(jìn)行縮放,以適合容器大小。當(dāng)圖像尺寸小于裝載它的容器時(shí),則在容器中央顯示原圖。</p><p> 自定義方法MatchImage()正是用于計(jì)算圖像的顯示尺寸,以對(duì)PictureBox控件尺寸進(jìn)行調(diào)整并正確地顯示圖像。</p><p> 雙擊(自動(dòng)播放)(tsbtnAutoP
76、lay)按鈕,生成一個(gè)按鈕的單擊事件。雙擊timerl控件,生成一個(gè)定時(shí)器事件。選中工具欄上的組合框(tscbInterval)控件,并為它生成一個(gè)SelectedIndexChanged事件</p><p> 同時(shí)選中(實(shí)際大?。?tsbtnNormal)和(合適大?。?tsbtnMatch)兩個(gè)工具按鈕控件,打開(kāi)事件窗口,在Click事件內(nèi)輸入“tsbtnShowMode_Click”后按Enter鍵,為兩
77、個(gè)按鈕生成一個(gè)共同的單擊事件</p><p> 選中pbPic控件,并分別為它生成MouseDown、MouseMove、MorseUp三個(gè)事件。</p><p> 當(dāng)圖像處于實(shí)際大小狀態(tài)時(shí),如果原圖尺寸大于裝載它的容器的尺寸時(shí),圖像無(wú)法顯示完全,這時(shí)應(yīng)該允許用鼠標(biāo)拖動(dòng)圖像以瀏覽圖像的任何部分。實(shí)現(xiàn)圖像拖動(dòng)功能需要使用三個(gè)事件。</p><p> 1.按下鼠標(biāo)
78、左鍵時(shí),設(shè)置一個(gè)標(biāo)志(isDraging),表明允許圖像被拖動(dòng),并記錄但是鼠標(biāo)和PictureBox所處的位置,以方便后面拖動(dòng)圖像時(shí)計(jì)算圖像位置。</p><p> 2.松開(kāi)鼠標(biāo)左鍵時(shí),設(shè)置標(biāo)志(isDraging),表明圖像不允許被拖動(dòng)。</p><p> 3.移動(dòng)鼠標(biāo)時(shí),判斷標(biāo)志(isDraging),如果標(biāo)志的值為真,表明鼠標(biāo)左鍵還處于被按下?tīng)顟B(tài),這時(shí)可以拖動(dòng)圖像。如果標(biāo)志的值為
79、假,則表明鼠標(biāo)左鍵已經(jīng)不處于被按下?tīng)顟B(tài),這時(shí)不能拖動(dòng)圖像。</p><p> 拖動(dòng)圖像的功能通過(guò)改變PictureBox的位置來(lái)實(shí)現(xiàn),需要注意一下幾點(diǎn)問(wèn)題。</p><p> 1.如果裝載圖像的容器大于圖像尺寸,則不允許拖動(dòng)圖像;</p><p> 2.當(dāng)圖像的寬小于容器的寬,而圖像的高大于容器的高時(shí),只允許垂直拖動(dòng)圖像。</p><p&g
80、t; 3.當(dāng)圖像的高小于容器的高,而圖像的寬大于容器的寬時(shí),只允許水平拖動(dòng)圖像。</p><p> 4.當(dāng)圖像左邊界到達(dá)容器左邊界時(shí),不允許再向右拖動(dòng)圖像。 5.當(dāng)圖像右邊界到達(dá)容器右邊界時(shí),不允許再向左拖動(dòng)圖像。</p><p> 6.當(dāng)圖像上邊界到達(dá)容器上邊界時(shí),不允許再向下拖動(dòng)圖像。</p><p> 7.當(dāng)圖
81、像下邊界到達(dá)容器下邊界時(shí),不允許再向上拖動(dòng)圖像。 </p><p> 5.2關(guān)鍵技術(shù)介紹 </p><p> 圖片瀏覽器難點(diǎn)在于縮略圖的顯示,如果一個(gè)目錄中有很多圖片,而每張圖片的尺寸都比較大,把每張圖片都縮小并顯示出來(lái)需要花費(fèi)很長(zhǎng)的時(shí)間,這樣會(huì)導(dǎo)致應(yīng)用程序的假死現(xiàn)象(在沒(méi)有完成某項(xiàng)工作之前,應(yīng)用程序無(wú)法進(jìn)行其他操作)。處理這個(gè)問(wèn)題可以采取多線程的方法,把顯示縮略圖的過(guò)程放在一個(gè)線程內(nèi)
82、,這樣在顯示縮略圖的過(guò)程中可以進(jìn)行其他操作。另外一種解決方法是給每張圖片生成一張縮略圖,并存放于數(shù)據(jù)庫(kù)中,在瀏覽縮略圖時(shí),直接從數(shù)據(jù)庫(kù)中讀取縮略圖并顯示。由于縮略圖非常小,并且是未經(jīng)壓縮的格式,讀取速度非??欤@樣就能以很快的速度顯示完所有圖片的縮略圖。</p><p> 本次設(shè)計(jì)另辟蹊徑,以達(dá)到類似效果。在導(dǎo)入圖片的同時(shí),為圖片生成100*100 </p><p> 像素的bmp格式
83、的縮略圖(如果原圖的長(zhǎng)和寬都小于100像素,則按原圖尺寸生成縮略圖),把原圖和縮略圖分別存放于兩個(gè)目錄內(nèi),并一一對(duì)應(yīng)。通過(guò)原圖的文件名可以找到相對(duì)應(yīng)的縮略圖,如果縮略圖不存在,則即時(shí)生成相應(yīng)的縮略圖。實(shí)踐證明,這樣做的效果令人滿意,能比較順暢的現(xiàn)實(shí)多張圖片的縮略圖。</p><p><b> 第6章 測(cè) 試 </b></p><p> 6.1軟件測(cè)試的目的和方法&
84、lt;/p><p> 軟件測(cè)試的目的,第一是確認(rèn)軟件的質(zhì)量,其一方面是確認(rèn)軟件做了你所期望做的事情,另一方面是確認(rèn)軟件以正確的方式來(lái)做了這個(gè)事情。第二是提供信息,比如提供給開(kāi)發(fā)人員或程序經(jīng)理的回饋信息,為風(fēng)險(xiǎn)評(píng)估所準(zhǔn)備的信息。第三軟件測(cè)試不僅是在測(cè)試軟件軟件產(chǎn)品本身,而且還包括軟件開(kāi)發(fā)的過(guò)程。如果一個(gè)軟件產(chǎn)品開(kāi)發(fā)完成之后發(fā)現(xiàn)了很多問(wèn)題,這說(shuō)明此軟件開(kāi)發(fā)過(guò)程很可能是有缺陷的。因此,軟件測(cè)試的第三個(gè)目的是保證整個(gè)軟件開(kāi)
85、發(fā)過(guò)程是高質(zhì)量的。</p><p> 軟件測(cè)試的目的在于看是否本次設(shè)計(jì)是否成功,所要求的功能能否實(shí)現(xiàn)~以便于發(fā)現(xiàn)未實(shí)現(xiàn)的功能,或者是代碼編寫時(shí)的錯(cuò)誤導(dǎo)致程序無(wú)法運(yùn)行!軟件測(cè)試時(shí)每個(gè)軟件設(shè)計(jì)很重要的一部分所以不能忽視??!</p><p> 1. 功能測(cè)試:驗(yàn)證測(cè)試軟件功能能否正常按照它的設(shè)計(jì)工作??催\(yùn)行軟件時(shí)的期望行為是否符合原設(shè)計(jì)。</p><p> 2.可接
86、受性測(cè)試:是在把測(cè)試的版本交付測(cè)試部門大范圍測(cè)試以前進(jìn)行的對(duì)最基本功能的簡(jiǎn)單測(cè)試。因?yàn)樵诎褱y(cè)試的版本交付測(cè)試部門大范圍測(cè)試以前應(yīng)該先驗(yàn)證該版本對(duì)于所測(cè)試的功能基本上比較穩(wěn)定。必須滿足一些最低要求,比如不會(huì)很容易程序就掛起或崩潰。如果一個(gè)軟件沒(méi)通過(guò)可測(cè)試性的驗(yàn)證,就應(yīng)該花時(shí)間在該測(cè)試版本上測(cè)試,同時(shí)還要找到造成該版本不穩(wěn)定的主要缺陷并督促盡快加以修正。</p><p> 3. 用戶界面測(cè)試:分析軟件用戶界面的設(shè)計(jì)
87、是否合乎用戶期望或要求。它常常包括菜單,對(duì)話框及對(duì)話框上所有按鈕,文字,出錯(cuò)提示,幫助信息等方面的測(cè)試。</p><p> 6.2 軟件測(cè)試的步驟</p><p> 在進(jìn)行總體詳細(xì)設(shè)計(jì)的時(shí)候,可以每一步都運(yùn)行程序,但由于各部分代碼息息相關(guān)。在調(diào)試程序某項(xiàng)功能時(shí)有可能出錯(cuò),但應(yīng)該在做每一個(gè)步驟時(shí)盡量排除所有由于粗心所導(dǎo)致的語(yǔ)法錯(cuò)誤,這樣就不至于在完成程序后發(fā)現(xiàn)過(guò)多錯(cuò)誤而變得無(wú)所適從。&l
88、t;/p><p> 運(yùn)行程序,嘗試單擊窗體中的每一個(gè)按鈕,查看相關(guān)功能是否實(shí)現(xiàn)。并認(rèn)真觀察是哪些代碼實(shí)現(xiàn)了這些功能。</p><p> 第7章 總結(jié)與展望</p><p> 通過(guò)本次畢業(yè)設(shè)計(jì),讓我對(duì)C#這一完全面向?qū)ο蟮恼Z(yǔ)言有了更加深刻的認(rèn)識(shí)。本次設(shè)計(jì)讓我對(duì)我所學(xué)過(guò)的知識(shí)有了一個(gè)更加深刻的認(rèn)識(shí),而且更使我對(duì)學(xué)過(guò)的知識(shí)有一個(gè)更加系統(tǒng)和高度概括的認(rèn)識(shí)。并且還涉及了一
89、些沒(méi)學(xué)過(guò)的知識(shí),讓我們更加的對(duì)C#這一門語(yǔ)言有了更加深刻的求知欲!</p><p> 本次設(shè)計(jì)還有很多的功能可以研究設(shè)計(jì),比如可以在瀏覽某張圖片時(shí)可以更改其詳情,對(duì)圖片進(jìn)行順時(shí)針或逆時(shí)針旋轉(zhuǎn),可以在查看圖片縮略圖或?yàn)g覽單張圖片時(shí)將一張或多張圖片導(dǎo)出到用戶指定的位置。可以多張照片同時(shí)修改名稱。</p><p> 圖片瀏覽器還可以有很多的不足,如:修改以后就無(wú)法再次修改圖片的名稱,可以加入
90、更加簡(jiǎn)潔,更加人性化的設(shè)計(jì)!</p><p><b> 致 謝</b></p><p> 本人的畢業(yè)論文是在***導(dǎo)師的親切關(guān)懷和悉心指導(dǎo)下完成的。她嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。從課題的選擇到項(xiàng)目的最終完成,***導(dǎo)師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。在此謹(jǐn)向***導(dǎo)師致以誠(chéng)摯的謝意和崇高的敬意。</p&
91、gt;<p> 在此,我還要感謝在一起愉快的度過(guò)大學(xué)生活的每個(gè)可愛(ài)的同學(xué)們和尊敬的老師們,正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。</p><p> 在論文即將完成之際,我的心情無(wú)法平靜,從開(kāi)始進(jìn)入課題到論文的順利完成,有多少可敬的師長(zhǎng)、同學(xué)、朋友給了我無(wú)言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!謝謝你們!</p><p> 在我即將完成
92、學(xué)業(yè)之際,我深深地感謝我的家人給予我的全力支持!</p><p> 最后,衷心地感謝在百忙之中評(píng)閱論文和參加答辯的各位專家、教授!</p><p><b> 附錄1</b></p><p> 這是新增目錄時(shí)的界面,輸入要新增的目錄的名稱!如圖8—1</p><p><b> 圖8—1</b>
93、</p><p> 這是刪除目錄的界面,刪除目錄將導(dǎo)致目錄下的圖片一起被刪除!如圖8—2</p><p><b> 圖8—2</b></p><p> 單獨(dú)顯示一張圖片的界面,可以進(jìn)行返回目錄、前一張、后一張、最大化等操作。如圖8—3</p><p><b> 圖8—3</b></p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-瀏覽器開(kāi)發(fā)
- 圖片瀏覽器課程設(shè)計(jì)報(bào)告
- 多功能圖像瀏覽器制作畢業(yè)論文
- 圖片瀏覽器課程設(shè)計(jì)報(bào)告
- 基于MFC的圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 圖片瀏覽器課程設(shè)計(jì)報(bào)告.doc
- 圖片瀏覽器課程設(shè)計(jì)報(bào)告(vb)
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)報(bào)告--圖片瀏覽器
- 多平臺(tái)圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于java的瀏覽器的設(shè)計(jì)
- Android平臺(tái)圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- java瀏覽器課程設(shè)計(jì)--web瀏覽器開(kāi)發(fā)
- vb課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告---圖片瀏覽器
- 數(shù)碼相框圖片瀏覽器設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于JAVA的瀏覽器的設(shè)計(jì).doc
- vb課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告---圖片瀏覽器
- 基于c#聊天群的編程畢業(yè)論文
- 畢業(yè)論文--基于c#人事管理系統(tǒng)設(shè)計(jì)
- Android平臺(tái)下基于OpenGL ES的圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)論文-c#聊天系統(tǒng)
評(píng)論
0/150
提交評(píng)論