基于Java聊天室的設計與實現畢業設計報告_第1頁
基于Java聊天室的設計與實現畢業設計報告_第2頁
基于Java聊天室的設計與實現畢業設計報告_第3頁
基于Java聊天室的設計與實現畢業設計報告_第4頁
基于Java聊天室的設計與實現畢業設計報告_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、設計題目:基于 java 聊天室的設計與實現系 部:電子信息系學生姓名:專業班級:學 號:指導教師:- I -基于網絡的聊天室系統的設計開發摘要信息時代的到來引發了一場知識和信息革命,計算機和現代網絡技術的廣泛應用極大地促進了社會經濟的發展,同時也帶來了一些新興產業的發展,比如聊天室。聊天室已經慢慢成為人們生活的一部分,呈現出良好的勢頭和廣闊的發展前景。本文主要介紹了以當前流行Web 設計語言java Socket 技術語言開發的一個簡單的網絡聊天室。該小聊天室重要是為許多喜愛上網聊天的朋友開發設計的,希望能在現有的眾多聊天室中給大家多一種的選擇。和許多大型的網絡聊天室相比該小聊天室比較簡單,

2、但能實現聊天的基本功能,點對多聊天,點對點聊天,傳送文件等。本聊天室主要由登錄頁面、驗證頁面、聊天室頁面、離開頁面、查看聊客頁面、幫助頁面等頁面構成。整個設計簡潔明了、實用,使用簡單。關鍵字 : Web 設計語言,聊天室,java Socket 技術#ABSTRACTThe information age arrival has initiated a knowledge and information revolution, widespread application of the computer and the modern network technology enormously

3、promoted the social economy development, at the same time has also brought some emerging industrial development, for instance chatroom. Chatroom has already become a part of people's life slowly, presented the good tendency and the broad prospects for development.A chatroom was introduced by a p

4、opular Web's design language Java Server Page-JSP's language presently in this context. This is a chatroom that designed to many friend who likes chatting online. The hope can give everybody in the existing multitudinous chatroom more than one kind of choices. Compared with many large-scale

5、networks chatrooms this small chatroom is quite to be simple, but can realize the basic function which the dotted pair is chatted more, point-to-point chats,transmission document and so on. This chatroom mainly consist with registering the page, confirming the page, the chatroom page, leaving the pa

6、ge, the examination of chating guest page, helping page constitution and so on. Entire design Concise, practical and the use is simple.KEYWORDS : Web s designla nguage,chatroom,java Socket-32-III目錄第一章緒 論 11.1 聊天室系統的基本概念 11.2 開發聊天室系統的意義 11.3 本次畢業設計所要完成的主要工作 2第二章課題介紹 32.1 課題的目的 32.2 課題的意義 32.3 課題的主要任務

7、 4第三章系統開發環境與工具的選擇 53.1 Java 簡介 53.1.1 Java語言 53.1.2 Java架構設計 53.2 本課題開發環境的選擇 63.3 本課題開發工具的選擇 73.4 本課題開發技術的選擇 8第四章需求分析 94.1 以往聊天室系統的缺陷 94.2 聊天室系統作為網絡通訊工具的作用 94.3 現行聊天室系統的功能需求 94.3.1 用戶注冊 104.3.2 用戶登入 114.3.3 私聊 114.3.4 聊天記錄 124.3.5 系統消息 124.3.6 用戶退出 134.4 質量性能需求 144.4.1 容錯性需求 144.4.2 穩定性需求 144.4.3 軟件

8、設計可靠性 144.4.4 安全性 144.4.5 擴展性 144.4.6 易用性 14第五章 聊天室系統的總體設計 155.1 聊天室結構分析 155.2 網絡聊天室的設計與實現 165.2.1 綜合設計 185.3 運行分析 31第六章 系統測試 326.1 測試舉例 326.1.1 測試程序登錄界面 326.1.2 測試程序主界面 326.1.3 測試程序退出 326.2 測試項目 326.2.1 單元測試 336.2.2 組合測試 336.2.3 確認測試 336.2.4 系統測試 346.2.5 用戶驗收測試 346.3 測試方法 34第七章存在問題 357.1 軟件存在的問題 35

