




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
PAGE目錄摘要: 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)的關鍵技術(shù) 32.3業(yè)務流程分析 4第三章系統(tǒng)設計 53.1軟件模型概述 53.2功能結(jié)構(gòu)設計 53.3數(shù)據(jù)庫設計 7第四章詳細設計 94.1系統(tǒng)總體實現(xiàn) 94.1.1開發(fā)平臺與開發(fā)工具 94.1.2系統(tǒng)架構(gòu)圖 94.2系統(tǒng)實現(xiàn)主要功能如下: 104.2.1服務器端界面 114.2.2客戶端登錄界面 124.2.3客戶端登錄后顯示好友界面 134.2.4客戶端好友聊天界面 13結(jié)論 15致謝 16參考文獻(Reference) 17附錄 18PAGEII 基于J2SE的即時通信軟件 摘要:信息時代的到來引發(fā)了一場知識和信息革命,計算機和現(xiàn)代網(wǎng)絡技術(shù)的廣泛應用極大地促進了社會經(jīng)濟的發(fā)展,同時也帶來了一些新興產(chǎn)業(yè)的發(fā)展,比如網(wǎng)絡間的即時通訊軟件。即時通訊已經(jīng)慢慢成為人們生活的一部分,呈現(xiàn)出良好的勢頭和廣闊的發(fā)展前景。即時通訊是一個通過國際互聯(lián)信息網(wǎng)絡進行多人通訊的一款軟件,它具有其他傳統(tǒng)通訊方式無法比擬的優(yōu)勢,快速,便捷、信息多元化等。正是這些特點,使它能夠成為當今最流行的信息交流方式。Java因其簡單,安全,跨平臺等特點成為當今最流行的編程語言之一,已廣泛用于PC,Internet,移動設備上。因為Java的“一次編寫到處運行”的特點,所以已編寫的軟件不用修改或只需少量的修改就可以在其他設備上和操作系統(tǒng)上成功運行,可以極大的減少開發(fā)商的開發(fā)和維護成本。在當今硬件設備和軟件平臺(操作系統(tǒng))多元化的時代,用Java開發(fā)即時通信軟件是明智之舉關鍵詞:即時通信,Java,Access,網(wǎng)絡,Socket編程Abstract:Theadventoftheinformationagehasprovokedastormofknowledgeandinformationrevolution,thecomputerandthewideapplicationofmodernnetworktechnologyhasgreatlypromotedthedevelopmentofsocialeconomy,butitalsobringssomeemergingindustries,suchasinstantmessagingsoftwarebetweennetworks.Instantmessaginghasbeenslowlybecomepartofpeople'slife,showingagoodmomentumandbroaddevelopmentprospects.InstantmessagingisaninternationalInternetinformationnetworkthroughaparagraphofmultiplayercommunicationssoftware,ithasothertraditionalcommunicationandincomparableadvantage,quick,convenient,informationdiversification,etc.Itisthesefeaturesthatmakeitcanbecomethemostpopularinformationcommunication.Javabecauseofitssimplicity,security,cross-platformandsobecomeoneofthemostpopularprogramminglanguages,hasbeenwidelyusedinPC,Internet,mobiledevices.
BecauseJava's"writeonce,runanywhere"feature,sothesoftwarehasbeenpreparedwithoutmodificationorwithlittlemodificationtootherdevicesandcanrunsuccessfullyonoperatingsystems,developerscangreatlyreducethedevelopmentandmaintenancecosts
.
Intoday'shardwareandsoftwareplatform(operatingsystem)awiderangeofage,withinstantmessagingsoftware,Javadevelopmentisawisemove.
Keywords:IM,Access,Java,SocketPAGE19第一章前言1.1選題背景要問到網(wǎng)絡時代發(fā)展最快的領域,無疑的,答案是即時通訊。即時通訊工具的實時交互、資費低廉等優(yōu)點深受用戶的喜愛,已經(jīng)成為網(wǎng)絡生活中不可或缺的一部分,比如大家都很熟悉的騰訊QQ,MSN等。網(wǎng)民們通過即時通信進行溝通交流、結(jié)識新朋友、娛樂消遣時間、實現(xiàn)異地文字、語音、視頻的實時互通交流。同時,人們也認識到即時信息工具能夠帶來極高的生產(chǎn)力,諸多企事業(yè)單位借助它的使用,來提高業(yè)務協(xié)同性及反饋的敏感度和快捷度。作為使用頻率最高的網(wǎng)絡軟件,即時通訊已經(jīng)突破了作為技術(shù)工具的極限,被認為是現(xiàn)代交流方式的象征。即時通訊軟件是通過即時通訊技術(shù)來實現(xiàn)在線聊天、交流的軟件。目前有2種架構(gòu)形式,1、一種是C/S架構(gòu),采用客戶端/服務器形式,用戶使用過程中需要下載安裝客戶端軟件,典型的代表有:QQ、百度HI、Skype、Gtalk、新浪UC、MSN等;2、采用B/S架構(gòu),即瀏覽器/服務端形式,這種形式的即時通訊軟件,直接借助互聯(lián)網(wǎng)為媒介、客戶端無需安裝任何軟件,既可以體驗服務器端進行溝通對話,一般運用在電子商務網(wǎng)站的服務商,典型的代表、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è)務推出不同的即時通訊軟件。雅虎公司:雅虎通(Yahoo!Messenger)是一款比較流行的即時通訊軟件,允許用戶與朋友、家人、同事及其朋友經(jīng)行即時的交流。用戶只需麥克風、揚聲器或耳機,就能輕松地與好友語音通話,且設有語音留言與呼叫記錄。即使用戶不在線,也可以收到好友的語音留言。雅虎通內(nèi)置了股票、新聞、計分板等選項卡,不論用戶在何處瀏覽,都可以監(jiān)視用戶所有個性化信息。微軟公司:MSN是微軟公司開發(fā)的即時聊天工具,由于微軟產(chǎn)品用戶眾多,操作簡單,運行穩(wěn)定,且與WindowsXP進行了無縫結(jié)合,使得MSN的普及速度非??欤F(xiàn)在已經(jīng)是世界主流的聊天工具,MSN支持手寫功能,但與其他即時通訊軟件最大的不同是不支持離線消息。MSN采用郵件地址作為用戶名,借此建立MSN與Hotmail之間的連接,當對方不在線時,你可以選擇給對方的MSN郵箱或Hotmail發(fā)送郵件。這樣MSN就不僅是一個簡單的即時通訊軟件,而演變?yōu)橐訫SN為中心的整合服務。谷歌公司:谷歌公司出的一款即時通訊工具。支持文字信息以及網(wǎng)絡語音交流。GoogleTalk與Gmail進行了整合應用,使用Gmail賬號登錄,并支持檢查Gmail郵件。雖然Google公司在搜索引擎方面是絕對的龍頭,不過在即時通訊領域的產(chǎn)品還是有蠻多缺憾的。國外即時通訊軟件技術(shù)上已發(fā)展得相當成熟,技術(shù)上的發(fā)展空間相對來說比較的少,即時通訊軟件今后將會更多的用來彌補和整合本公司的主要業(yè)務。1.2.2國內(nèi)研究現(xiàn)狀及發(fā)展趨勢騰訊公司:據(jù)騰訊QQ官方消息,2005年,QQ在國內(nèi)已擁有2.4億多的注冊用戶,7000多萬活躍用戶,同時在線人數(shù)700萬以上。目前,騰訊QQ已成為國內(nèi)用戶最多的個人即時通訊工具,占據(jù)著國內(nèi)約65%以上的市場份額。1999年2月,騰訊推出基于互聯(lián)網(wǎng)的即時通訊工具——QQ,支持在線消息收發(fā),即時傳送語音、視頻和文件,并且整合移動通訊手段,可通過客戶端發(fā)送信息給手機用戶。目前QQ已開發(fā)出穿越防火墻、動態(tài)表情、給好友放錄像、捕捉熒屏、共享文件夾、提供聊天場景、聊天時可顯示圖片等強大的使用功能。另外,QQ還增加了QQ群、QQ秀、QQ寵物、QQ游戲等娛樂功能。由于QQ良好的開放功能、休閑娛樂服務,使其擁有了龐大的用戶群,在近幾年內(nèi)突飛猛進,牢牢占據(jù)著國內(nèi)即時通訊霸主地位。阿里巴巴:阿里巴巴推出的軟件阿里旺旺是將原先的淘寶旺旺與阿里巴巴貿(mào)易通整合在一起的新品牌。它是淘寶和阿里巴巴為商人度身定做的免費網(wǎng)上商務溝通軟件。它能幫您輕松找客戶,發(fā)布、管理商業(yè)信息;及時把握商機,隨時洽談做生意!即時通訊軟件市場結(jié)構(gòu)分為個人應用和企業(yè)應用兩部分,因此它的發(fā)展趨勢也必然要圍繞這兩部分應用進行探討。我認為未來的即時通訊市場發(fā)展趨勢包括:綜合化、專業(yè)化、互聯(lián)互通和安全化這四個方面的內(nèi)容。他們之間有著很強的邏輯關系,個人應用領域的綜合化和企業(yè)應用領域的專業(yè)化導致了用戶對互聯(lián)互通的需求,而互聯(lián)互通的實現(xiàn)需要安全技術(shù)作為保證。1.3選題意義21世紀是信息的時代,人與人之間的交流越來越密切,傳統(tǒng)的通信方式,如電話,電報等在實時上雖仍占有一定的優(yōu)勢,但是在信息高速發(fā)展的今天,傳統(tǒng)通信方式由于其成本過高,方式單一的缺點,越來越暴露其弊端。傳統(tǒng)的通訊方式的缺點: (1)成本高。目前人們所使用的通訊方式普遍價格過高,移動通信的價格更是不菲。這就在某種程度上限制了用戶的使用和數(shù)量。作為用戶來講,消費水平是一個很重要的選擇標準。(2)使用方式單一。我們現(xiàn)在使用的傳統(tǒng)通信方式主要是電話,電報,傳真等。這些方式只能聽到聲音或看到文字,用戶并不能感受到對方,缺乏身臨其境的感覺。(3)傳輸數(shù)據(jù)量少。傳統(tǒng)的通訊方式的帶寬并不高,所以傳輸?shù)臄?shù)據(jù)量大大受到限制。新興的網(wǎng)絡通訊的優(yōu)點:(1)成本低。網(wǎng)絡具有價格便宜,對于大多數(shù)用戶來說,購買一臺電腦不僅可以成為日常的通信工具,更重要的是電腦可以作為很多方面的用途,如處理日常的文件,存儲個人的資料等,而網(wǎng)絡通訊僅僅是一個很小的附加功能,更由于隨著經(jīng)濟的發(fā)展,擁有電腦就像擁有電視機一樣普遍,電腦的價值已經(jīng)被普遍認可。(2)方便快捷。網(wǎng)絡聊天非常方便,傳統(tǒng)的手機短信編輯相比電腦鍵盤來說具有很大的劣勢,電腦打字要更加地快速,同時網(wǎng)絡也可以進行語音聊天,更加省去了輸入的麻煩。視頻聊天也是網(wǎng)絡通信的一個很大的優(yōu)勢,拉近了聊天雙方的距離,使交流更加親切。(3)傳輸?shù)男畔⒘看?。和傳統(tǒng)的方式相比較,其數(shù)據(jù)量提高了數(shù)十倍,并且隨著科技的進步,這種優(yōu)勢將會繼續(xù)擴大。我國擁有世界上最多的網(wǎng)絡用戶,目前正在進行高速信息化建設,因此對網(wǎng)絡的使用將會進一步擴大。網(wǎng)絡通訊軟件具有上述的優(yōu)勢,因此其發(fā)展的前景將是廣闊的,這也是研究它的意義所在。第二章系統(tǒng)分析分析即綜合采用系統(tǒng)的思想和方法,把一個比較復雜的系統(tǒng)對象拆解成若干個簡單易懂的組成部分,并定義這些組成部分的基本屬性和相互之間的關聯(lián),進而按照軟件開發(fā)流程對軟件系統(tǒng)進行開發(fā)和設計。分析過程一半包括研究當前同類別系統(tǒng)的特點和不足,進而對所要開發(fā)的系統(tǒng)進行完善化的設計,使開發(fā)出的軟件的在最節(jié)省資源的情況下開發(fā)出符合需求的產(chǎn)品。2.1系統(tǒng)的可行性分析綜合即時通訊軟件發(fā)展形勢和對即時通訊市場的調(diào)研,本即時通訊軟件在技術(shù)上,經(jīng)濟上,操作方面均具備可行性,具備了軟件開發(fā)實施的條件。2.1.1技術(shù)可行性WinXP操作系統(tǒng)的穩(wěn)定性,安全性可滿足用戶的要求。后臺的數(shù)據(jù)庫使用的是OfficeAccess2003。軟件開發(fā)工具語言選用的是當前最流行的開發(fā)工具語言——Java。Java是一種簡單的面向,分布式,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異的,多線程的動態(tài)語言。JavaSwing具有良好的圖形編程能力,可以實現(xiàn)良好的用戶界面,JavaSocket可以實現(xiàn)網(wǎng)絡間的通信。綜上,完全具備技術(shù)可行性。2.1.2經(jīng)濟可行性費用:本系統(tǒng)要求的計算機配置并不高(400MHz以上處理器。64M內(nèi)存及以上,硬盤空間100M以上),當前中低檔計算機即可滿足要求。設備的安裝調(diào)試工作簡單,軟件的價格不高,操作簡單,對用戶進行少量的培訓講解即可較為熟練的操作本軟件,因而培訓費用較低。而且,Java是跨平臺的語言,編寫好的軟件不需要改動或只需要少量改懂就可以在移植到其他平臺上,對于程序開發(fā)來說,可以減少大量的開發(fā)和維護成本。收益:用戶使用本軟件以后,能較大的用戶之間的傳播效率,節(jié)省較多的人力資源,為企業(yè)創(chuàng)造經(jīng)濟效益,利于企業(yè)單位的發(fā)展,因而在經(jīng)濟上是可行的。2.2系統(tǒng)的關鍵技術(shù)(1)TCP傳輸協(xié)議。TCP協(xié)議是面向連接的協(xié)議,即在點點進行連接之前必須首先建立數(shù)據(jù)通路,就向我們平時打電話一樣,在通話之前必須先撥號,等待對方的接聽以后才能進行通話。它的數(shù)據(jù)傳輸采取的是同步方式,當數(shù)據(jù)發(fā)送到對方時,必須等待接收方的應答信號后才能繼續(xù)下一次的發(fā)送工作,即我們平時所說的“握手”方式。由于TCP協(xié)議采用的是這種連接方式,因此由它建立的連接,是可靠的,在網(wǎng)絡不是十分理想的情況下,速度犧牲很大,但是卻能夠保證所傳輸?shù)臄?shù)據(jù)的正確性。(2)UDP傳輸協(xié)議。UDP協(xié)議采用的是面向無連接的通信方式,它在通信前不需要提前建立通信鏈路,它是異步的,數(shù)據(jù)的發(fā)送比較迅速,不需要等待應答信號。優(yōu)點是發(fā)送速度較快,但是在數(shù)據(jù)的一致性方面不好,在網(wǎng)絡差的情況下,容易丟失數(shù)據(jù)包。一般用于遠程視頻等對一致性要求并不是很高的數(shù)據(jù)傳輸方面。2.3業(yè)務流程分析業(yè)務流程分析是對業(yè)務功能分析的進一步細化,從而得到業(yè)務流程圖,是一個反映軟件業(yè)務處理過程的“流水帳本”,幫助確定流程工作與合作建模的基本要素,更好地分析理解其同其他要素的關系。業(yè)務流程圖反映了實際業(yè)務活動的整個流程,它以業(yè)務處理過程為中心。業(yè)務流程分析的目的是:形成合理、科學的業(yè)務流程。通過分析現(xiàn)有業(yè)務流程的基礎上進行業(yè)務流程重組,產(chǎn)生新的更為合理的業(yè)務流程。本即時通訊軟件業(yè)務流程圖反映了軟件內(nèi)部各功能之間的關聯(lián)以及業(yè)務處理的流程。流程圖如圖2.1所示:是否有帳號是否有帳號注冊登錄驗證用戶名和密進入顯示好友列表點擊好友聊天查看好友信息添加刪除好友是否成功返回信息將好友添加到列表中返回好友信息開啟聊天窗口發(fā)送信息退出登錄圖2.1業(yè)務流程圖第三章系統(tǒng)設計系統(tǒng)的設計通常是自頂向下逐步細化的,使一個較為復雜的問題分解成若干個比較簡單、容易解決的小問題。概要設計的主要任務是得到系統(tǒng)的軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設計軟件結(jié)構(gòu)的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結(jié)構(gòu)設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設計??傮w設計的目標是建立系統(tǒng)的邏輯模型。3.1軟件模型概述在基于C/S模型的網(wǎng)絡通信軟件中,包括客戶端和服務器端,其中服務器在整個系統(tǒng)的作用很關鍵,處于中心位置,客戶端主要用來獲取從服務器傳過來的數(shù)據(jù),提供給用戶友好的界面,顯示用戶的好友信息,并且接受用戶的各種操作,用戶操作完畢軟件會把各種操作封裝成信息,并把這個請求信息發(fā)送到服務器端。服務器端主要接受客戶端的請求,并且解析其封裝的信息內(nèi)容,并根據(jù)信息內(nèi)容做相應的操作(例如:轉(zhuǎn)發(fā)信息,查詢好友資料等等),最后將這些信息發(fā)送到指定的客戶端上,最終實現(xiàn)各用戶之間通訊的目的。下圖展示了C/S結(jié)構(gòu)的模型圖:客戶端客戶端客戶端登錄登錄服務器信息交換信息交換 圖3.1C/S結(jié)構(gòu)模型圖3.2功能結(jié)構(gòu)設計本軟件適用于中小型局域網(wǎng)的聊天軟件,為中小型企業(yè)提供局域網(wǎng)溝通軟件,該軟件可以為客戶提供文字信息交流,震動窗口,文件傳輸?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所示:服務器服務器客戶端客戶端客戶端ACCESS數(shù)據(jù)庫維護數(shù)據(jù)庫文件傳送檢索檢索文件傳送登錄登錄登錄圖3.2系統(tǒng)總功能結(jié)構(gòu)圖系統(tǒng)各功能詳細數(shù)據(jù)流圖如下登錄界面好友界面查看好友信息信息登錄界面好友界面查看好友信息信息添加刪除好友好友聊天界面連接到服務器線程通信Socket客戶端通信Sock通信Socket連接到客戶端線程驗證用戶密碼數(shù)據(jù)庫操作服務器端控制臺服務器端圖3.3各功能詳細結(jié)構(gòu)和數(shù)據(jù)流圖3.3數(shù)據(jù)庫設計數(shù)據(jù)庫是用戶所需要的各種數(shù)據(jù)管理的方式的總稱,它是數(shù)據(jù)庫應用系統(tǒng)的核心部分。數(shù)據(jù)庫結(jié)構(gòu)的設計是相當重要的一個環(huán)節(jié),它將直接影響到系統(tǒng)的數(shù)據(jù)處理效率和系統(tǒng)的總體性能,良好的數(shù)據(jù)庫結(jié)構(gòu)應該選擇合理的數(shù)據(jù)庫范式,減少數(shù)據(jù)的存儲量,同時保證恰當?shù)臄?shù)據(jù)冗余。數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應用需求。在數(shù)據(jù)庫領域內(nèi),常常把使用數(shù)據(jù)庫的各類系統(tǒng)統(tǒng)稱為數(shù)據(jù)庫應用系統(tǒng)。數(shù)據(jù)庫設計的基本步驟如下:需求分析:首先明確用戶對數(shù)據(jù)的需求。概念結(jié)構(gòu)設計:概念模型主要是用來反映用戶的現(xiàn)實環(huán)境和需求,它獨立于具體的數(shù)據(jù)庫管理系統(tǒng),并且與數(shù)據(jù)庫怎樣實現(xiàn)無關。邏輯結(jié)構(gòu)設計:在邏輯結(jié)構(gòu)設計階段,主要完成建立數(shù)據(jù)庫的邏輯模型,并解決數(shù)據(jù)的完整性、一致性、安全性和有效性等問題;物理結(jié)構(gòu)設計:該階段的任務是為系統(tǒng)邏輯結(jié)構(gòu)模型確定合理的存儲結(jié)構(gòu)、存取方法、以及數(shù)據(jù)表示和數(shù)據(jù)存儲空間分配等內(nèi)容,從而得到具體的數(shù)據(jù)庫物理結(jié)構(gòu)。數(shù)據(jù)庫實施:數(shù)據(jù)庫實施主要包括用DDL定義數(shù)據(jù)庫結(jié)構(gòu)、組織數(shù)據(jù)入庫、編制與調(diào)試應用程序、數(shù)據(jù)庫試運行等步驟。數(shù)據(jù)庫運行與維護:數(shù)據(jù)庫投入運行標著開發(fā)任務的基本完成和維護工作的開始,數(shù)據(jù)庫物理存儲也會不斷變化,對數(shù)據(jù)庫設計進行評價、調(diào)整、修改等維護工作是一個長期的任務。該系統(tǒng)的E—R圖如圖3.2所示:賬戶賬戶賬戶號碼賬戶密碼用戶信息賬戶號用戶名性別出生日期頭像個性簽名擁有好友關系關系賬戶好友賬戶好友關系在線狀態(tài)用戶狀態(tài)賬號狀態(tài)圖3.4E-R圖數(shù)據(jù)庫最終要存儲于存儲設備上,數(shù)據(jù)庫在物理設備上的存儲結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu)。以下是本系統(tǒng)的物理結(jié)構(gòu)的具體實現(xiàn):表3.1賬戶表字段名稱數(shù)據(jù)類型長度說明賬戶號碼文本10主鍵賬戶密碼文本10表3.2用戶信息表字段名稱數(shù)據(jù)類型長度說明用戶號文本10主鍵用戶名文本10主鍵性別文本10主鍵出生日期文本10個性簽名文本10頭像文本10表3.3用戶好友表字段名稱數(shù)據(jù)類型長度說明賬戶號文本10主鍵好友賬戶文本10主鍵關系文本10主鍵第四章詳細設計4.1系統(tǒng)總體實現(xiàn)4.1.1開發(fā)平臺與開發(fā)工具 1.操作系統(tǒng):WindowsXP 2.系統(tǒng)開發(fā)環(huán)境:MyEcplise8.5 3.數(shù)據(jù)庫:MicrosoftAccess2003 4.開發(fā)語言:Java 5.界面開發(fā):Photoshopcs4.1.2系統(tǒng)架構(gòu)圖該軟件是基于J2SE編寫的程序,Java是純面向?qū)ο蟮恼Z言,一切皆為對象。面向?qū)ο蟮乃枷敫臃先藗兊乃季S方式,封裝的思想可以比較好保證代碼的安全性而且可以更好地實現(xiàn)代碼的復用。軟件是基于網(wǎng)絡Socket編程實現(xiàn)網(wǎng)絡通信,由服務器端程序和客戶端程序構(gòu)成。服務器端的主要任務是監(jiān)聽客戶端傳來的信息,并且根據(jù)信息的類型做出相應的處理,實現(xiàn)轉(zhuǎn)發(fā)功能??蛻舳顺绦虻闹饕蝿帐墙邮芊掌鞫说男畔?,并且向服務器發(fā)送信息,通過服務器實現(xiàn)轉(zhuǎn)發(fā)功能。 本系統(tǒng)采用簡單的MVC設計模式,具體架構(gòu)圖如圖4.1圖4.1系統(tǒng)整體架構(gòu)圖 備注:client為客戶端程序1.login,friendlist,chitchat包分別是登錄,好友列表和聊天窗口的視圖層2.model包是業(yè)務邏輯層3.common主要是存儲客戶端和服務器端傳輸?shù)男畔㈩?.tools包主要是字體定義等工具類 server為服務器端程序1.common主要是存儲客戶端和服務器端傳輸?shù)男畔㈩?.db包進行數(shù)據(jù)庫進行操作的類3.model包主要是服務器端的業(yè)務邏輯層4.2系統(tǒng)實現(xiàn)主要功能如下:通過調(diào)查分析研究,本系統(tǒng)主要實現(xiàn)以下功能:客戶端各功能模塊如下:用戶登錄:用戶必須輸入自己的用戶號和密碼,當用戶點擊登錄按鈕以后,軟件會把用戶和密碼封裝成一條信息,傳到后臺服務器驗證用戶和密碼,服務器驗證完會返回一個結(jié)果。如果結(jié)果為真,會進入好友界面窗口。如果結(jié)果為假,會彈出對話框,告知用戶信息(用戶號或密碼輸入錯誤)注冊:通過登錄界面的注冊按鈕,可以進入注冊畫面。進入注冊畫面,用戶可以填入賬戶號,賬戶昵稱,性別,生日等信息,當用戶點擊注冊畫面的按鈕時,如果用戶號已存在會提示用戶重新輸入用戶號。好友界面(登錄成功會顯示自己的頭像和好友界面)
1.查看自己的賬戶信息:點擊自己的頭像,會彈出窗口顯示自己的信息。
2.查看好友的信息:右鍵好友的名字,彈出快捷菜單,在點擊查詢好友信息菜單,會彈出窗口顯示被點擊的好友的信息。3.聊天:右鍵點擊好友頭像,彈出快捷菜單,點擊“發(fā)送信息”菜單,會彈出聊天窗口,在文本框輸入文字信息,在點擊發(fā)送按鈕,文字會顯示在好友的窗口中,且顯示在自己的已發(fā)送窗口。4.刪除好友:點擊頭像右鍵,彈出快捷菜單,點擊“刪除好友”,就可以實現(xiàn)刪除好友操作。5.查詢好友:可以在文本框輸入ICQ號碼,點擊查詢就可以實現(xiàn)查詢功能,如果該ICQ不是自己的好友,可添加為好友服務端各功能模塊如下:(一)開啟服務端:點擊服務器端菜單可以開啟和關閉服務器監(jiān)聽。
(二)顯示用戶的在線狀態(tài):可以通過界面的小窗口顯示用戶的在線狀態(tài)。
(三)顯示用戶的行為:可以監(jiān)聽用戶之間傳輸?shù)男畔ⅰ?.2.1服務器端界面服務器端有控制菜單,通過菜單可以控制服務器的開啟和關閉。通過顯示面板可以查看用戶的在線的狀態(tài)和用戶的通信記錄。圖4.1服務器端界面服務器端監(jiān)聽代碼:
publicvoidrun() { while(true) { //服務器通過該線程可以不斷的接受客戶端發(fā)來的信息 ObjectInputStreamois=null; try{ ois=newObjectInputStream(s.getInputStream()); }catch(IOExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } try{ Messagems=(Message)ois.readObject(); if(ms.getMesType()==MessageType.message_comm){//普通聊天 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"對"+ms.getToUser()+"說"+ms.getCon()+"\n"); SenMesToFri(ms); } elseif(ms.getMesType()==MessageType.message_zd){//震動窗口 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"對"+ms.getToUser()+"發(fā)送震動窗口!\n"); SenMesToFri(ms); }elseif(ms.getMesType()==MessageType.message_file){//服務器接受發(fā)送的文件并轉(zhuǎn)發(fā)給接受方 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"對"+ms.getToUser()+"發(fā)送文件:"+ms.getCon()+"\n");SenMesToFri(ms);} elseif(ms.getMesType()==MessageType.message_personalImformation); ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"查看好友"+ms.getToUser()+"的信息"+ms.getCon()+"\n"); //GetMesToSer(ms); }}catch(Exceptione){ e.printStackTrace(); } }}4.2.2客戶端登錄界面用戶需要通過輸入正確的用戶名和密碼才能登進軟件。如果沒有賬號,可以點擊注冊新號按鈕,進入注冊界面,填入相應的信息完成注冊,然后再使用新注冊的賬戶和密碼登錄。圖4.2客戶端登錄界面驗證用戶名和密碼代碼:publicbooleancheckUser(Stringuser,Stringpsw)//user是用戶的登錄賬號(Icq賬號),psw是用戶的登錄密碼 { booleanb=false; try{ //組織sql語句訪問數(shù)據(jù)庫和條件參數(shù)列表 Stringsql="selectIcq_No,Icq_Nc,Icq_IconfromIcqwhereIcq_No=?andIcq_Psw=?";//通過用戶名和密碼要求數(shù)據(jù)庫返回用戶的:賬號,昵稱,頭像 String[]paras={user,psw}; shp=newSqlHelper(); ResultSetrs=shp.query(sql,paras); if(rs.next()) { ch[0]=rs.getString(1);//用戶Icq賬號 ch[1]=rs.getString(2);//用戶的昵稱 ch[2]=rs.getString(3);//用戶的頭像 b=true; } } catch(Exceptione) {e.printStackTrace();} finally{ shp.close(); } returnb; }4.2.3客戶端登錄后顯示好友界面用戶登錄后顯示本賬戶頭像信息,好友列表,和搜索好友欄。點擊好友列表可以進行查看好友信息,刪除好友,和好友聊天等操作。用戶可以在搜索欄輸入賬號進行好友搜索,如果存在該賬號,就顯示該賬號信息,而且如果好友列表不存在該賬號,可以添加該好友。如果好友列表存在該賬號,“添加好友”按鈕為不可點擊狀態(tài)。圖4.3登錄后好友顯示界面4.2.4客戶端好友聊天界面雙擊好友頭像,或先點擊好友頭像再右鍵鼠標彈出快捷菜單,點擊“發(fā)送信息”,會彈出好友聊天界面。通過好友聊天界面,可以發(fā)送信息,發(fā)送信息是通過Socket實現(xiàn)客戶端和服務器端的通信,然后對Socket添加輸入流和輸出流,使信息顯示在客戶用戶界面上或者對磁盤進行文件寫入操作。4.4用戶聊天界面說明:發(fā)送的信息包括三種信息:文本,文件,抖動窗口發(fā)送文件代碼主要如下:elseif(e.getSource()==this.file){//發(fā)送文件 filedialog_load.setVisible(true); Messagems=newMessage(); if(filedialog_load.getFile()!=null){ try{ Filefile_load=newFile(filedialog_load.getDirectory(),filedialog_load.getFile()); DataInputStreamdis=newDataInputStream(newBufferedInputStream(newFileInputStream(filedialog_load.getDirectory()+filedialog_load.getFile()))); byte[]bf=newbyte[(int)file_load.length()]; while(true){ intnum=0; if(dis!=null){ num=dis.read(bf); ms.setBuf(bf); } if(num==-1){ break; } //dos.write(bf,0,num); } ms.setMesType(MessageType.message_file);//發(fā)送文件,message_file==6 ms.setFormUser(Fu);//發(fā)送者 ms.setToUser(toChat);//接收者 ms.setTime(this.date.toLocaleString());//發(fā)送的時間 ms.setCon(file_load.getName());//傳輸文件的名稱 }catch(Exceptione1){ e1.printStackTrace(); } try{ ObjectOutputStreamoos=newObjectOutputStream(ManageClientToSerThread.getClientToSerThread(Fu).getS().getOutputStream()); oos.writeObject(ms); }catch(IOExceptione1){ e1.printStackTrace(); } System.out.println("文件名:"+filedialog_load.getFile()); System.out.println("文件路徑:"+filedialog_load.getDirectory()); this.showpane.append("給"+Tu+"傳送了文件:"+filedialog_load.getDirectory()+filedialog_load.getFile()+"\n"); } }參考文獻(Reference)[1]西爾伯沙茨(美).數(shù)據(jù)庫系統(tǒng)概念[M].機械工業(yè)出版社,2006[2]陳志泊.數(shù)據(jù)庫原理及應用教程[M].人民郵電出版社2008[3]??藸?美).Java編程思想[M].機械工業(yè)出版社2007[4]李剛.Java瘋狂講義[M].電子工業(yè)出版社2008[5]哈諾德.Java網(wǎng)絡編程.中國電力出版社2005[6]王鵬,何昀峰.JavaSwing圖形界面開發(fā)與詳解[M].清華大學出版社2008[7]徐峰.UML面向?qū)ο蠼;A[M].水利水電出版社2006[8]王少鋒.面向?qū)ο蠹夹g(shù)UML教程[M].清華大學出版社,2005[9]羅依.JavaSwing[M].清華大學出版社,2004[10]潘志軍.數(shù)據(jù)庫應用基礎—Access[M].北京理工大學出版社,2010[11]付博.Access開發(fā)實例完全剖析[M].中國電力出版社,2006[12]特羅特著,徐言聲譯.設計模式解析[M].人民郵電出版社,2004年[13]伽瑪著,李英軍譯.設計模式--可復用面向?qū)ο筌浖幕A[M].機械工業(yè)出版社,2005[14]卡爾弗特等著,周恒民譯.JavaTCP/IPSocket編程[M].機械工業(yè)出版社,2009[15]方晨.PhtoshopCS3中文版入門提高[M].上海科學普及出版社,2008[16]丹尼斯著,干紅花譯.系統(tǒng)分析與設計[M].人民郵電出版社,2009附錄:ParsingJavaAbstractionoftheDifferenceBetweenClassesandInterfacesInJavalanguage,abstractscale-upandwithsupportclassabstractiondefinitionoftwomechanisms.Becauseofthesetwokindsofmechanismofexistence,justgivesJavapowerfulobject-orientedskills.Abstractscale-upandwithbetweenclassabstractiondefinitionforsupporthasgreatsimilarities,eveninterchangeable,somanydevelopersintolinenonabstractclassdefinitionforabstractscale-upanditisbecomingmorecasualwithchoice.Infact,bothbetweenstillhastheverybigdifference,fortheirchoiceevenreflectedinproblemdomainessenceofunderstanding,todesigntheintentionsoftheunderstandcorrectlyandreasonable.Thispaperwillforthedifferenceanalysis,tryingtogiveadeveloperwithachoicebetweenthemarebased.UnderstandclassabstractionAbstractclassandinterfaceinJavalanguageisusedforabstractclasses(inthisarticlenonabstractclassnotfromabstractscale-uptranslation,itrepresentsanabstractbody,andabstractscale-upforJavalanguageusedtodefineclassabstractioninoneway,pleasereadersdistinguish)defined,thenwhataretheabstractclasses,useabstractclassesforusanygood?Inobject-orientedconcept,weknowallobjectsisthroughclasstodescribe,butinturnnotsuch.Notallclassesareusedtodescribeobject,ifaclassdoesnotcontainenoughinformationtoportrayaconcreteobject,thisclassisabstractclasses.Abstractclassesareoftenusedtocharacterizationofproblemfieldinouranalysis,designthattheabstractconcepts,istotheserieswilllookdifferent,butessentiallythesameexactconceptionofabstraction.Forexample:ifwecarryoutagraphicaleditingsoftwaredevelopment,willfindproblemdomainexistsround,trianglesosomespecificconcept,theyaredifferent,buttheyallbelongtoshapesuchaconcept,shapethisconceptinproblemdomainisnotexist,itisanabstractconcept.Preciselybecausetheabstractconceptsinproblemfieldnocorrespondingspecificconcept,sotocharacterizationabstractconceptsnonabstractclasscannotbeinstantiated.Inanobject-orientedfield,mainlyusedforclassabstractiontypeshidden.Wecanconstructafixedagroupofbehaviorofabstractdescription,butthisgroupofbehaviorbutcanhaveanyapossibleconcreteimplementation.Thisabstractdescribeisabstractclasses,andthisanarbitraryapossibleconcreterealizationisbehavedforallpossiblederivedclass.Modulescanbeoperatinganabstractbody.Duetothemoduledependentonafixedabstractionbody,soitcanarenotallowedtomodify,Meanwhile,throughtheabstractderivedfromthebody,alsocanexpandthebehaviorofthismodulefunction.FamiliarwithOCPreadersmustknow,object-orienteddesigntobeabletoachieveacoreprinciplesOCP(Open-Closedflying),classabstractionisoneofthekey.FromtheperspectivesofgrammardefinitionabstractclassandinterfaceIngrammaticalperspective,Javalanguageforabstractscale-upandwithgivesdifferentdefinitionsbelowtodefineaway,calledproduceprofessionalDemoabstractclassasanexampletoillustratethedifference.Usetheabstractscale-upproduceprofessionalDemoabstractclassdefinedasfollows:abstractclassDemo{
abstractvoidmethod1();
abstractvoidmethod2();
…
}UsethewaywithproduceprofessionalDemoabstractclassdefinedasfollows:interfaceDemo{
voidmethod1();
voidmethod2();
…
}Intheabstractscale-upmanner,produceprofessionalDemocanhavetheirowndatamembers,alsocanhavethemembersoftheabstractmethod,andwiththerealizationoftheway,produceprofessionalDemocanhaveonlystaticcannotbemodifieddatamembers(i.e.mustisstatic,immigration,butinwithgenerallydoesn'tdefinedatamembers),allthemembersofthemethodsisabstract.Inasense,withaspecialkindofabstractclass.Fromprogramming,fromtheperspectiveofabstractscale-upandwithcanbeusedtoachieve"cancel"thoughtsmakethemselves.Butinthespecificusetopstillhavesomedifference.First,abstractclassinJavalanguagesuggestsisakindofinheritingrelationship,aclasscanbeusedonlyonceinheritancerelationship(becauseJavadonotsupportmoreinheritanceZhuanZhu).-However,aclassbutcanimplementmultiplewith.MaybeitisJavalanguagedesignersinconsideringJavaformultipleinheritancesupportofacompromisetoconsiderit.Secondly,inthedefinitionofabstractscale-up,wemaygivemethodsofdefaultbehavior.Butinwiththedefinitionofmethodcannothavethedefaultbehaviour,tobypassthislimits,mustuseentrust,butitwilladdsomecomplexity,sometimescancausealotoftrouble.Inclassabstractioncannotdefinethedefaultbehaviouristhereanotherseriousproblemthatmaycauseonthemaintenanceoftrouble.Becauseiflaterwanttomodifytheinterface(usuallybysuchabstractscale-uporwithtorepresent)toadapttothenewsituation(e.g.,addingnewmethodsortohavealreadyusedthemethodtoaddnewparameters),willbeverytroublesome,mightspendalotoftime(foraderivedclassmanysituation,especially).Butiftheinterfaceisthroughscale-upabstracttorealize,thenmayjustneedtomodifydefinedintheabstractscale-updefaultbehaviorisok.Similarly,ifnotinabstractclassdefinedinthedefaultbehavior,canleadtothesamemethodtoappearintheabstractclasseveryaderivedclass,violated"a-oneru
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店翻新墊資裝修合同范本
- 2025家居定制裝修合同示范文本
- 2025物業(yè)綠化委托的合同書
- 2025房屋租賃合同主體變更協(xié)議書
- 潛水船租賃合同
- 遺產(chǎn)放棄繼承合同范本
- 工程項目測繪合同協(xié)議書范本
- 土地臨時租賃合同
- 2025年簽訂租賃合同的步驟詳解
- 2025委托合同范本標準咨詢服務的委托合同
- 掛靠租車合同范本
- 2024年中國壁球館市場調(diào)查研究報告
- 水楊酸產(chǎn)品原材料供應與需求分析
- 地下車庫等環(huán)氧地坪漆工程投標文件(技術(shù)標)
- 成人重癥患者人工氣道濕化護理專家共識 解讀
- 1《諫太宗十思疏》公開課一等獎創(chuàng)新教學設計統(tǒng)編版高中語文必修下冊
- 2024年湖北省中考地理生物試卷(含答案)
- 21《莊子》二則 北冥有魚 公開課一等獎創(chuàng)新教案
- JBT 5928-2014 工程機械 驅(qū)動橋 試驗方法
- 小升初小學生簡歷模板
- 幼兒園中班繪本課件-《小金魚逃走了》
評論
0/150
提交評論