局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告樣本_第1頁
局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告樣本_第2頁
局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告樣本_第3頁
局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告樣本_第4頁
局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告樣本_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除。局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)報(bào)告題目局域網(wǎng)聊天系統(tǒng)班級:學(xué)號:姓名:完成時(shí)間:年10月目錄第一章引言 21.1開發(fā)背景 21.2需求分析 2第二章系統(tǒng)設(shè)計(jì) 32.1功能設(shè)計(jì) 32.2系統(tǒng)架構(gòu) 52.3模塊設(shè)計(jì)………….……...32.4流程(或算法)設(shè)計(jì) 52.5類與接口設(shè)計(jì) 5第三章系統(tǒng)實(shí)現(xiàn) 73.1管理子系統(tǒng) 7第四章 設(shè)計(jì)總結(jié) 10參考文獻(xiàn) 10附錄(核心代碼) 11局域網(wǎng)聊天系統(tǒng)第一章引言本文圍繞Java編程語言在網(wǎng)絡(luò)編程方面的具體應(yīng)用,論述了使用面向?qū)ο蠓椒?對局域網(wǎng)聊天程序進(jìn)行需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),最后使用Java編程實(shí)現(xiàn)的全過程。在編程我們使用的java語言,是當(dāng)前比較流行的編程語言。在當(dāng)今這個(gè)網(wǎng)絡(luò)的時(shí)代,java語言在網(wǎng)絡(luò)編程方面的優(yōu)勢使得網(wǎng)絡(luò)編程有了更好的選擇。Java語言最大的特點(diǎn)是具有跨平臺性,使其不受平臺不同的影響,得到了廣泛的應(yīng)用。1.1開發(fā)背景隨著互聯(lián)網(wǎng)的發(fā)展,人們對網(wǎng)絡(luò)的依賴越來越大,越來越離不開網(wǎng)絡(luò),網(wǎng)絡(luò)聊天工具作為一種交流工具,已經(jīng)受到網(wǎng)民的青睞。當(dāng)前,出現(xiàn)了很多功能強(qiáng)大的聊天工具,其中應(yīng)用比較廣泛的有騰訊QQ、MSN-Messager等等。即時(shí)通訊軟件,是每一個(gè)上網(wǎng)用戶都需要的工具,它除了能夠讓您迅速地在網(wǎng)上找到自己的朋友和伙伴之外,還能夠?qū)崟r(shí)交談和傳遞信息,截止到當(dāng)前,全球約有近3億多人使用即時(shí)軟件,正因?yàn)榧磿r(shí)通訊軟件擁有數(shù)以億計(jì)的用戶和增長的市場,因此各個(gè)公司都盯上了這個(gè)最大的市場,一時(shí)間,即時(shí)通訊市場硝煙四起。而且經(jīng)過制作該程序還能更好的學(xué)習(xí)網(wǎng)絡(luò)軟件編程知識。1.2需求分析 尋找服務(wù)器登陸能夠?qū)崿F(xiàn)點(diǎn)對點(diǎn)單聊能夠?qū)崿F(xiàn)文件傳輸能動態(tài)更新在線用戶列表該系統(tǒng)實(shí)現(xiàn)了用戶之間的點(diǎn)對點(diǎn)單人聊天。為了加強(qiáng)之間的信息交流,還實(shí)現(xiàn)了用戶之間文件傳輸,文件共享。在客戶端和服務(wù)器端都能夠查看歷史消息、保存消息、清空消息。為了監(jiān)控用戶之間的狀態(tài),服務(wù)器實(shí)時(shí)刷新在線用戶列表,同時(shí)用戶時(shí)間文件傳輸?shù)男畔⒍紩诜?wù)器上顯示。第二章系統(tǒng)設(shè)計(jì)2.1功能設(shè)計(jì)整個(gè)系統(tǒng)分為服務(wù)器和客戶端,服務(wù)器端維護(hù)各個(gè)客戶端的信息??蛻舳说乃行畔l(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行消息的分析處理并做出相應(yīng)的控制,服務(wù)器端是所有信息的中心。服務(wù)器端能夠查看所有用戶的聊天記錄,監(jiān)控所有用戶的狀態(tài),發(fā)出用戶上線、離線提示等公告,客戶端則提供接收公告的功能。本課程設(shè)計(jì)按照系統(tǒng)的具體功能要求,首先應(yīng)用Socket編程創(chuàng)立客戶端和服務(wù)器端,每多個(gè)客戶端服務(wù)器端就會相因的創(chuàng)立一個(gè)線程,它們之間經(jīng)過這個(gè)連接來實(shí)現(xiàn)數(shù)據(jù)通信;然后在客戶端設(shè)置一個(gè)監(jiān)聽器,用于監(jiān)聽服務(wù)器發(fā)來的消息。并根據(jù)消息做出不同的動作。2.2系統(tǒng)架構(gòu)(1)選擇傳輸控制協(xié)議TCP,使用Java的Socket編程機(jī)制,分別建立客戶端與服務(wù)器端使用的是UDP控制協(xié)議;(2)分別設(shè)計(jì)客戶端與服務(wù)器端的界面,并使用Java應(yīng)用程序用戶界面的開發(fā)工具包Swing進(jìn)行窗體界面的布局,以及實(shí)現(xiàn)部分窗口事件的相應(yīng)。2.3模塊設(shè)計(jì)(1)服務(wù)器端主要實(shí)現(xiàn)向各個(gè)客戶端發(fā)布系統(tǒng)消息,接受來自客戶端的各種信息并分別處理。具體功能如下:①連接控制: 包括啟動服務(wù)器、斷開服務(wù)器以及斷開某個(gè)客戶端的連接;②管理作用: 包括對參與聊天者的昵稱進(jìn)行修改以及向所有或某個(gè)客戶端發(fā)送消息,維護(hù)一個(gè)IP地址和昵稱所對應(yīng)的哈希表,以便定位到正確的客戶端,且有權(quán)強(qiáng)制修改用戶昵稱;③刷新列表: 在有用戶登陸或離開的時(shí)候?qū)崟r(shí)更新列表,并將信息反饋到各個(gè)客戶端;④登陸信息: 檢查用戶是否已登陸,如登錄,發(fā)消息通知所有用戶。同時(shí)刷新在線用戶列表;⑤聊天記錄: 能保存聊天記錄,實(shí)現(xiàn)消息的保存、清空以及查看等功能;⑥消息處理: 解析客戶端與服務(wù)器端的消息交互類型,并做出相應(yīng)處理,能夠找到消息所對應(yīng)的接收端。服務(wù)器端結(jié)構(gòu)如圖1:服務(wù)器服務(wù)器連接控制消息處理聊天記錄登錄信息刷新列表管理作用圖1服務(wù)器端結(jié)構(gòu)(2)客戶端 主要實(shí)現(xiàn)向服務(wù)器端發(fā)布消息,而且對來自服務(wù)器的消息做出相應(yīng)的響應(yīng)。具體功能如下:①連接功能: 輸入服務(wù)器地址,實(shí)現(xiàn)登錄及斷開功能②登錄設(shè)置: 登錄時(shí),發(fā)送消息使服務(wù)器端獲得相關(guān)登錄信息,昵稱及IP地址記錄到服務(wù)器端維持的哈希表,斷開后發(fā)送消息使IP地址及昵稱從哈希表中刪除;③監(jiān)聽作用: 實(shí)現(xiàn)對服務(wù)器發(fā)送過來的消息進(jìn)行監(jiān)聽的功能;④消息處理: 接收由服務(wù)器端發(fā)送來的信息,并做出相應(yīng)的響應(yīng); 相應(yīng)從服務(wù)器端接收到的消息交互類型,實(shí)現(xiàn)用戶與用戶之間的信息交互和文件交互;客戶端結(jié)構(gòu)如圖2:客戶端客戶端連接功能消息處理理聊天記錄消息處理監(jiān)聽作用登錄設(shè)置文件傳輸圖2客戶端結(jié)構(gòu)2.4流程(或算法)設(shè)計(jì)圖3系統(tǒng)功能流程2.5類與接口設(shè)計(jì)1.用戶注冊功能分析用戶向服務(wù)器發(fā)出注冊請求,首先建立和服務(wù)器的連接,其次注冊提交窗體(Register)要進(jìn)行用戶輸入判斷,若用戶提交的賬號和密碼有一項(xiàng)為空或者全為空,則無法發(fā)送提交的賬號和密碼,然后服務(wù)器在數(shù)據(jù)庫中查找用戶提交的賬號是否已經(jīng)存在,若存在則向用戶發(fā)送”1”(賬號已存在)的消息,否則發(fā)送”0”(注冊成功)的消息。2.用戶登錄功能分析登錄用戶向服務(wù)器發(fā)出登錄請求,首先建立和服務(wù)器的連接,其次登錄窗體(Login)要進(jìn)行用戶輸入判斷,若登錄用戶輸入的賬號和密碼有一項(xiàng)為空或者全為空,則無法發(fā)送登錄的賬號和密碼,然后服務(wù)器在用戶在線列表中查找登錄用戶提交的賬號是否已經(jīng)在線上,若已經(jīng)在線則向登錄用戶發(fā)送”havelogin”(賬號account登錄失敗,用戶已經(jīng)在線)的消息,窗體不跳轉(zhuǎn),否則服務(wù)器在數(shù)據(jù)庫中查找登錄用戶提交的賬號是否已經(jīng)存在,若不存在則向用戶發(fā)送”1”(登錄失敗,用戶不存在,請先注冊)的消息,窗體不跳轉(zhuǎn),反之服務(wù)器在數(shù)據(jù)庫中查找登錄用戶提交的賬號和密碼是否正確匹配,正確則向登錄用戶發(fā)送”0”(登錄成功)消息,并將登錄用戶加入在線用戶列表,窗體跳轉(zhuǎn)到AfterLogin窗體,不正確則向登錄用戶發(fā)送”2”(登錄失敗,密碼不正確)消息,窗體不跳轉(zhuǎn)。3.用戶群體聊天功能分析在線用戶向服務(wù)器發(fā)出群聊請求(基于跟服務(wù)器建立的連接通道)首先群聊窗體(publicChat)要進(jìn)行當(dāng)前用戶的輸入判斷,若當(dāng)前用戶輸入的消息為空,則無法發(fā)送(提醒:請輸入非空的語言),然后服務(wù)器收到用戶發(fā)來的群聊消息,并向的所有在線用戶轉(zhuǎn)發(fā)該用戶發(fā)來的群聊消息。4.用戶私人聊天功能分析在線用戶向服務(wù)器發(fā)出私人聊天請求(基于跟服務(wù)器建立的連接通道),首先私聊窗體(Session)要進(jìn)行當(dāng)前用戶的輸入判斷,若當(dāng)前用戶輸入的消息為空,則無法發(fā)送(提醒:請輸入非空的語言),然后服務(wù)器收到用戶發(fā)來的私聊消息,服務(wù)器對私聊消息進(jìn)行解析,并將消息轉(zhuǎn)發(fā)給當(dāng)前用戶要進(jìn)行私聊的在線用戶。5.用戶在線列表刷新功能分析登錄用戶登錄成功以后,會進(jìn)行窗體跳轉(zhuǎn),跳轉(zhuǎn)到AfterLogin窗體,在窗體加載的時(shí)(基于和服務(wù)器的通道),當(dāng)前用戶將上線消息發(fā)送給服務(wù)器并獲取到服務(wù)器發(fā)來的在線用戶列表(保存下來),同時(shí)當(dāng)前用戶端要啟動一個(gè)子線程來接收服務(wù)器發(fā)來的消息。當(dāng)用戶端子線程讀取到服務(wù)器發(fā)來以”online”開頭的消息時(shí)(當(dāng)有用戶上線或下線時(shí)就會發(fā)送一次),子線程能將更新任務(wù)打包發(fā)送給用戶端主線程,進(jìn)行AfterLogin窗體”聯(lián)系人”-”在線用戶”的修改。6.用戶下線通知功能分析當(dāng)前在線用戶進(jìn)行下線操作以后,服務(wù)器會收到用戶下線的通知,此時(shí)服務(wù)器就會將下線的用戶從在線用戶列表中刪除,并向剩下的所有在線用戶發(fā)送該用戶下線消息(剩下的在線用戶能接到提示),同時(shí)服務(wù)器再一次向所有的在線用戶發(fā)送一次以”online”開頭的在線用戶列表,則用戶端子線程就能將更新任務(wù)打包發(fā)送給用戶端主線程,進(jìn)行AfterLogin窗體”聯(lián)系人”-”在線用戶”的修改。7.數(shù)據(jù)庫名類型長度十進(jìn)位是否允許為空是否為主鍵備注idint110否是自動遞增accountvchar200否否

