畢業(yè)論文---基于j2se的即時通信軟件_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  摘要:I</b></p><p>  Abstract:II</p><p>  第一章 前 言1</p><p>  1.1 選題背景1</p><p>  1.2國內外研究現(xiàn)狀及發(fā)展

2、趨勢1</p><p>  1.2.1 國外研究現(xiàn)狀及發(fā)展趨1</p><p>  1.2.2國內研究現(xiàn)狀及發(fā)展趨勢1</p><p><b>  1.3選題意義2</b></p><p>  第二章 系統(tǒng)分析3</p><p>  2.1系統(tǒng)的可行性分析3</p>&

3、lt;p>  2.1.1技術可行性3</p><p>  2.1.2 經(jīng)濟可行性3</p><p>  2.2 系統(tǒng)的關鍵技術3</p><p>  2.3業(yè)務流程分析4</p><p>  第三章 系統(tǒng)設計5</p><p>  3.1 軟件模型概述5</p><p>  3

4、.2功能結構設計5</p><p>  3.3數(shù)據(jù)庫設計7</p><p>  第四章 詳細設計9</p><p>  4.1系統(tǒng)總體實現(xiàn)9</p><p>  4.1.1 開發(fā)平臺與開發(fā)工具9</p><p>  4.1.2 系統(tǒng)架構圖9</p><p>  4.2系統(tǒng)實現(xiàn)主要功

5、能如下:10</p><p>  4.2.1 服務器端界面11</p><p>  4.2.2 客戶端登錄界面12</p><p>  4.2.3 客戶端登錄后顯示好友界面13</p><p>  4.2.4 客戶端好友聊天界面13</p><p><b>  結 論15</b>&

6、lt;/p><p><b>  致 謝16</b></p><p>  參考文獻(Reference)17</p><p><b>  附錄18</b></p><p>  基于J2SE的即時通信軟件</p><p>  摘要:信息時代的到來引發(fā)了一場知識和信息革命,

7、計算機和現(xiàn)代網(wǎng)絡技術的廣泛應用極大地促進了社會經(jīng)濟的發(fā)展,同時也帶來了一些新興產(chǎn)業(yè)的發(fā)展,比如網(wǎng)絡間的即時通訊軟件。即時通訊已經(jīng)慢慢成為人們生活的一部分,呈現(xiàn)出良好的勢頭和廣闊的發(fā)展前景。即時通訊是一個通過國際互聯(lián)信息網(wǎng)絡進行多人通訊的一款軟件,它具有其他傳統(tǒng)通訊方式無法比擬的優(yōu)勢,快速,便捷、信息多元化等。正是這些特點,使它能夠成為當今最流行的信息交流方式。</p><p>  Java因其簡單,安全,跨平臺等

8、特點成為當今最流行的編程語言之一,已廣泛用于PC,Internet,移動設備上。因為Java的“一次編寫到處運行”的特點,所以已編寫的軟件不用修改或只需少量的修改就可以在其他設備上和操作系統(tǒng)上成功運行,可以極大的減少開發(fā)商的開發(fā)和維護成本。在當今硬件設備和軟件平臺(操作系統(tǒng))多元化的時代,用Java開發(fā)即時通信軟件是明智之舉</p><p>  關 鍵 詞:即時通信,Java,Access,網(wǎng)絡,Socket編程

9、</p><p>  Abstract: The advent of the information age has provoked a storm of knowledge and information revolution, the computer and the wide application of modern network technology has greatly promoted the

10、 development of social economy, but it also brings some emerging industries, such as instant messaging software between networks. Instant messaging has been slowly become part of people's life, showing a good momentu

11、m and broad development prospects. Instant messaging is an international Internet infor</p><p>  Java because of its simplicity, security, cross-platform and so become one of the most popular programming lan

12、guages, has been widely used in PC, Internet, mobile devices. Because Java's "write once, run anywhere" feature, so the software has been prepared without modification or with little modification to ot

13、her devices and can run successfully on operating systems, developers can greatly reduce the development and maintenance costs . In today's hardware and software platform (operating system)</p><p

14、>  Keywords:IM,Access,Java,Socket</p><p><b>  第一章 前 言</b></p><p><b>  1.1 選題背景</b></p><p>  要問到網(wǎng)絡時代發(fā)展最快的領域,無疑的,答案是即時通訊。即時通訊工具的實時交互、資費低廉等優(yōu)點深受用戶的喜愛,已經(jīng)成為網(wǎng)絡

15、生活中不可或缺的一部分,比如大家都很熟悉的騰訊QQ,MSN等。網(wǎng)民們通過即時通信進行溝通交流、結識新朋友、娛樂消遣時間、實現(xiàn)異地文字、語音、視頻的實時互通交流。同時,人們也認識到即時信息工具能夠帶來極高的生產(chǎn)力,諸多企事業(yè)單位借助它的使用,來提高業(yè)務協(xié)同性及反饋的敏感度和快捷度。作為使用頻率最高的網(wǎng)絡軟件,即時通訊已經(jīng)突破了作為技術工具的極限,被認為是現(xiàn)代交流方式的象征。</p><p>  即時通訊軟件是通過即

