即時通訊聊天系統(tǒng) 畢業(yè)設計_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  畢 業(yè) 設 計(論 文) </p><p>  題目 即時通訊聊天系統(tǒng) </p><p>  姓 名 </p><p>  院 系 </p><p>  專 業(yè) </p><p>  指導教師

2、 </p><p><b>  年 月 日</b></p><p>  即時通信聊天系統(tǒng)的設計與開發(fā)</p><p><b>  摘 要</b></p><p>  互聯網中的即時通訊聊天系統(tǒng)的研究已經成為了當今網絡通訊技術發(fā)展的一個熱點,局域網內的即時通訊聊天系統(tǒng)更是成為了當

3、今社會通訊技術發(fā)前沿陣地。局域網即時通訊軟件的誕生不僅加強推動了企業(yè)工作效率的提高,為培訓企業(yè)的教學帶來了新的思路和手段,還為人們之間的交流創(chuàng)建了一種新型的、廉價的、快訊的、簡便的工作方式,目前的即時通訊系統(tǒng)不僅僅是娛樂聊天的工具,更是影響著局域網內部的管理及其交流方式。本系統(tǒng)采用客戶機/服務器(C/S)模式,本系統(tǒng)開發(fā)環(huán)境是JAVA 6.0,遵循網絡通訊技術基本數據傳輸協(xié)議TCP/IP協(xié)議,本課題的最基本的功能是通過計算機之間的文本數

4、據的互換的形式實現思想的交流和溝通,優(yōu)點是方便快捷。</p><p>  關鍵詞:數據傳輸,傳輸控制協(xié)議,服務器,客戶端,C/S模式THE DESIGN AND IMPLEMENTATION OF THE INSTANT </p><p>  MESSAGING SYSTEM</p><p><b>  ABSTRACT</b>&

5、lt;/p><p>  The Internet chat of instant communication system has become the current network communication technology of the development of a hot, local area network of instant messaging chat system but also be

6、came today's society communication technology hair forward position. LAN instant messaging software birth not only strengthen promote the enterprise work efficiency, increase the enterprise training brings new ideas

7、and teaching means, for communication among people created a new, cheap, flash, simple</p><p>  KEY WORDS: Data transmission, control protocol, server, client, C/S mode</p><p><b>  目 錄<

8、/b></p><p><b>  前 言1</b></p><p>  第1章 系統(tǒng)的需求分析3</p><p>  1.1 課題技術支持3</p><p>  1.2 系統(tǒng)分析3</p><p>  1.3 需求分析3</p><p>  1.4 相關理

9、論知識4</p><p>  1.4.1 網絡通信與網絡協(xié)議基礎4</p><p>  1.4.2 TCP/IP協(xié)議族4</p><p>  1.4.3 面向對象的開發(fā)過程5</p><p>  1.4.4 開發(fā)工具6</p><p>  1.4.5 運行環(huán)境6</p><p> 

10、 1.4.6 開發(fā)方法的選擇7</p><p>  第2章 系統(tǒng)的總體設計9</p><p>  2.1 功能需求描述9</p><p>  2.2 目標系統(tǒng)要求9</p><p>  2.3 總體設計9</p><p>  第3章 系統(tǒng)主要功能模塊設計12</p><p>  3.

11、1 課題分析12</p><p>  3.1.1 系統(tǒng)協(xié)議12</p><p>  3.1.2 系統(tǒng)核心技術12</p><p>  3.2 客戶端設計圖例12</p><p>  3.2.1 客戶端流程圖12</p><p>  3.3 客戶端功能介紹及實現14</p><p> 

12、 3.3.1 客戶端相關類的簡介14</p><p>  3.3.2 客戶端的管理類類的簡介20</p><p>  3.3.3 輔助類或接口20</p><p>  3.4 服務器設計圖例21</p><p>  3.4.1 服務器流程圖21</p><p>  3.5 服務器端功能介紹及實現22<

13、/p><p>  3.5.1 服務器端相關類的簡介23</p><p>  3.5.2 服務器與客戶端的數據傳遞原理24</p><p><b>  3.6總結24</b></p><p>  第4章 系統(tǒng)測試26</p><p>  4.1 課題測試26</p><p&

14、gt;  4.2 測試類型簡單介紹26</p><p>  4.2.1 單元測試26</p><p>  4.2.2 集成測試26</p><p>  4.2.3 有效性測試27</p><p>  4.2.4 系統(tǒng)測試27</p><p>  4.3 測試過程27</p><p>

15、  4.3.1 登錄測試27</p><p>  4.3.2 注冊測試27</p><p>  4.3.3 聊天測試29</p><p><b>  4.4 總結29</b></p><p><b>  結 論30</b></p><p><b>  謝

16、辭31</b></p><p><b>  參考文獻32</b></p><p><b>  前 言</b></p><p><b>  選題背景</b></p><p>  隨著互聯網技術的廣泛普及和應用,通信和電子信息產業(yè)在全球迅猛發(fā)展起來,從而也帶來了軟件

17、技術人才需求量的不斷增加,軟件技術教育和人才培養(yǎng)成為社會所關注的一項重要戰(zhàn)略任務。為了加強軟件開發(fā)技術方面的相關知識的教育,為加強學員間的日常的學習交流,以及平時工作時問題的交流,于是進行自主研發(fā)局域網內的即時通信系統(tǒng)。同時通過項目加強新同事間的交流與技術的配合,為以后的工作奠定良好的基礎。所以開發(fā)并研究了本課題。</p><p>  隨著網絡的普及,人們迫切希望能通過一種現代化的信息技術平臺,更高效的學習軟件開

18、發(fā)技術知識; 宏達科技有限公司也希望有這樣一種方式,借助它提高教學質量和人才培養(yǎng)質量。</p><p><b>  主要內容及研究意義</b></p><p>  在信息爆炸、技術為王的今天,即時通訊技術得到了迅猛的發(fā)展,可對其背后的哲學思考卻被忽略和淡化,此文著重反思人的主體性,以期拋磚引玉,給即時通訊時代個人主體性的健康發(fā)展提供借鑒和現實的積極啟示。</p&

