版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計(jì)(論 文) </p><p> 題目 即時(shí)通訊聊天系統(tǒng) </p><p> 姓 名 </p><p> 院 系 </p><p> 專 業(yè) </p><p> 指導(dǎo)教師
2、 </p><p><b> 年 月 日</b></p><p> 即時(shí)通信聊天系統(tǒng)的設(shè)計(jì)與開發(fā)</p><p><b> 摘 要</b></p><p> 互聯(lián)網(wǎng)中的即時(shí)通訊聊天系統(tǒng)的研究已經(jīng)成為了當(dāng)今網(wǎng)絡(luò)通訊技術(shù)發(fā)展的一個(gè)熱點(diǎn),局域網(wǎng)內(nèi)的即時(shí)通訊聊天系統(tǒng)更是成為了當(dāng)
3、今社會通訊技術(shù)發(fā)前沿陣地。局域網(wǎng)即時(shí)通訊軟件的誕生不僅加強(qiáng)推動了企業(yè)工作效率的提高,為培訓(xùn)企業(yè)的教學(xué)帶來了新的思路和手段,還為人們之間的交流創(chuàng)建了一種新型的、廉價(jià)的、快訊的、簡便的工作方式,目前的即時(shí)通訊系統(tǒng)不僅僅是娛樂聊天的工具,更是影響著局域網(wǎng)內(nèi)部的管理及其交流方式。本系統(tǒng)采用客戶機(jī)/服務(wù)器(C/S)模式,本系統(tǒng)開發(fā)環(huán)境是JAVA 6.0,遵循網(wǎng)絡(luò)通訊技術(shù)基本數(shù)據(jù)傳輸協(xié)議TCP/IP協(xié)議,本課題的最基本的功能是通過計(jì)算機(jī)之間的文本數(shù)
4、據(jù)的互換的形式實(shí)現(xiàn)思想的交流和溝通,優(yōu)點(diǎn)是方便快捷。</p><p> 關(guān)鍵詞:數(shù)據(jù)傳輸,傳輸控制協(xié)議,服務(wù)器,客戶端,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 課題技術(shù)支持3</p><p> 1.2 系統(tǒng)分析3</p><p> 1.3 需求分析3</p><p> 1.4 相關(guān)理
9、論知識4</p><p> 1.4.1 網(wǎng)絡(luò)通信與網(wǎng)絡(luò)協(xié)議基礎(chǔ)4</p><p> 1.4.2 TCP/IP協(xié)議族4</p><p> 1.4.3 面向?qū)ο蟮拈_發(fā)過程5</p><p> 1.4.4 開發(fā)工具6</p><p> 1.4.5 運(yùn)行環(huán)境6</p><p>
10、 1.4.6 開發(fā)方法的選擇7</p><p> 第2章 系統(tǒng)的總體設(shè)計(jì)9</p><p> 2.1 功能需求描述9</p><p> 2.2 目標(biāo)系統(tǒng)要求9</p><p> 2.3 總體設(shè)計(jì)9</p><p> 第3章 系統(tǒng)主要功能模塊設(shè)計(jì)12</p><p> 3.
11、1 課題分析12</p><p> 3.1.1 系統(tǒng)協(xié)議12</p><p> 3.1.2 系統(tǒng)核心技術(shù)12</p><p> 3.2 客戶端設(shè)計(jì)圖例12</p><p> 3.2.1 客戶端流程圖12</p><p> 3.3 客戶端功能介紹及實(shí)現(xiàn)14</p><p>
12、 3.3.1 客戶端相關(guān)類的簡介14</p><p> 3.3.2 客戶端的管理類類的簡介20</p><p> 3.3.3 輔助類或接口20</p><p> 3.4 服務(wù)器設(shè)計(jì)圖例21</p><p> 3.4.1 服務(wù)器流程圖21</p><p> 3.5 服務(wù)器端功能介紹及實(shí)現(xiàn)22<
13、/p><p> 3.5.1 服務(wù)器端相關(guān)類的簡介23</p><p> 3.5.2 服務(wù)器與客戶端的數(shù)據(jù)傳遞原理24</p><p><b> 3.6總結(jié)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 總結(jié)29</b></p><p><b> 結(jié) 論30</b></p><p><b> 謝
16、辭31</b></p><p><b> 參考文獻(xiàn)32</b></p><p><b> 前 言</b></p><p><b> 選題背景</b></p><p> 隨著互聯(lián)網(wǎng)技術(shù)的廣泛普及和應(yīng)用,通信和電子信息產(chǎn)業(yè)在全球迅猛發(fā)展起來,從而也帶來了軟件
17、技術(shù)人才需求量的不斷增加,軟件技術(shù)教育和人才培養(yǎng)成為社會所關(guān)注的一項(xiàng)重要戰(zhàn)略任務(wù)。為了加強(qiáng)軟件開發(fā)技術(shù)方面的相關(guān)知識的教育,為加強(qiáng)學(xué)員間的日常的學(xué)習(xí)交流,以及平時(shí)工作時(shí)問題的交流,于是進(jìn)行自主研發(fā)局域網(wǎng)內(nèi)的即時(shí)通信系統(tǒng)。同時(shí)通過項(xiàng)目加強(qiáng)新同事間的交流與技術(shù)的配合,為以后的工作奠定良好的基礎(chǔ)。所以開發(fā)并研究了本課題。</p><p> 隨著網(wǎng)絡(luò)的普及,人們迫切希望能通過一種現(xiàn)代化的信息技術(shù)平臺,更高效的學(xué)習(xí)軟件開
18、發(fā)技術(shù)知識; 宏達(dá)科技有限公司也希望有這樣一種方式,借助它提高教學(xué)質(zhì)量和人才培養(yǎng)質(zhì)量。</p><p><b> 主要內(nèi)容及研究意義</b></p><p> 在信息爆炸、技術(shù)為王的今天,即時(shí)通訊技術(shù)得到了迅猛的發(fā)展,可對其背后的哲學(xué)思考卻被忽略和淡化,此文著重反思人的主體性,以期拋磚引玉,給即時(shí)通訊時(shí)代個(gè)人主體性的健康發(fā)展提供借鑒和現(xiàn)實(shí)的積極啟示。</p&
19、gt;<p> 該系統(tǒng)以建設(shè)一個(gè)專業(yè)的有特色的專業(yè)教學(xué)工具為出發(fā)點(diǎn),以提高學(xué)員和廣大軟件開發(fā)愛好者的軟件開發(fā)技術(shù)知識,以利于更好的教學(xué)同時(shí)加強(qiáng)學(xué)員和老師、學(xué)員與學(xué)員之間的學(xué)習(xí)交流,以JAVA編程語言為基礎(chǔ),涵蓋了JAVA中的GUI、SWING、網(wǎng)絡(luò)編程、網(wǎng)絡(luò)通訊、多線程技術(shù)等一些JavaSE技術(shù)所開發(fā)</p><p> 該系統(tǒng)的主體是局域網(wǎng)聊天通信,它主要實(shí)現(xiàn)了用戶注冊、登錄功能,提供了單對單,
20、單對多之間的私人信息聊天,局域網(wǎng)內(nèi)之間的群聊,以及局域網(wǎng)內(nèi)人與人之間的文件傳輸?shù)裙δ?,它給學(xué)員提供了一個(gè)交流、互動的平臺,為學(xué)員的學(xué)習(xí)提供了堅(jiān)實(shí)的學(xué)習(xí)平臺。在當(dāng)今信息瞬息萬變的時(shí)代,在計(jì)算機(jī)普及千家萬戶的今天,此系統(tǒng)的開發(fā)在交流和現(xiàn)代化的教學(xué)體系改革方面發(fā)揮了積極的作用。</p><p><b> 論文的組織結(jié)構(gòu)</b></p><p> 第一部分:前言。介紹了論
21、文的選題背景、主要內(nèi)容和研究意義。</p><p> 第二部分:系統(tǒng)的需求分析。對系統(tǒng)的開發(fā)與設(shè)計(jì)進(jìn)行需求分析。</p><p> 第三部分:系統(tǒng)的總體設(shè)計(jì)。對整個(gè)系統(tǒng)進(jìn)行總體的概述說明。</p><p> 第四部分:系統(tǒng)主要功能模塊的設(shè)計(jì)。對各模塊的設(shè)計(jì)進(jìn)行詳細(xì)說明。</p><p> 第五部分:局域網(wǎng)聊天系統(tǒng)測試。對系統(tǒng)的各個(gè)模塊
22、進(jìn)行測試。</p><p> 第六部分:結(jié)論。對整個(gè)設(shè)計(jì)的總結(jié)。</p><p><b> 第七部分:謝辭。</b></p><p> 第八部分:參考文獻(xiàn)。</p><p> 第1章 系統(tǒng)的需求分析</p><p> 1.1 課題技術(shù)支持</p><p> 運(yùn)用
23、面向?qū)ο笏枷?,通過較完善的挖掘,構(gòu)建穩(wěn)定的底層通訊框架。</p><p> 目標(biāo):“真實(shí)建模”“最大可重用”“對變化有彈性”</p><p> 手段:抽象封裝/多態(tài)/繼承</p><p> 準(zhǔn)則:開閉原則/單一職責(zé)原則/對接口編程/里氏代換法則等</p><p> 工具:各種設(shè)計(jì)模式(單例/工廠/策略/代理/門面/適配器等)</
24、p><p><b> 1.2 系統(tǒng)分析</b></p><p> 應(yīng)用構(gòu)建通常分層實(shí)現(xiàn)表示層、業(yè)務(wù)層、持久層,結(jié)合該課題,</p><p> 業(yè)務(wù)層分析:課題核心是通訊,考慮到通訊是很多其他應(yīng)用實(shí)現(xiàn)的核心部分,建議搭建健壯并獨(dú)立的通訊平臺,以適應(yīng)未來系統(tǒng)擴(kuò)展和移植,目前的短消息傳遞可以作為該平臺的基本擴(kuò)展,以組件的形態(tài)插入到平臺上滿足需求。&
25、lt;/p><p> 數(shù)據(jù)訪問建議采用數(shù)據(jù)訪問對象,封裝對持久層的訪問細(xì)節(jié)。</p><p> 目前采用文件持久層,定制合理的文件格式,提高效能。并對持久層的未來擴(kuò)展,比如改為數(shù)據(jù)庫存儲做好鋪墊。</p><p> 表示層應(yīng)脫離業(yè)務(wù)模型層,獨(dú)立出來,表示層調(diào)整不應(yīng)振動到業(yè)務(wù)層。</p><p> 表示層一般考慮用戶體驗(yàn)問題,UI簡單易用并
26、美觀大方,才是最理想的軟件。</p><p><b> 1.3 需求分析</b></p><p> 聊天工具大多數(shù)由客戶端程序和服務(wù)器程序外加服務(wù)端,本程序采用客戶機(jī)/服務(wù)器架構(gòu)模式。通過Java提供的Socket類來連接客戶機(jī)和服務(wù)器并客戶機(jī)和服務(wù)器相互通行,由于聊天是多點(diǎn)對多點(diǎn)的聊天。主要有兩個(gè)應(yīng)用程序,分別為客戶程序和服務(wù)器程序。服務(wù)器應(yīng)用程序主要用于程序轉(zhuǎn)
27、發(fā),以及上所有用戶發(fā)送系統(tǒng)信息;客戶端程序主要用于客戶端聊天記錄的顯示和信息輸入,采用Client/Server體系結(jié)構(gòu),即客戶端/服務(wù)器結(jié)構(gòu)。聊天服務(wù)器專門用于監(jiān)控用戶狀態(tài)和轉(zhuǎn)發(fā)信息,客戶端負(fù)責(zé)接收消息用戶序列和消息文本發(fā)送到服務(wù)器。該聊天系統(tǒng)實(shí)現(xiàn)群聊用戶登錄,退出聊天系統(tǒng)等功能。</p><p> 1.4 相關(guān)理論知識</p><p> 本課題涉及到了網(wǎng)絡(luò)數(shù)據(jù)傳輸,需要了解相關(guān)的數(shù)
28、據(jù)網(wǎng)絡(luò)傳輸知識,網(wǎng)絡(luò)數(shù)據(jù)的傳輸是本課題不可繞過的技術(shù),所以了解相關(guān)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)闹R是相當(dāng)重要的。</p><p> 1.4.1 網(wǎng)絡(luò)通信與網(wǎng)絡(luò)協(xié)議基礎(chǔ)</p><p> Java語言可稱得上是當(dāng)今Internet上最流行的編程語言。對一個(gè)網(wǎng)絡(luò)功能,其他語言需要數(shù)行或數(shù)頁代碼,而Java也許只需要一條或幾條語句。下面介紹Java網(wǎng)絡(luò)編程涉及的計(jì)算機(jī)網(wǎng)絡(luò)的術(shù)語、概念。</p>
29、<p> 計(jì)算機(jī)網(wǎng)絡(luò)是計(jì)算機(jī)技術(shù)與通信技術(shù)相結(jié)合而形成的一種新的通信形式。計(jì)算機(jī)網(wǎng)絡(luò)由硬件和軟件組成,軟件包括網(wǎng)絡(luò)操作系統(tǒng)、通信軟件和網(wǎng)絡(luò)通信用的通信協(xié)議。</p><p> Internet允許各個(gè)部門和組織根據(jù)自己的需求和經(jīng)濟(jì)能力選擇自己的網(wǎng)絡(luò),然后再尋求一種方法將所有類型的網(wǎng)絡(luò)互連起來。Internet網(wǎng)絡(luò)體系結(jié)構(gòu)也稱為Internet網(wǎng)絡(luò)通信協(xié)議,它分為四個(gè)層次,TCP/IP協(xié)議(Tra
30、nsmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)是它不同層次協(xié)議的總稱。</p><p> 1.4.2 TCP/IP協(xié)議族</p><p> TCP/IP協(xié)議族中的傳輸層和互聯(lián)網(wǎng)層協(xié)議為網(wǎng)絡(luò)中的各主機(jī)提供通信服務(wù),它們也是實(shí)現(xiàn)應(yīng)用層協(xié)議的基礎(chǔ)。傳輸層TCP協(xié)議和互聯(lián)網(wǎng)層IP協(xié)議是TCP/IP協(xié)議族中的核心協(xié)議。<
31、/p><p> 1. 傳輸控制協(xié)議TCP</p><p> 傳輸控制協(xié)議(TCP)TCP/IP協(xié)議族中的傳輸層,提供可靠的數(shù)據(jù)傳輸服務(wù)。TCP是一種面向連接的傳輸層協(xié)議,意味著該協(xié)議準(zhǔn)備發(fā)送數(shù)據(jù)時(shí),通信之間必須建立起一個(gè)邏輯上的連接。TCP協(xié)議位于IP協(xié)議的上層,通過提供效驗(yàn)、流控制及序列信息彌補(bǔ)IP協(xié)議可靠性的缺陷。</p><p> 2. 互聯(lián)網(wǎng)層協(xié)議IP&l
32、t;/p><p> 互聯(lián)網(wǎng)層協(xié)議(IP)屬于TCP/IP模型的互聯(lián)網(wǎng)層。提供關(guān)于數(shù)據(jù)應(yīng)如何傳輸以及傳輸?shù)胶翁幍男畔?。IP是一種是TCP/IP可用于網(wǎng)絡(luò)連接的協(xié)議,即TCP/IP可跨域多個(gè)局域網(wǎng)段或通過路由器跨域多種類型的網(wǎng)絡(luò)。在一個(gè)網(wǎng)際環(huán)境中,被連接在一起的單個(gè)網(wǎng)絡(luò)被稱為子網(wǎng)。</p><p> 數(shù)據(jù)幀的IP部分被稱為一個(gè)IP數(shù)據(jù)包,IP數(shù)據(jù)包如同數(shù)據(jù)的封面,包含了路由器在子網(wǎng)中傳輸數(shù)據(jù)所
33、在必須的信息。IP數(shù)據(jù)包包括頭和數(shù)據(jù),總長度不能超過65535字節(jié)。</p><p> IP協(xié)議是一種不可靠的、無連接的協(xié)議。然而,TCP/IP協(xié)議族中更高層協(xié)議可使用IP信息確保數(shù)據(jù)包按正確的地址進(jìn)行傳輸。IP數(shù)據(jù)包并不包含一個(gè)校驗(yàn)和部件,包頭校驗(yàn)僅僅驗(yàn)證IP包頭中路由信息的完整性。如果當(dāng)數(shù)據(jù)包被接收時(shí)伴隨信息的校驗(yàn)和值不正確,則數(shù)據(jù)包將被認(rèn)為已破壞并被拋棄,同時(shí),一個(gè)新的數(shù)據(jù)包被發(fā)送。</p>
34、<p> 3. 用戶數(shù)據(jù)包協(xié)議UDP</p><p> 用戶數(shù)據(jù)包協(xié)議UDP(User Datagram Protocol),位于TCP/IP模型的傳輸層。不同于TCP的是,它是一種無連接的傳輸服務(wù),它不保證數(shù)據(jù)包以正確的順序接收。</p><p> 1.4.3 面向?qū)ο蟮拈_發(fā)過程</p><p> 面向?qū)ο蟮能浖_發(fā)和相應(yīng)的面向?qū)ο蟮膯栴}求解是
35、當(dāng)今計(jì)算機(jī)技術(shù)發(fā)展的重要成果和趨勢之一,面向?qū)ο缶幊叹邆淞藥讉€(gè)優(yōu)點(diǎn),比如:代碼維護(hù)方便、可擴(kuò)展性好、支持代碼重用技術(shù)等等。這些優(yōu)點(diǎn)是面向過程編程語言所不具備的。下面我們就來談?wù)劽嫦驅(qū)ο蠹夹g(shù)的這些優(yōu)點(diǎn):</p><p><b> 1. 模塊化</b></p><p> 模塊化是面向?qū)ο缶幊讨械囊粋€(gè)特征。實(shí)體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空
36、間中添加一個(gè)類而不會影響該名字空間的其他成員。</p><p><b> 2. 可擴(kuò)充性</b></p><p> 是對現(xiàn)代應(yīng)用軟件提出的又一個(gè)重要要求,即要求應(yīng)用軟件能夠很方便,容易的進(jìn)行擴(kuò)充和修改,這種擴(kuò)充和修改的范圍不但涉及到軟件的內(nèi)容,也涉及到軟件的形式和工作機(jī)制。</p><p> 面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。如果有一個(gè)具有
37、某種功能的類,就可以很快地?cái)U(kuò)充這個(gè)類,創(chuàng)建一個(gè)具有擴(kuò)充的功能的類。</p><p> 面向?qū)ο蟮某绦蛟O(shè)計(jì)可以用很好的可擴(kuò)充性.這是由于類可以根據(jù)人對事物的理解而進(jìn)行豐富,沒有必要進(jìn)行作大的改動,可以利用繼承,對新的類添加屬性和方法.用它可以生成系統(tǒng)的簡單雛形,在征求用戶的意見,在加入新的類,以及類的方法與屬性等。</p><p><b> 3. 代碼重用</b>&
38、lt;/p><p> 可重用性是面向?qū)ο筌浖_發(fā)的一個(gè)核心思路.面向?qū)ο蟪绦蛟O(shè)計(jì)的抽象,封裝,繼承,多態(tài)的四大特點(diǎn)都無一例外,或多或少的圍繞著可重用性這個(gè)核心并為之服務(wù)。</p><p> 由于功能是被封裝在類中的,并且類是作為一個(gè)獨(dú)立實(shí)體而存在的,提供一個(gè)類庫就非常簡單了。</p><p> 1.4.4 開發(fā)工具</p><p> 采用
39、jdk1.6開發(fā)包,Java運(yùn)行環(huán)境為:Java(TM) SE Runtime Environment (build 1.6.0_10-b33)</p><p> 開發(fā)工具:Myeclipse8.5</p><p> 1.4.5 運(yùn)行環(huán)境</p><p><b> 硬件環(huán)境</b></p><p> 處理器:In
40、terCR300 或更高</p><p> 內(nèi)存:128MB或更高(建議256MB)</p><p> 硬盤空間:80MB以上</p><p><b> 軟件環(huán)境</b></p><p> 軟件環(huán)境是一個(gè)系統(tǒng)開發(fā)的工具,它取決于開發(fā)人員對軟件的熟悉程度,如果開發(fā)人員選擇一個(gè)不熟悉的軟件開發(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ā)方法的選擇上,選擇了演繹式原型法與生命周期法相結(jié)合的方法。具體來說,就是在系統(tǒng)開發(fā)之前對系統(tǒng)有一個(gè)總
42、體框架設(shè)想,各功能單元的結(jié)構(gòu)和功能也比較清楚,但是還沒有具體實(shí)現(xiàn)。系統(tǒng)完成什么功能,分成哪幾個(gè)部分,各個(gè)部分又有哪幾個(gè)模塊,都已理解掌握,且以后不需要做更大的變動,只是具體到每個(gè)模塊,還沒有全部實(shí)現(xiàn)。具體地設(shè)計(jì)可能是完全實(shí)現(xiàn)一個(gè)模塊,也可能是用一個(gè)效率高地模塊代替一個(gè)舊模塊。信息系統(tǒng)的開發(fā)是一項(xiàng)比較復(fù)雜的工作,我們必須選用科學(xué)的有效的開發(fā)方法。近年來,國內(nèi)外已逐步總結(jié)出一些開發(fā)信息系統(tǒng)的方法和技術(shù),但是,從目前的情況來看,系統(tǒng)的開發(fā)技術(shù)
43、仍是一個(gè)比較薄弱的環(huán)節(jié)。那么根據(jù)本系統(tǒng)開發(fā)的要求,本系統(tǒng)選擇了生命周期法和原型法相結(jié)合的方法。現(xiàn)具體介紹如下:</p><p> 生命周期這個(gè)概念源于系統(tǒng)工程方法。廣義地說,任何系統(tǒng)均有其發(fā)生、發(fā)展、成熟、消亡或更新?lián)Q代的過程,這個(gè)過程稱為系統(tǒng)的生命周期。主要包括系統(tǒng)調(diào)查階段、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施及系統(tǒng)維護(hù)與評價(jià)五個(gè)部分。根據(jù)系統(tǒng)設(shè)計(jì)而對整個(gè)系統(tǒng)實(shí)施,包括物理實(shí)施,程序設(shè)計(jì),調(diào)試等。實(shí)施是最后的一步,關(guān)
44、系著最后的成功。</p><p> 在建筑學(xué)和機(jī)械設(shè)計(jì)學(xué)中,“原型”指的是其結(jié)構(gòu)、大小和功能都與某個(gè)物體相類似的模擬該物體的原始模型。在管理信息系統(tǒng)開發(fā)中,用“原型”來形象地表示系統(tǒng)的一個(gè)早期可運(yùn)行版本,它能反映新系統(tǒng)的部分重要功能和特征?!霸头椒ā眲t是利用原型輔助開發(fā)系統(tǒng)的一種新方法。原型方法要求在獲得一組基本的用戶需求后,快速地實(shí)現(xiàn)新系統(tǒng)的一個(gè)“原型”,用戶、開發(fā)者及其他有關(guān)人員在試用原型的過程中,加強(qiáng)通
45、信和反饋,通過反復(fù)評價(jià)和反復(fù)修改原型系統(tǒng),逐步確定各種需求的細(xì)節(jié),適應(yīng)需求的變化,從而最終提高新系統(tǒng)的質(zhì)量。因此可以認(rèn)為原型方法確定用戶需求的策略,它對用戶需求的定義采用啟發(fā)的方式,引導(dǎo)用戶在對系統(tǒng)逐漸加深理解的過程中作出響應(yīng)。</p><p> 原型法主要包括確定系統(tǒng)基本需求階段、構(gòu)造初始原型階段、原型的使用評價(jià)階段、修改原型階段和確定模型后的處理階段。</p><p> 原型法的基
46、本思想是:憑借著系統(tǒng)分析人員對用戶要求的理解,在強(qiáng)有力的軟件環(huán)境支持下,快速地給出一個(gè)實(shí)實(shí)在在的模型(或稱原型、雛形),然后與用戶反復(fù)協(xié)商修改,最終形成實(shí)際系統(tǒng)。</p><p> 在本系統(tǒng)中選擇了演化型(EvolutionaryPrototying)原型法,其目的不在于改進(jìn)規(guī)格說明和用戶需求,而是將系統(tǒng)改造得易于變化,在改進(jìn)原型的過程中將原型演化成最終系統(tǒng)。它將原型方法的思想貫穿到系統(tǒng)開發(fā)全過程,對滿足需求的
47、改動較為適合。</p><p> 第2章 系統(tǒng)的總體設(shè)計(jì)</p><p> 2.1 功能需求描述 </p><p> 聊天工具大多數(shù)由客戶端程序和服務(wù)器程序外加服務(wù)端,本程序采用客戶機(jī)/服務(wù)器架構(gòu)模式。通過Java提供的Socket類來連接客戶機(jī)和服務(wù)器并客戶機(jī)和服務(wù)器相互通行,由于聊天是多點(diǎn)對多點(diǎn)的聊天。主要有兩個(gè)應(yīng)用程序,分別為客戶程序和服務(wù)器程序。服務(wù)
48、器應(yīng)用程序主要用于程序轉(zhuǎn)發(fā),以及上所有用戶發(fā)送系統(tǒng)信息;客戶端程序主要用于客戶端聊天記錄的顯示和信息輸入,采用Client/Server體系結(jié)構(gòu),即客戶端/服務(wù)器結(jié)構(gòu)。聊天服務(wù)器專門用于監(jiān)控用戶狀態(tài)和轉(zhuǎn)發(fā)信息,客戶端負(fù)責(zé)接收消息用戶序列和消息文本發(fā)送到服務(wù)器。該聊天系統(tǒng)實(shí)現(xiàn)群聊用戶登錄,退出聊天系統(tǒng)等功能。</p><p> 2.2 目標(biāo)系統(tǒng)要求</p><p> 整體上要實(shí)現(xiàn)對用戶注
49、冊,登陸,好友上線,好友下線,單發(fā)消息,群發(fā)消息等功能。</p><p><b> 2.3 總體設(shè)計(jì)</b></p><p> 為了使本系統(tǒng)在設(shè)計(jì)中更加方便和直觀,所以使用了面向?qū)ο蟮脑O(shè)計(jì)思想。面向?qū)ο笤O(shè)計(jì)不再是單純的從代碼的第一行一直編到最后一行,而是考慮如何創(chuàng)建類和對象,利用類和對象來簡化程序設(shè)計(jì),并提供代碼的封裝和可重用性,便于程序的維護(hù)與擴(kuò)展。</p
50、><p> 所謂的對象是一種抽象的名稱,用來對應(yīng)實(shí)現(xiàn)世界存在的"東西"。一個(gè)窗口、一個(gè)按鈕、一個(gè)菜單都可視為一個(gè)對象,而按鈕對象、菜單對象、又會出現(xiàn)在窗口對象中,因此按鈕對象、菜單對象便是窗口的組件之一。對象內(nèi)部的數(shù)據(jù)是不能隨意更改的,必須由外部向其傳遞信息,再由對象按其方法加以處理。用戶無需知道其任何細(xì)節(jié),操作是封閉的,對象之間能通過函數(shù)調(diào)用相互通信。</p><p>
51、 類可視為一個(gè)產(chǎn)品模具、一個(gè)模塊。在面向?qū)ο笤O(shè)計(jì)中,類是對象的原型,是對象的制作器。類的概念是面向?qū)ο蟪绦蛟O(shè)計(jì)最重要的特征。所謂類,是指由數(shù)據(jù)結(jié)構(gòu)及其相關(guān)操作所形成的集合,描述該類任一對象的共同的行為特征,是對一組性質(zhì)相同的對象的程序描述,概括了對象的共同性質(zhì)和數(shù)據(jù)。面向?qū)ο笤O(shè)計(jì)的核心是類的設(shè)計(jì)。</p><p> 本系統(tǒng)主要劃分為客戶端、服務(wù)器兩部分。客戶端主要完成對用戶發(fā)送的信息進(jìn)行處理、登錄、注冊的處理
52、,客戶端功能如圖2-1所示。</p><p> 圖2-1 客戶端功能圖</p><p> 服務(wù)器段主要是接受客戶端響應(yīng)的請求來就行處理,在客戶端發(fā)送給服務(wù)器的時(shí)候?qū)⒄埱蠓庋b成特定格式的對象發(fā)送給服務(wù)器,服務(wù)器根據(jù)請求來做出響應(yīng)的處理,服務(wù)器端的功能圖如圖2-2所示。</p><p> 圖2-2 服務(wù)器端功能圖</p><p> 第3章
53、 系統(tǒng)主要功能模塊設(shè)計(jì)</p><p><b> 3.1 課題分析</b></p><p> 系統(tǒng)需求分析由項(xiàng)目小組成員經(jīng)過多次的小組會議與討論,最終制定一套統(tǒng)一的系統(tǒng)設(shè)計(jì)框架(用例和類圖)。經(jīng)過討論為促進(jìn)小組成員對課題核心技術(shù)的理解和掌握,在設(shè)計(jì)階段要求課題小組成員都要對課題核心技術(shù)進(jìn)行相對的設(shè)計(jì),另外要完成系統(tǒng)部分具體功能的實(shí)現(xiàn)。</p><
54、;p> 3.1.1 系統(tǒng)協(xié)議</p><p> 本系統(tǒng)為即時(shí)通信系統(tǒng),主要以傳遞信息為主,經(jīng)過分析制定信息傳遞格式為:定義一個(gè)類,讓類實(shí)現(xiàn)可序列化接口,類中定義其需要傳輸?shù)男畔槠涑蓡T變量,信息以字可以序列化的對象進(jìn)行傳遞。</p><p> 3.1.2 系統(tǒng)核心技術(shù)</p><p> 1. 客戶端:客戶端利用對套接字輸入流、輸出流進(jìn)行傳遞保持連接的持
55、續(xù)。設(shè)計(jì)一個(gè)工具類,其類定義兩個(gè)MAP成員變量,用于存儲單獨(dú)聊天窗口和群聊聊天窗口。在定義一個(gè)工具類存儲好友列表窗體。</p><p> 2. 服務(wù)器端:采用多線程,定義信息處理接口,利用MAP存取在線用戶與其對應(yīng)的輸出流,采用數(shù)據(jù)庫技術(shù)存儲用戶的各種信息。</p><p> 3.2 客戶端設(shè)計(jì)圖例</p><p> 3.2.1 客戶端流程圖</p>
56、;<p> 客戶端功能圖簡明扼要地展現(xiàn)了客戶端的工作流程,如圖3-1所示。</p><p> 圖3-1 客戶端流程圖</p><p> 3.3 客戶端功能介紹及實(shí)現(xiàn)</p><p> 客戶端是多個(gè)圖形界面的組合,包括注冊界面、登錄界面、好友列表界面和聊天窗體界面,各個(gè)圖形界面完成各自的功能。其主要功能如下:</p><p&g
57、t; (1) 完成用戶的注冊;</p><p> (2) 客戶的登陸;</p><p> (3) 客戶信息之間的單聊、群發(fā)。</p><p> 3.3.1 客戶端相關(guān)類的簡介</p><p> 1. 客戶端相關(guān)類的簡介——QqClientLogin類</p><p> 功能:qq客戶端登錄界面</p&
58、gt;<p><b> 登錄界面實(shí)現(xiàn)介紹:</b></p><p> 整個(gè)Frame由北部,中部,南部三個(gè)部分組成。北部有一個(gè)Label; 中部有一個(gè)Panel(panel2),而這個(gè)Panel是一個(gè)3行3列的網(wǎng)格布局;南部有一個(gè)Panel(panel1) ,這個(gè)panel上有三個(gè)按鈕。登錄界面如圖3-3所示。</p><p><b>
59、圖3-3 登錄界面</b></p><p> 注冊窗體:單機(jī)登錄界面注冊向?qū)t關(guān)閉當(dāng)前登錄窗體,彈出注冊窗體,注冊窗體需要用戶注冊用戶的基本信息,注冊窗體如圖3-4所示。</p><p><b> 圖3-4 注冊窗體</b></p><p> 2. 客戶端相關(guān)類的簡介——QqFriendList類</p><
60、;p> 功能:qq客戶端好友列表框界面</p><p> InfomBack類中更新在線的好友情況,關(guān)鍵代碼如下:</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> 好友列表框?qū)崿F(xiàn)介紹: </p><p&
67、gt; 這個(gè)列表框是個(gè)選項(xiàng)卡布局。分為“我的好友”,“陌生人”兩個(gè)選項(xiàng)卡。在此,只實(shí)現(xiàn)我的好友選項(xiàng)卡,其余兩個(gè)制作成兩個(gè)按鈕,不實(shí)現(xiàn)其功能。整個(gè)Panel(Panel1是個(gè)BorderLayout布局)由北部,中部,南部三個(gè)部分組成。北部有一個(gè)Button(我的好友);中部有一個(gè)ScrollPane (該控件中還有Panel(Panel2),該P(yáng)anel是一個(gè)N行一列的網(wǎng)格布局(假設(shè)有50個(gè)好友)。其中存放好友頭像和編號(好友頭像由L
68、abel數(shù)組處理));南部還有一個(gè)Panel(Panel3)(該P(yáng)anel是一個(gè)2行1列的網(wǎng)格布局,其上放著兩個(gè)按鈕“陌生人”,群發(fā)信息”)??偣灿玫饺齻€(gè)Panel,注意順序。好友列表界面如圖3-5所示。</p><p><b> 圖3-5 好友列表</b></p><p> 3. 客戶端相關(guān)類的簡介——QqChat類</p><p>
69、功能:這是與好友單聊的界面如圖3-6 聊天窗體</p><p> 聊天界面實(shí)現(xiàn)介紹: </p><p> 整個(gè)Frame只有四個(gè)控件組成。一個(gè)文本域(TextArea),兩個(gè)面板(Panel), 兩個(gè)文本框(TextField),三個(gè)按鈕(Button)。這個(gè)Frame是個(gè)默認(rèn)的BorderLayout布局,中部是個(gè)文本域;南部是個(gè)面板,而這個(gè)面板上面有一個(gè)文本框和一個(gè)按鈕;北部是個(gè)面
70、板,而這個(gè)面板是個(gè)默認(rèn)的BorderLayout布局,北部有一個(gè)文本框,西部和東部各有一個(gè)按鈕。聊天窗體如圖3-6所示。</p><p><b> 圖3-6 聊天窗體</b></p><p> 4. 客戶端相關(guān)類的簡介——QqAllChat類</p><p> 功能:這是與好友群聊的界面</p><p> sho
71、wAllMessage(Message m)顯示群聊信息</p><p> 聊天界面實(shí)現(xiàn)介紹: </p><p> 整個(gè)Frame只有四個(gè)控件組成。一個(gè)文本域(TextArea),一個(gè)面板(Panel), 一個(gè)文本框(TextField),一個(gè)按鈕(Button)。這個(gè)Frame是個(gè)默認(rèn)的BorderLayout布局,中部是個(gè)文本域;南部是個(gè)面板,而這個(gè)面板上面有一個(gè)文本框和一個(gè)按鈕。
72、</p><p> 5. 客戶端相關(guān)類的簡介——ClientConServerThread類</p><p> 功能: 這是客戶端和服務(wù)器端保持通訊的線程。不斷的讀取從服務(wù)器端發(fā)來的信息并進(jìn)行判斷是哪類型的信息,然后做相應(yīng)的處理。</p><p> 功能描述:本系統(tǒng)之間的通信遵守一定的協(xié)議當(dāng)用戶登錄的時(shí)候?qū)⒆约旱膸ぬ柮艽a與登錄的標(biāo)志發(fā)送給服務(wù)器,服務(wù)器接收到信
73、息以后解析一下信息,驗(yàn)證帳號密碼是否正確,若是正確則客戶端與服務(wù)器建立連接,同時(shí)服務(wù)器將上線好友的信息發(fā)送給每一個(gè)在線的好友,刷新好友列表,同樣的當(dāng)好友下線的時(shí)候發(fā)送信息給服務(wù)器,服務(wù)器進(jìn)行解析將下線好友信息發(fā)送過給每一個(gè)在線好友進(jìn)行好友列表的刷新,當(dāng)單發(fā)群發(fā)的時(shí)候都發(fā)送信息給服務(wù)器,服務(wù)器根據(jù)之前定力的協(xié)議進(jìn)行處理,發(fā)送給相應(yīng)的用戶。</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. 客戶端相關(guān)類的簡介——QqClientConServer類</p><p> 功能:這是客戶端連接服務(wù)器的后臺</p><p> 驗(yàn)證用戶注冊、登錄信息的地方,若登錄成功為該用戶啟動與服務(wù)器通訊的線程。</p><p> 當(dāng)用戶登錄的時(shí)候
79、啟動一個(gè)線程將自己的帳號密碼進(jìn)行處理,處理成特定的格式,發(fā)送給服務(wù)器服務(wù)器將帳號、密碼提取出來,與服務(wù)器中保存的信息進(jìn)行比較,如果帳號密碼都正確則,讓客戶端與服務(wù)器成功連接,將好友的信息發(fā)送給每一個(gè)好友。</p><p> 3.3.2 客戶端的管理類類的簡介</p><p> 1. ManageClientConServerThread類</p><p> 功
80、能:這是一個(gè)管理客戶端和服務(wù)器保持通訊的線程類</p><p> 使用HashMap將用戶與該用戶與服務(wù)器通訊的線程進(jìn)行綁定</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將用戶自己與自己的好友列表進(jìn)行綁定</p><p> addQqFri
82、endList(String qqid,QqFriendList qqFriendList)</p><p> QqFriendList getQqFriendList(String qqId)</p><p> 3. ManageQqChat類</p><p> 功能:這是一個(gè)管理用戶聊天界面的類</p><p> 使用HashMa
83、p將和每個(gè)好友與對應(yīng)的聊天界面進(jìn)行綁定</p><p> addQqChat(String loginIdAndFriendId,QqChat qqChat)</p><p> getQqChat(String loginIdAndFriendId)獲取聊天界面</p><p> 4. ManageQqAllChat類</p><p>
84、 功能:這是一個(gè)管理用戶群聊天界面的類</p><p> 使用HashMap將和每個(gè)好友與對應(yīng)的群聊天界面進(jìn)行綁定</p><p> addQqAllChat(String loginIdAndFriendId,QqAllChat qqAllChat)</p><p> getQqAllChat(String loginIdAndFriendId)獲取群聊天
85、界面</p><p> 3.3.3 輔助類或接口</p><p> 可序列化類:為了課題的實(shí)現(xiàn)方便,數(shù)據(jù)的傳輸利用了JAVA語言中特有的一個(gè)語言特點(diǎn)——對象的可序列化。利用對象的可序列話,實(shí)現(xiàn)了數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。必須注意一點(diǎn)的是,因?yàn)槭菍?shí)現(xiàn)在不同獨(dú)立計(jì)算機(jī)上的數(shù)據(jù)傳輸,所以服務(wù)器與客戶端都有一份可序列化類的包,其序列化編號必須一致,這樣在數(shù)據(jù)傳輸過程中服務(wù)器與客戶端才能夠認(rèn)識該序列化
86、的對象,這些序列化對象其實(shí)就相當(dāng)于服務(wù)器與客戶端之間的一個(gè)協(xié)議。</p><p> 可序列化類——傳遞的信息類:Message類</p><p> 該類是信息傳遞包,是普通的信息在服務(wù)器與客戶端之間傳遞信息的最基本的可序列化對象,該包是客戶端之間聊天信息傳輸?shù)妮d體,里面包含了通訊信息的基本內(nèi)容。</p><p> 可序列化類——用戶信息類:User類</
87、p><p> 該類是傳輸用戶登錄信息的包,其成員變量是登錄界面輸入的帳號與密碼,通過該類的包裝傳輸?shù)椒?wù)器,服務(wù)器進(jìn)行驗(yàn)證。其用途在連接服務(wù)器是發(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 服務(wù)器設(shè)計(jì)圖例</p>
92、<p> 3.4.1 服務(wù)器流程圖</p><p> 服務(wù)器端流程圖簡明扼要地展現(xiàn)了服務(wù)器端的工作流程,如圖3-7所示。</p><p> 圖3-7 服務(wù)器流程圖</p><p> 3.5 服務(wù)器端功能介紹及實(shí)現(xiàn)</p><p> 服務(wù)器起到中轉(zhuǎn)信息,服務(wù)器端用于接收客戶端發(fā)來的各種信息類型(注冊信息、登錄信息、好友上
93、線信息、好友下線信息、普通聊天信息、文件傳輸信息以及群內(nèi)聊天信息),并根據(jù)不同的信息類型作相應(yīng)的信息處理,用戶好友管理,用戶注冊等等核心功能,都要在服務(wù)器的正常運(yùn)行下才能正確的執(zhí)行這些功能,因此服務(wù)器的好壞直接關(guān)系到整個(gè)局域網(wǎng)聊天系統(tǒng)的好壞,服務(wù)器端的設(shè)計(jì)也相應(yīng)的成為了本系統(tǒng)的核心設(shè)計(jì)。其主要功能為:實(shí)現(xiàn)連接來自不同端口的socket,并為之提供獨(dú)立線程,完成信息的轉(zhuǎn)發(fā)。</p><p> 3.5.1 服務(wù)器端
94、相關(guān)類的簡介</p><p> 1. 服務(wù)器相關(guān)類的簡介——MyQqServer類</p><p> 功能: qq服務(wù)器端在監(jiān)聽、等待某個(gè)qq客戶端,并進(jìn)行連接。</p><p> 驗(yàn)證注冊的用戶是否存在;</p><p> 驗(yàn)證登錄的用戶是否存在,若存在登錄的用戶則啟動與該客戶端的通信線程。</p><p>
95、 2. 服務(wù)器相關(guān)類的簡介——ManageClientThread類</p><p> 功能: 用于綁定管理用戶id和服務(wù)器與用戶通信的線程,用HashMap將用戶和與客戶端通訊線程進(jìn)行綁定。關(guān)鍵代碼如下:</p><p> public static HashMap<String,SerConClientThread> hm = </p><p>
96、; new HashMap<String,SerConClientThread>();</p><p> //向hm中添加一個(gè)客戶端通訊線程</p><p> public static void addClientThread(String uid,SerConClientThread ct) {</p><p> hm.put(uid,ct
97、);</p><p><b> }</b></p><p> 3.服務(wù)器相關(guān)類的簡介——SerConClientThread類</p><p> 功能:服務(wù)器和某個(gè)客戶端的通信線程,對從客戶端取得的消息進(jìn)行判斷,然后做相應(yīng)的處理。</p><p> 服務(wù)器端接收到信息后提取出來相應(yīng)的信息判斷若id的值為空則為群聊
98、天則將信息發(fā)送給每一個(gè)在線的好友,如果不為空的時(shí)候就發(fā)送給對應(yīng)的好友。</p><p> 4.服務(wù)器相關(guān)類的簡介——MyServerFrame類</p><p> 功能:這是服務(wù)器端的控制界面,可以完成啟動服務(wù)器,關(guān)閉服務(wù)器。</p><p> 3.5.2 服務(wù)器與客戶端的數(shù)據(jù)傳遞原理</p><p> 服務(wù)器與客戶機(jī)之間存在著大量的
99、數(shù)據(jù)傳遞,主要通過3個(gè)過程:</p><p> 首先通過服務(wù)器端套接字ServerSocket的構(gòu)造方法構(gòu)建服務(wù)器套接字,并綁定特定端口。然后在客戶機(jī)端程序中,利用客戶端套接字Socket的構(gòu)造方法Socket(InetAdress addresss ,int port)創(chuàng)建一個(gè)套接字流,并將其連接到指定IP地址的指定端口號,其IP地址可以用InetAdress。getByname(服務(wù)器IP地址)表示,從而與
100、服務(wù)器IP地址可以表示為:InetAdress。getLocalHost(),port)</p><p> 在客戶端建立數(shù)據(jù)輸入流類ObjectInputStream的實(shí)例read,用于從服務(wù)器中讀取數(shù)據(jù),同時(shí)建立數(shù)據(jù)輸出流類ObjectOutputStream的實(shí)例write 用于上服務(wù)器發(fā)送數(shù)據(jù),從而構(gòu)造了客戶機(jī)與服務(wù)器之間的數(shù)據(jù)通道。</p><p> 通過類ObjectInpu
101、tStream的read()方法讀取來自數(shù)據(jù)流的數(shù)據(jù),如:</p><p> readObject() 讀取序列化對象。通過類ObjectOutputStream的writeObject()方法上數(shù)據(jù)流寫入數(shù)據(jù),如:writeObject ()寫入序列化</p><p><b> 對象。</b></p><p><b> 3.6
102、總結(jié)</b></p><p> 這個(gè)系統(tǒng)的總體設(shè)計(jì)主要分為客戶端、服務(wù)器兩大部分,客戶端登錄注冊的時(shí)候遵循一定的協(xié)議將客戶的信息發(fā)送給服務(wù)器,服務(wù)器進(jìn)行解析若是登錄將好友的信息發(fā)送給在線的每一個(gè)好友,若是注冊將注冊的信息發(fā)送給服務(wù)器保存在服務(wù)器端,在發(fā)送消息的時(shí)候遵守格式發(fā)送信息給服務(wù)器,服務(wù)器判斷出來是群發(fā)還是單發(fā)單發(fā)就發(fā)送給相應(yīng)的用戶,群發(fā)的時(shí)候就發(fā)送給每一個(gè)在線的好友。</p>
103、<p><b> 第4章 系統(tǒng)測試</b></p><p><b> 4.1 課題測試</b></p><p> 在系統(tǒng)的詳細(xì)設(shè)計(jì)以及編碼過程進(jìn)行完成之后,就要對辦公自動化管理系統(tǒng)的程序進(jìn)行測試。軟件測試是軟件開發(fā)過程中的一個(gè)重要環(huán)節(jié)。軟件測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的
104、測試方案;成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)出一批測試用例,并利用測試用例來運(yùn)行程序,以發(fā)現(xiàn)程序錯誤的過程。測試階段的主要任務(wù)是盡量發(fā)現(xiàn)程序錯誤,改正錯誤,直至程序的功能、性能滿足用戶需求。</p><p> 在課題測試階段,系統(tǒng)過分析,測試方案針對系統(tǒng)的登錄、注冊、在線人員的更新、單聊、多聊進(jìn)行分布測試。測試主要分成兩部分,第一部分
105、測試主要是在開發(fā)期間,當(dāng)完成單個(gè)組件或功能進(jìn)行測試,這部分測試也成為白箱測試,即在開發(fā)者的測試,了解各個(gè)代碼的用途、作用,更具其知識解決相應(yīng)的問題;第二部分則是在測試階段進(jìn)行的全面的測試,同時(shí)也稱為黑箱測試,該測試假設(shè)完全不知道代碼的情況下進(jìn)行測試,主要測試課題還存在那些漏洞及課題在開發(fā)中沒有想到的功能等。</p><p> 4.2 測試類型簡單介紹</p><p> 4.2.1 單元
106、測試</p><p> 又稱模塊測試,是針對軟件設(shè)計(jì)的最小單元程序模塊進(jìn)行測試的工作。其目的是發(fā)現(xiàn)模塊內(nèi)部的錯誤,修改這些錯誤使其代碼能夠正確運(yùn)行。其中,多個(gè)功能獨(dú)立的程序模塊可并行進(jìn)行測試。</p><p> 4.2.2 集成測試</p><p> 又稱組裝測試,它的任務(wù)是按照一定的策略對單元測試的模塊進(jìn)行組</p><p> 裝,
107、并在組裝過程中進(jìn)行模塊接口與系統(tǒng)功能測試。集成測試的策略主要有兩種:一次性組裝方式和增值式組裝方式。</p><p> 4.2.3 有效性測試</p><p> 又稱確認(rèn)測試,目的是驗(yàn)證軟件的有效性,即驗(yàn)證軟件的功能和性能及其他特性是否符合用戶要求。軟件的功能和性能要求參照軟件需求說明書。</p><p> 4.2.4 系統(tǒng)測試</p><
108、p> 系統(tǒng)測試的目的是為了測試軟件安裝到實(shí)際應(yīng)用的系統(tǒng)中后,能否與系統(tǒng)的其余部分協(xié)調(diào)工作,以及對系統(tǒng)運(yùn)行可能出現(xiàn)的各種情況的處理能力。</p><p><b> 4.3 測試過程</b></p><p> 4.3.1 登錄測試</p><p> 1. 若登錄密碼錯誤,如圖4-1所示:</p><p> 圖
109、4-1 登錄密碼錯誤</p><p> 測試結(jié)論:當(dāng)密碼帳號輸入錯誤的時(shí)候彈出這個(gè)提示框。</p><p> 如果成功等錄,則界面轉(zhuǎn)向好友列表界面。</p><p> 4.3.2 注冊測試</p><p> 1. 注冊信息不符合規(guī)范,如圖4-2和4-3所示:</p><p> 圖4-2 注冊密碼和確認(rèn)密碼不相
110、同</p><p> 測試結(jié)論:當(dāng)兩次密碼輸入不一樣的時(shí)候出現(xiàn)錯誤提示。</p><p> 圖4-3 用戶名和密碼不能為空</p><p> 測試結(jié)論:注冊的時(shí)候密碼帳號沒有填寫時(shí)則出現(xiàn)錯誤提示</p><p> 注冊的帳號已存在,如圖4-4所示:</p><p> 圖4-4 用戶名已存在</p>
111、<p> 測試結(jié)論:注冊的帳號已經(jīng)存在則出現(xiàn)錯誤提示框</p><p> 注冊成功,如圖4-5所示:</p><p><b> 圖4-5 注冊成功</b></p><p> 測試結(jié)論:注冊成功的時(shí)候出現(xiàn)這個(gè)界面</p><p> 4.3.3 聊天測試</p><p> 聊
112、天功能的測試如圖如圖4-6所示:</p><p><b> 圖4-6聊天測試</b></p><p><b> 4.4 總結(jié)</b></p><p> 經(jīng)過一系列的測試,整個(gè)系統(tǒng)的功能基本上都已基本完成,注冊、登錄都已完成,相應(yīng)的提示都有。單聊、群聊功能也已經(jīng)實(shí)現(xiàn),消息的接收、用戶上線、下線也都已實(shí)現(xiàn),主要的缺陷就是
113、對上線、下線、消息的接收沒有明顯的提示,不便于用戶看到。</p><p><b> 結(jié) 論</b></p><p> 互聯(lián)網(wǎng)從誕生以來,就開影響這地球的每一個(gè)角落,給予了人類一種全新的生活方式,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,信息技術(shù)也層次不窮,即時(shí)通訊系統(tǒng)就是這么一種以聊天形式為主的廣受歡迎的互聯(lián)網(wǎng)技術(shù),即時(shí)通訊技術(shù)最基本的功能是通過計(jì)算機(jī)之間的文本數(shù)據(jù)的互換的形式實(shí)現(xiàn)思
114、想的交流與溝通,是一種方便快捷的通訊方式。本課題對即時(shí)通訊系統(tǒng)進(jìn)行了一定的深入了解與研究,討論了局域網(wǎng)即時(shí)通訊系統(tǒng)的分析與設(shè)計(jì)。 本課題開發(fā)的即時(shí)通訊系統(tǒng)已經(jīng)初步完成,其登錄、注冊、聊天、好友上下線提示等基本功能已得以實(shí)現(xiàn),其服務(wù)器也能多個(gè)用戶同時(shí)連接服務(wù)器,服務(wù)器能正常運(yùn)行。本課題要求基本實(shí)現(xiàn)。但是本系統(tǒng)還有很多不足之處,如在聊天的時(shí)候沒有消息過濾功能,群聊與單聊都必須被動的接收消息,不能對其不想收到的消息進(jìn)行屏蔽,只有添加好
115、友功能卻沒有刪除好友功能。還有一點(diǎn)是,在真正的網(wǎng)絡(luò)數(shù)據(jù)傳輸中并不是已可序列化對象的方式進(jìn)行數(shù)據(jù)傳輸?shù)?,而是已XML方式進(jìn)行數(shù)據(jù)的傳輸,這里為了課體開發(fā)的需要,就用了可序列化對象的方式進(jìn)行數(shù)據(jù)傳輸。本系統(tǒng)在其它方面還有很多不足之處,這里就不一一列出??偠灾?,本課題的開發(fā)還有許多需要完善的地方,還要需要學(xué)習(xí)更多的</p><p><b> 謝 辭</b></p><p&g
116、t;<b> 參考文獻(xiàn)</b></p><p> [1] 陳煒,張曉蕾,侯燕萍著.Java軟件開發(fā)技術(shù).北京:人們郵電出版社</p><p> [2] 朱喜福,郭逢昌著.Java網(wǎng)絡(luò)應(yīng)用編程入門.北京:人民郵電出版社</p><p> [3] 胡伏湘,雷軍環(huán)著.Java程序設(shè)計(jì)實(shí)用教程.北京:清華大學(xué)出版社 </p>&l
117、t;p> [4] 耿祥義著.Java課程設(shè)計(jì).北京:清華大學(xué)出版社</p><p> [6] 鄭人杰著.計(jì)算機(jī)軟件測試技術(shù).北京:清華大學(xué)出版社</p><p> [7]畢廣吉.Java程序設(shè)計(jì)實(shí)例教程[M]. 北京:冶金工業(yè)出版社</p><p> [8].王保羅.Java面向?qū)ο蟪绦蛟O(shè)計(jì)[M]. 北京:清華大學(xué)出版社</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 即時(shí)通訊畢業(yè)設(shè)計(jì)--企業(yè)內(nèi)部即時(shí)通訊系統(tǒng)的設(shè)計(jì)
- 即時(shí)通訊工具畢業(yè)設(shè)計(jì)
- 即時(shí)通訊系統(tǒng)---畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---jqq即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- [優(yōu)秀畢業(yè)設(shè)計(jì)精品] 基于.net的即時(shí)通訊系統(tǒng)
- 即時(shí)通訊系統(tǒng)開題報(bào)告
- 文思海輝即時(shí)通訊系統(tǒng)設(shè)計(jì)
- 學(xué)術(shù)即時(shí)通訊mathq
- 安卓即時(shí)通訊
- 文思海輝即時(shí)通訊系統(tǒng)
- 即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--基于android平臺的即時(shí)通訊系統(tǒng)的研究與設(shè)計(jì)
- 即時(shí)通訊源代碼.rar
- 即時(shí)通訊源代碼.rar
- 企業(yè)即時(shí)通訊系統(tǒng)研究.pdf
- 畢業(yè)設(shè)計(jì)---基于bs模式即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)絡(luò)即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- [學(xué)習(xí)]網(wǎng)絡(luò)通訊工具-即時(shí)通訊
- 即時(shí)通訊軟件的設(shè)計(jì)2論文
評論
0/150
提交評論