16、時通訊技術來實現(xiàn)在線聊天、交流的軟件。目前有2種架構形式,1、一種是C/S架構,采用客戶端/服務器形式,用戶使用過程中需要下載安裝客戶端軟件,典型的代表有:QQ、百度HI 、Skype、Gtalk、新浪UC、MSN等;2、采用B/S架構,即瀏覽器/服務端形式,這種形式的即時通訊軟件,直接借助互聯(lián)網(wǎng)為媒介、客戶端無需安裝任何軟件,既可以體驗服務器端進行溝通對話,一般運用在電子商務網(wǎng)站的服務商,典型的代表、53KF、live800等。<

17、;/p><p>  1.2國內外研究現(xiàn)狀及發(fā)展趨勢</p><p>  1.2.1 國外研究現(xiàn)狀及發(fā)展趨</p><p>  自1996年11月全球范圍內推出的第一款即時通訊軟件以來,即時通訊軟件得到了迅速的發(fā)展。隨著各大互聯(lián)網(wǎng)巨頭公司的崛起,各互聯(lián)網(wǎng)公司根據(jù)各公司主要業(yè)務推出不同的即時通訊軟件。</p><p>  雅虎公司:雅虎通(Yahoo

18、! Messenger)是一款比較流行的即時通訊軟件,允許用戶與朋友、家人、同事及其朋友經(jīng)行即時的交流。用戶只需麥克風、揚聲器或耳機,就能輕松地與好友語音通話,且設有語音留言與呼叫記錄。即使用戶不在線,也可以收到好友的語音留言。雅虎通內置了股票、新聞、計分板等選項卡,不論用戶在何處瀏覽,都可以監(jiān)視用戶所有個性化信息。</p><p>  微軟公司:MSN是微軟公司開發(fā)的即時聊天工具,由于微軟產(chǎn)品用戶眾多,操作簡單

19、,運行穩(wěn)定,且與Windows XP進行了無縫結合,使得MSN的普及速度非???,現(xiàn)在已經(jīng)是世界主流的聊天工具,MSN支持手寫功能,但與其他即時通訊軟件最大的不同是不支持離線消息。MSN采用郵件地址作為用戶名,借此建立MSN與Hotmail之間的連接,當對方不在線時,你可以選擇給對方的MSN郵箱或Hotmail發(fā)送郵件。這樣MSN就不僅是一個簡單的即時通訊軟件,而演變?yōu)橐訫SN為中心的整合服務。</p><p> 

20、 谷歌公司:谷歌公司出的一款即時通訊工具。支持文字信息以及網(wǎng)絡語音交流。Google Talk與Gmail進行了整合應用,使用Gmail賬號登錄,并支持檢查Gmail郵件。雖然Google公司在搜索引擎方面是絕對的龍頭,不過在即時通訊領域的產(chǎn)品還是有蠻多缺憾的。</p><p>  國外即時通訊軟件技術上已發(fā)展得相當成熟,技術上的發(fā)展空間相對來說比較的少,即時通訊軟件今后將會更多的用來彌補和整合本公司的主要業(yè)務。

21、</p><p>  1.2.2國內研究現(xiàn)狀及發(fā)展趨勢</p><p>  騰訊公司:據(jù)騰訊QQ官方消息,2005年,QQ在國內已擁有2.4億多的注冊用戶,7 000多萬活躍用戶,同時在線人數(shù)700萬以上。目前,騰訊QQ已成為國內用戶最多的個人即時通訊工具,占據(jù)著國內約65%以上的市場份額。1999年2月,騰訊推出基于互聯(lián)網(wǎng)的即時通訊工具——QQ,支持在線消息收發(fā),即時傳送語音、視頻和文件

22、,并且整合移動通訊手段,可通過客戶端發(fā)送信息給手機用戶。目前QQ已開發(fā)出穿越防火墻、動態(tài)表情、給好友放錄像、捕捉熒屏、共享文件夾、提供聊天場景、聊天時可顯示圖片等強大的使用功能。另外,QQ還增加了QQ群、QQ秀、QQ寵物、QQ游戲等娛樂功能。由于QQ良好的開放功能、休閑娛樂服務,使其擁有了龐大的用戶群,在近幾年內突飛猛進,牢牢占據(jù)著國內即時通訊霸主地位。</p><p>  阿里巴巴:阿里巴巴推出的軟件阿里旺旺是

23、將原先的淘寶旺旺與阿里巴巴貿易通整合在一起的新品牌。它是淘寶和阿里巴巴為商人度身定做的免費網(wǎng)上商務溝通軟件。它能幫您輕松找客戶,發(fā)布、管理商業(yè)信息;及時把握商機,隨時洽談做生意!</p><p>  即時通訊軟件市場結構分為個人應用和企業(yè)應用兩部分,因此它的發(fā)展趨勢也必然要圍繞這兩部分應用進行探討。我認為未來的即時通訊市場發(fā)展趨勢包括:綜合化、專業(yè)化、互聯(lián)互通和安全化這四個方面的內容。他們之間有著很強的邏輯關系,

