版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 1 緒論</b></p><p> 1.1 研究現(xiàn)狀及設(shè)計目標</p><p> 1.1.1 研究現(xiàn)狀</p><p> 即時通信(Instant Messenger,簡稱IM)軟件是一種實現(xiàn)文字、音頻和視頻等信息的即時傳送, 以及點對點的數(shù)據(jù)交換的網(wǎng)絡(luò)交流方式。自1996 年世界上第一個即時通信軟件 ICQ
2、 在四位以色列籍年輕人成立的一家名為 Mirabilis 的小公司誕生, IM便拉開了神奇的序幕。當初僅僅是為了使連接在同一個服務(wù)器上的用戶能相互交流而開發(fā)的 ICQ,在后來的日子里風光無限,各種即時通信軟件迅速席卷了全球網(wǎng)民。目前,即時通訊軟件可以說是上網(wǎng)用戶使用率最高的軟件。不論是老牌的ICQ,還是國內(nèi)用戶量第一的騰訊QQ,乃至微軟的MSN Messenger、Goole Talker、雅虎的雅虎通、新浪UC、網(wǎng)易泡泡、搜Q、了了吧
3、等都有很多的用戶。甚至有專家預(yù)測即時通信軟件即將取代電子郵件成為主流的互聯(lián)網(wǎng)通信工具。</p><p> Web IM 是網(wǎng)頁版的即時通信工具,它的作用是給那些用不了或者不方便使用soft客戶端的用戶使用,最大的價值就是提供便捷的交流渠道。另外,Web IM的應(yīng)用對于增強網(wǎng)站用戶的活躍度、網(wǎng)站的互動性有著非常重大的意義,Web IM主要應(yīng)用于社區(qū)用戶的交流,在線客服,CRM。</p><p&
4、gt; 常見的即時通信工具的Web版本,如Web qq 、Web版百度HI,這類在線IM主要的功能局限于即時的交流溝通,側(cè)重點在消息與文件傳輸?shù)壬贁?shù)功能。針對社區(qū)、論壇以及普通網(wǎng)頁開發(fā)的即時聊天插件。在這當中不得不提到Web qq,Web qq是騰訊推出的使用網(wǎng)頁方式上QQ的服務(wù),特點是無需下載和安裝QQ軟件,只要能打開web qq的網(wǎng)站就可以登錄QQ與好友保持聯(lián)系。具有Web產(chǎn)品固有的便利性,同時在Web上最大限度的保持了客戶端軟件
5、的操作習(xí)慣。更豐富的好友動態(tài)、更開闊的聊天模式、更實時的資訊查看、還有休閑音樂伴隨,web qq將為我們提供一個愉快的網(wǎng)絡(luò)起點。</p><p> 1.1.2 設(shè)計目標</p><p> 現(xiàn)在的國內(nèi)即時通信市場已經(jīng)被Webqq以及電信的Fetion牢牢占據(jù),各個網(wǎng)絡(luò)公司自己的即時通信軟件僅僅只能在局部的范圍內(nèi)起到作用,本次系統(tǒng)設(shè)計是本著學(xué)習(xí)的原則進行的,其期望達到的目標:</p&
6、gt;<p> ?。?)使用VB.NET語言進行數(shù)據(jù)交換及相關(guān)操作并且封裝成類;</p><p> ?。?)能夠進行異步數(shù)據(jù)的查詢、檢索;</p><p> ?。?)能夠?qū)崿F(xiàn)服務(wù)器端與客戶端的連接和即時通訊。</p><p> 1.2 研究目的及意義</p><p> 1.2.1 研究目的</p><p&
7、gt; ?。?)通過對具體應(yīng)用系統(tǒng)的設(shè)計,使自己對vs開發(fā)平臺以及sql數(shù)據(jù)庫能夠進一步熟悉。</p><p> (2)在開發(fā)過程中參考各個方面的文獻,了解目前通訊系統(tǒng)開發(fā)的走向及前景。</p><p> ?。?)熟悉小型系統(tǒng)開發(fā)的整體流程,為以后的學(xué)習(xí)或是工作作出鋪墊。</p><p> 1.2.2 研究意義</p><p> ?。?)
8、熟悉vs+sql開發(fā)小型系統(tǒng)的意義</p><p> 對于.Net的開發(fā),visual studio集成開發(fā)環(huán)境無疑是最好的選擇。Visual studio2008是基于。Net 3.5一起推出的新一代開發(fā)平臺,它提供了一整套的開發(fā)工具。在該開發(fā)平臺上,可以開發(fā)ASP.NET Web應(yīng)用程序、Web服務(wù)應(yīng)用程序、Windows應(yīng)用程序和移動設(shè)備應(yīng)用程序。.net支持多種開發(fā)語言,如Visual Basic.Ne
9、t、Visual C#、Visual C++等。利用此開發(fā)工具可以創(chuàng)建混合語言解決方案,同時可以簡化ASP.NET Web應(yīng)用程序的開發(fā)難度。</p><p> 在我們的學(xué)習(xí)中大多采用vs+sql的黃金組合,一個用于界面設(shè)計,一個用于組織后臺數(shù)據(jù),這也是商業(yè)開發(fā)的傳統(tǒng)模式,熟悉這樣的開發(fā)語言和數(shù)據(jù)庫對于我們以后從事軟件開發(fā)具有引導(dǎo)性的作用,為以后更好發(fā)展打下基礎(chǔ)。</p><p> ?。?/p>
10、2)熟悉小型系統(tǒng)開發(fā)的整體流程的意義</p><p> 通過每一次的具體系統(tǒng)開發(fā),我們都會發(fā)現(xiàn)可以從中收獲匪淺,無論是技術(shù)層面的,還是非技術(shù)層面的,計算機專業(yè)。就像我們在一次系統(tǒng)開發(fā)中,首先我們必須從大的方面著手,先通過與用戶的交流獲得對問題的直接定義,即解決“我們要解決什么任務(wù),完成什么任務(wù)?”的問題,如果不知道問題是什么就開始規(guī)劃模塊,顯然是盲目的,只會白白浪費金錢,最終得出的結(jié)果不可能令用戶滿意。在知道了
11、要解決什么問題后,還要對問題進行可行性的分析,即確定“用戶所提出的問題是否有一個可以解決的方案,方案行不行得通。”然后才是需求分析,這個階段仍然不是具體的解決問題,而是準確的確定“為了解決這個問題,目標系統(tǒng)必須做什么”,主要是確定系統(tǒng)必須具有哪些功能。</p><p> 在上述步驟都詳盡的完成后,我們才可以做總體設(shè)計,即“應(yīng)該怎樣實現(xiàn)目標系統(tǒng),”這時可以對整個系統(tǒng)進行一定的模塊劃分,將系統(tǒng)劃分為適當?shù)膶哟谓Y(jié)構(gòu)。
12、然后再進行詳細設(shè)計,即“怎樣具體實現(xiàn)各個模塊,”,進行模塊的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計、代碼編寫。接著就是進行單元測試和綜合測試,最后還要有對系統(tǒng)的后期維護。</p><p> 通過對小型系統(tǒng)的開發(fā),我們可以熟練的掌握系統(tǒng)開發(fā)流程,這樣在我們以后的工作中對每個階段要完成的任務(wù)才能有一個清醒的認識,對以后進行團隊合作才能有足夠的重視,才能更好的完成任務(wù)。</p><p> 2 系統(tǒng)開發(fā)工具簡介&
13、lt;/p><p> 2.1 ASP.NET AJAX開發(fā)技術(shù)介紹</p><p> ASP.NET 是一項功能強大的,非常靈活的服務(wù)器端技術(shù),用于創(chuàng)建動態(tài)Web頁面。其次,ASP.NET是構(gòu)成.NET Framework的一系列技術(shù)中的一種,在此可以把.NET Framework看成是用于創(chuàng)建所有應(yīng)用程序的巨大工具箱[1]。</p><p> AJAX的全稱是A
14、synchronous JavaScript And XML,即異步的JavaScript 和XML,確切的說,AJAX并不是一種技術(shù),它實際上是幾種技術(shù)的共同協(xié)作的結(jié)果,而其中每一種技術(shù)在AJAX提出之前都已經(jīng)被成熟應(yīng)用很多年了,它所使用的技術(shù)包括:</p><p><b> XHTML和CSS</b></p><p> 使用文檔對象模型(Document Ob
15、ject Model)作動態(tài)顯示和交互</p><p> 使用XML和XSLT做數(shù)據(jù)交互和操作</p><p> 使用XMLHttpRequest進行異步數(shù)據(jù)接收</p><p> 使用JavaScript將它們綁定在一起</p><p> ASP.NET Ajax 開發(fā)代號Atlas是一個新的Web技術(shù)開發(fā)包,它集成了一套非常大的客
16、戶端腳本庫使得與功能豐富的、基于服務(wù)器開發(fā)平臺的 ASP.NET2.0結(jié)合在一起,”Atlas”能讓你開發(fā)的Web應(yīng)用能夠通過直接調(diào)用Web服務(wù)器來更新一個Web頁面的數(shù)據(jù)――不需要在頁面往返傳送(也就是不需要多次刷新頁面)。使用”Atlas”,你能最大地利用ASP.NET和服務(wù)器端代碼在瀏覽器中來做許多工作,使得有更加豐富的用戶體驗。</p><p> ASP.NET AJAX是一個完整的開發(fā)框架,其服務(wù)器端
17、編程模型相對于客戶端編程模型較為簡單,而且容易與現(xiàn)有的ASP.NET程序相結(jié)合,通常實現(xiàn)復(fù)雜的功能只需要在頁面中拖幾個控件,而不必了解深層次的工作原理,除此之外服務(wù)器端編程的ASP.NET AJAX Control Toolkit含有大量的獨立AJAX控件和對ASP.NET原有服務(wù)器控件的AJAX功能擴展,實現(xiàn)起來也非常簡單。但是魚與熊掌不可兼得,服務(wù)器端編程相對于客戶端編程在執(zhí)行效率和可控性上有較大差距。</p><
18、;p> 在傳統(tǒng)的Web交互方式中,對于每次用戶的請求,服務(wù)器總是響應(yīng)一個新的Web頁面給瀏覽器。在這種情況下,即使頁面中只有小部分的改動,也會將整個頁面發(fā)送回來,大大影響了交互的速度,使用戶在大部分時間面對一個空白的瀏覽器,等待新頁面的到來。雖然有許多技術(shù)試圖改變這種每次請求都刷新整個頁面的狀況,比如Frame,IFrame等,但是這些技術(shù)并不能完美的解決這個問題。</p><p> 在AJAX模式下,
19、用戶第一次發(fā)送請求,服務(wù)器返回一個完整的Web頁面,如果只需要改變部分數(shù)據(jù),并不將整個頁面重新載入,而是通過AJAX技術(shù)向服務(wù)器發(fā)送請求,通過CSS和XHTML將響應(yīng)的內(nèi)容表示出來。可以看出,AJAX技術(shù)大大降低了服務(wù)器和客戶端之間的數(shù)據(jù)流量,很大程度地提高了響應(yīng)速度。同時,由于不是每次都發(fā)回整個頁面,也能大大減少出現(xiàn)瀏覽器空白界面的情況,界面友好度有很大的提高[2]。</p><p> ASP.NET AJA
20、X 主要的設(shè)計目標有兩點:</p><p> 對現(xiàn)有的ASP.NET服務(wù)器端模型進行擴展,讓其可以生成實現(xiàn)富客戶端的JavaScript代碼。</p><p> 為ASP.NET 增加客戶端編程模型,讓純粹的客戶端編程變得更加簡單。</p><p> 這樣,ASP.NET AJAX的特性就可以相應(yīng)的分為服務(wù)器端和客戶端兩個部分,前者包括ASP.NET 2.0
21、AJAX Extensions以及ASP.NET AJAX Control Toolkit,后者包括Microsoft AJAX Library。</p><p> ASP.NET AJAX框架的客戶端部分,即Microsoft AJAX Library,是一個跨瀏覽器,跨平臺的Ajax客戶端解決方案。它包括類似ASP.NET服務(wù)器端控件一樣良好封裝的,可以運用于各種主流瀏覽器之上的各種客戶端組件,例如表示簡單
22、界面元素的TextBox , 表示復(fù)雜綁定列表的ListView, 驗證用戶輸入的Validator,為HTML元素提供某些附加行為的Behavior,以及功能更加強大的用戶身份認證,用戶個性化組件等。開發(fā)者完全可以以一種面向?qū)ο蟮姆绞捷p松的用JavaScript編寫自定義的組件,然后使用JavaScript以編程方式或一種ASP.NET AJAX特定的,基于XML的聲明式腳本語言,借助于ASP.NET AJAX客戶端框架中的綁定概念將
23、這些組件方便而又高效的連接起來,以構(gòu)成功能強大的,純粹的客戶端Ajax應(yīng)用程序。</p><p> ASP.NET 2.0 AJAX Eetensions,即ASP.NET AJAX的服務(wù)器端控件,包括與開發(fā)者社區(qū)共同創(chuàng)建的ASP.NET AJAX Control Toolkit,則是上述ASP.NET AJAX 框架的客戶端部分JavaScript組件在服務(wù)器端的封裝。這些服務(wù)器端組件為基于ASP.NET的應(yīng)
24、用程序提供了另一種Ajax的實現(xiàn)方式-采用一種和ASP.NET 完全一樣的服務(wù)器端控件開發(fā)模型。作為對現(xiàn)有ASP.NET服務(wù)器端組件的擴展,ASP.NET 2.0 AJAX Extensions提供的服務(wù)器端組件可以讓開發(fā)者充分使用他們現(xiàn)有的知識,無需書寫一行JavaScript代碼,甚至不用了解Ajax的任何實現(xiàn)原理,只通過在Visual Studio中拖放控件即可開發(fā)出帶有強大Ajax功能以及豐富用戶體驗的富客戶端應(yīng)用程序。這個特性
25、也非常適合為現(xiàn)在的ASP.NET程序添加少量的Ajax功能[3]。</p><p> 2.2 VB.NET 開發(fā)語言介紹</p><p> VB. net是微軟最新平臺技術(shù),是.netframeworkSDK的一種語言。VB. net和VC#.net在功能上沒有區(qū)別。編譯以后生成的可執(zhí)行文件被稱為Assembly,即程序集。 VB. net的版本號是VisualBasic7.0,它的運
26、行是建立在CLR和MSIL虛擬器上的。其實,它的機制和Java差不多。 </p><p> vb. net是Visual Basic. net的簡稱。提到vb. net,就不能不先提一下vb(Visual Basic)。 </p><p> Visual Basic是Windows環(huán)境下的一種簡單、易學(xué)的編程語言,由于其開發(fā)程序的快速、高效,深受程序員的喜愛。嚴格地來說,Visual
27、Basic只是半面向?qū)ο蟮恼Z言,其面向?qū)ο蟮哪芰俺绦虻膱?zhí)行效率往往不能一些程序員的需要,因此,大的項目很少使用Visual Basic來開發(fā)。Visual Basic的最后一個版本是Visual Basic 6.0。 </p><p> 隨著Internet技術(shù)的成熟和廣泛應(yīng)用,Internet逐漸成為編程領(lǐng)域的中心,為適應(yīng)這種新局面的變化,2000年Microsoft公司提出“任何人從任何地方,在任何時間,
28、使用任何設(shè)備存取互聯(lián)網(wǎng)上的服務(wù)”的戰(zhàn)略,并在Visual Basic 6.0之后,推出了全新的“.NEt構(gòu)架”,在其第一個版本-Visual Studio. NET 7.0中,集成了Visual Basic 7.0、Visual C++ 7.0及C#,其中的Visual Basic 7.0(vb 7.0),即是vb. net的第一個版本。 </p><p> Visual Basic.NET是新一代的Visua
29、l Basic,在微軟公司投入很大力量開發(fā)網(wǎng)絡(luò)新領(lǐng)域.NET平臺的同時,也將VB運用到了這一平臺上,同時大幅度提高VB的功能??梢哉fVisual Basic.NET在功能上不輸給VC的升級版本語言C#,而且實現(xiàn)了真正的面向?qū)ο蠊δ埽瑫r微軟公司增強了該語言的網(wǎng)絡(luò)開發(fā)功能和可移植性,Visual Basic.NET完全有實力趕上并超過java,這可以說是VB程序員的福音[4]。</p><p> 2.3 SQL
30、Server 數(shù)據(jù)庫介紹</p><p> SQL Server 是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同開發(fā)的,于1988 年推出了第一個OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚鑣了,Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上
31、,專注于開發(fā)推廣SQL Server 的Windows NT 版本。Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。</p><p> SQL Server 采用SQL(Structured Query Language)語言,即機構(gòu)化查詢語言,SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。按照ANSI的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句可以用來執(zhí)行
32、各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)都采用了SQL語言標準。雖然很多數(shù)據(jù)庫都對SQL語句進行了再開發(fā)和擴展,但是包括Select, Insert, Update, Delete, Create,以及Drop在內(nèi)的標準的SQL命令仍然可以被用來完成幾乎所有的數(shù)據(jù)庫操作。</p><p> 本次設(shè)計使用SQL Server 2005作為后臺數(shù)據(jù)庫,在這之前
33、有SQL Server 2000版本,SQL Server2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng),該版本繼承了SQL Server 7.0 版本的優(yōu)點,同時又比它增加了許多更先進的功能。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺使用。<
34、/p><p> SQL Server 2005 是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能 (BI) 工具提供了企業(yè)級的數(shù)據(jù)管理。SQL Server 2005 數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。 </p><p> SQL Server 2005 數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外 SQL S
35、erver 2005 結(jié)合了分析、報表、集成和通知功能。這使您的企業(yè)可以構(gòu)建和部署經(jīng)濟有效的 BI 解決方案,幫助您的團隊通過記分卡、Dashboard、Web services 和移動設(shè)備將數(shù)據(jù)應(yīng)用推向業(yè)務(wù)的各個領(lǐng)域。 </p><p> 與 Microsoft Visual Studio、Microsoft Office System 以及新的開發(fā)工具包(包括 Business Intelligence D
36、evelopment Studio)的緊密集成使 SQL Server 2005 與眾不同。無論您是開發(fā)人員、數(shù)據(jù)庫管理員、信息工作者還是決策者,SQL Server 2005 都可以為您提供創(chuàng)新的解決方案,幫助您從數(shù)據(jù)中更多地獲益。</p><p> 3 系統(tǒng)功能概述及系統(tǒng)模型的建立</p><p> 3.1 系統(tǒng)功能概述</p><p> 通過對客戶需求的
37、深入理解,確定了本系統(tǒng)將采用B/S模式進行設(shè)計,即所謂瘦客戶端方式,運用瀏覽器進行客戶端的基本操作,所以其服務(wù)器端功能必須足夠強大,下面從客戶端以及服務(wù)器端給出初步的功能要求:</p><p><b> ?。?) 客戶端功能</b></p><p> * 未注冊用戶可以通過注冊成為新用戶</p><p> * 已注冊用戶可以登錄系統(tǒng)<
38、/p><p> * 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、忙碌等</p><p> * 登錄系統(tǒng)后可以查看好友在線狀態(tài)</p><p> * 登錄系統(tǒng)后可以查看好友發(fā)送的信息以及服務(wù)器信息等</p><p> * 登錄系統(tǒng)后可以給好友發(fā)送信息</p><p> * 登錄系統(tǒng)后可以對好友進行管理:添加、刪除等&l
39、t;/p><p><b> ?。?)服務(wù)器端功能</b></p><p> * 服務(wù)器端可以進行開啟、暫停、關(guān)閉服務(wù)等</p><p> * 服務(wù)器端可以接受客戶端的信息并進行處理</p><p> * 服務(wù)器端可以將處理后的信息發(fā)送給目標客戶端</p><p> 3.2 系統(tǒng)模型的建立<
40、;/p><p><b> 3.2.1 用例圖</b></p><p> (1)用戶注冊模塊用例圖</p><p> 圖3-1 用戶注冊模塊用例圖</p><p><b> 用例描述:</b></p><p> ?。?)用戶登錄模塊用例圖</p><p&
41、gt; 圖3-2 用戶登錄模塊用例圖</p><p><b> 用例描述:</b></p><p> ?。?)好友管理模塊用例圖</p><p> 圖3-3 添加好友模塊用例圖 圖3-4 刪除好友模塊用例圖</p><p><b> 用例描述</b></p><
42、;p> ?。?)發(fā)送消息模塊用例圖</p><p> 圖3-5 發(fā)送消息模塊用例圖</p><p><b> 用例描述:</b></p><p> (5)保存信息模塊用例圖</p><p> 圖3-6 保存消息模塊用例圖</p><p><b> 用例描述:</b&
43、gt;</p><p><b> 3.2.2 序列圖</b></p><p><b> 用戶注冊模塊序列圖</b></p><p> 圖3-7 用戶注冊模塊序列圖</p><p> ?。?)用戶登錄模塊序列圖</p><p> 圖3-8 用戶登錄模塊序列圖</p
44、><p><b> 添加好友模塊序列圖</b></p><p> 圖3-9 添加好友模塊序列圖</p><p> (4)發(fā)送消息模塊序列圖</p><p> 圖3-10 發(fā)送消息模塊序列圖</p><p><b> 3.2.3 類圖</b></p><
45、;p> 類圖(Class diagram)由許多(靜態(tài))說明性的模型元素(例如類、包和它們之間的關(guān)系,這些元素和它們的內(nèi)容互相連接)組成。類圖可以組織在(并且屬于)包中,僅顯示特定包中的相關(guān)內(nèi)容。類圖(Class diagram)是最常用的UML圖,顯示出類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計。類圖(Class diagram)最基本的元素是類或者接口。</p><p> 類一
46、般包含類名,屬性,方法三大部分,類名書寫規(guī)范:正體字說明類是可被實例化的,斜體字說明類為抽象類。 </p><p> 屬性和方法書寫規(guī)范:修飾符 [描述信息] 屬性、方法名稱 [參數(shù)] [:返回類型|類型] </p><p> 屬性和方法之前可附加的可見性修飾符: 加號(+)表示public;減號(-)表示private;#號表示protected;省略這些修飾符表示具有package
47、(包)級別的可見性。 </p><p> 類之間可以建立五種關(guān)系:關(guān)聯(lián)、依賴性、累積、實現(xiàn)關(guān)系和泛化。</p><p> 關(guān)聯(lián)是類之間的詞法連接,在類圖中用單線表示。</p><p> 依賴性關(guān)系在類的操作中需要參數(shù)或返回值的類中也需要。依賴性用虛線箭頭表示。</p><p> 累積關(guān)系是強關(guān)聯(lián)。累積關(guān)系是整體與個體間的關(guān)系。累積關(guān)系
48、在總體類旁邊畫一個菱形。</p><p> 實現(xiàn)關(guān)系顯示類與接口、包與接口、組件與接口和用例與用例實現(xiàn)之間的關(guān)系。實現(xiàn)關(guān)系將公共接口(接口類或用例)與接口的詳細實現(xiàn)(類、包或用例實現(xiàn))相連接。換句話說,實現(xiàn)關(guān)系把接口與實現(xiàn)分開。圖3-28展示了實現(xiàn)關(guān)系的表示方法。</p><p> 泛化關(guān)系顯示兩個模型元素(如角色、用例、類或包)之間的繼承關(guān)系。大多數(shù)面向?qū)ο笳Z言直接支持繼承的概念。繼
49、承就是讓一個類繼承另一個模型元素的所有屬性、操作、關(guān)系和詞法。在UML中,繼承關(guān)系稱為泛化,顯示為子類指向父類的箭頭, </p><p> 由于本系統(tǒng)是一個即時通訊系統(tǒng),其中系統(tǒng)中的類比較少,各個類之間的關(guān)系也比較簡單,主要有這么幾個類,具體布局如下圖所示:</p><p> 圖3-11 整個系統(tǒng)類圖</p><p><b> 4 數(shù)據(jù)庫設(shè)計<
50、/b></p><p> 數(shù)據(jù)庫技術(shù)是現(xiàn)代系統(tǒng)設(shè)計中最有效的數(shù)據(jù)管理手段。數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),有效存儲數(shù)據(jù),滿足用戶信息要求和處理要求。數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞直接對應(yīng)用系統(tǒng)的效率及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致性。</p><p> 數(shù)據(jù)庫設(shè)計是指針對一個給定的應(yīng)用
51、環(huán)境,構(gòu)造(設(shè)計)優(yōu)化的數(shù)據(jù)庫邏輯模型和物理模型結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效的存儲和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求[5]。</p><p> 設(shè)計數(shù)據(jù)庫系統(tǒng)時應(yīng)該充分了解用戶各個方面的需求,包括現(xiàn)有的及將來可能增加的需求。數(shù)據(jù)庫設(shè)計一般包括如下幾個步驟。</p><p><b> 數(shù)據(jù)庫需求分析。</b><
52、;/p><p> 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。</p><p> 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計。</p><p> 4.1數(shù)據(jù)庫需求分析</p><p> 本系統(tǒng)主要設(shè)計兩個方面,客戶端和服務(wù)器端,所以數(shù)據(jù)庫中要充分考慮這兩個方面的因素。</p><p> 對客戶端來說,他們所關(guān)心的就是如何可以利用該系統(tǒng)和自己的好友進行交流,同時
53、要能夠?qū)糜堰M行管理,通過總結(jié)可以得出如下的需求信息:</p><p> * 未注冊用戶可以通過注冊成為新用戶</p><p> * 已注冊用戶可以登錄系統(tǒng)</p><p> * 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、離線等</p><p> * 登錄系統(tǒng)后可以查看好友在線狀態(tài)</p><p> * 登錄系
54、統(tǒng)后可以查看好友發(fā)送的信息等</p><p> * 登錄系統(tǒng)后可以給好友發(fā)送信息</p><p> * 登錄系統(tǒng)后可以對好友進行管理:添加、刪除等</p><p> * 登錄系統(tǒng)后可以給好友發(fā)送文件以及接收文件等(未實現(xiàn))</p><p> 對于服務(wù)器端來說,他們關(guān)心的就是如何更好的為客戶提供服務(wù),使他們能夠更好的和自己的好友進行交流
55、,他們主要完成后臺的工作,通過分析可以得出,服務(wù)器端的需求信息如下:</p><p> * 服務(wù)器端可以進行開啟、暫停、關(guān)閉服務(wù)等</p><p> * 服務(wù)器端可以接受客戶端的信息并進行處理</p><p> * 服務(wù)器端可以將處理后的信息發(fā)送給目標客戶端</p><p> 經(jīng)過上述系統(tǒng)功能的分析和需求總結(jié),考慮到之后功能的擴展,設(shè)
56、計如下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)。其中uid為自動編號的標識。</p><p> 會員基本信息,包括數(shù)據(jù)項:uid,,昵稱,帳號,密碼,目前狀態(tài),最后登錄時間。</p><p> 好友列表,包括數(shù)據(jù)項:uid,本人帳號,好友帳號。</p><p> 對話信息,包括數(shù)據(jù)項:uid,發(fā)送者帳號,接受者帳號,內(nèi)容等。</p><p> 對話邀請,包
57、括數(shù)據(jù)項:uid,邀請者帳號,接受邀請者帳號等。</p><p> 聊天室,包括數(shù)據(jù)項:編號,名稱,密碼,創(chuàng)建者等。</p><p> 聊天室用戶,包括數(shù)據(jù)項:編號,用戶帳號,聊天室簡介等。</p><p> 聊天室聊天記錄,包括數(shù)據(jù)項:編號,聊天室名稱,用戶帳號,聊天內(nèi)容,記錄該聊天內(nèi)容的時間等。</p><p> 4.2數(shù)據(jù)庫概念
58、結(jié)構(gòu)設(shè)計</p><p> 得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及他們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。這些實體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動。</p><p> 本實例根據(jù)上面的設(shè)計規(guī)劃出的實體有:會員基本信息實體、好友列表實體、對話信息實體、對話邀請實體。</p><p> 實體之間關(guān)系的E
59、-R圖如下圖所示:</p><p> 圖4-1 實體之間的E-R圖</p><p> ?。?)用戶信息表(userinfo)的E-R圖如下:</p><p> 圖4-2 用戶信息表E-R圖</p><p> (2)好友信息列表(friendinfo)的E-R圖如下:</p><p> 圖4-3 好友信息列表E-
60、R圖</p><p> ?。?)對話信息(message)的E-R圖如下:</p><p> 圖4-4 對話信息E-R圖</p><p> ?。?)對話邀請(calling)的E-R圖:</p><p> 圖4-5 對話邀請E-R圖</p><p> (5)聊天室(chatroom)的E-R圖</p>
61、<p> 圖4-6 聊天室E-R圖</p><p> 聊天室用戶(chatroomuser)的E-R圖</p><p> 圖4-7 聊天室用戶E-R圖</p><p> 聊天室聊天記錄(userchatrecord)的E-R圖</p><p> 圖4-8 聊天室聊天記錄E-R圖</p><p>
62、 4.3數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計</p><p> 數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計完成后,現(xiàn)在可以將上面的數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計轉(zhuǎn)換為某種數(shù)據(jù)庫系統(tǒng)支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。根據(jù)數(shù)據(jù)量的大小,系統(tǒng)可以使用不同的數(shù)據(jù)庫,本次系統(tǒng)設(shè)計主要使用SQL Server數(shù)據(jù)庫。</p><p> 本次系統(tǒng)設(shè)計主要使用SQL Server數(shù)據(jù)庫。</p><p> 表4-
63、1 UserInfo(會員信息數(shù)據(jù))</p><p> 表4-2 FriendInfo(好友列表)</p><p> 表4-3 Message(對話信息表)</p><p> 表4-4 Calling(對話邀請表)</p><p> 表4-5 Chatroom(聊天室信息表)</p><p> 表4-6 Ch
64、atroomuser(聊天室用戶表)</p><p> 表4-7 Userchatrecord(聊天室聊天記錄表)</p><p><b> 5 功能設(shè)計</b></p><p> 5.1 共用模塊的設(shè)計</p><p> 5.1.1 母版頁的設(shè)計與引用</p><p> 整體系統(tǒng)的每一
65、個界面都無一例外的用到了母版頁,母板頁的引用能很好的解決各個界面之間的布局一致性問題,使得界面設(shè)計簡潔,優(yōu)美,母版頁的擴展名是.master??梢园涯赴骓摾斫鉃槎鄠€內(nèi)容頁共同的部分。所以可以先建一個母版頁,把共同的東西都建好,通過添加ContentPlaceHolder控件預(yù)留可變化的區(qū)域。然后在各個內(nèi)容頁里使用母版頁(通過在聲明里引用母版頁),原來的ContentPlaceHolder控件會被Content控件替換,然后你可以在Con
66、tent控件里添加每個內(nèi)容頁個性化的東西。這樣可以減少很多重復(fù)代碼的勞動,快速的開發(fā),也便于以后的維護。</p><p> 本次系統(tǒng)開發(fā)就用到了母板頁設(shè)置了頁面頭部和尾部,這樣在其他的內(nèi)容頁中便可以直接引用了,其頁面效果如下:</p><p> 在其他內(nèi)容頁中引用時只要給出MasterPageFile就可以了。</p><p> <%@ Page Tit
67、le="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %></p
68、><p> 5.1.2 公共類的設(shè)計與引用</p><p> Visual Basic。NET不像其以前的版本,在創(chuàng)建類時,每個類都有自己的文件,從而產(chǎn)生一個非常龐大的面向?qū)ο蠊こ?,Visual Basic.NET 允許把多個類放在一個源文件里。這樣可以減少工程文件數(shù)量,使工程更易于維護和管理[6]。</p><p> 本次系統(tǒng)設(shè)計中對許多公共部分進行了集成,將數(shù)
69、據(jù)庫連接與操作語句都放在了類dataBaseClass中;將與本系統(tǒng)有關(guān)的數(shù)據(jù)庫操作語句放在了IMClass(一對一聊天功能)和ChatRoom1(群聊功能)兩個類中,這樣的話在設(shè)計前臺時可以直接調(diào)用位于這些類中的方法,很大程度上避免了程序的冗余,簡化了設(shè)計流程,當然以后如果做系統(tǒng)移植,這些類可以直接拷貝過去,不用修改或經(jīng)過稍許修改就能使用。</p><p> DataBaseClass類</p>
70、<p> 該類中包含了數(shù)據(jù)庫訪問的幾個重要方法,這些方法都是以過程的方式實現(xiàn)的,自定義過程主要有兩種:一種是以“Sub”保留字開始的為子過程,完成一定的操作功能,子過程名無返回值;另一種以“Function”保留字開始的為函數(shù)過程,用戶自定義的函數(shù),函數(shù)名有返回值[7]?,F(xiàn)在列舉如下:</p><p><b> MClass類</b></p><p>
71、 IMClass類中包含了一對一聊天各個模塊所涉及的訪問以及修改數(shù)據(jù)庫的各種方法,包括添加,修改,刪除好友信息,獲取好友列表,獲取聊天內(nèi)容,獲取聊天記錄等,其中的幾個重要的方法列舉如下:</p><p> ChatRoom1類</p><p> ChatRoom1類中主要包含了群聊功能中用到的各個方法,現(xiàn)在列舉如下:</p><p> 5.2 一對一聊天設(shè)計
72、</p><p> 5.2.1 界面規(guī)劃</p><p> 一對一聊天在開發(fā)階段的界面主要包括四個大的部分:用戶狀態(tài)及好友列表模塊、對話框模塊、支持拖動的HiddenField模塊、保證刷新的各個updatepanel和timer模塊。</p><p> 現(xiàn)在給出整體界面布置,如下圖所示:</p><p> 在界面的最右邊是用戶狀態(tài)及
73、好友列表模塊,中間是對話框模塊,左邊是用于控制拖動的HiddenField模塊,左上角上是timer控件,用于控制整個界面的刷新。使用一個Timer控件對多個UpdatePanel進行定時刷新,需要將timer控件設(shè)置為相應(yīng)的updatepanel控件的觸發(fā)器。這樣,處于外部的timer控件,就可以同時對幾個updatepanel進行異步刷新了[8]。</p><p> 在整個界面中共用到了四個updatepa
74、nel控件,其功能分別如下:</p><p> ?。?)Up_timer:位于界面的左上角,內(nèi)含一個timer控件。</p><p> ?。?)Updatepanel1:內(nèi)含了用戶狀態(tài)及好友列表模塊,用以呈現(xiàn)出好友列表及當前用戶狀態(tài),最上面的部分支持拖拽。</p><p> ?。?)Up_talking:內(nèi)含對話框,默認的狀態(tài)是隱藏,在兩種狀況下會顯示:用戶單擊了好
75、友名、好友有信息發(fā)送給自己。</p><p> (4)up_talking_message:主要是為了刷新聊天信息,其中放置了一個timer控件。</p><p> 5.2.2 用戶狀態(tài)及好友列表模塊設(shè)計</p><p> 這一模塊的設(shè)計主要包括四個方面:首先是用戶狀態(tài)的顯示以及選擇,其次是好友列表中好友的顯示,再次是界面的關(guān)閉與打開,最后是整個界面的拖拽。下
76、面分別對這四個方面的設(shè)計進行概述</p><p> 用戶狀態(tài)的顯示以及選擇</p><p> 在系統(tǒng)運行后,用戶登錄后,在狀態(tài)欄中用戶可以自由設(shè)置自己的狀態(tài),這當中主要用到了IMClass中的updatestatus函數(shù):IMClass.updatestatus(session(“username”),status),其中的session(”username”)是用戶登錄后記錄下的用戶
77、帳號。</p><p><b> 好友列表的顯示</b></p><p> 好友列表的顯示,首先是在整個界面第一次加載時確定界面位置,然后調(diào)用showfriends()函數(shù)來顯示好友。該函數(shù)首先是清空列表,然后通過調(diào)用IMClass類中的getfriendslist方法來獲取自己的好友,然后將獲取的好友數(shù)組以linkbutton的方式呈現(xiàn),LinkButton控件
78、類似超鏈接的文字借口,在功能上與Button控件類似,但在呈現(xiàn)樣式上不同,LinkButton控件以超級鏈接的形式顯示,此控件屬于服務(wù)器端標準控件[9]。呈現(xiàn)時再通過調(diào)用getusernickname來顯示好友的昵稱(并不顯示好友的帳號)。</p><p> 由于好友列表以linkbutton呈現(xiàn),在單擊好友名稱時,會打開聊天對話框:showchatwindows(linkbutton.tooltip)函數(shù)調(diào)用
79、,該函數(shù)調(diào)用中首先是將對話框呈現(xiàn)出來,然后刷新其中的聊天信息:up_talking.update()函數(shù)調(diào)用。</p><p><b> 界面的關(guān)閉與打開</b></p><p> 界面的打開與關(guān)閉比較簡單,通過設(shè)置pnl_msnform(主面板)的visible屬性為true或false便可以了,當然這些設(shè)置要放入關(guān)閉按鈕和顯示按鈕的click方法中。</
80、p><p> 整個界面的拖拽[10]</p><p> 界面的拖拽是本次設(shè)計中遇到的一個很棘手的問題,在以前的windows窗體管理系統(tǒng)中不涉及前臺與后臺關(guān)于控件位置的變更問題,然而在有刷新的交互中,雖然我們可以用dragpanelextender來設(shè)計面板的拖拽功能,而且用戶也可以自由的拖拽到任意位置,然而,這些位置的變更只是通過前端javascript來改變的,而這個改變,本質(zhì)上后端A
81、SP.NET代碼并不知道。</p><p> 這樣的話,在updatepanel每次刷新后,面板又會回到原來的位置,所以要想保持拖動位置不變,就必須在postback過程當中,記錄用戶究竟把面板拖動到了什么位置,在這里HiddenField就起到了作用,在每次拖動中給鼠標的mouseleave事件觸發(fā)一個函數(shù),這段函數(shù)用javascript代碼實現(xiàn): </p><p> funct
82、ion register() {</p><p> document.getElementById('<%=HF_MsnForm_x.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.left;</p><p> docu
83、ment.getElementById('<%=HF_MsnForm_y.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.top;</p><p><b> }</b></p><p> 這樣每次當
84、拖動面板鼠標離開后,都會記錄下面板所在的位置,下次加載時自動更新位置。</p><p> 5.2.3 對話框模塊設(shè)計</p><p> 前面已經(jīng)提到,當單擊好友名稱后,會通過showchatingwindows調(diào)出對話框,將其放到指定的位置,并通過up_talking.update()來強制刷新聊天信息顯示框,顯示聊天信息,如下圖所示:</p><p> 可以
85、在下面輸入要發(fā)送的內(nèi)容,完成之后點擊發(fā)送即可,單擊聊天記錄會給出你和聊天者最近的聊天信息。看似簡單,其實這里設(shè)計了幾個該系統(tǒng)的關(guān)鍵問題,當?shù)谝淮吸c擊發(fā)送按鈕后,會執(zhí)行以下幾個方法,首先直接獲取聊天對象的帳號,這個比較簡單,然后判斷是否是第一次發(fā)送信息,如果是則調(diào)用IMClass.Sendchatingcalling(session(“username”),talkingto),如果不是第一次發(fā)送信息則調(diào)用IMClass.SendTalk
86、ingmsg(session(“username”),talkingto,txb_talking_sendmsg.text),然后調(diào)用showtalkingmsg(session(“username”),talkingto)在自己的對話框上顯示聊天信息。這里區(qū)分是否是第一次發(fā)送信息的目的是為了提醒好友接受信息,如果是第一次發(fā)送信息的話,則首先給出的是一個對話邀請,而自己的好友則可以通過IMClass.checkchatingcallin
87、g()來檢查是否有發(fā)送給自己的聊天信息,如果有的話則調(diào)用showchatingwindows()顯示出來。</p><p> 5.2.4 支持拖動的HiddenField模塊設(shè)計</p><p> 對話框以及用戶好友列表框的拖動主要是靠hiddenfield隱藏字段來實現(xiàn)的,在界面設(shè)計階段我們可以設(shè)置如下圖所示的該類控件:</p><p> 對話框以及好友列表
88、框都是放在updatepanel1中的,updatepanel1的load事件中有如上圖的記錄:</p><p> 這樣每次updatepanel1刷新時,都會根據(jù)hiddenfield的值來確定對話框和好友列表框的位置,而在每個框體上設(shè)置有支持拖拽的label控件,將panel的dragpanelextender的draghandle設(shè)置為這些label,并且為label添加onmouseleave=”reg
89、ister()”或”registerposition()”事件,這樣的話每次鼠標拖動對話框或好友列表框時便可以自動記錄框體位置了,我們也就不需要擔心前端拖動后的位置后臺ASP.NET代碼不知道的問題了。相應(yīng)的事件如下:</p><p> <script language ="javascript" type ="text/javascript" ></p
90、><p> function register() {</p><p> document.getElementById('<%=HF_MsnForm_x.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.left;</
91、p><p> document.getElementById('<%=HF_MsnForm_y.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.top;</p><p><b> }</b></p
92、><p> function registerPanelTalking() {</p><p> document.getElementById('<%=HF_Panel_Talking_x.ClientID%>').value = document.getElementById('<%=Panel_Talking.ClientID%>
93、9;).style.left;</p><p> document.getElementById('<%=HF_Panel_Talking_y.ClientID%>').value = document.getElementById('<%=Panel_Talking.ClientID%>').style.top;</p><p>
94、<b> }</b></p><p><b> </script></b></p><p> 注意把該段代碼放ContentPlaceHolderID="HeadContent"段中即可。</p><p> 5.2.5 保證刷新的各個updatepanel和timer模塊設(shè)計<
95、/p><p> 在整個界面中共用到了四個updatepanel控件,其功能分別如下:</p><p> ?。?)Up_timer:位于界面的左上角,內(nèi)含一個timer控件。</p><p> ?。?)Updatepanel1:內(nèi)含了用戶狀態(tài)及好友列表模塊,用以呈現(xiàn)出好友列表及當前用戶狀態(tài),最上面的部分支持拖拽。</p><p> ?。?)Up_
96、talking:內(nèi)含對話框,默認的狀態(tài)是隱藏,在兩種狀況下會顯示:用戶單擊了好友名、好友有信息發(fā)送給自己。</p><p> (4)up_talking_message:主要是為了刷新聊天信息,其中放置了一個timer控件。</p><p> 其中第一個up_timer中放置了一個timer控件,設(shè)置其interval為3000,然后編寫其tick事件:一方面每隔30定時刷新updat
97、epanel1,另一方面通過IMClass.checkchatingcalling(session(”username”))來檢查是否有對話邀請,如果有則強制刷新對話框。</p><p> Updatepanel1主要由up_timer觸發(fā)。</p><p> Up_talking中又放置了了一個updatepanel(up_talking_message),其中放置了timer2,這
98、樣當對方窗口中的信息更新時,不會影響到下面的信息輸入窗口。</p><p> 5.3 聊天室(群聊)設(shè)計</p><p><b> 5.3.1界面規(guī)劃</b></p><p> 聊天室功能借鑒了一對一聊天,一對一聊天的許多函數(shù)和方法稍加修改便可以用在聊天室中,聊天室的主要設(shè)計界面如下:</p><p> 聊天室主
99、要分成三個大的模塊:最左邊的用戶已經(jīng)加入的聊天室模塊,中間是聊天室的聊天模塊,最右邊是相應(yīng)聊天室的聊天用戶列表,下面將從這幾個模塊給出具體設(shè)計過程。</p><p> 5.3.2 加入的聊天室模塊設(shè)計</p><p> 和一對一聊天中的好友列表加載類似,這個模塊中主要是在頁面刷新時自動加載用戶已經(jīng)加入的聊天室列表,調(diào)用函數(shù):chatroom1.getchatroomlist(……),p
100、anel是放在一個updatepanel(up_chatroomlist)中的,up_chatroomlist的updatemodel屬性設(shè)置為conditional,這樣可以通過左上角的timer1控件定時刷新聊天室列表。</p><p> 下面的創(chuàng)建按鈕與查看按鈕可以幫助用戶創(chuàng)建新的聊天室并加入新的聊天室,這兩部分分別在chatroomcreat.aspx和chatroomcheck.aspx界面中實現(xiàn)。&
101、lt;/p><p> 5.3.3 聊天室聊天模塊設(shè)計</p><p> 這一部分和一對一聊天的對話框模塊比較類似,也是通過將panel控件放置在updatepanel(up_chatmessage)中的,其中放置了一個timer控件,這樣每隔一段時間便可以自動刷新聊天信息。在下面的textbox框中用戶可以輸入信息,點擊發(fā)送按鈕便可以發(fā)送信息。</p><p>
102、5.3.4 聊天室用戶列表模塊設(shè)計</p><p> 這一部分也用到了updatepanel(up_userlist),并且updatemodel屬性為conditional,同時在聊天室更新時自動觸發(fā)up_userlist的load事件,這樣可以保證信息的實時性。</p><p><b> 6 運行與測試</b></p><p> 軟件
103、測試就是利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,甚至根據(jù)需要編寫不同的測試工具,設(shè)計和維護測試系統(tǒng),對測試方案可能出現(xiàn)的問題進行分析和評估。軟件測試的目的是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程,好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案,成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試[11]。所以要本著以下原則</p><p> (1)軟件開發(fā)人員即程序員應(yīng)當避免測試自己的程序 不
104、管是程序員還是開發(fā)小組都應(yīng)當避免測試自己的程序或者本組開發(fā)的功能模塊。</p><p> ?。?)應(yīng)盡早地和不斷地進行軟件測試。</p><p> ?。?)對測試用例要有正確的態(tài)度:第一,測試用例應(yīng)當由測試輸入數(shù)據(jù)和預(yù)期輸出結(jié)果這兩部分組成;第二,在設(shè)計測試用例時,不僅要考慮合理的輸入條件,更要注意不合理的輸入條件。</p><p> ?。?)妥善保存測試用例、測試
105、計劃、測試報告和最終分析報告,以備回歸測試及維護之用。</p><p> 一般的軟件測試包括單元測試、集成測試、確認測試和系統(tǒng)測試幾個階段,</p><p> 開始是單元測試,集中對用源代碼實現(xiàn)的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。 接著是集成測試,集成測試把已測試過的模塊組裝起來,主要對與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進行測試。 在接著是確認測試,確認測
106、試則是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。 最后是系統(tǒng)測試,系統(tǒng)測試把已經(jīng)經(jīng)過確認的軟件納入實際運行環(huán)境中,與其它系統(tǒng)成份組合在一起進行測試。由于條件限制及自身水平的不足,現(xiàn)在僅進行單元測試,集成測試和確認測試,系統(tǒng)測試則沒有進行。具體測試如下:</p><p> 6.1 建立新帳號測試</p><p> 6.2 用戶登錄測試
107、 </p><p><b> 登錄 </b></p><p> (2)登錄成功,轉(zhuǎn)到主界面</p><p> 6.3 一對一聊天測試</p><p> 用戶登錄成功后,進入一對一聊天主界面,接著測試一對一聊天,現(xiàn)在帳號為A:“劉鵬”和帳號為B:“嚴利鑫”的兩個用戶登錄成功,注意以左上角的當前用戶來
108、區(qū)分用戶,測試步驟如下:</p><p><b> A向B發(fā)送聊天信息</b></p><p><b> B接收到聊天信息</b></p><p> B接著向A發(fā)送聊天信息</p><p><b> A接收到聊天信息</b></p><p>&l
109、t;b> 6.4 聊天室測試</b></p><p><b> ?。?)創(chuàng)建聊天室</b></p><p> ?。?)搜索并加入聊天</p><p> ?。?)用戶A在聊天室中聊天測試</p><p> (4)用戶B在聊天室中聊天測試</p><p><b> 6
110、.5 測試小結(jié)</b></p><p> 在本次設(shè)計中許多單元測試都在具體的模塊設(shè)計中進行了,其中發(fā)現(xiàn)了不少錯誤,通過不斷更正,最終將各個模塊集成到一起,很粗糙的完成了系統(tǒng),然后進行集成測試,發(fā)現(xiàn)了許多連接上的錯誤,也一一更正了,這里的測試只是一個很簡單的程序運行過程,算不上嚴格意義上的測試,不過作為學(xué)生,許多錯誤就是在一遍又一遍的運行中不斷發(fā)現(xiàn)與更正的。</p><p>&
111、lt;b> 7 總結(jié)</b></p><p> 7.1 典型問題歸納</p><p> 在本次設(shè)計中,確實遇到了許多問題,許多問題是由于自己的粗心大意造成的,這種問題很容易發(fā)現(xiàn)和改正,但是有幾個問題,由于之前自己沒有遇到過,所以著實困擾了我很久,歸納起來主要有:關(guān)于保持panel面板拖拽后位置在刷新后不變的問題;關(guān)于js文件調(diào)用的問題;關(guān)于iis服務(wù)器配置的問題。這
112、幾個問題中的前兩個自己已經(jīng)很好的找到解決或者替代方法了,但是第三個雖然解決了部分,但是還沒有完全解決。</p><p> 關(guān)于iis服務(wù)器配置問題,剛開始的時候是提醒說數(shù)據(jù)庫連接不上,后來添加了提示沒有的用戶,問題得到解決,但是登錄到一對一聊天界面后會發(fā)現(xiàn)許多界面控件無法使用,還提醒:網(wǎng)頁上有錯誤,在網(wǎng)上查了很久,有些人說是iis服務(wù)的連接數(shù)限制引起的,暫時還正在搜尋答案,希望能夠解決。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 局域網(wǎng)即時通信軟件畢業(yè)論文
- 即時通訊系統(tǒng)---畢業(yè)論文
- 畢業(yè)論文---基于j2se的即時通信軟件
- 畢業(yè)論文--基于java的即時通信軟件設(shè)計與實現(xiàn)
- 畢業(yè)論文--基于java的即時通信軟件設(shè)計與實現(xiàn)
- 即時通訊工具畢業(yè)設(shè)計
- 基于qt的局域網(wǎng)跨平臺即時通信軟件 畢業(yè)論文
- 畢業(yè)論文即時通訊系統(tǒng)的設(shè)計與實現(xiàn)
- im即時通信教程
- 即時通訊系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于java的android即時通訊軟件畢業(yè)論文
- 基于vb的即時通信系統(tǒng)畢業(yè)設(shè)計
- 網(wǎng)絡(luò)課程設(shè)計報告----基于tcp的點對點即時通信工具
- 即時通信工具安全性的設(shè)計與實現(xiàn)【文獻綜述】
- 局域網(wǎng)即時通訊系統(tǒng)的實現(xiàn)畢業(yè)論文
- 即時通信安全機制研究.pdf
- im即時通信項目技術(shù)方案
- 畢業(yè)論文范文—— 一個簡單的即時通訊工具的設(shè)計與開發(fā) (2)
- 基于p2p網(wǎng)絡(luò)模型的即時通信軟件的研制-本科畢業(yè)論文
- 電腦和智能手機平臺上的即時通信工具比較
評論
0/150
提交評論