9、7.2 美觀界面 35第八章結論 36致 謝 37參考文獻 38- V -基于 Java聊天室的設計與實現5第一章 緒 論1.1 聊天室系統的基本概念聊天室系統是一個通過國際互聯信息網絡進行多人通訊的一個系統。該系統在一定網絡通訊及高級語言程序設計和JSP應用程序設計的基礎上,利用計算機通訊原理,形成一個聊天室平臺,使得用戶在進入這個聊天室系統平臺的同時,可以通過網絡在線與距離遙遠的其他一位或多位用戶進行信息交流。聊天室主要分為WebCha、t BBSChat兩種。BBSChat是基于Telnet 的 Tcp協議,是BBS的附設功能,需要客戶端Telnet 程序。WebChat則采用瀏覽器方式

10、,實際上是一個多人共同使用的CGI 程序。其基本原理是把每個用戶的發言通過瀏覽器傳給系統,再由系統收集處理后分發給特定用戶。WebChat一般采用Server Push 或 Client Pull 技術。兩種技術的區別在于使用不同的方式將數據分發給用戶,Server Push 是由服務器將數據以多重MIME編碼,發送給(push)使用者端,目前較少網站使用這種方式。Client Pull 則是用戶從服務器接收 (pull) 所要的數據。1.2 開發聊天室系統的意義在這個信息極其發達的時代,我們目前可以用來進行信息交流的方法也有非常多,比如電報、電話、電子郵件等通訊手段,但是這些或者不方便或者有

11、局限性或者有費用的問題, 比如電話就是屬于費用比較高的一種方式,而且一般情況下不能進行多人會談,只能 2 方通話,那么一個需要幾個人一起討論的會議就不能舉行,一般情況下都需要花費大量的人力物力把這幾個人聚集到同一地點才能進行討論。非但費時費力費錢而且效果也不一定很好。電子郵件則不是一種及時聯系的手段,需要一定時間才能到達,只能作為一種輔助交流的手段。但是,聊天室這個就能很好的解決這個問題,我們不需要聚集在同一地點,各自在不同的地點就可以在聊天室中發言,大家互相討論。而且好的聊天室還有各種表情符號等可以加強我們的表達。而且費用低廉,信息交流速度快,只有這樣,才能在這個涌動的社會中加強聯系,創造出

12、更多的財富。1.3 本次畢業設計所要完成的主要工作通過所學知識,根據網絡聊天室系統的發展動態,結合自己個人的興趣愛好,建立一個功能豐富,操作簡便快捷的通用網絡聊天室系統。本文的主要安排了對聊天室技術的一些相關介紹,比如java Socket 技術。接著是關于對聊天室系統的分析和設計,通過對聊天室的結構的分析來設計聊天室系統,并根據自己的興趣和想法來豐富聊天室的功能。- 1 -第二章 課題介紹2.1 課題的目的聊天室雖然其功能簡單,但是在其設計與開發過程中,能夠充分學習和使用Java2的技術, 如: 開發各界面(登入、 注冊、 群聊等界面)使用到 Swing技術; 隨著模仿QQ,實現簡單的qq

13、功能:注冊、登陸、查找好友、聊天功能。實現配置文件設置、用戶管理、日志顯示的功能。實現群聊功能用到基于Cliet/Server 的面向連接編程技術。使用多線程進行多個客戶端和服務端的連接。使用文件方式保存用戶信息,實現數據的保存與讀取使用到數據庫連接和操作技術。使用對 象的方式在服務端和客戶端之間傳遞信息。老師可以通過Java QQ向同學們發送及時的信息如學院的通知、考試通知、成績通告,及時掌握學生的動態,提供必要的幫助。這就有效地解決老師與老師之間的,老師 與學生之間的,學生與學生之間的通訊問題。2.2 課題的意義課題設計的主要任務是運用已知的知識理論聯系實踐模仿QQ,實現簡單的QQ功能如注

14、冊、登陸、查找好友、聊天功能。服務端還能實現配置文件設置、用戶管理、日志顯示的功能。從而對Java 的開發背景有更進一步的認識,充分掌握Java 在現實生活中的應用。深入調查騰訊QQ的各種功能,分析騰訊QQ的功能,運用相關的Java 知識對騰訊QQ進行模仿。從而設計出Java 版的QQ。要認真分析設計出的Java 版的QQ會存在怎樣的問題。怎樣可以以有效的解決這一問題。提出有關設計的難點重點,完成對課題的全面系統的研究。將設計和規劃與現實教育教學工作相結合,使得此系統真實意義上實現對新教育教學工作的一次有益嘗試。認真完成畢業設計論文以及開題報告答辯,中期答辯和終期答 辯。一個網絡聊天室的運行,