19、gt;<p>  該系統(tǒng)以建設一個專業(yè)的有特色的專業(yè)教學工具為出發(fā)點,以提高學員和廣大軟件開發(fā)愛好者的軟件開發(fā)技術知識,以利于更好的教學同時加強學員和老師、學員與學員之間的學習交流,以JAVA編程語言為基礎,涵蓋了JAVA中的GUI、SWING、網絡編程、網絡通訊、多線程技術等一些JavaSE技術所開發(fā)</p><p>  該系統(tǒng)的主體是局域網聊天通信,它主要實現了用戶注冊、登錄功能,提供了單對單,

20、單對多之間的私人信息聊天,局域網內之間的群聊,以及局域網內人與人之間的文件傳輸等功能,它給學員提供了一個交流、互動的平臺,為學員的學習提供了堅實的學習平臺。在當今信息瞬息萬變的時代,在計算機普及千家萬戶的今天,此系統(tǒng)的開發(fā)在交流和現代化的教學體系改革方面發(fā)揮了積極的作用。</p><p><b>  論文的組織結構</b></p><p>  第一部分:前言。介紹了論

21、文的選題背景、主要內容和研究意義。</p><p>  第二部分:系統(tǒng)的需求分析。對系統(tǒng)的開發(fā)與設計進行需求分析。</p><p>  第三部分:系統(tǒng)的總體設計。對整個系統(tǒng)進行總體的概述說明。</p><p>  第四部分:系統(tǒng)主要功能模塊的設計。對各模塊的設計進行詳細說明。</p><p>  第五部分:局域網聊天系統(tǒng)測試。對系統(tǒng)的各個模塊

22、進行測試。</p><p>  第六部分:結論。對整個設計的總結。</p><p><b>  第七部分:謝辭。</b></p><p>  第八部分:參考文獻。</p><p>  第1章 系統(tǒng)的需求分析</p><p>  1.1 課題技術支持</p><p>  運用

23、面向對象思想,通過較完善的挖掘,構建穩(wěn)定的底層通訊框架。</p><p>  目標:“真實建?!薄白畲罂芍赜谩薄皩ψ兓袕椥浴?lt;/p><p>  手段:抽象封裝/多態(tài)/繼承</p><p>  準則:開閉原則/單一職責原則/對接口編程/里氏代換法則等</p><p>  工具:各種設計模式(單例/工廠/策略/代理/門面/適配器等)</

24、p><p><b>  1.2 系統(tǒng)分析</b></p><p>  應用構建通常分層實現表示層、業(yè)務層、持久層,結合該課題,</p><p>  業(yè)務層分析:課題核心是通訊,考慮到通訊是很多其他應用實現的核心部分,建議搭建健壯并獨立的通訊平臺,以適應未來系統(tǒng)擴展和移植,目前的短消息傳遞可以作為該平臺的基本擴展,以組件的形態(tài)插入到平臺上滿足需求。&

25、lt;/p><p>  數據訪問建議采用數據訪問對象,封裝對持久層的訪問細節(jié)。</p><p>  目前采用文件持久層,定制合理的文件格式,提高效能。并對持久層的未來擴展,比如改為數據庫存儲做好鋪墊。</p><p>  表示層應脫離業(yè)務模型層,獨立出來,表示層調整不應振動到業(yè)務層。</p><p>  表示層一般考慮用戶體驗問題,UI簡單易用并

26、美觀大方,才是最理想的軟件。</p><p><b>  1.3 需求分析</b></p><p>  聊天工具大多數由客戶端程序和服務器程序外加服務端,本程序采用客戶機/服務器架構模式。通過Java提供的Socket類來連接客戶機和服務器并客戶機和服務器相互通行,由于聊天是多點對多點的聊天。主要有兩個應用程序,分別為客戶程序和服務器程序。服務器應用程序主要用于程序轉

27、發(fā),以及上所有用戶發(fā)送系統(tǒng)信息;客戶端程序主要用于客戶端聊天記錄的顯示和信息輸入,采用Client/Server體系結構,即客戶端/服務器結構。聊天服務器專門用于監(jiān)控用戶狀態(tài)和轉發(fā)信息,客戶端負責接收消息用戶序列和消息文本發(fā)送到服務器。該聊天系統(tǒng)實現群聊用戶登錄,退出聊天系統(tǒng)等功能。</p><p>  1.4 相關理論知識</p><p>  本課題涉及到了網絡數據傳輸,需要了解相關的數

28、據網絡傳輸知識,網絡數據的傳輸是本課題不可繞過的技術,所以了解相關網絡數據傳輸的知識是相當重要的。</p><p>  1.4.1 網絡通信與網絡協(xié)議基礎</p><p>  Java語言可稱得上是當今Internet上最流行的編程語言。對一個網絡功能,其他語言需要數行或數頁代碼,而Java也許只需要一條或幾條語句。下面介紹Java網絡編程涉及的計算機網絡的術語、概念。</p>

29、<p>  計算機網絡是計算機技術與通信技術相結合而形成的一種新的通信形式。計算機網絡由硬件和軟件組成,軟件包括網絡操作系統(tǒng)、通信軟件和網絡通信用的通信協(xié)議。</p><p>  Internet允許各個部門和組織根據自己的需求和經濟能力選擇自己的網絡,然后再尋求一種方法將所有類型的網絡互連起來。Internet網絡體系結構也稱為Internet網絡通信協(xié)議,它分為四個層次,TCP/IP協(xié)議(Tra

30、nsmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/網際協(xié)議)是它不同層次協(xié)議的總稱。</p><p>  1.4.2 TCP/IP協(xié)議族</p><p>  TCP/IP協(xié)議族中的傳輸層和互聯網層協(xié)議為網絡中的各主機提供通信服務,它們也是實現應用層協(xié)議的基礎。傳輸層TCP協(xié)議和互聯網層IP協(xié)議是TCP/IP協(xié)議族中的核心協(xié)議。<

