




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目 錄摘要:.iabstract: .ii第一章 前 言 .11.1 選題背景.11.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢 .11.2.1 國外研究現(xiàn)狀及發(fā)展趨.11.2.2 國內(nèi)研究現(xiàn)狀及發(fā)展趨勢.11.3 選題意義.2第二章 系統(tǒng)分析 .32.1 系統(tǒng)的可行性分析 .32.1.1 技術(shù)可行性 .32.1.2 經(jīng)濟可行性.32.2 系統(tǒng)的關(guān)鍵技術(shù).32.3 業(yè)務(wù)流程分析.4第三章 系統(tǒng)設(shè)計 .53.1 軟件模型概述.53.2 功能結(jié)構(gòu)設(shè)計.53.3 數(shù)據(jù)庫設(shè)計.7第四章 詳細設(shè)計 .94.1 系統(tǒng)總體實現(xiàn).94.1.1 開發(fā)平臺與開發(fā)工具.94.1.2 系統(tǒng)架構(gòu)圖.94.2 系統(tǒng)實現(xiàn)主要功能如下:
2、.104.2.1 服務(wù)器端界面.114.2.2 客戶端登錄界面.124.2.3 客戶端登錄后顯示好友界面 .134.2.4 客戶端好友聊天界面.13結(jié) 論.15致 謝.16參考文獻(reference) .17附錄.18i基于基于 j2se 的即時通信軟件的即時通信軟件 專業(yè):07 軟件工程 學號: 姓名: 指導(dǎo)老師摘要:摘要:信息時代的到來引發(fā)了一場知識和信息革命,計算機和現(xiàn)代網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用極大地促進了社會經(jīng)濟的發(fā)展,同時也帶來了一些新興產(chǎn)業(yè)的發(fā)展,比如網(wǎng)絡(luò)間的即時通訊軟件。即時通訊已經(jīng)慢慢成為人們生活的一部分,呈現(xiàn)出良好的勢頭和廣闊的發(fā)展前景。即時通訊是一個通過國際互聯(lián)信息網(wǎng)絡(luò)進行多人
3、通訊的一款軟件,它具有其他傳統(tǒng)通訊方式無法比擬的優(yōu)勢,快速,便捷、信息多元化等。正是這些特點,使它能夠成為當今最流行的信息交流方式。java 因其簡單,安全,跨平臺等特點成為當今最流行的編程語言之一,已廣泛用于pc,internet,移動設(shè)備上。因為 java 的“一次編寫到處運行”的特點,所以已編寫的軟件不用修改或只需少量的修改就可以在其他設(shè)備上和操作系統(tǒng)上成功運行,可以極大的減少開發(fā)商的開發(fā)和維護成本。在當今硬件設(shè)備和軟件平臺(操作系統(tǒng))多元化的時代,用java 開發(fā)即時通信軟件是明智之舉關(guān)關(guān) 鍵鍵 詞:詞:即時通信,java,access,網(wǎng)絡(luò),socket 編程iiabstract:
4、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 development of social economy, but it also brings some emerging industries, such as instant messaging software b
5、etween networks. instant messaging has been slowly become part of peoples life, showing a good momentum and broad development prospects. instant messaging is an international internet information network through a paragraph of multiplayer communications software, it has other traditional communicati
6、on and incomparable advantage, quick, convenient, information diversification, etc. it is these features that make it can become the most popular information communication.java because of its simplicity, security, cross-platform and so become one of the most popular programming languages, has been w
7、idely used in pc, internet, mobile devices. because javas write once, run anywhere feature, so the software has been prepared without modification or with little modification to other devices and can run successfully on operating systems, developers can greatly reduce the development and maintenance
8、 costs . in todays hardware and software platform (operating system) a wide range of age, with instant messaging software, java development is a wise move. keywords:im,access,java,socket1第一章第一章 前前 言言1.1 選題背景要問到網(wǎng)絡(luò)時代發(fā)展最快的領(lǐng)域,無疑的,答案是即時通訊。即時通訊工具的實時交互、資費低廉等優(yōu)點深受用戶的喜愛,已經(jīng)成為網(wǎng)絡(luò)生活中不可或缺的一部分,比如大家都很熟悉的騰訊 qq,msn 等。
9、網(wǎng)民們通過即時通信進行溝通交流、結(jié)識新朋友、娛樂消遣時間、實現(xiàn)異地文字、語音、視頻的實時互通交流。同時,人們也認識到即時信息工具能夠帶來極高的生產(chǎn)力,諸多企事業(yè)單位借助它的使用,來提高業(yè)務(wù)協(xié)同性及反饋的敏感度和快捷度。作為使用頻率最高的網(wǎng)絡(luò)軟件,即時通訊已經(jīng)突破了作為技術(shù)工具的極限,被認為是現(xiàn)代交流方式的象征。即時通訊軟件是通過即時通訊技術(shù)來實現(xiàn)在線聊天、交流的軟件。目前有 2 種架構(gòu)形式,1、一種是 c/s 架構(gòu),采用客戶端/服務(wù)器形式,用戶使用過程中需要下載安裝客戶端軟件,典型的代表有:qq、百度 hi 、skype、gtalk、新浪 uc、msn 等;2、采用b/s 架構(gòu),即瀏覽器/服務(wù)
10、端形式,這種形式的即時通訊軟件,直接借助互聯(lián)網(wǎng)為媒介、客戶端無需安裝任何軟件,既可以體驗服務(wù)器端進行溝通對話,一般運用在電子商務(wù)網(wǎng)站的服務(wù)商,典型的代表、53kf、live800 等。1.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢1.2.1 國外研究現(xiàn)狀及發(fā)展趨 自 1996 年 11 月全球范圍內(nèi)推出的第一款即時通訊軟件以來,即時通訊軟件得到了迅速的發(fā)展。隨著各大互聯(lián)網(wǎng)巨頭公司的崛起,各互聯(lián)網(wǎng)公司根據(jù)各公司主要業(yè)務(wù)推出不同的即時通訊軟件。雅虎公司:雅虎通(yahoo! messenger)是一款比較流行的即時通訊軟件,允許用戶與朋友、家人、同事及其朋友經(jīng)行即時的交流。用戶只需麥克風、揚聲器或耳機,就能輕松
11、地與好友語音通話,且設(shè)有語音留言與呼叫記錄。即使用戶不在線,也可以收到好友的語音留言。雅虎通內(nèi)置了股票、新聞、計分板等選項卡,不論用戶在何處瀏覽,都可以監(jiān)視用戶所有個性化信息。微軟公司:msn是微軟公司開發(fā)的即時聊天工具,由于微軟產(chǎn)品用戶眾多,操作簡單,運行穩(wěn)定,且與windows xp進行了無縫結(jié)合,使得msn的普及速度非???,現(xiàn)在已經(jīng)是世界主流的聊天工具,msn支持手寫功能,但與其他即時通訊軟件最大的不同是不支持離線消息。msn采用郵件地址作為用戶名,借此建立msn與hotmail之間的連接,當對方不在線時,你可以選擇給對方的msn郵箱或hotmail發(fā)送郵件。這樣msn就不僅是一個簡單的
12、即時通訊軟件,而演變?yōu)橐詍sn為中心的整合服務(wù)。谷歌公司:谷歌公司出的一款即時通訊工具。支持文字信息以及網(wǎng)絡(luò)語音交流。google talk與gmail進行了整合應(yīng)用,使用gmail賬號登錄,并支持檢查gmail郵件。雖然google公司在搜索引擎方面是絕對的龍頭,不過在即時通訊領(lǐng)域的產(chǎn)品還是有蠻多缺憾的。國外即時通訊軟件技術(shù)上已發(fā)展得相當成熟,技術(shù)上的發(fā)展空間相對來說比較的少,即時通訊軟件今后將會更多的用來彌補和整合本公司的主要業(yè)務(wù)。1.2.2 國內(nèi)研究現(xiàn)狀及發(fā)展趨勢騰訊公司:據(jù)騰訊qq官方消息,2005年,qq在國內(nèi)已擁有24億多的注冊用戶,7 000多萬活躍用戶,同時在線人數(shù)700萬以上
13、。目前,騰訊qq已成為國內(nèi)用戶最多的個人即2時通訊工具,占據(jù)著國內(nèi)約65以上的市場份額。1999年2月,騰訊推出基于互聯(lián)網(wǎng)的即時通訊工具qq,支持在線消息收發(fā),即時傳送語音、視頻和文件,并且整合移動通訊手段,可通過客戶端發(fā)送信息給手機用戶。目前qq已開發(fā)出穿越防火墻、動態(tài)表情、給好友放錄像、捕捉熒屏、共享文件夾、提供聊天場景、聊天時可顯示圖片等強大的使用功能。另外,qq還增加了qq群、qq秀、qq寵物、qq游戲等娛樂功能。由于qq良好的開放功能、休閑娛樂服務(wù),使其擁有了龐大的用戶群,在近幾年內(nèi)突飛猛進,牢牢占據(jù)著國內(nèi)即時通訊霸主地位。阿里巴巴:阿里巴巴推出的軟件阿里旺旺是將原先的淘寶旺旺與阿里
14、巴巴貿(mào)易通整合在一起的新品牌。它是淘寶和阿里巴巴為商人度身定做的免費網(wǎng)上商務(wù)溝通軟件。它能幫您輕松找客戶,發(fā)布、管理商業(yè)信息;及時把握商機,隨時洽談做生意!即時通訊軟件市場結(jié)構(gòu)分為個人應(yīng)用和企業(yè)應(yīng)用兩部分,因此它的發(fā)展趨勢也必然要圍繞這兩部分應(yīng)用進行探討。我認為未來的即時通訊市場發(fā)展趨勢包括:綜合化、專業(yè)化、互聯(lián)互通和安全化這四個方面的內(nèi)容。他們之間有著很強的邏輯關(guān)系,個人應(yīng)用領(lǐng)域的綜合化和企業(yè)應(yīng)用領(lǐng)域的專業(yè)化導(dǎo)致了用戶對互聯(lián)互通的需求,而互聯(lián)互通的實現(xiàn)需要安全技術(shù)作為保證。1.3 選題意義21 世紀是信息的時代,人與人之間的交流越來越密切,傳統(tǒng)的通信方式,如電話,電報等在實時上雖仍占有一定的
15、優(yōu)勢,但是在信息高速發(fā)展的今天,傳統(tǒng)通信方式由于其成本過高,方式單一的缺點,越來越暴露其弊端。傳統(tǒng)的通訊方式的缺點:(1)成本高。目前人們所使用的通訊方式普遍價格過高,移動通信的價格更是不菲。這就在某種程度上限制了用戶的使用和數(shù)量。作為用戶來講,消費水平是一個很重要的選擇標準。(2)使用方式單一。我們現(xiàn)在使用的傳統(tǒng)通信方式主要是電話,電報,傳真等。這些方式只能聽到聲音或看到文字,用戶并不能感受到對方,缺乏身臨其境的感覺。(3)傳輸數(shù)據(jù)量少。傳統(tǒng)的通訊方式的帶寬并不高,所以傳輸?shù)臄?shù)據(jù)量大大受到限制。新興的網(wǎng)絡(luò)通訊的優(yōu)點:(1)成本低。網(wǎng)絡(luò)具有價格便宜,對于大多數(shù)用戶來說,購買一臺電腦不僅可以成為
16、日常的通信工具,更重要的是電腦可以作為很多方面的用途,如處理日常的文件,存儲個人的資料等,而網(wǎng)絡(luò)通訊僅僅是一個很小的附加功能,更由于隨著經(jīng)濟的發(fā)展,擁有電腦就像擁有電視機一樣普遍,電腦的價值已經(jīng)被普遍認可。(2)方便快捷。網(wǎng)絡(luò)聊天非常方便,傳統(tǒng)的手機短信編輯相比電腦鍵盤來說具有很大的劣勢,電腦打字要更加地快速,同時網(wǎng)絡(luò)也可以進行語音聊天,更加省去了輸入的麻煩。視頻聊天也是網(wǎng)絡(luò)通信的一個很大的優(yōu)勢,拉近了聊天雙方的距離,使交流更加親切。(3)傳輸?shù)男畔⒘看?。和傳統(tǒng)的方式相比較,其數(shù)據(jù)量提高了數(shù)十倍,并且隨著科技的進步,這種優(yōu)勢將會繼續(xù)擴大。我國擁有世界上最多的網(wǎng)絡(luò)用戶,目前正在進行高速信息化建設(shè)
17、,因此對網(wǎng)絡(luò)的使用將會進一步擴大。3網(wǎng)絡(luò)通訊軟件具有上述的優(yōu)勢,因此其發(fā)展的前景將是廣闊的,這也是研究它的意義所在。 第二章第二章 系統(tǒng)分析系統(tǒng)分析分析即綜合采用系統(tǒng)的思想和方法,把一個比較復(fù)雜的系統(tǒng)對象拆解成若干個簡單易懂的組成部分,并定義這些組成部分的基本屬性和相互之間的關(guān)聯(lián),進而按照軟件開發(fā)流程對軟件系統(tǒng)進行開發(fā)和設(shè)計。分析過程一半包括研究當前同類別系統(tǒng)的特點和不足,進而對所要開發(fā)的系統(tǒng)進行完善化的設(shè)計,使開發(fā)出的軟件的在最節(jié)省資源的情況下開發(fā)出符合需求的產(chǎn)品。2.1 系統(tǒng)的可行性分析綜合即時通訊軟件發(fā)展形勢和對即時通訊市場的調(diào)研,本即時通訊軟件在技術(shù)上,經(jīng)濟上,操作方面均具備可行性,具
18、備了軟件開發(fā)實施的條件。2.1.1 技術(shù)可行性 win xp 操作系統(tǒng)的穩(wěn)定性,安全性可滿足用戶的要求。后臺的數(shù)據(jù)庫使用的是office access 2003。軟件開發(fā)工具語言選用的是當前最流行的開發(fā)工具語言java。java 是一種簡單的面向,分布式,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異的,多線程的動態(tài)語言。javaswing 具有良好的圖形編程能力,可以實現(xiàn)良好的用戶界面,java socket 可以實現(xiàn)網(wǎng)絡(luò)間的通信。綜上,完全具備技術(shù)可行性。2.1.2 經(jīng)濟可行性費用:本系統(tǒng)要求的計算機配置并不高(400m hz 以上處理器。64m 內(nèi)存及以上,硬盤空間 100m 以上
19、),當前中低檔計算機即可滿足要求。設(shè)備的安裝調(diào)試工作簡單,軟件的價格不高,操作簡單,對用戶進行少量的培訓(xùn)講解即可較為熟練的操作本軟件,因而培訓(xùn)費用較低。而且,java 是跨平臺的語言,編寫好的軟件不需要改動或只需要少量改懂就可以在移植到其他平臺上,對于程序開發(fā)來說,可以減少大量的開發(fā)和維護成本。收益:用戶使用本軟件以后,能較大的用戶之間的傳播效率,節(jié)省較多的人力資源,為企業(yè)創(chuàng)造經(jīng)濟效益,利于企業(yè)單位的發(fā)展,因而在經(jīng)濟上是可行的。2.2 系統(tǒng)的關(guān)鍵技術(shù)(1)tcp 傳輸協(xié)議。tcp 協(xié)議是面向連接的協(xié)議,即在點點進行連接之前必須首先建立數(shù)據(jù)通路,就向我們平時打電話一樣,在通話之前必須先撥號,等待
20、對方的接聽以后才能進行通話。它的數(shù)據(jù)傳輸采取的是同步方式,當數(shù)據(jù)發(fā)送到對方時,必須等待接收方的應(yīng)答信號后才能繼續(xù)下一次的發(fā)送工作,即我們平時所說的“握手”方式。由于 tcp 協(xié)議采用的是這種連接方式,因此由它建立的連接,是可靠的,在網(wǎng)絡(luò)不是十分理想的情況下,速度犧牲很大,但是卻能夠保證所傳輸?shù)臄?shù)據(jù)的正確性。(2)udp 傳輸協(xié)議。udp 協(xié)議采用的是面向無連接的通信方式,它在通信前不需要提4前建立通信鏈路,它是異步的,數(shù)據(jù)的發(fā)送比較迅速,不需要等待應(yīng)答信號。優(yōu)點是發(fā)送速度較快,但是在數(shù)據(jù)的一致性方面不好,在網(wǎng)絡(luò)差的情況下,容易丟失數(shù)據(jù)包。一般用于遠程視頻等對一致性要求并不是很高的數(shù)據(jù)傳輸方面。
21、2.3 業(yè)務(wù)流程分析業(yè)務(wù)流程分析是對業(yè)務(wù)功能分析的進一步細化,從而得到業(yè)務(wù)流程圖,是一個反映軟件業(yè)務(wù)處理過程的“流水帳本”, 幫助確定流程工作與合作建模的基本要素,更好地分析理解其同其他要素的關(guān)系。業(yè)務(wù)流程圖反映了實際業(yè)務(wù)活動的整個流程,它以業(yè)務(wù)處理過程為中心。業(yè)務(wù)流程分析的目的是:形成合理、科學的業(yè)務(wù)流程。通過分析現(xiàn)有業(yè)務(wù)流程的基礎(chǔ)上進行業(yè)務(wù)流程重組,產(chǎn)生新的更為合理的業(yè)務(wù)流程。本即時通訊軟件業(yè)務(wù)流程圖反映了軟件內(nèi)部各功能之間的關(guān)聯(lián)以及業(yè)務(wù)處理的流程。流程圖如圖 2.1 所示:是否有帳號注冊登錄 驗證用戶名和密進入顯示好友列表 點擊好友聊天查看好友信息添加刪除好友是否成功返回信息將好友添加到
22、列表中返回好友信息開啟聊天窗口發(fā)送信息退出登錄 圖 2.1 業(yè)務(wù)流程圖5第三章第三章 系統(tǒng)設(shè)計系統(tǒng)設(shè)計系統(tǒng)的設(shè)計通常是自頂向下逐步細化的,使一個較為復(fù)雜的問題分解成若干個比較簡單、容易解決的小問題。概要設(shè)計的主要任務(wù)是得到系統(tǒng)的軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計軟件結(jié)構(gòu)的具體任務(wù)是:將一個復(fù)雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計??傮w設(shè)計的目標是建立系統(tǒng)的邏輯模型。3.1 軟件模型概述在基于 c/s 模型的網(wǎng)絡(luò)通信軟件中,包括客戶端和服務(wù)器端,其中服務(wù)器在整個系統(tǒng)的作用很關(guān)鍵,處于中心位置
23、,客戶端主要用來獲取從服務(wù)器傳過來的數(shù)據(jù),提供給用戶友好的界面,顯示用戶的好友信息,并且接受用戶的各種操作,用戶操作完畢軟件會把各種操作封裝成信息,并把這個請求信息發(fā)送到服務(wù)器端。服務(wù)器端主要接受客戶端的請求,并且解析其封裝的信息內(nèi)容,并根據(jù)信息內(nèi)容做相應(yīng)的操作(例如:轉(zhuǎn)發(fā)信息,查詢好友資料等等),最后將這些信息發(fā)送到指定的客戶端上,最終實現(xiàn)各用戶之間通訊的目的。下圖展示了 c/s 結(jié)構(gòu)的模型圖:客戶端客戶端登錄登錄服務(wù)器信息交換信息交換圖 3.1 c/s 結(jié)構(gòu)模型圖3.2 功能結(jié)構(gòu)設(shè)計本軟件適用于中小型局域網(wǎng)的聊天軟件,為中小型企業(yè)提供局域網(wǎng)溝通軟件,該軟件可以為客戶提供文字信息交流,震動窗
24、口,文件傳輸?shù)刃畔⒔涣?。?shù)據(jù)流圖,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。本系統(tǒng)總功能結(jié)構(gòu)數(shù)據(jù)流圖如圖 3.1 所示:圖 3.2 系統(tǒng)總功能結(jié)構(gòu)圖服務(wù)器客戶端客戶端客戶端access 數(shù)據(jù)庫維護數(shù)據(jù)庫文件傳送檢索檢索文件傳送登錄登錄登錄6系統(tǒng)各功能詳細數(shù)據(jù)流圖如下登錄界面好友界面查看好友信息信息添加刪除好友好友聊天界面連接到服務(wù)器線程通信 socket客戶端客戶端通信 socket連接到客戶端線程驗證用戶密碼數(shù)據(jù)庫操作 服務(wù)器端控制臺 服務(wù)器端服務(wù)器端 圖 3.3 各功能
25、詳細結(jié)構(gòu)和數(shù)據(jù)流圖3.3 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫是用戶所需要的各種數(shù)據(jù)管理的方式的總稱,它是數(shù)據(jù)庫應(yīng)用系統(tǒng)的核心部分。數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計是相當重要的一個環(huán)節(jié),它將直接影響到系統(tǒng)的數(shù)據(jù)處理效率和系統(tǒng)的總體性能,良好的數(shù)據(jù)庫結(jié)構(gòu)應(yīng)該選擇合理的數(shù)據(jù)庫范式,減少數(shù)據(jù)的存儲量,同時保證恰當?shù)臄?shù)據(jù)冗余。數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求。在數(shù)據(jù)庫領(lǐng)域內(nèi),常常把使用數(shù)據(jù)庫的各類系統(tǒng)統(tǒng)稱為數(shù)據(jù)庫應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計的基本步驟如下:1、 需求分析:首先明確用戶對數(shù)據(jù)的需求。72、 概念結(jié)構(gòu)設(shè)計:概念模型主要是用來反映用戶的現(xiàn)
26、實環(huán)境和需求,它獨立于具體的數(shù)據(jù)庫管理系統(tǒng),并且與數(shù)據(jù)庫怎樣實現(xiàn)無關(guān)。3、 邏輯結(jié)構(gòu)設(shè)計:在邏輯結(jié)構(gòu)設(shè)計階段,主要完成建立數(shù)據(jù)庫的邏輯模型,并解決數(shù)據(jù)的完整性、一致性、安全性和有效性等問題;4、 物理結(jié)構(gòu)設(shè)計:該階段的任務(wù)是為系統(tǒng)邏輯結(jié)構(gòu)模型確定合理的存儲結(jié)構(gòu)、存取方法、以及數(shù)據(jù)表示和數(shù)據(jù)存儲空間分配等內(nèi)容,從而得到具體的數(shù)據(jù)庫物理結(jié)構(gòu)。5、 數(shù)據(jù)庫實施:數(shù)據(jù)庫實施主要包括用 ddl 定義數(shù)據(jù)庫結(jié)構(gòu)、組織數(shù)據(jù)入庫、編制與調(diào)試應(yīng)用程序、數(shù)據(jù)庫試運行等步驟。6、 數(shù)據(jù)庫運行與維護:數(shù)據(jù)庫投入運行標著開發(fā)任務(wù)的基本完成和維護工作的開始,數(shù)據(jù)庫物理存儲也會不斷變化,對數(shù)據(jù)庫設(shè)計進行評價、調(diào)整、修改等維
27、護工作是一個長期的任務(wù)。該系統(tǒng)的 er 圖如圖 3.2 所示: 賬戶賬戶號碼賬戶密碼用戶信息賬戶號用戶名性別出生日期頭像個性簽名擁有好友關(guān)系關(guān)系賬戶好友賬戶好友關(guān)系在線狀態(tài)用戶狀態(tài)賬號 狀態(tài)圖 3.4 e-r 圖數(shù)據(jù)庫最終要存儲于存儲設(shè)備上,數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu)。以下是本系統(tǒng)的物理結(jié)構(gòu)的具體實現(xiàn):表表 3.1 賬戶表賬戶表字段名稱數(shù)據(jù)類型長度說明賬戶號碼文本10主鍵賬戶密碼文本10表表 3.23.2 用戶信息表用戶信息表字段名稱數(shù)據(jù)類型長度說明8用戶號文本10主鍵用戶名文本10主鍵性別文本10主鍵出生日期文本10個性簽名文本10頭像文本10表表 3.33.
28、3 用戶好友表用戶好友表字段名稱數(shù)據(jù)類型長度說明賬戶號文本10主鍵好友賬戶文本10主鍵關(guān)系文本10主鍵第四章第四章 詳細設(shè)計詳細設(shè)計4.1 系統(tǒng)總體實現(xiàn)4.1.1 開發(fā)平臺與開發(fā)工具1.操作系統(tǒng):windows xp2.系統(tǒng)開發(fā)環(huán)境:myecplise 8.53.數(shù)據(jù)庫:microsoft access 20034.開發(fā)語言:java5.界面開發(fā):photoshop cs4.1.2 系統(tǒng)架構(gòu)圖該軟件是基于 j2se 編寫的程序,java 是純面向?qū)ο蟮恼Z言,一切皆為對象。面向?qū)ο蟮乃枷敫臃先藗兊乃季S方式,封裝的思想可以比較好保證代碼的安全性而且可以更好地實現(xiàn)代碼的復(fù)用。軟件是基于網(wǎng)絡(luò) so
29、cket 編程實現(xiàn)網(wǎng)絡(luò)通信,由服務(wù)器端程序和客戶端程序構(gòu)成。服務(wù)器端的主要任務(wù)是監(jiān)聽客戶端傳來的信息,并且根據(jù)信息的類型做出相應(yīng)的處理,實現(xiàn)轉(zhuǎn)發(fā)功能??蛻舳顺绦虻闹饕蝿?wù)是接受服務(wù)器端的信息,并且向服務(wù)器發(fā)送信息,通過服務(wù)器實現(xiàn)轉(zhuǎn)發(fā)功能。本系統(tǒng)采用簡單的 mvc 設(shè)計模式,具體架構(gòu)圖如圖 4.19圖 4.1 系統(tǒng)整體架構(gòu)圖備注:client 為客戶端程序1login,friendlist,chitchat 包分別是登錄,好友列表和聊天窗口的視圖層2model 包是業(yè)務(wù)邏輯層3common 主要是存儲客戶端和服務(wù)器端傳輸?shù)男畔㈩?tools 包主要是字體定義等工具類 server 為服務(wù)器端程序
30、1common 主要是存儲客戶端和服務(wù)器端傳輸?shù)男畔㈩?. db 包進行數(shù)據(jù)庫進行操作的類3. model 包主要是服務(wù)器端的業(yè)務(wù)邏輯層 4.2 系統(tǒng)實現(xiàn)主要功能如下:通過調(diào)查分析研究,本系統(tǒng)主要實現(xiàn)以下功能:客戶端各功能模塊如下:(一) 用戶登錄:用戶必須輸入自己的用戶號和密碼,當用戶點擊登錄按鈕以后,軟件會把用戶和密碼封裝成一條信息,傳到后臺服務(wù)器驗證用戶和密碼,服務(wù)器驗證完會返回一個結(jié)果。如果結(jié)果為真,會進入好友界面窗口。如果結(jié)10果為假,會彈出對話框,告知用戶信息(用戶號或密碼輸入錯誤)(二) 注冊:通過登錄界面的注冊按鈕,可以進入注冊畫面。進入注冊畫面,用戶可以填入賬戶號,賬戶昵稱,
31、性別,生日等信息,當用戶點擊注冊畫面的按鈕時,如果用戶號已存在會提示用戶重新輸入用戶號。(三) 好友界面(登錄成功會顯示自己的頭像和好友界面)1.查看自己的賬戶信息: 點擊自己的頭像,會彈出窗口顯示自己的信息。2.查看好友的信息:右鍵好友的名字,彈出快捷菜單,在點擊查詢好友信息菜單,會彈出窗口顯示被點擊的好友的信息。3.聊天:右鍵點擊好友頭像,彈出快捷菜單,點擊“發(fā)送信息”菜單,會彈出聊天窗口,在文本框輸入文字信息,在點擊發(fā)送按鈕,文字會顯示在好友的窗口中,且顯示在自己的已發(fā)送窗口。4.刪除好友: 點擊頭像右鍵,彈出快捷菜單,點擊“刪除好友” ,就可以實現(xiàn)刪除好友操作。5.查詢好友:可以在文本
32、框輸入 icq 號碼,點擊查詢就可以實現(xiàn)查詢功能, 如果該 icq 不是自己的好友,可添加為好友服務(wù)端各功能模塊如下: (一)開啟服務(wù)端:點擊服務(wù)器端菜單可以開啟和關(guān)閉服務(wù)器監(jiān)聽。 (二)顯示用戶的在線狀態(tài):可以通過界面的小窗口顯示用戶的在線狀態(tài)。 (三)顯示用戶的行為:可以監(jiān)聽用戶之間傳輸?shù)男畔ⅰ?.2.1 服務(wù)器端界面 服務(wù)器端有控制菜單,通過菜單可以控制服務(wù)器的開啟和關(guān)閉。通過顯示面板可以查看用戶的在線的狀態(tài)和用戶的通信記錄。圖 4.1 服務(wù)器端界面服務(wù)器端監(jiān)聽代碼:服務(wù)器端監(jiān)聽代碼:11 public void run() while(true) /服務(wù)器通過該線程可以不斷的接受客戶端
33、發(fā)來的信息 objectinputstream ois=null; try ois = new objectinputstream(s.getinputstream(); catch (ioexception e1) / todo auto-generated catch blocke1.printstacktrace(); try message ms=(message)ois.readobject(); if(ms.getmestype()=messagetype.message_comm)/普通聊天serverlist.jtext.append(ms.gettime()+-+ms.get
34、formuser()+ 對 +ms.gettouser()+ 說 +ms.getcon()+n); senmestofri(ms); else if(ms.getmestype()=messagetype.message_zd)/震動窗口serverlist.jtext.append(ms.gettime()+-+ms.getformuser()+ 對 +ms.gettouser()+ 發(fā)送震動窗口 !n); senmestofri(ms);else if(ms.getmestype()=messagetype.message_file)/服務(wù)器接受發(fā)送的文件并轉(zhuǎn)發(fā)給接受方 serverlis
35、t.jtext.append(ms.gettime()+-+ms.getformuser()+ 對 +ms.gettouser()+發(fā)送文件:+ms.getcon()+n);senmestofri(ms); else if(ms.getmestype()=messagetype.message_personalimformation); serverlist.jtext.append(ms.gettime()+-+ms.getformuser()+ 查看好友 +ms.gettouser()+的信息+ms.getcon()+n); /getmestoser(ms); catch(exceptio
36、n e)e.printstacktrace();4.2.2 客戶端登錄界面 用戶需要通過輸入正確的用戶名和密碼才能登進軟件。如果沒有賬號,可以點擊注冊新號按鈕,進入注冊界面,填入相應(yīng)的信息完成注冊,然后再使用新注冊的賬戶和密碼登錄。圖 4.2 客戶端登錄界面 驗證用戶名和密碼代碼:驗證用戶名和密碼代碼:12 public boolean checkuser(string user,string psw)/user是用戶的登錄賬號(icq賬號),psw是用戶的登錄密碼 boolean b=false; try /組織sql語句訪問數(shù)據(jù)庫和條件參數(shù)列表 string sql=select icq_
37、no,icq_nc,icq_icon from icq where icq_no=? and icq_psw=?;/通過用戶名和密碼要求數(shù)據(jù)庫返回用戶的:賬號,昵稱,頭像 string paras=user,psw; shp=new sqlhelper(); resultset rs=shp.query(sql,paras); if(rs.next() ch0=rs.getstring(1);/用戶icq賬號 ch1=rs.getstring(2);/用戶的昵稱 ch2=rs.getstring(3);/用戶的頭像 b=true; catch(exception e) e.printstack
38、trace(); finally shp.close(); return b; 4.2.3 客戶端登錄后顯示好友界面 用戶登錄后顯示本賬戶頭像信息,好友列表,和搜索好友欄。點擊好友列表可以進行查看好友信息,刪除好友,和好友聊天等操作。用戶可以在搜索欄輸入賬號進行好友搜索,如果存在該賬號,就顯示該賬號信息,而且如果好友列表不存在該賬號,可以添加該好友。如果好友列表存在該賬號, “添加好友”按鈕為不可點擊狀態(tài)。13圖 4.3 登錄后好友顯示界面4.2.4 客戶端好友聊天界面 雙擊好友頭像,或先點擊好友頭像再右鍵鼠標彈出快捷菜單,點擊“發(fā)送信息” ,會彈出好友聊天界面。通過好友聊天界面,可以發(fā)送信息
39、,發(fā)送信息是通過 socket 實現(xiàn)客戶端和服務(wù)器端的通信,然后對 socket 添加輸入流和輸出流,使信息顯示在客戶用戶界面上或者對磁盤進行文件寫入操作。4.4 用戶聊天界面 說明:發(fā)送的信息包括三種信息:文本,文件,抖動窗口發(fā)送文件代碼主要如下:發(fā)送文件代碼主要如下: else if(e.getsource()=this.file)/發(fā)送文件filedialog_load.setvisible(true);message ms=new message();if(filedialog_load.getfile()!=null)try file file_load=new file(filed
40、ialog_load.getdirectory(),filedialog_load.getfile();datainputstream dis=new datainputstream(new bufferedinputstream(new fileinputstream(filedialog_load.getdirectory()+filedialog_load.getfile();byte bf=new byte(int)file_load.length();while (true) int num= 0; if (dis != null) num = dis.read(bf); ms.se
41、tbuf(bf); if (num = -1) break; /dos.write(bf, 0, num); ms.setmestype(messagetype.message_file);/發(fā)送文件,message_file=6ms.setformuser(fu);/發(fā)送者ms.settouser(tochat);/接收者14ms.settime(this.date.tolocalestring();/發(fā)送的時間ms.setcon(file_load.getname();/傳輸文件的名稱 catch (exception e1) e1.printstacktrace();try object
42、outputstream oos=new objectoutputstream(manageclienttoserthread.getclienttoserthread(fu).gets().getoutputstream();oos.writeobject(ms); catch (ioexception e1) e1.printstacktrace();system.out.println(文件名:+filedialog_load.getfile();system.out.println(文件路徑:+filedialog_load.getdirectory();this.showpane.a
43、ppend(給 +tu+ 傳送了文件:+filedialog_load.getdirectory()+filedialog_load.getfile()+n); 參考文獻參考文獻(reference)(reference)1 西爾伯沙茨(美). 數(shù)據(jù)庫系統(tǒng)概念m 機械工業(yè)出版社, 20062 陳志泊數(shù)據(jù)庫原理及應(yīng)用教程m 人民郵電出版社 20083 ??藸?美) java 編程思想m 機械工業(yè)出版社 20074 李剛java 瘋狂講義m 電子工業(yè)出版社 20085 哈諾德java 網(wǎng)絡(luò)編程中國電力出版社 20056 王鵬,何昀峰java swing 圖形界面開發(fā)與詳解m 清華大學出版社 200
44、87 徐峰uml 面向?qū)ο蠼;A(chǔ)m 水利水電出版社 20068 王少鋒面向?qū)ο蠹夹g(shù) uml 教程m 清華大學出版社, 20059 羅依java swingm 清華大學出版社,200410 潘志軍數(shù)據(jù)庫應(yīng)用基礎(chǔ)accessm 北京理工大學出版社,201011 付博access 開發(fā)實例完全剖析m 中國電力出版社,200612 特羅特著,徐言聲譯設(shè)計模式解析m 人民郵電出版社, 2004 年13 伽瑪 著,李英軍 譯設(shè)計模式-可復(fù)用面向?qū)ο筌浖幕A(chǔ)m 機械工業(yè)出版社,200514 卡爾弗特等 著,周恒民 譯java tcp/ip socket 編程m 機械工業(yè)出版社,200915 方晨phto
45、shop cs3 中文版入門提高m 上??茖W普及出版社,200816 丹尼斯 著,干紅花 譯系統(tǒng)分析與設(shè)計m 人民郵電出版社,200915附錄:parsing java abstraction of the difference between classes and interfacesin java language, abstract scale-up and with support class abstraction definition of two mechanisms. because of these two kinds of mechanism of existence,
46、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 line nonabstract class definition for abstract scale-up and it is becoming more casual with choice. in fa
47、ct, both between still has the very big difference, for their choice even reflected in problem domain essence of understanding, to design the intentions of the understand correctly and reasonable. this paper will for the difference analysis, trying to give a developer with a choice between them are
48、based.understand class abstractionabstract 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 language used to define class abstraction in one way,
49、 please readers distinguish) defined, then what are the abstract classes, use abstract classes for us any good?in object-oriented concept, we know all 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 informati
50、on to portray a concrete object, this class is abstract classes. abstract classes 16are 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 example: if
51、we carry out a graphical editing software development, will find problem domain exists round, triangle so some specific concept, they are different, but they all belong to shape such a concept, shape this concept in problem domain is not exist, it is an abstract concept. precisely because the abstra
52、ct concepts in problem field no corresponding specific concept, so to characterization abstract concepts nonabstract class cannot be instantiated.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 thi
53、s group of behavior but 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 abstract body. due to the module dependent on a fixed abst
54、raction body, so it can are not allowed to modify, meanwhile, through the abstract derived from the body, also can expand the behavior of this module function. familiar with ocp readers must know, object-oriented design to be able to achieve a core principles ocp (open - closed flying), class abstra
55、ction is one of the key.from the perspectives of grammar definition abstract class and interfacein 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
56、difference.use the abstract scale-up produce professional demo abstract class defined as follows:abstract class demoabstract void method1();abstract void method2();use the way with produce professional demo abstract class defined as follows:interface demovoid method1();void method2();in the abstract
57、 scale-up manner, produce 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 (i.e. must is static, immigration, but in with generally
58、doesnt define data members), all the members of the methods is abstract. in a sense, with a special kind of abstract class.from programming, 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 17differ
59、ence.first, abstract class 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 multiple with. maybe it is java language designers in consid
60、ering java for multiple inheritance support of a compromise to consider it.secondly, in the definition of abstract scale-up, we may give methods 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
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國煙草總公司內(nèi)蒙古自治區(qū)公司第二批次應(yīng)屆高校畢業(yè)生招聘擬錄用人員筆試參考題庫附帶答案詳解
- 2024年8月福建廈門集美發(fā)展集團有限公司招聘考試筆試參考題庫附帶答案詳解
- 第18課《冷戰(zhàn)與國際格局的演變》教學設(shè)計-2023-2024學年高一下學期統(tǒng)編版(2019)必修中外歷史綱要下
- 2024年12月廣東東莞市茶山人社醫(yī)保分局公開招聘勞動監(jiān)察協(xié)管員1人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2024年12月2025浙江湖州市長興縣綜合行政執(zhí)法局公開招聘輔助執(zhí)法人員8人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年貴州裝備制造職業(yè)學院單招職業(yè)技能測試題庫1套
- 醫(yī)技三基三嚴模擬試題與參考答案
- 勞動和社會保障概論習題庫含答案
- 動物普通病學習題庫(含參考答案)
- 2024國家電投福建核電招聘69人筆試參考題庫附帶答案詳解
- DeepSeek1天開發(fā)快速入門
- 2025書記員招聘考試題庫及參考答案
- 2024-2025年第二學期數(shù)學教研組工作計劃
- 2025輔警招聘公安基礎(chǔ)知識題庫附含參考答案
- GB/T 44927-2024知識管理體系要求
- 2025年環(huán)衛(wèi)工作計劃
- 2024年07月山東省泰山財產(chǎn)保險股份有限公司2024年夏季校園招考29名工作人員筆試歷年參考題庫附帶答案詳解
- 品質(zhì)巡檢培訓(xùn)課件
- 醫(yī)療器械生產(chǎn)企業(yè)并購合同
- 2025版新能源汽車充電站建設(shè)合同含政府補貼及稅收優(yōu)惠條款
- 初驗整改報告格式范文
評論
0/150
提交評論