15、首先是要有一個完整穩定的服務器端,并且擁有多個客服端。客服端要具有實現用戶注冊和用戶登入,在登入成功后,要顯示出公聊界面,實現聊天功能并且能夠發送表情和保存聊天內容和顯示聊天記錄等功能,在新用戶上線和用戶下線時要更新每個客戶端在線用戶列表名,并且可以和在線的用戶實現一對一的私聊功能。在服務器端可以實現不斷的監聽客戶的連接,并且根據客戶端發送過來的不同信息,如注冊信息、登入信息、公聊信息、私聊信息、退出信息等,服務器端要作出不同的響應,并且要實現數據庫的操作,如根據用戶注冊的信息保存在數據庫中,根據登入時發送來的用戶名和密碼檢測是否合法用戶等。2.3 課題的主要任務主要涉及圖形用戶界面的開發、布

16、局和輸入/ 輸出流數據的控制,并且要通過Socket技術實現網絡功能,整個程序采用Swing 圖形界面,要求熟練掌握Java2 圖形用戶界面的事件處理及部分Swing 組件的使用。在代碼的編寫上要充分體現Java 面向對象開發思想和多態性,提高代碼的重用性和高效性,要深入理解接口的作用和內部對象等特性等。課題設計的主要任務是運用已知的知識理論聯系實踐模仿QQ,實現簡單的QQ功能如注冊、登陸、查找好友、聊天功能。服務端還能實現配置文件設置、用戶管理、日志顯示的功能。從而對Java 的開發背景有更進一步的認識,充分掌握Java 在現實生活中的應用。深入調查騰訊QQ的各種功能,分析騰訊QQ的功能,運

17、用相關的Java 知識對騰訊QQ進行模仿。從而設計出Java 版的QQ。 要認真分析設計出的Java 版的QQ會存在怎樣的問題。怎樣可以以有效的解決這一問題。提出有關設計的難點重點,完成對課題的全面系統的研究。將設計和規劃與現實教育教學工作相結合,使得此系統真實意義上實現對新教育教學工作的一次有益嘗試。認真完成畢業設計論文以及開題報告答辯,中期答辯和終期答辯。基于 java 聊天室的設計與實現11第三章 系統開發環境與工具的選擇3.1 Java 簡介3.1.1 Java 語言Java 是由 Sun Microsystems 公司于 1995年 5 月推出的Java 程序設計語言和Java平臺的

18、總稱。用 Java 實現的 Hot Java 瀏覽器 (支持 Java applet ) 顯示了 Java跨平臺、動態的Web、 Internet 計算等一系列的魅力。從此Java 被廣泛接受并推動了Web的迅速發展。Java 語言的語法與C語言和C+語言很接近,使得大多數程序員很容易學習和使用。另一方面,Java 丟棄了C+很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動強制類型轉換。而且,Java 語言不使用指針,并提供了自動的廢料收集, 使得程序員不必為內存管理而擔憂。Java 語言是一個面向對象的、提供類和接口以及繼承的原語,為了簡單起見,只支持類之間的單繼承,但

19、支持接口之間的多繼承,并支持類與接口之間的實現機制。Java 語言支持Internet 應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口,它提供了用于網絡應用編程的類庫,包括URL、 URLConnection、 Socket(實現客戶端的套接字)、ServerSocket (實現服務器端的套接字)等。Java 的強制型機制、異常處理、廢料的自動收集等都是Java 程序健壯性的重要保證。Java 通常被用在網絡環境中,為此,Java 提供了一個安全機制以防惡意代碼的攻擊。Java 語言的優良特性使得Java 應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java

20、對對象技術的全面支持和Java 平臺內嵌的API 能縮短應用系統的開發時間并降低成本。Java 編譯一次,處處可運行的特性使得它能夠提供一個隨處可用的開放結構和在多平臺之間傳遞信息的低成本方式。豐富的類庫為Java 提供了大量的類以滿足網絡化、多線程、面向對象系統的需要。同時Java 程序可以獲取網絡上節點的圖像、聲音、HTML文檔及文本資源。3.1.2 Java 架構設計從技術角度來說,軟件架構隨著技術的革新不斷地更新其內容,軟件架構建立于當前技術和一些基本原則的基礎之上。架構的一些基本原則:分層化原則:分層是為了降低軟件深度復雜性而使用的關鍵思想,就像社會有了階級一樣,軟件有了層次結構。模