31、/p><p>  1. 傳輸控制協(xié)議TCP</p><p>  傳輸控制協(xié)議(TCP)TCP/IP協(xié)議族中的傳輸層,提供可靠的數據傳輸服務。TCP是一種面向連接的傳輸層協(xié)議,意味著該協(xié)議準備發(fā)送數據時,通信之間必須建立起一個邏輯上的連接。TCP協(xié)議位于IP協(xié)議的上層,通過提供效驗、流控制及序列信息彌補IP協(xié)議可靠性的缺陷。</p><p>  2. 互聯網層協(xié)議IP&l

32、t;/p><p>  互聯網層協(xié)議(IP)屬于TCP/IP模型的互聯網層。提供關于數據應如何傳輸以及傳輸到何處的信息。IP是一種是TCP/IP可用于網絡連接的協(xié)議,即TCP/IP可跨域多個局域網段或通過路由器跨域多種類型的網絡。在一個網際環(huán)境中,被連接在一起的單個網絡被稱為子網。</p><p>  數據幀的IP部分被稱為一個IP數據包,IP數據包如同數據的封面,包含了路由器在子網中傳輸數據所

33、在必須的信息。IP數據包包括頭和數據,總長度不能超過65535字節(jié)。</p><p>  IP協(xié)議是一種不可靠的、無連接的協(xié)議。然而,TCP/IP協(xié)議族中更高層協(xié)議可使用IP信息確保數據包按正確的地址進行傳輸。IP數據包并不包含一個校驗和部件,包頭校驗僅僅驗證IP包頭中路由信息的完整性。如果當數據包被接收時伴隨信息的校驗和值不正確,則數據包將被認為已破壞并被拋棄,同時,一個新的數據包被發(fā)送。</p>

34、<p>  3. 用戶數據包協(xié)議UDP</p><p>  用戶數據包協(xié)議UDP(User Datagram Protocol),位于TCP/IP模型的傳輸層。不同于TCP的是,它是一種無連接的傳輸服務,它不保證數據包以正確的順序接收。</p><p>  1.4.3 面向對象的開發(fā)過程</p><p>  面向對象的軟件開發(fā)和相應的面向對象的問題求解是

35、當今計算機技術發(fā)展的重要成果和趨勢之一,面向對象編程具備了幾個優(yōu)點,比如:代碼維護方便、可擴展性好、支持代碼重用技術等等。這些優(yōu)點是面向過程編程語言所不具備的。下面我們就來談談面向對象技術的這些優(yōu)點:</p><p><b>  1. 模塊化</b></p><p>  模塊化是面向對象編程中的一個特征。實體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空

36、間中添加一個類而不會影響該名字空間的其他成員。</p><p><b>  2. 可擴充性</b></p><p>  是對現代應用軟件提出的又一個重要要求,即要求應用軟件能夠很方便,容易的進行擴充和修改,這種擴充和修改的范圍不但涉及到軟件的內容,也涉及到軟件的形式和工作機制。</p><p>  面向對象編程從本質上支持擴充性。如果有一個具有

37、某種功能的類,就可以很快地擴充這個類,創(chuàng)建一個具有擴充的功能的類。</p><p>  面向對象的程序設計可以用很好的可擴充性.這是由于類可以根據人對事物的理解而進行豐富,沒有必要進行作大的改動,可以利用繼承,對新的類添加屬性和方法.用它可以生成系統(tǒng)的簡單雛形,在征求用戶的意見,在加入新的類,以及類的方法與屬性等。</p><p><b>  3. 代碼重用</b>&

38、lt;/p><p>  可重用性是面向對象軟件開發(fā)的一個核心思路.面向對象程序設計的抽象,封裝,繼承,多態(tài)的四大特點都無一例外,或多或少的圍繞著可重用性這個核心并為之服務。</p><p>  由于功能是被封裝在類中的,并且類是作為一個獨立實體而存在的,提供一個類庫就非常簡單了。</p><p>  1.4.4 開發(fā)工具</p><p>  采用

39、jdk1.6開發(fā)包,Java運行環(huán)境為:Java(TM) SE Runtime Environment (build 1.6.0_10-b33)</p><p>  開發(fā)工具:Myeclipse8.5</p><p>  1.4.5 運行環(huán)境</p><p><b>  硬件環(huán)境</b></p><p>  處理器:In

40、terCR300 或更高</p><p>  內存:128MB或更高(建議256MB)</p><p>  硬盤空間:80MB以上</p><p><b>  軟件環(huán)境</b></p><p>  軟件環(huán)境是一個系統(tǒng)開發(fā)的工具,它取決于開發(fā)人員對軟件的熟悉程度,如果開發(fā)人員選擇一個不熟悉的軟件開發(fā)會大大增加開發(fā)系統(tǒng)所需要

41、投入的成本,所以說選擇軟件環(huán)境也是很重要的。</p><p>  操作系統(tǒng): Windows 2000/Windows XP</p><p>  軟件開發(fā)語言:JAVA</p><p>  1.4.6 開發(fā)方法的選擇</p><p>  在開發(fā)方法的選擇上,選擇了演繹式原型法與生命周期法相結合的方法。具體來說,就是在系統(tǒng)開發(fā)之前對系統(tǒng)有一個總

42、體框架設想,各功能單元的結構和功能也比較清楚,但是還沒有具體實現。系統(tǒng)完成什么功能,分成哪幾個部分,各個部分又有哪幾個模塊,都已理解掌握,且以后不需要做更大的變動,只是具體到每個模塊,還沒有全部實現。具體地設計可能是完全實現一個模塊,也可能是用一個效率高地模塊代替一個舊模塊。信息系統(tǒng)的開發(fā)是一項比較復雜的工作,我們必須選用科學的有效的開發(fā)方法。近年來,國內外已逐步總結出一些開發(fā)信息系統(tǒng)的方法和技術,但是,從目前的情況來看,系統(tǒng)的開發(fā)技術