24、個人應用領域的綜合化和企業(yè)應用領域的專業(yè)化導致了用戶對互聯(lián)互通的需求,而互聯(lián)互通的實現(xiàn)需要安全技術作為保證。</p><p><b>  1.3選題意義</b></p><p>  21世紀是信息的時代,人與人之間的交流越來越密切,傳統(tǒng)的通信方式,如電話,電報等在實時上雖仍占有一定的優(yōu)勢,但是在信息高速發(fā)展的今天,傳統(tǒng)通信方式由于其成本過高,方式單一的缺點,越來越暴露

25、其弊端。</p><p>  傳統(tǒng)的通訊方式的缺點:</p><p> ?。?)成本高。目前人們所使用的通訊方式普遍價格過高,移動通信的價格更是不菲。這就在某種程度上限制了用戶的使用和數(shù)量。作為用戶來講,消費水平是一個很重要的選擇標準。</p><p> ?。?)使用方式單一。我們現(xiàn)在使用的傳統(tǒng)通信方式主要是電話,電報,傳真等。這些方式只能聽到聲音或看到文字,用戶

26、并不能感受到對方,缺乏身臨其境的感覺。</p><p>  (3)傳輸數(shù)據(jù)量少。傳統(tǒng)的通訊方式的帶寬并不高,所以傳輸?shù)臄?shù)據(jù)量大大受到限制。</p><p>  新興的網(wǎng)絡通訊的優(yōu)點:</p><p> ?。?)成本低。網(wǎng)絡具有價格便宜,對于大多數(shù)用戶來說,購買一臺電腦不僅可以成為日常的通信工具,更重要的是電腦可以作為很多方面的用途,如處理日常的文件,存儲個人的資料等

27、,而網(wǎng)絡通訊僅僅是一個很小的附加功能,更由于隨著經(jīng)濟的發(fā)展,擁有電腦就像擁有電視機一樣普遍,電腦的價值已經(jīng)被普遍認可。</p><p> ?。?)方便快捷。網(wǎng)絡聊天非常方便,傳統(tǒng)的手機短信編輯相比電腦鍵盤來說具有很大的劣勢,電腦打字要更加地快速,同時網(wǎng)絡也可以進行語音聊天,更加省去了輸入的麻煩。視頻聊天也是網(wǎng)絡通信的一個很大的優(yōu)勢,拉近了聊天雙方的距離,使交流更加親切。</p><p> 

28、?。?)傳輸?shù)男畔⒘看蟆:蛡鹘y(tǒng)的方式相比較,其數(shù)據(jù)量提高了數(shù)十倍,并且隨著科技的進步,這種優(yōu)勢將會繼續(xù)擴大。我國擁有世界上最多的網(wǎng)絡用戶,目前正在進行高速信息化建設,因此對網(wǎng)絡的使用將會進一步擴大。</p><p>  網(wǎng)絡通訊軟件具有上述的優(yōu)勢,因此其發(fā)展的前景將是廣闊的,這也是研究它的意義</p><p><b>  所在。 </b></p><

29、;p><b>  第二章 系統(tǒng)分析</b></p><p>  分析即綜合采用系統(tǒng)的思想和方法,把一個比較復雜的系統(tǒng)對象拆解成若干個簡單易懂的組成部分,并定義這些組成部分的基本屬性和相互之間的關聯(lián),進而按照軟件開發(fā)流程對軟件系統(tǒng)進行開發(fā)和設計。分析過程一半包括研究當前同類別系統(tǒng)的特點和不足,進而對所要開發(fā)的系統(tǒng)進行完善化的設計,使開發(fā)出的軟件的在最節(jié)省資源的情況下開發(fā)出符合需求的產(chǎn)品

30、。</p><p>  2.1系統(tǒng)的可行性分析</p><p>  綜合即時通訊軟件發(fā)展形勢和對即時通訊市場的調研,本即時通訊軟件在技術上,經(jīng)濟上,操作方面均具備可行性,具備了軟件開發(fā)實施的條件。</p><p>  2.1.1技術可行性</p><p>  Win XP操作系統(tǒng)的穩(wěn)定性,安全性可滿足用戶的要求。后臺的數(shù)據(jù)庫使用的是Offic

31、e Access 2003。軟件開發(fā)工具語言選用的是當前最流行的開發(fā)工具語言——Java。Java是</p><p>  一種簡單的面向,分布式,解釋型的,健壯安全的,結構中立的,可移植的,性能優(yōu)異的,多線程的動態(tài)語言。JavaSwing具有良好的圖形編程能力,可以實現(xiàn)良好的用戶界面,Java Socket可以實現(xiàn)網(wǎng)絡間的通信。綜上,完全具備技術可行性。</p><p>  2.1.2 經(jīng)

32、濟可行性</p><p>  費用:本系統(tǒng)要求的計算機配置并不高(400M Hz以上處理器。64M內存及以上,硬盤空間100M以上),當前中低檔計算機即可滿足要求。設備的安裝調試工作簡單,軟件的價格不高,操作簡單,對用戶進行少量的培訓講解即可較為熟練的操作本軟件,因而培訓費用較低。</p><p>  而且,Java是跨平臺的語言,編寫好的軟件不需要改動或只需要少量改懂就可以在移植到其他平