21、塊化原則:模塊化是化解軟件廣度復雜的必然手段,模塊化的目的就是讓軟件分工。接口分離原則:隨著軟件模塊化的不斷深入改進,面向接口編程而不是面向實現編程可以讓復雜度日趨增高的軟件降低模塊之間的耦合度,從而讓各模塊更輕松改進。依賴倒置原則:隨著軟件結構的進一步發展, 層與層之間、模塊與模塊之間的依賴逐漸加深,而層、模塊的動態可插拔要求不端增大。當前最典型的三層次架構就架構在以上幾項原則的基礎之上,用數據庫作存儲層、用面向對象來實現業務層、用web作為用戶接口層。這種三層次架構同樣應用于此次系統的設計。3.2 本課題開發環境的選擇在進行開發之前, 首先決定的第一個問題就是, 該使用什么開發環境來編寫該

22、系統?以目前常用的開發語言來講有C/C+、 .NET 技術,JAVA、 Visual Basic 幾種。還有Eclipse, 、 Borland JBuilder 等,這些并不是程序語言,而是程序語言在建構程序時的“集成開發工具”,不過它們在開發設計的過程中也占有相當重要的角色,因為選用正確的集成開發工具,可以加速程序設計的進行、測試與排錯,因而對整體進度具有決定性的影響。基于以下幾點,選擇JAVA語言開發技術。1) 就執行平臺而言,必須考慮的問題之一是用戶可能使用的操作系統。用戶可能使用的是Windows Linux 。 JAVA語言具有平臺無關性,可以不需要任何修改就可以運行在支持JAVA

23、的任何計算機上。2) JAVA的 Swing 組件開發技術可以開發豐富的圖形界面,并且Swing API 類提供了豐富的外部接口和方法,可以方便實現系統功能。3) 就項目開發而言,純粹的面向對象,加上數量巨大的類所提供的方法(函數)庫的支持,使得利用Java 開發各種應用程序,可以說是易如反掌。此外,在程序除錯、修改、 升級和增加新功能等方面,因其面向對象的特性,使得這些維護也變得非常容易。4) Java 支持內在的多線程運行,提供分布式的并發機制,運行效率高。5) 異常處理,為了使Java 程式更穩定、更安全,Java 引入了異常處理機制。能夠在程序中產生異常情況的地方,執行相對應的處理,不

24、至于因突發或意外的錯誤造成執行中斷或是死機。通過這種異常處理,不僅能夠清晰地掌握整個程序執行的流程,也使得程序的設計更為嚴謹。6) 高性能, Java 可以在運行時直接將目標代碼翻譯成機器指令。Sun 用直接解釋器一秒鐘內可調用300,000 個過程。翻譯目標代碼的速度與C/C+的性能沒什么區別。7) 網絡功能,Java 可以說是借助因特網而重獲新生的,自然具備編寫網絡功能的程序。 不論是一般因特網局域網的程序,如 Socket、 Email、 基于Web服務器的Servlet 、JSP程序,甚至連分布式網絡程序,如CORB、 ARMI等的支持也是非常豐富的,使用起來也很方便。8) 源回收處理

25、,Garbage Collection 是由JVM對內存實行動態管理的。程序需要多少內存、哪些程序的內存已經不使用了,需要釋放歸還給系統,這些煩瑣危險的操作全部交由JVM去管理。讓我們能夠更專心地編寫程序,而不需要擔心內存的問題。內存的統一管理,對于跨平臺也有相當大的幫助。3.3 本課題開發工具的選擇Java 的開發工具很多,而且各有優缺點,Eclipse 是一個開放可擴展的集成開發環境 (IDE) 。它不僅可以用于Java 的開發,通過開發插件,它可以構建其他的開發工具。Eclipse 是開放源代碼的項目,并可以免費下載。支持最新的Java 標準, 并且縮短了開發周期。一直以其友好的集成開發

26、環境在業界受到廣泛的贊譽,這也是Eclipse 一直是廣大程序員最喜愛的Java 開發工具的原因之一。Eclipse 的可視化集成開發環境包括文本編輯器、工程創建工具、對象瀏覽器和調試器等。用戶可以在集成開發環境中創建工程和打開工程,建立、打開和編輯文件,并可以編譯、運行和調試應用程序。可以說在Eclipse 集成開發環境中開發Java 程序,快速而且高效。其主要特點如下:1) 開放的可擴展的IDE2) 成功的底層圖形界面API3) 強大的插件加載功能4) 可以通過導入一些CVS相關的插件來實現版本管理的便易性3.4 本課題開發技術的選擇本課題選擇了java Socket 技術開發網絡聊天室。