43、仍是一個比較薄弱的環(huán)節(jié)。那么根據本系統(tǒng)開發(fā)的要求,本系統(tǒng)選擇了生命周期法和原型法相結合的方法?,F具體介紹如下:</p><p>  生命周期這個概念源于系統(tǒng)工程方法。廣義地說,任何系統(tǒng)均有其發(fā)生、發(fā)展、成熟、消亡或更新換代的過程,這個過程稱為系統(tǒng)的生命周期。主要包括系統(tǒng)調查階段、系統(tǒng)分析、系統(tǒng)設計、系統(tǒng)實施及系統(tǒng)維護與評價五個部分。根據系統(tǒng)設計而對整個系統(tǒng)實施,包括物理實施,程序設計,調試等。實施是最后的一步,關

44、系著最后的成功。</p><p>  在建筑學和機械設計學中,“原型”指的是其結構、大小和功能都與某個物體相類似的模擬該物體的原始模型。在管理信息系統(tǒng)開發(fā)中,用“原型”來形象地表示系統(tǒng)的一個早期可運行版本,它能反映新系統(tǒng)的部分重要功能和特征?!霸头椒ā眲t是利用原型輔助開發(fā)系統(tǒng)的一種新方法。原型方法要求在獲得一組基本的用戶需求后,快速地實現新系統(tǒng)的一個“原型”,用戶、開發(fā)者及其他有關人員在試用原型的過程中,加強通

45、信和反饋,通過反復評價和反復修改原型系統(tǒng),逐步確定各種需求的細節(jié),適應需求的變化,從而最終提高新系統(tǒng)的質量。因此可以認為原型方法確定用戶需求的策略,它對用戶需求的定義采用啟發(fā)的方式,引導用戶在對系統(tǒng)逐漸加深理解的過程中作出響應。</p><p>  原型法主要包括確定系統(tǒng)基本需求階段、構造初始原型階段、原型的使用評價階段、修改原型階段和確定模型后的處理階段。</p><p>  原型法的基

46、本思想是:憑借著系統(tǒng)分析人員對用戶要求的理解,在強有力的軟件環(huán)境支持下,快速地給出一個實實在在的模型(或稱原型、雛形),然后與用戶反復協(xié)商修改,最終形成實際系統(tǒng)。</p><p>  在本系統(tǒng)中選擇了演化型(EvolutionaryPrototying)原型法,其目的不在于改進規(guī)格說明和用戶需求,而是將系統(tǒng)改造得易于變化,在改進原型的過程中將原型演化成最終系統(tǒng)。它將原型方法的思想貫穿到系統(tǒng)開發(fā)全過程,對滿足需求的

47、改動較為適合。</p><p>  第2章 系統(tǒng)的總體設計</p><p>  2.1 功能需求描述 </p><p>  聊天工具大多數由客戶端程序和服務器程序外加服務端,本程序采用客戶機/服務器架構模式。通過Java提供的Socket類來連接客戶機和服務器并客戶機和服務器相互通行,由于聊天是多點對多點的聊天。主要有兩個應用程序,分別為客戶程序和服務器程序。服務

48、器應用程序主要用于程序轉發(fā),以及上所有用戶發(fā)送系統(tǒng)信息;客戶端程序主要用于客戶端聊天記錄的顯示和信息輸入,采用Client/Server體系結構,即客戶端/服務器結構。聊天服務器專門用于監(jiān)控用戶狀態(tài)和轉發(fā)信息,客戶端負責接收消息用戶序列和消息文本發(fā)送到服務器。該聊天系統(tǒng)實現群聊用戶登錄,退出聊天系統(tǒng)等功能。</p><p>  2.2 目標系統(tǒng)要求</p><p>  整體上要實現對用戶注

49、冊,登陸,好友上線,好友下線,單發(fā)消息,群發(fā)消息等功能。</p><p><b>  2.3 總體設計</b></p><p>  為了使本系統(tǒng)在設計中更加方便和直觀,所以使用了面向對象的設計思想。面向對象設計不再是單純的從代碼的第一行一直編到最后一行,而是考慮如何創(chuàng)建類和對象,利用類和對象來簡化程序設計,并提供代碼的封裝和可重用性,便于程序的維護與擴展。</p

50、><p>  所謂的對象是一種抽象的名稱,用來對應實現世界存在的"東西"。一個窗口、一個按鈕、一個菜單都可視為一個對象,而按鈕對象、菜單對象、又會出現在窗口對象中,因此按鈕對象、菜單對象便是窗口的組件之一。對象內部的數據是不能隨意更改的,必須由外部向其傳遞信息,再由對象按其方法加以處理。用戶無需知道其任何細節(jié),操作是封閉的,對象之間能通過函數調用相互通信。</p><p>

51、  類可視為一個產品模具、一個模塊。在面向對象設計中,類是對象的原型,是對象的制作器。類的概念是面向對象程序設計最重要的特征。所謂類,是指由數據結構及其相關操作所形成的集合,描述該類任一對象的共同的行為特征,是對一組性質相同的對象的程序描述,概括了對象的共同性質和數據。面向對象設計的核心是類的設計。</p><p>  本系統(tǒng)主要劃分為客戶端、服務器兩部分。客戶端主要完成對用戶發(fā)送的信息進行處理、登錄、注冊的處理

52、,客戶端功能如圖2-1所示。</p><p>  圖2-1 客戶端功能圖</p><p>  服務器段主要是接受客戶端響應的請求來就行處理,在客戶端發(fā)送給服務器的時候將請求封裝成特定格式的對象發(fā)送給服務器,服務器根據請求來做出響應的處理,服務器端的功能圖如圖2-2所示。</p><p>  圖2-2 服務器端功能圖</p><p>  第3章