33、臺上,對于程序開發(fā)來說,可以減少大量的開發(fā)和維護成本。</p><p>  收益:用戶使用本軟件以后,能較大的用戶之間的傳播效率,節(jié)省較多的人力資源,為企業(yè)創(chuàng)造經(jīng)濟效益,利于企業(yè)單位的發(fā)展,因而在經(jīng)濟上是可行的。</p><p>  2.2 系統(tǒng)的關鍵技術</p><p>  (1)TCP傳輸協(xié)議。TCP協(xié)議是面向連接的協(xié)議,即在點點進行連接之前必須首先建立數(shù)據(jù)通路

34、,就向我們平時打電話一樣,在通話之前必須先撥號,等待對方的接聽以后才能進行通話。它的數(shù)據(jù)傳輸采取的是同步方式,當數(shù)據(jù)發(fā)送到對方時,必須等待接收方的應答信號后才能繼續(xù)下一次的發(fā)送工作,即我們平時所說的“握手”方式。由于TCP協(xié)議采用的是這種連接方式,因此由它建立的連接,是可靠的,在網(wǎng)絡不是十分理想的情況下,速度犧牲很大,但是卻能夠保證所傳輸?shù)臄?shù)據(jù)的正確性。</p><p>  (2)UDP傳輸協(xié)議。UDP協(xié)議采用的

35、是面向無連接的通信方式,它在通信前不需要提前建立通信鏈路,它是異步的,數(shù)據(jù)的發(fā)送比較迅速,不需要等待應答信號。優(yōu)點是發(fā)送速度較快,但是在數(shù)據(jù)的一致性方面不好,在網(wǎng)絡差的情況下,容易丟失數(shù)據(jù)包。一般用于遠程視頻等對一致性要求并不是很高的數(shù)據(jù)傳輸方面。</p><p><b>  2.3業(yè)務流程分析</b></p><p>  業(yè)務流程分析是對業(yè)務功能分析的進一步細化,從

36、而得到業(yè)務流程圖,是一個反映軟件業(yè)務處理過程的“流水帳本”, 幫助確定流程工作與合作建模的基本要素,更好地分析理解其同其他要素的關系。業(yè)務流程圖反映了實際業(yè)務活動的整個流程,它以業(yè)務處理過程為中心。業(yè)務流程分析的目的是:形成合理、科學的業(yè)務流程。通過分析現(xiàn)有業(yè)務流程的基礎上進行業(yè)務流程重組,產(chǎn)生新的更為合理的業(yè)務流程。</p><p>  本即時通訊軟件業(yè)務流程圖反映了軟件內部各功能之間的關聯(lián)以及業(yè)務處理的流程。

37、流程圖如圖2.1所示:</p><p>  圖 2.1 業(yè)務流程圖</p><p><b>  第三章 系統(tǒng)設計</b></p><p>  系統(tǒng)的設計通常是自頂向下逐步細化的,使一個較為復雜的問題分解成若干個比較簡單、容易解決的小問題。概要設計的主要任務是得到系統(tǒng)的軟件結構和數(shù)據(jù)結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分

38、、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結構設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結構特性、以及數(shù)據(jù)庫的設計??傮w設計的目標是建立系統(tǒng)的邏輯模型。</p><p>  3.1 軟件模型概述</p><p>  在基于C/S模型的網(wǎng)絡通信軟件中,包括客戶端和服務器端,其中服務器在整個系統(tǒng)的作用很關鍵,處于中心位置,客戶端主要用來獲取從服務器傳過來的數(shù)據(jù),提供給用戶友好的

39、界面,顯示用戶的好友信息,并且接受用戶的各種操作,用戶操作完畢軟件會把各種操作封裝成信息,并把這個請求信息發(fā)送到服務器端。服務器端主要接受客戶端的請求,并且解析其封裝的信息內容,并根據(jù)信息內容做相應的操作(例如:轉發(fā)信息,查詢好友資料等等),最后將這些信息發(fā)送到指定的客戶端上,最終實現(xiàn)各用戶之間通訊的目的。</p><p>  下圖展示了C/S結構的模型圖:</p><p>  圖 3.1

40、 C/S結構模型圖</p><p><b>  3.2功能結構設計</b></p><p>  本軟件適用于中小型局域網(wǎng)的聊天軟件,為中小型企業(yè)提供局域網(wǎng)溝通軟件,該軟件可以為客戶提供文字信息交流,震動窗口,文件傳輸?shù)刃畔⒔涣?。?shù)據(jù)流圖,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內部的邏輯流向和邏輯變換過程,是結構化系統(tǒng)分析方法的主要表達工具

41、及用于表示軟件模型的一種圖示方法。</p><p>  本系統(tǒng)總功能結構數(shù)據(jù)流圖如圖3.1所示:</p><p>  圖3.2 系統(tǒng)總功能結構圖</p><p>  系統(tǒng)各功能詳細數(shù)據(jù)流圖如下</p><p>  圖 3.3 各功能詳細結構和數(shù)據(jù)流圖</p><p><b>  3.3數(shù)據(jù)庫設計</b

42、></p><p>  數(shù)據(jù)庫是用戶所需要的各種數(shù)據(jù)管理的方式的總稱,它是數(shù)據(jù)庫應用系統(tǒng)的核心部分。數(shù)據(jù)庫結構的設計是相當重要的一個環(huán)節(jié),它將直接影響到系統(tǒng)的數(shù)據(jù)處理效率和系統(tǒng)的總體性能,良好的數(shù)據(jù)庫結構應該選擇合理的數(shù)據(jù)庫范式,減少數(shù)據(jù)的存儲量,同時保證恰當?shù)臄?shù)據(jù)冗余。</p><p>  數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠

43、有效地存儲數(shù)據(jù),滿足各種用戶的應用需求。在數(shù)據(jù)庫領域內,常常把使用數(shù)據(jù)庫的各類系統(tǒng)統(tǒng)稱為數(shù)據(jù)庫應用系統(tǒng)。數(shù)據(jù)庫設計的基本步驟如下:</p><p>  需求分析:首先明確用戶對數(shù)據(jù)的需求。</p><p>  概念結構設計:概念模型主要是用來反映用戶的現(xiàn)實環(huán)境和需求,它獨立于具體的數(shù)據(jù)庫管理系統(tǒng),并且與數(shù)據(jù)庫怎樣實現(xiàn)無關。</p><p>  邏輯結構設計:在邏輯結

44、構設計階段,主要完成建立數(shù)據(jù)庫的邏輯模型,并解決數(shù)據(jù)的完整性、一致性、安全性和有效性等問題;</p><p>  物理結構設計:該階段的任務是為系統(tǒng)邏輯結構模型確定合理的存儲結構、存取方法、以及數(shù)據(jù)表示和數(shù)據(jù)存儲空間分配等內容,從而得到具體的數(shù)據(jù)庫物理結構。</p><p>  數(shù)據(jù)庫實施:數(shù)據(jù)庫實施主要包括用DDL定義數(shù)據(jù)庫結構、組織數(shù)據(jù)入庫、編制與調試應用程序、數(shù)據(jù)庫試運行等步驟。&l

45、t;/p><p>  數(shù)據(jù)庫運行與維護:數(shù)據(jù)庫投入運行標著開發(fā)任務的基本完成和維護工作的開始,數(shù)據(jù)庫物理存儲也會不斷變化,對數(shù)據(jù)庫設計進行評價、調整、修改等維護工作是一個長期的任務。該系統(tǒng)的E—R圖如圖3.2所示: </p><p>  圖 3.4 E-R圖</p><p>  數(shù)據(jù)庫最終要存儲于存儲設備上,數(shù)據(jù)庫在物理設備上的存儲結構和存取方法稱為數(shù)據(jù)庫的物理結構。

46、以下是本系統(tǒng)的物理結構的具體實現(xiàn):</p><p><b>  表 3.1 賬戶表</b></p><p>  表 3.2 用戶信息表</p><p>  表 3.3 用戶好友表</p><p><b>  第四章 詳細設計</b></p><p><b>  4

47、.1系統(tǒng)總體實現(xiàn)</b></p><p>  4.1.1 開發(fā)平臺與開發(fā)工具</p><p>  1.操作系統(tǒng):Windows XP</p><p>  2.系統(tǒng)開發(fā)環(huán)境:MyEcplise 8.5</p><p>  3.數(shù)據(jù)庫:Microsoft Access 2003</p><p>  4.開發(fā)語言

48、:Java</p><p>  5.界面開發(fā):Photoshop cs</p><p>  4.1.2 系統(tǒng)架構圖</p><p>  該軟件是基于J2SE編寫的程序,Java是純面向對象的語言,一切皆為對象。面向對象的思想更加符合人們的思維方式,封裝的思想可以比較好保證代碼的安全性而且可以更好地實現(xiàn)代碼的復用。</p><p>  軟件是基

49、于網(wǎng)絡Socket編程實現(xiàn)網(wǎng)絡通信,由服務器端程序和客戶端程序構成。服務器端的主要任務是監(jiān)聽客戶端傳來的信息,并且根據(jù)信息的類型做出相應的處理,實現(xiàn)轉發(fā)功能??蛻舳顺绦虻闹饕蝿帐墙邮芊掌鞫说男畔?,并且向服務器發(fā)送信息,通過服務器實現(xiàn)轉發(fā)功能。</p><p>  本系統(tǒng)采用簡單的MVC設計模式,具體架構圖如圖4.1</p><p>  圖4.1 系統(tǒng)整體架構圖</p>&

50、lt;p>  備注:client為客戶端程序</p><p>  1.login,friendlist,chitchat包分別是登錄,好友列表和聊天窗口的視圖層</p><p>  2.model包是業(yè)務邏輯層</p><p>  3.common主要是存儲客戶端和服務器端傳輸?shù)男畔㈩?lt;/p><p>  4.tools包主要是字體定義

51、等工具類</p><p>  server為服務器端程序</p><p>  1.common主要是存儲客戶端和服務器端傳輸?shù)男畔㈩?lt;/p><p>  2. db包進行數(shù)據(jù)庫進行操作的類</p><p>  3. model包主要是服務器端的業(yè)務邏輯層</p><p>  4.2系統(tǒng)實現(xiàn)主要功能如下:</p&g