27、什么是socket? socket 是一種用于表達兩臺機器之間連接“終端”的軟件抽象。對于一個給定的連接,在每臺機器上都有一個socket ,你可以想象一個虛擬的" 電纜 " 工作在兩臺機器之間, “電纜”插在兩臺機器的socket 上。當然,物理硬件和兩臺機器之間的“電纜”這些連接裝置都是未知的,抽象的所有目的就是為了讓我們不必了解更多的細節。簡單的說,一臺計算機上的 socket 同另一臺計算機通話創建一個通信信道,程序員可以用這個信道在兩臺機器之間發送數據。當你發送數據TCP/IP協議棧的每一層都給你的數據里添加適當的報頭。有個好消息是java 語言隱藏了所有這些細節

28、,這也是為什么他們有時被叫做“流socket ”。思考一下 socket 像電話聽筒一樣在電話的任意一端你和我通過一個專門的信道來進行通話和接聽。會話將一直進行下去直到我們決定掛斷電話(除非我們使用蜂窩電話),除非我們掛斷電話,否則我們各自的電話線路都會占線。如果你需要在兩臺機器之間進行通訊而不使用高級機制像ORB( s以及CORBAR, MI, IIOP 等等) , socket比較適合你。Socket 的底層機制則相當棘手。- 7 -基于 java 聊天室的設計與實現13第四章 需求分析4.1 以往聊天室系統的缺陷通過對以往聊天室的研究及分析,發現聊天室系統存在以下問題:1) 以往聊天室只

29、能看到用戶ID 而不能看到用戶的個人形象,包括個人頭像和個人服裝SHO。W2)不能輕易分辨出自己談話和別人的談話。3)用戶聊天只有單純的文字表達,不能通過豐富的表情和圖片來增添聊天的樂趣。4) 聊天背景只有單純的白色,沒有任何可供選擇的背景顏色和畫面,使整個聊天環境顯的呆板。4.2 聊天室系統作為網絡通訊工具的作用聊天室是提供給網民一個交友與娛樂的場所,在聊天室里網民可選擇自己的聊天對象,與其進行對話交流,是網民之間相互溝通、交流情感的最佳方式之一。用戶可以通過網絡在線與距離遙遠的其他一位或多位用戶進行信息交流。在聊天室里網民可選擇自己的聊天對象,進行對話交流。既可以一對一,又可以一對多,還可

30、以形成小組進行多對多討論,方便網民在線私聊與群聊。是現行網絡最流行、最被廣泛應用的通訊工具。4.3 現行聊天室系統的功能需求聊天室系統雖然滿足了人們的在線通訊,但是隨著聊天室被廣泛應用,人們對于聊天的要求也越來越高,單純的聊天已不能滿足人們的需要,人們更需要多功能的聊天室系統,來豐富聊天環境。聊天室系統功能具體需求包括:1) 一個聊天室里所有的人都可以互相密談。2) 可以通過用鼠標點擊頁面上出現的或者人名列表的人名來選擇人名。3) 可以使用顏色來輕易分辨出別人的談話和自己的談話。4) 可以察看進入房間以后的所有聊天紀錄。5) 可以通過貼圖在您聊天中加入卡通圖片,使聊天內容豐富多采,充滿活力。6

31、) 可以根據您的自己喜好來設置背景顏色和畫面,使您更加舒適的聊天。- 13 -154 需求分析4.3.1 用戶注冊需求描述:用戶填寫系統給出的注冊項目,并提交給系統,成功注冊后,系統生成用戶所注冊的登入ID,并保存在數據庫當中。執行者:用戶前置條件:無后置條件:無正常過程:1) 向服務端發送注冊請求2) 服務端響應客戶端,客戶端彈出注冊信息表單3) 用戶填寫完表單后將注冊數據傳給服務端處理,并保存在數據庫中4) 返回客戶端一個響應,顯示用戶注冊的ID,提示注冊成功異常過程(可選):用戶填寫表單的數據格式不正確或表單中存在空缺的項,客戶端給予提示信息,并將光標定位到出錯的地方。用戶注冊的項在數據

32、庫中發生沖突,客戶端提示注冊不成功并提示用戶 重新填寫表單。服務器未啟動或出現異常通過注冊模塊實現用戶的在線注冊,所填寫的注冊項目有:用戶名、密碼、密碼確認、性別、年齡、E-mail。基于 java 聊天室的設計與實現13圖 4-1 注冊活動圖圖 4-2 登錄活動圖4.3.2 用戶登入需求描述:用戶填寫登入ID 和密碼,經服務器驗證成功后進入聊天室主界面。執行者:用戶前置條件:用戶成功注冊或已經擁有一個合法的ID 號后置條件:無正常過程:1) 向服務端請求連接,并發送登錄信息。2) 服務端處理并查詢數據庫中的用戶信息3) 返回客戶端一個響應,提示登錄成功,彈出聊天室主界面。4) 刷新其他在線用