passwordvchar200否否

questionvchar200是否

answervchar200是否

e_mailvchar200是否

reg_timetimestamp00否否刷新為當(dāng)前時(shí)間last_login_timetimestamp00否否默認(rèn)為0000-00-0000:00:00第三章系統(tǒng)實(shí)現(xiàn)3.1管理子系統(tǒng)圖4登錄界面圖5注冊界面圖6在線界面圖7私聊界面圖8群聊界面設(shè)計(jì)總結(jié)首先,本次課程設(shè)計(jì)認(rèn)真學(xué)習(xí)了論壇中有關(guān)程序,以及參考文獻(xiàn)中的書籍中提出的觀點(diǎn)。然后進(jìn)行了系統(tǒng)結(jié)構(gòu)設(shè)計(jì),最后進(jìn)行代碼實(shí)現(xiàn)。本次課程設(shè)計(jì)利用Java應(yīng)用程序Socket編程實(shí)現(xiàn)以下功能:使用Java的多線程處理機(jī)制建立兩個(gè)套接字分別作為服務(wù)器和客戶端。服務(wù)器端實(shí)現(xiàn)對客戶端聊天內(nèi)容的監(jiān)聽而且接受來自客戶端的各種信息請求,能夠控制客戶端的鏈接以及對用戶的管理作用,而且實(shí)時(shí)的檢測在線用戶,對在線用戶列表刷新。而且能夠?yàn)榉?wù)器端自動保存消息記錄并完成服務(wù)器端與客戶端的交互??蛻舳藙t連接到特定的服務(wù)器,實(shí)現(xiàn)聊天服務(wù),文件傳輸,文件共享等功能,而且能夠監(jiān)聽服務(wù)器發(fā)來的消息并進(jìn)行回應(yīng)。由此可見本次課程設(shè)計(jì)完成了最初的設(shè)計(jì)要求,實(shí)現(xiàn)簡單的局域網(wǎng)聊天功能。程序編寫中用到了JAVA中的Swing組件,面板容器,事件處理,線程的創(chuàng)立、同步,輸入輸出處理,內(nèi)部類,異常處理,和網(wǎng)絡(luò)通信的知識,更深一步的加固了本學(xué)期所學(xué)知識,收獲很多。在這次的課程設(shè)計(jì)中,我也用到了Socket類和ServerSocket類,明白了它們是Java實(shí)現(xiàn)Socket通信的主要工具。創(chuàng)立ServerSocket對象就創(chuàng)立了一個(gè)監(jiān)聽服務(wù),創(chuàng)立一個(gè)Socket對象就建立了一個(gè)Client與Srever間的連接。明白了Java語言網(wǎng)絡(luò)編程的可靠性,平臺無關(guān)性??傊?jīng)過本次課程設(shè)計(jì),掌握了使用Java語言進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本方法,提高了運(yùn)用面向?qū)ο笾R解決實(shí)際問題的能力。本次課程設(shè)計(jì)的不足:本次課程設(shè)計(jì)中沒有實(shí)現(xiàn)語音聊天功能和群聊功能。在以后的學(xué)習(xí)中定會注意這方面的學(xué)習(xí),以得到補(bǔ)充。附錄(核心代碼)服務(wù)器端:1.數(shù)據(jù)庫連接publicclassDBOperator{ privatestaticConnectionconn; privateDBOperator(){} publicstaticsynchronizedConnectiongetConnectionInstance(){ if(conn==null){ conn=getConnection(); } returnconn; }…2.客戶端與服務(wù)器通信NetTalkprivatestaticNetTalktalk=null;privateSocketclient=null;privateDataOutputStreamdos=null;privateDataInputStreamdis=null;privateNetTalk(){…}publicstaticNetTalkgetTalkInstance(){…}publicStringreadMsg(){…}publicvoidwriteMsg(Stringmsg){…}客戶端用戶登錄功能實(shí)現(xiàn)publicclassLoginController{ publicTextFieldaccount; publicPasswordFieldpassword; publicButtonLoginButton; publicHyperlinkregister; publicvoidonClick(){ Stringaccount=this.account.getText(); Stringpassword=this.password.getText();// interrorCode=UserService.register(account,password); interrorCode=UserService.login(account,password); if(errorCode==0){ //登錄成功,跳轉(zhuǎn)到主界面 UserService.currentAccount=account; Main.goMainUI(); }elseif(errorCode==1){ //提示:網(wǎng)絡(luò)連接超時(shí) }elseif(errorCode==2){ //提示:密碼或賬號不對 } }2.群體聊天功能實(shí)現(xiàn)elseif(result.startsWith("public")){ finalString[]msg=result.split(":"); //Stagestage=UserService.chatUI.get("public"); //if(stage==null){ //stage=Main.goPublicUI(); //UserService.chatUI.put("public",stage); //} Platform.runLater(newRunnable(){ publicvoidrun(){ //把消息放到public聊天窗口 BaseControllerstage=UserService.chatUI.get("public");if(stage==null){ stage=Main.goPublicUI(); UserService.chatUI.put("public",stage); stage.stage.setOnCloseRequest(newEventHandler<WindowEvent>(){ @Override publicvoidhandle(WindowEventevent){ //TODOAuto-generatedmethodstub UserService.chatUI.remove("public

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論