52、t;<p>  通過調查分析研究,本系統(tǒng)主要實現(xiàn)以下功能:</p><p>  客戶端各功能模塊如下:</p><p>  用戶登錄:用戶必須輸入自己的用戶號和密碼,當用戶點擊登錄按鈕以后,軟件會把用戶和密碼封裝成一條信息,傳到后臺服務器驗證用戶和密碼,服務器驗證完會返回一個結果。如果結果為真,會進入好友界面窗口。如果結果為假,會彈出對話框,告知用戶信息(用戶號或密碼輸入錯誤

53、)</p><p>  注冊:通過登錄界面的注冊按鈕,可以進入注冊畫面。進入注冊畫面,用戶可以填入賬戶號,賬戶昵稱,性別,生日等信息,當用戶點擊注冊畫面的按鈕時,如果用戶號已存在會提示用戶重新輸入用戶號。</p><p>  好友界面(登錄成功會顯示自己的頭像和好友界面)1.查看自己的賬戶信息: 點擊自己的頭像,會彈出窗口顯示自己的信息。2.查看好友的信息:右鍵好友的名字,彈出快捷菜單

54、,在點擊查詢好友信息菜單,會彈出窗口顯示被點擊的好友的信息。</p><p>  3.聊天:右鍵點擊好友頭像,彈出快捷菜單,點擊“發(fā)送信息”菜單,會彈出聊天窗口,在文本框輸入文字信息,在點擊發(fā)送按鈕,文字會顯示在好友的窗口中,且顯示在自己的已發(fā)送窗口。</p><p>  4.刪除好友: 點擊頭像右鍵,彈出快捷菜單,點擊“刪除好友”,就可以實現(xiàn)刪除好友操作。</p><

55、;p>  5.查詢好友:可以在文本框輸入ICQ號碼,點擊查詢就可以實現(xiàn)查詢功能, 如果該ICQ不是自己的好友,可添加為好友</p><p>  服務端各功能模塊如下:</p><p>  (一)開啟服務端:點擊服務器端菜單可以開啟和關閉服務器監(jiān)聽。 (二)顯示用戶的在線狀態(tài):可以通過界面的小窗口顯示用戶的在線狀態(tài)。 (三)顯示用戶的行為:可以監(jiān)

56、聽用戶之間傳輸?shù)男畔ⅰ?lt;/p><p>  4.2.1 服務器端界面</p><p>  服務器端有控制菜單,通過菜單可以控制服務器的開啟和關閉。通過顯示面板可以查看用戶的在線的狀態(tài)和用戶的通信記錄。</p><p>  圖 4.1 服務器端界面</p><p>  服務器端監(jiān)聽代碼: public void run()&

57、lt;/p><p><b>  {</b></p><p>  while(true)</p><p><b>  {</b></p><p>  //服務器通過該線程可以不斷的接受客戶端發(fā)來的信息</p><p>  ObjectInputStream ois=null;<

58、;/p><p><b>  try {</b></p><p>  ois = new ObjectInputStream(s.getInputStream());</p><p>  } catch (IOException e1) {</p><p>  // TODO Auto-generated catch bloc

59、k</p><p>  e1.printStackTrace();</p><p><b>  }</b></p><p><b>  try {</b></p><p>  Message ms=(Message)ois.readObject();</p><p>  if

60、(ms.getMesType()==MessageType.message_comm){//普通聊天</p><p>  ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+" 對 "+ms.getToUser()+" 說 "+ms.getCon()+"\n");<

61、;/p><p>  SenMesToFri(ms);</p><p><b>  }</b></p><p>  else if(ms.getMesType()==MessageType.message_zd){//震動窗口</p><p>  ServerList.jtext.append(ms.getTime()+&qu

62、ot;--"+ms.getFormUser()+" 對 "+ms.getToUser()+" 發(fā)送震動窗口 !\n");</p><p>  SenMesToFri(ms);</p><p>  }else if(ms.getMesType()==MessageType.message_file){//服務器接受發(fā)送的文件并轉發(fā)給接受方&

63、lt;/p><p>  ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+" 對 "+ms.getToUser()+"發(fā)送文件:"+ms.getCon()+"\n");</p><p>  SenMesToFri(ms);}</p>

64、<p>  else if(ms.getMesType()==MessageType.message_personalImformation);</p><p>  ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+" 查看好友 "+ms.getToUser()+"的信息"+m

65、s.getCon()+"\n");</p><p>  //GetMesToSer(ms); }</p><p>  }catch(Exception e){</p><p>  e.printStackTrace();</p><p><b>  }</b></p><

66、;p><b>  }</b></p><p><b>  }</b></p><p>  4.2.2 客戶端登錄界面</p><p>  用戶需要通過輸入正確的用戶名和密碼才能登進軟件。如果沒有賬號,可以點擊注冊新號按鈕,進入注冊界面,填入相應的信息完成注冊,然后再使用新注冊的賬戶和密碼登錄。</p>

67、<p>  圖 4.2 客戶端登錄界面</p><p>  驗證用戶名和密碼代碼:</p><p>  public boolean checkUser(String user,String psw)//user是用戶的登錄賬號(Icq賬號),psw是用戶的登錄密碼</p><p><b>  { </b></p>