33、戶的用戶列表信息異常過程(可選):用戶填寫的ID 或密碼與數據庫中的紀錄不匹配,客戶端提示登錄失敗。客戶端設置的服務器地址或端口有誤。服務器未啟動或出現異常。4.3.3 私聊需求描述:用戶可選擇聊天室的在線用戶列表中其他用戶聊天。并且對方有消息提示,雙方發送的信息對于聊天室的其他用戶是不可見的。執行者:用戶前置條件:用戶登錄成功,私聊的對方在線后置條件:無正常過程:1) 客戶端與服務端建立通訊。2) 客戶端將用戶發送的信息打包傳送給服務端。3) 服務端進行數據分析,查找目的用戶的ID,并將用戶的信息傳給目的用戶。4) 目的用戶收到服務器的信息后,正確的顯示并保存。異常過程(可選):客戶端與服務

34、端斷開連接,客戶端提示信息發送失敗。客戶端發送的私聊內容包含不合法的字符特殊需求(可選):不能與不在線的用戶進行私聊。圖 4-3 私聊流程圖4.3.4 聊天記錄需求描述:用戶可以查詢聊天的歷史紀錄,包括公聊記錄和私聊記錄。執行者:用戶前置條件:用戶正確登入后后置條件:無正常過程:1) 發送、接收信息的同時將信息保存在本地文件中2) 信息發送框中可以查詢歷史聊天記錄3) 從本地文件中讀取信息,并顯示在記錄顯示匡中異常過程(可選):服務端異常導致客戶端退出,客戶端提示服務器異常。客戶端讀取信息時目標文件不存在。4.3.5 系統消息需求描述:在聊天室的每一個用戶都能接收服務端發送的的信息提示消息執行

35、者:服務端前置條件:服務端正常運行后置條件:無正常過程:服務器向所有在線用戶發送消息客戶端接收到消息,進行消息處理,并正確顯示異常過程(可選):1) 服務端異常,重啟服務器2) 出現網絡異常,發送系統消息失敗3) 用戶管理員通過啟動服務器后,可以通過服務器操作界面象全部在線的用戶發送系統消息4) 用于發送公告,提示等系統消息,可以方便管理員和客戶的交流和管理用戶服務器顯示出系統消息發送系統消息4-4 系統消息活動圖4.3.6 用戶退出需求描述:用戶在正常情況下退出聊天室執行者:用戶前置條件:用戶成功登錄聊天室后置條件:無正常過程:1) 向服務器發送用戶登出消息2) 服務器進行用戶退出的數據處理

36、3) 服務器向聊天室其他用戶發送登出消息4) 刷新其他在線用戶的用戶列表信息4.4 質量性能需求4.4.1 容錯性需求當出現代碼異常時,出現正確的提示,不會影響整個系統的運行。用戶之間信息傳輸不會因為數據封裝問題出現丟失或亂碼。因用戶的誤操作產生的異常應做出及時的處理或信息提示。4.4.2 穩定性需求軟件應正常完成所有功能需求。服務器端應長時間運行無故障,故障修復時間一般控制在 3 小時內,除非出現惡性攻擊、病毒破壞、系統資源不足、硬件故障、操作系統或數據庫系統崩潰網絡中斷等情況,要求系統連續運行一周,不允許出現內存泄露。要求系統可以承受告警風暴和大數據量的沖擊,不出現內存溢出等現象。4.4.

37、3 軟件設計可靠性要確定合適的模塊粒度,各模塊之間要求松耦合,高內聚;從而使整個系統的可靠性和穩定性得到提高,并且便于系統維護,和新模塊的添加。4.4.4 安全性安全性是防止網絡方面的攻擊。4.4.5 擴展性系統建成后,應在現行系統上不需要做大的改動或不影響整個系統結構,就可以增加功能模塊,這就必須在系統設計時留有接口,使其具有可擴展性和維護性。4.4.6 易用性系統操作的界面必須簡潔、操作方便易用、設計合理。- 19 -基于 java 聊天室的設計與實現15第五章 聊天室系統的總體設計5.1 聊天室結構分析本聊天室采用的是當前流行的Browser/Server( 瀏覽器 /服務器 )結構,

