Java聊天室課程設(shè)計報告_第1頁
Java聊天室課程設(shè)計報告_第2頁
Java聊天室課程設(shè)計報告_第3頁
Java聊天室課程設(shè)計報告_第4頁
Java聊天室課程設(shè)計報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、UML課程設(shè)計題 目 網(wǎng)絡(luò)聊天程序開發(fā)設(shè)計與實現(xiàn)學(xué) 號:6姓 名: 衛(wèi)國輝 指導(dǎo)教師: 完成時間:2017年 12月 目錄1.摘要22.緒論02.開發(fā)環(huán)境03.需求分析13.1程序簡介13.2程序功能14.系統(tǒng)設(shè)計24.1概要設(shè)計24.2詳細設(shè)計25.測試86.結(jié)論11參考文獻12摘要 本次訓(xùn)練主要是考查了對JAVA程序設(shè)計的綜合運用,設(shè)計一個Socket通信的聊天程序,用戶可以通過程序進行聊天通信,但不支持用戶自定義表情及圖片的發(fā)送。本程序設(shè)計也用到了一些相關(guān)的標準Java的類,給程序設(shè)計帶來了許多的方便,但用那些要切記加相應(yīng)的類的包,還有一些構(gòu)造方法和個別接口方法。本程序可以實現(xiàn)用戶之間的

2、一些簡單的交互,雖然功能較少,但是我想通過這次程序設(shè)計來熟悉并且學(xué)習(xí)更多關(guān)于JAVA編程的東西,來便于以后可以使用。關(guān)鍵詞:java聊天1.緒論對于一個選擇網(wǎng)絡(luò)編程的人來說,必須要有足夠的細心和耐心,因為編程一般來說是很枯燥的乏味的,而且程序會越來越復(fù)雜,它所用到的符號、標記很多,所以不能出點小錯誤的。還有,我們不能只是看程序,要學(xué)會把自己學(xué)的自己拿去實踐,自己去編一些程序,培養(yǎng)自己的動手能力,掌握一些編程技巧,熟練運用自己學(xué)到的理論知識,這樣在以后才能開發(fā)出屬于自己的東西。如今,隨著科學(xué)技術(shù)的發(fā)展,計算機已成為了我們生活中必不可少的設(shè)備了,而掌握計算機知識和運用,又成了我們每一個人的目標了。

3、現(xiàn)在IT行業(yè)的飛速發(fā)展,無不應(yīng)正了以前、現(xiàn)在、將來計算機行業(yè)都是科學(xué)發(fā)展的主導(dǎo)行業(yè)。而這些基本上都建立在程序上的,所以程序員對計算機行業(yè)來說,可想而知有多么的重要了,他們所付出的每一滴汗水都將推動這個行業(yè)的發(fā)展?,F(xiàn)在我就用JAVA語言編寫一個簡單的程序Java聊天程序。將所學(xué)的基本知識用到其中去,這里包括了構(gòu)造方法,創(chuàng)建圖形界面,引用類等等。這不僅能鍛煉我的實踐能力,同時也進一步復(fù)習(xí)和鞏固了我所學(xué)的理論知識。對以前沒有學(xué)好的還有督促和促進作用。而且,根據(jù)需要,還可以了解一些課外的知識。增加自己的知識面。2.開發(fā)環(huán)境在開發(fā)此聊天程序時,該項目所使用的軟件開發(fā)環(huán)境如下: 操作系統(tǒng):Windows

4、7 開發(fā)工具:eclipse3.2及其VE插件 Eclipse簡介 Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具。 Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語 言開發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如C+和Python的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持 使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Ec

5、lipse為框架開發(fā)自己的IDE。 Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Eclipse項目已經(jīng)發(fā)展成為了一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項目中, 其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個開發(fā)源碼項目,它其實是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開放

6、源碼,任何人都可以免費得到,并可以在此基礎(chǔ)上開發(fā)各自的插件,因此越來越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多 大公司也紛紛加入了該項目,并宣稱Eclipse將來能成為可進行任何語言開發(fā)的IDE集大成者,使用者只需下載各種語言的插件即可。3.需求分析3.1程序簡介隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,人們越來越多的依賴于網(wǎng)絡(luò),為了方便人們的生活,網(wǎng)絡(luò)聊天自然成為了熱點,各種工具到處都是。此程序便是模仿其他聊天工具設(shè)計的,當然只是實現(xiàn)了比較少的功能,可以進行基本的聊天。3.2 程序功能該程序功能:該程序分為2個部分,一個是客戶端程序,一個是服務(wù)端程序,需要先開啟服務(wù)器,再開啟客戶端才能使用,客戶端程序提供了

7、相互通信、清空聊天記錄的等功能,服務(wù)端則用于接受客戶端的請求,記錄客戶端的信息等。 4.系統(tǒng)設(shè)計4.1概要設(shè)計此聊天程序共有2個部分,客戶端和服務(wù)器??蛻舳酥邪?個Java文件,為主類client.java,;服務(wù)器端只有一個主類Server.java。程序流程圖: 服務(wù)器程序結(jié)構(gòu) 客戶端程序結(jié)構(gòu)4.2詳細設(shè)計 (1)服務(wù)器程序?qū)崿F(xiàn) 本程序采用的是Socket通信來設(shè)計的,建立一個主類Server.java,其中主類中還包括服務(wù)器線程 然后在其構(gòu)造方法加載程序所需的組件,構(gòu)造方法如下:public ClientThread(Socket socket) try this.socket =