68、;<p>  boolean b=false;</p><p><b>  try{</b></p><p>  //組織sql語句訪問數(shù)據(jù)庫和條件參數(shù)列表</p><p>  String sql="select Icq_No,Icq_Nc,Icq_Icon from Icq where Icq_No=? and Ic

69、q_Psw=?";//通過用戶名和密碼要求數(shù)據(jù)庫返回用戶的:賬號,昵稱,頭像</p><p>  String[] paras={user,psw};</p><p>  shp=new SqlHelper();</p><p>  ResultSet rs=shp.query(sql,paras);</p><p>  if(rs

70、.next())</p><p><b>  {</b></p><p>  ch[0]=rs.getString(1);//用戶Icq賬號</p><p>  ch[1]=rs.getString(2);//用戶的昵稱</p><p>  ch[2]=rs.getString(3);//用戶的頭像</p>

71、<p><b>  b=true;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  catch(Exception e)</p><p>  {e.printStackTrace();}</p>

72、<p><b>  finally{</b></p><p>  shp.close();</p><p><b>  }</b></p><p><b>  return b;</b></p><p><b>  }</b></p&g

73、t;<p>  4.2.3 客戶端登錄后顯示好友界面</p><p>  用戶登錄后顯示本賬戶頭像信息,好友列表,和搜索好友欄。點擊好友列表可以進行查看好友信息,刪除好友,和好友聊天等操作。用戶可以在搜索欄輸入賬號進行好友搜索,如果存在該賬號,就顯示該賬號信息,而且如果好友列表不存在該賬號,可以添加該好友。如果好友列表存在該賬號,“添加好友”按鈕為不可點擊狀態(tài)。</p><p&g

74、t;  圖4.3 登錄后好友顯示界面</p><p>  4.2.4 客戶端好友聊天界面</p><p>  雙擊好友頭像,或先點擊好友頭像再右鍵鼠標彈出快捷菜單,點擊“發(fā)送信息”,會彈出好友聊天界面。通過好友聊天界面,可以發(fā)送信息,發(fā)送信息是通過Socket實現(xiàn)客戶端和服務器端的通信,然后對Socket添加輸入流和輸出流,使信息顯示在客戶用戶界面上或者對磁盤進行文件寫入操作。</