38、B/S 結構是隨著 Internet 技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶界面完全通過WW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在W服務器端實現,形成所謂3-tier 結構。 B/S 結構利用不斷成熟和普及的瀏覽器技術實現原來需要復雜專用軟件才能實現的強大功能,并節約了開發成本,是一種全新的軟件系統構造技術。本聊天室主要由注冊界面、登錄界面、聊天室界面、私聊界面、查看聊天內容界面、功能設置界面等構成。整個設計簡潔明了、實用,使用簡單。5-1 客戶端結構圖5-2 服務器結構圖近年來由于Internet/Intranet 技術的發展和普及,各種各樣的

39、信息都在WWW( World Wide Web)上發布,人們之間的信息溝通比以往變得更為高效快捷,Web技術的應用已成為一種必然,但傳統的客戶機/服務器模式的數據庫設計與Web的相關技術互相獨立,兩者無法進行集成,我們知道,采用客戶機/服務器模式的數據庫系統無論在設計開發還是在應用方面都具有一定的局限性,比如在應用中,操作人員必須學會本系統的操作方法、規程等, 不具有普及性、易懂性, 等等, 基于這種情況,微軟提出WebComputing 的概念,將它應用于數據庫技術中。瀏覽器/服務器(Brower/Server )模式的數據庫體系是利用Web服務器Web結構的瀏覽器 / 服務器模式體系,(

40、如圖 )圖 5-3 BS 體系圖工作原理:在前端采用IE、 Netscape 等的瀏覽器將用戶提交的操作信息向Web服務器發出HTTP請求,Web服務器通過一些中間組件訪問后臺數據庫,并將操作結果以HTML頁面的形式返回給前端瀏覽器。5.2 網絡聊天室的設計與實現首先介紹網絡聊天室的功能,該聊天室的功能包括如下:1) 登錄2) 驗證進入聊天室3) 聊天室主頁面4) 幫助5) 查看聊客6) 離開整個聊天室由以下幾個頁面組成:1) 登錄聊天室2) 用戶名的驗證工作- 29 -3) 對用戶消息各個變量的初始化4) 發送信息5) 顯示信息6) 用戶列表7) 離開聊天室8) 聊天室主頁面9) 幫助頁面聊

41、天室執行流程圖:5-45.2.1 綜合設計1) 用于構建注冊的主界面5-5 注冊的主界面public void actionPerformed(ActionEvent arg0)try socket=new Socket(serverIP ,serverPort );out= new PrintWriter( new OutputStreamWriter( socket.getOutputStream(), true );reader = new BufferedReader( new InputStreamReader( socket.getInputStream();out.println

42、( "denglu" );if(reader.readLine().equals( "ok" )String name= jtf .getText();out.println(name);char password= jfp .getPassword();out.println(password);out.println( "end" );聊天室界面及其功能:1) 登錄界面:對聊天室定義各個變量和建立矢量,以及建立哈希表來保存用戶的信息,并初始化個變量的值。該聊天室登入界面本身具有一定的安全保護措施,能夠對用戶的身份進行驗證,從而保證

43、數據庫中的數據不受破壞。所以,當用戶準備運行系統時,首先要進入用戶登錄模塊。其模塊流程圖:圖 5-6 用戶登入圖該流程圖為用戶登入界面的流程圖。流程說明:1) 當用戶在登入界面輸入用戶名和密碼,點擊提交按紐,判斷輸入的用戶名是否為空,若是,則顯示錯誤提示給用戶,并要求用戶重新輸入,重復步驟1,若不為空則到步驟2。2) 判斷用戶輸入的密碼是否為空,若是,則顯示錯誤提示給用戶,并要求用戶重新輸入,轉到步驟1,若不為空則到步驟3。3) 進行表單提交,由in.jsp 界面轉到login.jsp 界面進行表單數據處理。4) 對用戶輸入的用戶名和密碼在數據庫中進行查詢,看是否在數據庫的用戶登表中存在該用戶

44、,若不存在,則提示用戶重新輸入,并顯示相關鏈接,若存在,則用戶驗證通過,顯示進入主界面和重新申請ID 兩個鏈接,供用戶選擇。在設置好IP 和端口號的條件下,用戶在登入界面輸入已注冊好的用戶名和密碼登入,通過驗證后登入聊天室主界面,輸入錯誤返回提示。圖 5-8 登入成功text=textField1.getText();text1=textField2.getText();charthestr=textField3.getPassword();text2=new String(thestr).trim();char thestr1=textField4.getPassword();text3=n