53、 系統(tǒng)主要功能模塊設計</p><p><b>  3.1 課題分析</b></p><p>  系統(tǒng)需求分析由項目小組成員經過多次的小組會議與討論,最終制定一套統(tǒng)一的系統(tǒng)設計框架(用例和類圖)。經過討論為促進小組成員對課題核心技術的理解和掌握,在設計階段要求課題小組成員都要對課題核心技術進行相對的設計,另外要完成系統(tǒng)部分具體功能的實現。</p><

54、;p>  3.1.1 系統(tǒng)協(xié)議</p><p>  本系統(tǒng)為即時通信系統(tǒng),主要以傳遞信息為主,經過分析制定信息傳遞格式為:定義一個類,讓類實現可序列化接口,類中定義其需要傳輸的信息為其成員變量,信息以字可以序列化的對象進行傳遞。</p><p>  3.1.2 系統(tǒng)核心技術</p><p>  1. 客戶端:客戶端利用對套接字輸入流、輸出流進行傳遞保持連接的持

55、續(xù)。設計一個工具類,其類定義兩個MAP成員變量,用于存儲單獨聊天窗口和群聊聊天窗口。在定義一個工具類存儲好友列表窗體。</p><p>  2. 服務器端:采用多線程,定義信息處理接口,利用MAP存取在線用戶與其對應的輸出流,采用數據庫技術存儲用戶的各種信息。</p><p>  3.2 客戶端設計圖例</p><p>  3.2.1 客戶端流程圖</p>

56、;<p>  客戶端功能圖簡明扼要地展現了客戶端的工作流程,如圖3-1所示。</p><p>  圖3-1 客戶端流程圖</p><p>  3.3 客戶端功能介紹及實現</p><p>  客戶端是多個圖形界面的組合,包括注冊界面、登錄界面、好友列表界面和聊天窗體界面,各個圖形界面完成各自的功能。其主要功能如下:</p><p&g

57、t;  (1) 完成用戶的注冊;</p><p>  (2) 客戶的登陸;</p><p>  (3) 客戶信息之間的單聊、群發(fā)。</p><p>  3.3.1 客戶端相關類的簡介</p><p>  1. 客戶端相關類的簡介——QqClientLogin類</p><p>  功能:qq客戶端登錄界面</p&

58、gt;<p><b>  登錄界面實現介紹:</b></p><p>  整個Frame由北部,中部,南部三個部分組成。北部有一個Label; 中部有一個Panel(panel2),而這個Panel是一個3行3列的網格布局;南部有一個Panel(panel1) ,這個panel上有三個按鈕。登錄界面如圖3-3所示。</p><p><b>  

59、圖3-3 登錄界面</b></p><p>  注冊窗體:單機登錄界面注冊向導則關閉當前登錄窗體,彈出注冊窗體,注冊窗體需要用戶注冊用戶的基本信息,注冊窗體如圖3-4所示。</p><p><b>  圖3-4 注冊窗體</b></p><p>  2. 客戶端相關類的簡介——QqFriendList類</p><

60、;p>  功能:qq客戶端好友列表框界面</p><p>  InfomBack類中更新在線的好友情況,關鍵代碼如下:</p><p>  boolean b = (Boolean) informBack.get(0);</p><p>  if (b) {// 如果為真,用戶上線通知</p><p>  User user = (Us

61、er) informBack.get(1);</p><p>  System.out.println(user.getNickName() );</p><p>  rf.add(user);// 添加到界面中</p><p>  System.out.println(user.getNickName()+"上線");</p>&