8、socket; reader = new BufferedReader(new InputStreamReader(socket .getInputStream(); writer = new PrintWriter(socket.getOutputStream(); / 接收客戶端的基本用戶信息 String inf = reader.readLine(); StringTokenizer st = new StringTokenizer(inf, ); user = new User(st.nextToken(), st.nextToken(); / 反饋連接成功信息 writer.pri

9、ntln(user.getName() + user.getIp() + 與服務(wù)器連接成功!); writer.flush(); / 反饋當前在線用戶信息 if (clients.size() 0) String temp = ; for (int i = clients.size() - 1; i = 0; i-) temp += (clients.get(i).getUser().getName() + / + clients .get(i).getUser().getIp() + ; writer.println(USERLIST + clients.size() + + temp);

10、writer.flush(); / 向所有在線用戶發(fā)送該用戶上線命令 for (int i = clients.size() - 1; i = 0; i-) clients.get(i).getWriter().println( ADD + user.getName() + user.getIp(); clients.get(i).getWriter().flush(); catch (IOException e) e.printStackTrace(); SuppressWarnings(deprecation) public void run() / 不斷接收客戶端的消息,進行處理。 St

11、ring message = null; while (true) try message = reader.readLine();/ 接收客戶端消息 if (message.equals(CLOSE)/ 下線命令 contentArea.append(this.getUser().getName() + this.getUser().getIp() + 下線!rn); / 斷開連接釋放資源 reader.close(); writer.close(); socket.close(); / 向所有在線用戶發(fā)送該用戶的下線命令 for (int i = clients.size() - 1; i

12、 = 0; i-) clients.get(i).getWriter().println( DELETE + user.getName(); clients.get(i).getWriter().flush(); listModel.removeElement(user.getName();/ 更新在線列表 / 刪除此條客戶端服務(wù)線程 for (int i = clients.size() - 1; i = 0; i-) if (clients.get(i).getUser() = user) ClientThread temp = clients.get(i); clients.remove

13、(i);/ 刪除此用戶的服務(wù)線程 temp.stop();/ 停止這條服務(wù)線程 return; else dispatcherMessage(message);/ 轉(zhuǎn)發(fā)消息 catch (IOException e) e.printStackTrace(); 其運行截圖如下圖所示:(2)、客戶端主程序本程序使用了默認的卡片布局方式,對窗口的大小進行設(shè)置,讓聊天窗口能夠居中顯示,以及登錄主窗口類。實現(xiàn)窗口布局功能和類的調(diào)用功能的主要代碼如下: * 連接服務(wù)器 * * param port * param hostIp * param name */ public boolean connectS

14、erver(int port, String hostIp, String name) / 連接服務(wù)器 try socket = new Socket(hostIp, port);/ 根據(jù)端口號和服務(wù)器ip建立連接 writer = new PrintWriter(socket.getOutputStream(); reader = new BufferedReader(new InputStreamReader(socket .getInputStream(); / 發(fā)送客戶端用戶基本信息(用戶名和ip地址) sendMessage(name + + socket.getLocalAddre

15、ss().toString(); / 開啟接收消息的線程 messageThread = new MessageThread(reader, textArea); messageThread.start(); isConnected = true;/ 已經(jīng)連接上了 return true; catch (Exception e) textArea.append(與端口號為: + port + IP地址為: + hostIp + 的服務(wù)器連接失敗! + rn); isConnected = false;/ 未連接上 return false; (5)、 聊天窗口程序設(shè)計 程序提供了發(fā)送文字和關(guān)閉

16、聊天的的簡單功能。以下是實現(xiàn)程序的主要方法: * 發(fā)送消息 * * param message */ public void sendMessage(String message) writer.println(message); writer.flush(); /* * 客戶端主動關(guān)閉連接 */ SuppressWarnings(deprecation) public synchronized boolean closeConnection() try sendMessage(CLOSE);/ 發(fā)送斷開連接命令給服務(wù)器 messageThread.stop();/ 停止接受消息線程 / 釋放

17、資源 if (reader != null) reader.close(); if (writer != null) writer.close(); if (socket != null) socket.close(); isConnected = false; return true; catch (IOException e1) e1.printStackTrace(); isConnected = true; return false; 其運行截圖如下圖所示: 5.測試 程序在編碼過程中,出現(xiàn)了許多的問題,有的是因為程序的完善性不夠好而造成的,有的是因為技術(shù)不夠而無法解決。通過不停的調(diào)試

18、,修改,多數(shù)已發(fā)現(xiàn)的問題都已完善,但依然存在少數(shù)的問題無法解決。例如,在用戶注冊這個功能中,當用戶的用戶名重復(fù)時,服務(wù)器會出現(xiàn)用戶名重復(fù)的異常,服務(wù)器就不會響應(yīng)。6.結(jié)論通過這次程序的實訓(xùn),我知道了自己在許多地方的不足,雖然書上的程序基本能看懂,但是自己的編程實踐能力實在是欠缺,而且我知道了,Java語言最重要的不僅僅是學(xué)好語法,而Java中最重要的還是要理解它的面向?qū)ο缶幊痰乃枷?,理解它的面向?qū)ο蟮奶卣?。因為學(xué)習(xí)任何一門語言最重要的就是理解它的思想,要做到知其然,并且知其所以然。要學(xué)會真正的編寫程序,而不僅僅是把語法背的滾瓜爛熟。還要經(jīng)常寫代碼,做到一邊寫一邊理解,這樣才能真正的實現(xiàn)學(xué)習(xí)Java語言的目的。這次實訓(xùn)也告

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論