75、p><p>  4.4 用戶聊天界面</p><p>  說明:發(fā)送的信息包括三種信息:文本,文件,抖動窗口</p><p>  發(fā)送文件代碼主要如下:</p><p>  else if(e.getSource()==this.file){//發(fā)送文件</p><p>  filedialog_load.setVisi

76、ble(true);</p><p>  Message ms=new Message();</p><p>  if(filedialog_load.getFile()!=null){</p><p><b>  try {</b></p><p>  File file_load=new File(filedialo

77、g_load.getDirectory(),filedialog_load.getFile());</p><p>  DataInputStream dis=new DataInputStream(new BufferedInputStream(new FileInputStream(filedialog_load.getDirectory()+filedialog_load.getFile())));<

78、/p><p>  byte[] bf=new byte[(int)file_load.length()];while (true) {</p><p>  int num= 0;</p><p>  if (dis != null) {</p><p>  num = dis.read(bf);</p><p>

79、  ms.setBuf(bf);</p><p><b>  }</b></p><p>  if (num == -1) {</p><p><b>  break;</b></p><p><b>  }</b></p><p>  //dos.wr

80、ite(bf, 0, num);</p><p><b>  }</b></p><p>  ms.setMesType(MessageType.message_file);//發(fā)送文件,message_file==6</p><p>  ms.setFormUser(Fu);//發(fā)送者</p><p>  ms.set

81、ToUser(toChat);//接收者</p><p>  ms.setTime(this.date.toLocaleString());//發(fā)送的時間</p><p>  ms.setCon(file_load.getName());//傳輸文件的名稱</p><p>  } catch (Exception e1) {</p><p>

82、  e1.printStackTrace();</p><p><b>  }</b></p><p><b>  try {</b></p><p>  ObjectOutputStream oos=new ObjectOutputStream(ManageClientToSerThread.getClientToSer

83、Thread(Fu).getS().getOutputStream());</p><p>  oos.writeObject(ms);</p><p>  } catch (IOException e1) {</p><p>  e1.printStackTrace();</p><p><b>  }</b><

84、/p><p>  System.out.println("文件名:"+filedialog_load.getFile());</p><p>  System.out.println("文件路徑:"+filedialog_load.getDirectory());</p><p>  this.showpane.append(&q

85、uot;給 "+Tu+" 傳送了文件:"+filedialog_load.getDirectory()+filedialog_load.getFile()+"\n");</p><p><b>  }</b></p><p><b>  } </b></p><p>  參

86、考文獻(Reference)</p><p>  [1] 西爾伯沙茨(美). 數(shù)據(jù)庫系統(tǒng)概念[M] .機械工業(yè)出版社, 2006</p><p>  [2] 陳志泊.數(shù)據(jù)庫原理及應用教程[M] .人民郵電出版社 2008</p><p>  [3] ??藸?美) .Java編程思想[M] .機械工業(yè)出版社 2007</p><p>  [4]

87、 李剛.Java瘋狂講義[M] .電子工業(yè)出版社 2008</p><p>  [5] 哈諾德.Java網(wǎng)絡編程.中國電力出版社 2005</p><p>  [6] 王鵬,何昀峰.Java Swing圖形界面開發(fā)與詳解[M] .清華大學出版社 2008</p><p>  [7] 徐峰.UML面向對象建?;A[M] .水利水電出版社 2006</p>

88、<p>  [8] 王少鋒.面向對象技術UML教程[M] .清華大學出版社, 2005</p><p>  [9] 羅依.Java Swing[M] .清華大學出版社,2004</p><p>  [10] 潘志軍.數(shù)據(jù)庫應用基礎—Access[M] .北京理工大學出版社,2010</p><p>  [11] 付博.Access 開發(fā)實例完全剖析[M]

89、 .中國電力出版社,2006</p><p>  [12] 特羅特著,徐言聲譯.設計模式解析[M] .人民郵電出版社, 2004年</p><p>  [13] 伽瑪 著,李英軍 譯.設計模式--可復用面向對象軟件的基礎[M] .機械工業(yè)出版社,2005</p><p>  [14] 卡爾弗特等 著,周恒民 譯.Java TCP/IP Socket編程[M] .機械

90、工業(yè)出版社,2009</p><p>  [15] 方晨.Phtoshop CS3 中文版入門提高[M] .上??茖W普及出版社,2008</p><p>  [16] 丹尼斯 著,干紅花 譯.系統(tǒng)分析與設計[M] .人民郵電出版社,2009</p><p><b>  附錄:</b></p><p>  Parsing

91、Java Abstraction of the Difference Between Classes and Interfaces</p><p>  In Java language, abstract scale-up and with support class abstraction definition of two mechanisms. Because of these two kinds of m

92、echanism of existence, just gives Java powerful object-oriented skills. Abstract scale-up and with between class abstraction definition for support has great similarities, even interchangeable, so many developers into li

93、ne nonabstract class definition for abstract scale-up and it is becoming more casual with choice. In fact, both between still has the very big diffe</p><p>  Understand class abstraction</p><p>

94、  Abstract class and interface in Java language is used for abstract classes (in this article nonabstract class not from abstract scale-up translation, it represents an abstract body, and abstract scale-up for Java langu

95、age used to define class abstraction in one way, please readers distinguish) defined, then what are the abstract classes, use abstract classes for us any good?</p><p>  In object-oriented concept, we know al

96、l objects is through class to describe, but in turn not such. Not all classes are used to describe object, if a class does not contain enough information to portray a concrete object, this class is abstract classes. Abst

97、ract classes are often used to characterization of problem field in our analysis, design that the abstract concepts, is to the series will look different, but essentially the same exact conception of abstraction. For exa

98、mple: if we carry out </p><p>  In an object-oriented field, mainly used for class abstraction types hidden. We can construct a fixed a group of behavior of abstract description, but this group of behavior b

99、ut can have any a possible concrete implementation. This abstract describe is abstract classes, and this an arbitrary a possible concrete realization is behaved for all possible derived class. Modules can be operating an

100、 abstract body. Due to the module dependent on a fixed abstraction body, so it can are not allowed to mod</p><p>  From the perspectives of grammar definition abstract class and interface</p><p>

101、;  In grammatical perspective, Java language for abstract scale-up and with gives different definitions below to define a way, called produce professional Demo abstract class as an example to illustrate the difference.&l

102、t;/p><p>  Use the abstract scale-up produce professional Demo abstract class defined as follows:</p><p>  abstract class Demo{abstract void method1();abstract void method2();…}</p><

103、p>  Use the way with produce professional Demo abstract class defined as follows:</p><p>  interface Demo{void method1();void method2();…}</p><p>  In the abstract scale-up manner, produc

104、e professional Demo can have their own data members, also can have the members of the abstract method, and with the realization of the way, produce professional Demo can have only static cannot be modified data members (

105、i.e. must is static, immigration, but in with generally doesn't define data members), all the members of the methods is abstract. In a sense, with a special kind of abstract class.</p><p>  From programm

106、ing, from the perspective of abstract scale-up and with can be used to achieve "cancel" thoughts make themselves. But in the specific use top still have some difference.</p><p>  First, abstract cl

107、ass in Java language suggests is a kind of inheriting relationship, a class can be used only once inheritance relationship (because Java do not support more inheritance ZhuanZhu). - However, a class but can implement mul

108、tiple with. Maybe it is Java language designers in considering Java for multiple inheritance support of a compromise to consider it.</p><p>  Secondly, in the definition of abstract scale-up, we may give met

109、hods of default behavior. But in with the definition of method cannot have the default behaviour, to bypass this limits, must use entrust, but it will add some complexity, sometimes can cause a lot of trouble.</p>

110、<p>  In class abstraction cannot define the default behaviour is there another serious problem that may cause on the maintenance of trouble. Because if later want to modify the interface (usually by such abstract

111、scale-up or with to represent) to adapt to the new situation (e.g., adding new methods or to have already used the method to add new parameters), will be very troublesome, might spend a lot of time (for a derived class m

112、any situation, especially). But if the interface is through scale-up abs</p><p>  Similarly, if not in abstract class defined in the default behavior, can lead to the same method to appear in the abstract cl

113、ass every a derived class, violated "a-one rule," principle, causing a-one place, the same code duplication against future maintenance. Therefore, in the abstract scale-up and with a choice between should be ca

溫馨提示

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

評論

0/150

提交評論