62、lt;p>  } else {// 否則為下線通知</p><p>  rf.remove(from);</p><p>  System.out.println(from + "下線了");</p><p><b>  }</b></p><p>  Infom類中更新離線線的好友情況<

63、/p><p><b>  if(!b){</b></p><p>  Updatable updateable</p><p>  =(Updatable)MessageContextForServer.getNeed("Updatable");</p><p>  User user=(User)in

64、formback.get(1);</p><p>  updateable.update(user);</p><p>  MessageContextForServer.removeOutLine(from); Iterator<Sendable> sendable = </p><p>  MessageContextForServer

65、.getOnLineValue();</p><p>  while(sendable.hasNext()){</p><p><b>  try {</b></p><p>  sendable.next().send(message);</p><p>  } catch (IOException e) {</

66、p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  好友列表框實現介紹: </p><p&

67、gt;  這個列表框是個選項卡布局。分為“我的好友”,“陌生人”兩個選項卡。在此,只實現我的好友選項卡,其余兩個制作成兩個按鈕,不實現其功能。整個Panel(Panel1是個BorderLayout布局)由北部,中部,南部三個部分組成。北部有一個Button(我的好友);中部有一個ScrollPane (該控件中還有Panel(Panel2),該Panel是一個N行一列的網格布局(假設有50個好友)。其中存放好友頭像和編號(好友頭像由L

68、abel數組處理));南部還有一個Panel(Panel3)(該Panel是一個2行1列的網格布局,其上放著兩個按鈕“陌生人”,群發(fā)信息”)??偣灿玫饺齻€Panel,注意順序。好友列表界面如圖3-5所示。</p><p><b>  圖3-5 好友列表</b></p><p>  3. 客戶端相關類的簡介——QqChat類</p><p>  

69、功能:這是與好友單聊的界面如圖3-6 聊天窗體</p><p>  聊天界面實現介紹: </p><p>  整個Frame只有四個控件組成。一個文本域(TextArea),兩個面板(Panel), 兩個文本框(TextField),三個按鈕(Button)。這個Frame是個默認的BorderLayout布局,中部是個文本域;南部是個面板,而這個面板上面有一個文本框和一個按鈕;北部是個面

70、板,而這個面板是個默認的BorderLayout布局,北部有一個文本框,西部和東部各有一個按鈕。聊天窗體如圖3-6所示。</p><p><b>  圖3-6 聊天窗體</b></p><p>  4. 客戶端相關類的簡介——QqAllChat類</p><p>  功能:這是與好友群聊的界面</p><p>  sho

71、wAllMessage(Message m)顯示群聊信息</p><p>  聊天界面實現介紹: </p><p>  整個Frame只有四個控件組成。一個文本域(TextArea),一個面板(Panel), 一個文本框(TextField),一個按鈕(Button)。這個Frame是個默認的BorderLayout布局,中部是個文本域;南部是個面板,而這個面板上面有一個文本框和一個按鈕。

72、</p><p>  5. 客戶端相關類的簡介——ClientConServerThread類</p><p>  功能: 這是客戶端和服務器端保持通訊的線程。不斷的讀取從服務器端發(fā)來的信息并進行判斷是哪類型的信息,然后做相應的處理。</p><p>  功能描述:本系統(tǒng)之間的通信遵守一定的協(xié)議當用戶登錄的時候將自己的帳號密碼與登錄的標志發(fā)送給服務器,服務器接收到信

73、息以后解析一下信息,驗證帳號密碼是否正確,若是正確則客戶端與服務器建立連接,同時服務器將上線好友的信息發(fā)送給每一個在線的好友,刷新好友列表,同樣的當好友下線的時候發(fā)送信息給服務器,服務器進行解析將下線好友信息發(fā)送過給每一個在線好友進行好友列表的刷新,當單發(fā)群發(fā)的時候都發(fā)送信息給服務器,服務器根據之前定力的協(xié)議進行處理,發(fā)送給相應的用戶。</p><p>  //判斷接收到的是否是好友上線的信息</p>

74、<p>  boolean b = (Boolean) loginback.get(0);</p><p>  if (b) {// 如果為真,登陸成功</p><p>  User user = (User) loginback.get(1);</p><p>  rf.add(user);// 添加自己的信息</p><p>

75、;  ArrayList<User>onlineUser=(ArrayList<User>)loginback.get(2);</p><p>  for (User u : onlineUser) {</p><p>  rf.add(u);// 添加在線好友的信息</p><p><b>  }else{</b>&l

76、t;/p><p>  int n = (Integer) loginback.get(1);</p><p>  if (n == 0) {</p><p>  JOptionPane.showMessageDialog(null, "此用戶已登錄!", "錯誤",JOptionPane.ERROR_MESSAGE);</p

77、><p><b>  } else {</b></p><p>  JOptionPane.showMessageDialog(null, "賬戶或密碼錯誤!", "錯誤",JOptionPane.ERROR_MESSAGE);</p><p><b>  }</b></p>

78、<p><b>  }</b></p><p>  6. 客戶端相關類的簡介——QqClientConServer類</p><p>  功能:這是客戶端連接服務器的后臺</p><p>  驗證用戶注冊、登錄信息的地方,若登錄成功為該用戶啟動與服務器通訊的線程。</p><p>  當用戶登錄的時候

79、啟動一個線程將自己的帳號密碼進行處理,處理成特定的格式,發(fā)送給服務器服務器將帳號、密碼提取出來,與服務器中保存的信息進行比較,如果帳號密碼都正確則,讓客戶端與服務器成功連接,將好友的信息發(fā)送給每一個好友。</p><p>  3.3.2 客戶端的管理類類的簡介</p><p>  1. ManageClientConServerThread類</p><p>  功

80、能:這是一個管理客戶端和服務器保持通訊的線程類</p><p>  使用HashMap將用戶與該用戶與服務器通訊的線程進行綁定</p><p>  addClientConServerThread(String qqId,ClientConServerThread ccst)</p><p>  ClientConServerThread. </p>

81、<p>  getClientConServerThread(String qqId)通過qqId取得該線程</p><p>  2. ManageQqFriendList類</p><p>  功能:管理好友列表的界面類</p><p>  使用HashMap將用戶自己與自己的好友列表進行綁定</p><p>  addQqFri

82、endList(String qqid,QqFriendList qqFriendList)</p><p>  QqFriendList getQqFriendList(String qqId)</p><p>  3. ManageQqChat類</p><p>  功能:這是一個管理用戶聊天界面的類</p><p>  使用HashMa

83、p將和每個好友與對應的聊天界面進行綁定</p><p>  addQqChat(String loginIdAndFriendId,QqChat qqChat)</p><p>  getQqChat(String loginIdAndFriendId)獲取聊天界面</p><p>  4. ManageQqAllChat類</p><p>

84、  功能:這是一個管理用戶群聊天界面的類</p><p>  使用HashMap將和每個好友與對應的群聊天界面進行綁定</p><p>  addQqAllChat(String loginIdAndFriendId,QqAllChat qqAllChat)</p><p>  getQqAllChat(String loginIdAndFriendId)獲取群聊天

85、界面</p><p>  3.3.3 輔助類或接口</p><p>  可序列化類:為了課題的實現方便,數據的傳輸利用了JAVA語言中特有的一個語言特點——對象的可序列化。利用對象的可序列話,實現了數據在網絡中的傳輸。必須注意一點的是,因為是實現在不同獨立計算機上的數據傳輸,所以服務器與客戶端都有一份可序列化類的包,其序列化編號必須一致,這樣在數據傳輸過程中服務器與客戶端才能夠認識該序列化

86、的對象,這些序列化對象其實就相當于服務器與客戶端之間的一個協(xié)議。</p><p>  可序列化類——傳遞的信息類:Message類</p><p>  該類是信息傳遞包,是普通的信息在服務器與客戶端之間傳遞信息的最基本的可序列化對象,該包是客戶端之間聊天信息傳輸的載體,里面包含了通訊信息的基本內容。</p><p>  可序列化類——用戶信息類:User類</

87、p><p>  該類是傳輸用戶登錄信息的包,其成員變量是登錄界面輸入的帳號與密碼,通過該類的包裝傳輸到服務器,服務器進行驗證。其用途在連接服務器是發(fā)送。</p><p>  定義統(tǒng)一的信息類型接口:MessageType接口(為了客戶查看的方便)</p><p>  public interface MessageType {</p><p> 

88、 String message_register_fail = "-1";//表明用戶注冊失敗</p><p>  String message_register = "0";//表明用戶注冊</p><p>  String message_succeed = "1";//表明登錄成功</p><p> 

89、 String message_login_fail = "2";//表明登錄失敗</p><p>  String message_comm_mes = "3";//普通信息包</p><p>  String message_get_onLineFriend = "4";//要求的在線好友包</p><p&

90、gt;  String message_ret_onLineFriend = "5";//返回在線好友的包</p><p>  String message_login = "7";//表明用戶登錄</p><p>  String message_chatall_mes = "8";//群聊信息包</p><

91、p>  String message_file = "9";//文件傳輸包</p><p>  String message_live_onLineFriend = "10";//要求的下線好友包</p><p><b>  }</b></p><p>  3.4 服務器設計圖例</p>

92、<p>  3.4.1 服務器流程圖</p><p>  服務器端流程圖簡明扼要地展現了服務器端的工作流程,如圖3-7所示。</p><p>  圖3-7 服務器流程圖</p><p>  3.5 服務器端功能介紹及實現</p><p>  服務器起到中轉信息,服務器端用于接收客戶端發(fā)來的各種信息類型(注冊信息、登錄信息、好友上

93、線信息、好友下線信息、普通聊天信息、文件傳輸信息以及群內聊天信息),并根據不同的信息類型作相應的信息處理,用戶好友管理,用戶注冊等等核心功能,都要在服務器的正常運行下才能正確的執(zhí)行這些功能,因此服務器的好壞直接關系到整個局域網聊天系統(tǒng)的好壞,服務器端的設計也相應的成為了本系統(tǒng)的核心設計。其主要功能為:實現連接來自不同端口的socket,并為之提供獨立線程,完成信息的轉發(fā)。</p><p>  3.5.1 服務器端

94、相關類的簡介</p><p>  1. 服務器相關類的簡介——MyQqServer類</p><p>  功能: qq服務器端在監(jiān)聽、等待某個qq客戶端,并進行連接。</p><p>  驗證注冊的用戶是否存在;</p><p>  驗證登錄的用戶是否存在,若存在登錄的用戶則啟動與該客戶端的通信線程。</p><p>

95、  2. 服務器相關類的簡介——ManageClientThread類</p><p>  功能: 用于綁定管理用戶id和服務器與用戶通信的線程,用HashMap將用戶和與客戶端通訊線程進行綁定。關鍵代碼如下:</p><p>  public static HashMap<String,SerConClientThread> hm = </p><p>

96、;  new HashMap<String,SerConClientThread>();</p><p>  //向hm中添加一個客戶端通訊線程</p><p>  public static void addClientThread(String uid,SerConClientThread ct) {</p><p>  hm.put(uid,ct

97、);</p><p><b>  }</b></p><p>  3.服務器相關類的簡介——SerConClientThread類</p><p>  功能:服務器和某個客戶端的通信線程,對從客戶端取得的消息進行判斷,然后做相應的處理。</p><p>  服務器端接收到信息后提取出來相應的信息判斷若id的值為空則為群聊

98、天則將信息發(fā)送給每一個在線的好友,如果不為空的時候就發(fā)送給對應的好友。</p><p>  4.服務器相關類的簡介——MyServerFrame類</p><p>  功能:這是服務器端的控制界面,可以完成啟動服務器,關閉服務器。</p><p>  3.5.2 服務器與客戶端的數據傳遞原理</p><p>  服務器與客戶機之間存在著大量的

99、數據傳遞,主要通過3個過程:</p><p>  首先通過服務器端套接字ServerSocket的構造方法構建服務器套接字,并綁定特定端口。然后在客戶機端程序中,利用客戶端套接字Socket的構造方法Socket(InetAdress addresss ,int port)創(chuàng)建一個套接字流,并將其連接到指定IP地址的指定端口號,其IP地址可以用InetAdress。getByname(服務器IP地址)表示,從而與

100、服務器IP地址可以表示為:InetAdress。getLocalHost(),port)</p><p>  在客戶端建立數據輸入流類ObjectInputStream的實例read,用于從服務器中讀取數據,同時建立數據輸出流類ObjectOutputStream的實例write 用于上服務器發(fā)送數據,從而構造了客戶機與服務器之間的數據通道。</p><p>  通過類ObjectInpu

101、tStream的read()方法讀取來自數據流的數據,如:</p><p>  readObject() 讀取序列化對象。通過類ObjectOutputStream的writeObject()方法上數據流寫入數據,如:writeObject ()寫入序列化</p><p><b>  對象。</b></p><p><b>  3.6

102、總結</b></p><p>  這個系統(tǒng)的總體設計主要分為客戶端、服務器兩大部分,客戶端登錄注冊的時候遵循一定的協(xié)議將客戶的信息發(fā)送給服務器,服務器進行解析若是登錄將好友的信息發(fā)送給在線的每一個好友,若是注冊將注冊的信息發(fā)送給服務器保存在服務器端,在發(fā)送消息的時候遵守格式發(fā)送信息給服務器,服務器判斷出來是群發(fā)還是單發(fā)單發(fā)就發(fā)送給相應的用戶,群發(fā)的時候就發(fā)送給每一個在線的好友。</p>

103、<p><b>  第4章 系統(tǒng)測試</b></p><p><b>  4.1 課題測試</b></p><p>  在系統(tǒng)的詳細設計以及編碼過程進行完成之后,就要對辦公自動化管理系統(tǒng)的程序進行測試。軟件測試是軟件開發(fā)過程中的一個重要環(huán)節(jié)。軟件測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過程;好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的

104、測試方案;成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試。軟件測試是根據軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計出一批測試用例,并利用測試用例來運行程序,以發(fā)現程序錯誤的過程。測試階段的主要任務是盡量發(fā)現程序錯誤,改正錯誤,直至程序的功能、性能滿足用戶需求。</p><p>  在課題測試階段,系統(tǒng)過分析,測試方案針對系統(tǒng)的登錄、注冊、在線人員的更新、單聊、多聊進行分布測試。測試主要分成兩部分,第一部分

105、測試主要是在開發(fā)期間,當完成單個組件或功能進行測試,這部分測試也成為白箱測試,即在開發(fā)者的測試,了解各個代碼的用途、作用,更具其知識解決相應的問題;第二部分則是在測試階段進行的全面的測試,同時也稱為黑箱測試,該測試假設完全不知道代碼的情況下進行測試,主要測試課題還存在那些漏洞及課題在開發(fā)中沒有想到的功能等。</p><p>  4.2 測試類型簡單介紹</p><p>  4.2.1 單元

106、測試</p><p>  又稱模塊測試,是針對軟件設計的最小單元程序模塊進行測試的工作。其目的是發(fā)現模塊內部的錯誤,修改這些錯誤使其代碼能夠正確運行。其中,多個功能獨立的程序模塊可并行進行測試。</p><p>  4.2.2 集成測試</p><p>  又稱組裝測試,它的任務是按照一定的策略對單元測試的模塊進行組</p><p>  裝,

107、并在組裝過程中進行模塊接口與系統(tǒng)功能測試。集成測試的策略主要有兩種:一次性組裝方式和增值式組裝方式。</p><p>  4.2.3 有效性測試</p><p>  又稱確認測試,目的是驗證軟件的有效性,即驗證軟件的功能和性能及其他特性是否符合用戶要求。軟件的功能和性能要求參照軟件需求說明書。</p><p>  4.2.4 系統(tǒng)測試</p><

108、p>  系統(tǒng)測試的目的是為了測試軟件安裝到實際應用的系統(tǒng)中后,能否與系統(tǒng)的其余部分協(xié)調工作,以及對系統(tǒng)運行可能出現的各種情況的處理能力。</p><p><b>  4.3 測試過程</b></p><p>  4.3.1 登錄測試</p><p>  1. 若登錄密碼錯誤,如圖4-1所示:</p><p>  圖

109、4-1 登錄密碼錯誤</p><p>  測試結論:當密碼帳號輸入錯誤的時候彈出這個提示框。</p><p>  如果成功等錄,則界面轉向好友列表界面。</p><p>  4.3.2 注冊測試</p><p>  1. 注冊信息不符合規(guī)范,如圖4-2和4-3所示:</p><p>  圖4-2 注冊密碼和確認密碼不相

110、同</p><p>  測試結論:當兩次密碼輸入不一樣的時候出現錯誤提示。</p><p>  圖4-3 用戶名和密碼不能為空</p><p>  測試結論:注冊的時候密碼帳號沒有填寫時則出現錯誤提示</p><p>  注冊的帳號已存在,如圖4-4所示:</p><p>  圖4-4 用戶名已存在</p>

111、<p>  測試結論:注冊的帳號已經存在則出現錯誤提示框</p><p>  注冊成功,如圖4-5所示:</p><p><b>  圖4-5 注冊成功</b></p><p>  測試結論:注冊成功的時候出現這個界面</p><p>  4.3.3 聊天測試</p><p>  聊

112、天功能的測試如圖如圖4-6所示:</p><p><b>  圖4-6聊天測試</b></p><p><b>  4.4 總結</b></p><p>  經過一系列的測試,整個系統(tǒng)的功能基本上都已基本完成,注冊、登錄都已完成,相應的提示都有。單聊、群聊功能也已經實現,消息的接收、用戶上線、下線也都已實現,主要的缺陷就是

113、對上線、下線、消息的接收沒有明顯的提示,不便于用戶看到。</p><p><b>  結 論</b></p><p>  互聯網從誕生以來,就開影響這地球的每一個角落,給予了人類一種全新的生活方式,隨著互聯網技術的發(fā)展,信息技術也層次不窮,即時通訊系統(tǒng)就是這么一種以聊天形式為主的廣受歡迎的互聯網技術,即時通訊技術最基本的功能是通過計算機之間的文本數據的互換的形式實現思

114、想的交流與溝通,是一種方便快捷的通訊方式。本課題對即時通訊系統(tǒng)進行了一定的深入了解與研究,討論了局域網即時通訊系統(tǒng)的分析與設計。 本課題開發(fā)的即時通訊系統(tǒng)已經初步完成,其登錄、注冊、聊天、好友上下線提示等基本功能已得以實現,其服務器也能多個用戶同時連接服務器,服務器能正常運行。本課題要求基本實現。但是本系統(tǒng)還有很多不足之處,如在聊天的時候沒有消息過濾功能,群聊與單聊都必須被動的接收消息,不能對其不想收到的消息進行屏蔽,只有添加好

115、友功能卻沒有刪除好友功能。還有一點是,在真正的網絡數據傳輸中并不是已可序列化對象的方式進行數據傳輸的,而是已XML方式進行數據的傳輸,這里為了課體開發(fā)的需要,就用了可序列化對象的方式進行數據傳輸。本系統(tǒng)在其它方面還有很多不足之處,這里就不一一列出。總而言之,本課題的開發(fā)還有許多需要完善的地方,還要需要學習更多的</p><p><b>  謝 辭</b></p><p&g

116、t;<b>  參考文獻</b></p><p>  [1] 陳煒,張曉蕾,侯燕萍著.Java軟件開發(fā)技術.北京:人們郵電出版社</p><p>  [2] 朱喜福,郭逢昌著.Java網絡應用編程入門.北京:人民郵電出版社</p><p>  [3] 胡伏湘,雷軍環(huán)著.Java程序設計實用教程.北京:清華大學出版社 </p>&l

117、t;p>  [4] 耿祥義著.Java課程設計.北京:清華大學出版社</p><p>  [6] 鄭人杰著.計算機軟件測試技術.北京:清華大學出版社</p><p>  [7]畢廣吉.Java程序設計實例教程[M]. 北京:冶金工業(yè)出版社</p><p>  [8].王保羅.Java面向對象程序設計[M]. 北京:清華大學出版社</p><

溫馨提示

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

評論

0/150

提交評論