45、ew String(thestr1).trim();if(!text2.equals(text3)label11.setText("密碼不一致!");elselabel11.setText("" );text4=textArea.getText();out.println("zhuce");String bb=null;try bb = reader.readLine(); catch (IOException e1) e1.printStackTrace();315 聊天室系統的總體設計5-9 登陸成功界面private void

46、getfrendinfo() Boolean a=true;try if(reader.readLine().equals("ok" )ID = reader.readLine().trim();ID2=Integer.parseInt(ID);MyName = reader.readLine();String iconn = reader.readLine();Integer.parseInt(iconn);jb1.setText(MyName+"在線");jb1.setForeground(Color.red);userName = new Arra

47、yList<String>();/放置所有用戶ID 的數組userNo = newArrayList<Integer>(); /放置所有用戶昵稱的數組-32-基于 java 聊天室的設計與實現15while(a)ID=reader.readLine();if(!ID.equals("end")ID1 =Integer.parseInt(ID);userNo.add(ID1 );FriendName = reader.readLine();userName .add(FriendName); else a=false;reader.close();ou

48、t.close(); socket.close(); catch (IOException e) e.printStackTrace();用戶輸入正確的賬號和密碼后點擊登錄,在此頁面也可選擇狀態選項的在線、隱身、離開和忙碌以及自動的登錄。服務器響應這一請求后會將用戶輸入的信息和已存用戶信息進行匹配,在匹配成功后,用戶方可- 41 -5-10 聊天界面if(reader.readLine().equals("ok")IP11 = reader.readLine().trim();System.out.println("獲取 dfgfhgghIP"+IP11

49、);IP=InetAddress.getByName(IP11);String port1=reader.readLine();port=Integer.parseInt(port1);FriendName=reader.readLine();if(reader.readLine().equals("IPover") reader.close();out.close();if(!map.containsKey(IP)DatagramSocket socket=new DatagramSocket();dilog=new dilog(socket,IP,MyName, Fri

50、endName); dilog.setVisible(true);map.put(IP, dilog);2) 聊天界面及其功能用戶登錄成功后,會在主界面顯示狀態、用戶昵稱、在線用戶以及在線用戶的基本信息。選擇在線用戶列表的任一好友,出現聊天界面。5-11 聊天界面if(reader.readLine().equals("ok" )ID = reader.readLine().trim();ID2=Integer.parseInt(ID);MyName = reader.readLine();String iconn = reader.readLine();Integer.p

51、arseInt(iconn);jb1.setText(MyName+"在線 ");jb1.setForeground(Color.red);userName = new ArrayList<String>();/放置所有用戶ID 的數組userNo = new ArrayList<Integer>(); /放置所有用戶昵稱的數組while(a)ID=reader.readLine();if(!ID.equals("end")ID1 =Integer.parseInt(ID);userNo.add(ID1 );FriendName

52、= reader.readLine();userName .add(FriendName); else a=false;圖 5-12 聊天界面3) 發送系統消息服務器端收到用戶上線或下線時發送給其他在線用戶消息提示,并可以根據需要,主動發送消息給客戶,實現服務器端的管理。5-13 開啟服務器Iterator<User> iterator =userMap .iterator();while (iterator.hasNext() / 從集合中裝載用戶信息User user = iterator.next();out .close();socket .close();else if

53、( str1 .equals( "getIP" )out .println( "ok" );ID1 =reader .readLine();System. out .println( " 獲取的用戶名aaaID 是: " +ID1 );ID =Integer. parseInt ( ID1 );out .println(dao.getIP(ID );System. out .println(" 獲取的用戶名aaaIP 是: " +dao.getIP(ID );out .println(dao.getPort(ID

54、);System. out .println(" 獲取的用戶名aaaPort 是:"+dao.getPort(ID);out .println(dao.getName(ID );out .println( "IPover" );在開啟服務器成功后,發送系統消息。下面通過一個具體模塊來說明一下此聊天界面的一些功能,如聊天信息發送處理模塊,通過該模塊能很清楚的了解該界面上的一些功能,具體的流程圖如下:5-14 聊天信息發送處理流程流程說明:1) 當用戶在聊天界面上輸入聊天信息,并點說話這個按紐后,Send_1.jsp 頁面提交當前表單到Send.jsp 頁面進行處理,Send.jsp 這個頁面接受到Send_1.jsp 頁面提交的信息后對記錄聊天記錄的Vector 聊天數組進行大小判斷,如果大于30條聊天記錄則清除原有聊天記錄并保存一條提示信息到該數組中并跳到步驟2,如果小于30條則直接到步驟 2。2) 獲取 Send_1.jsp 頁面關于顏色、對象、悄悄話、表情等相關設置值并保存到相應的Vector 數組,而后對聊天數組中的聊天信息進行檢查,如果某條聊天記錄含有tml標

溫馨提示

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

評論

0/150

提交評論