簡單聊天系統的設計與實現_第1頁
簡單聊天系統的設計與實現_第2頁
簡單聊天系統的設計與實現_第3頁
簡單聊天系統的設計與實現_第4頁
簡單聊天系統的設計與實現_第5頁
已閱讀5頁,還剩11頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 JISHOUUNIVERSITY專業課課程論文題 目:簡單聊天系統的設計與實現作 者:學 號:所屬學院:信息科學與工程學院專業班級:總 評 分:完成時間:吉首大學信息科學與工程學院 簡單聊天系統的設計與實現(吉首大學信息科學與工程學院,湖南 吉首 416000)摘 要網絡聊天室通常直稱聊天室,是一種人們可以在線交談的網絡論壇,在同一聊天室的人們通過廣播消息進行實時交談。在當今信息時代,越來越多的聊天工具被應用,java語言是當今流行的網絡編程語言,它具有面向對象,與平臺無關,安全,多線程等特點。使用java語言不僅可以實現大型企業級的分布式應用系統,還能夠為小型的的,嵌入式設備進行應用程序的

2、開發。面向對象的開發是當今世界最流行的開發方法,它不僅具有更貼近自然地語義,而且有利于軟件的維護和繼承,鍛煉我們熟練地應用面 向對象的思想和設計方法解決實際問題的能力。 本程序正是用 java 語言實現了簡單聊天功能。它是圖形界面,線程,流與 文件系統等技術的綜合應用。 其界面主要采用了 java.awt 包, java.swing 包等。關鍵詞:網絡聊天室;java;面向對象;通信機制;圖形界面目 錄第一章 引言1第二章 關鍵技術2 2.1開發技術2 什么是Java2 2.1.2主要特性2 2.1.3 Java中的布局3 2.2 開發工具32.2.1 Eclipse.32.2.2 SQL S

3、ever數據庫.3第三章 需求分析4 3.1可行性分析4 3.1.1 經濟可行性.4 3.1.2 操作可行性.4 3.1.3 技術可行性.4 3.2功能分析4 3.2.1 注冊.4 3.2.2 登錄.5 3.2.3 私聊.5第四章 概要設計6 4.1系統總體結構6 4.2數據庫設計6第五章 詳細設計8 5.1登錄模塊設計8 5.2注冊模塊設計9 5.3消息格式化設計.10 5.4 界面設計.10 5.4.1 登錄界面.10 5.4.2 注冊界面.11 5.4.3 聊天界面.11結束語12參考文獻. .13 第一章引言當今主流的聊天工具有QQ,MSN,網易泡泡等,國內最熱門的聊天工具當屬騰訊QQ

4、,是由深圳市騰訊計算機系統公司開發的,基于Internet的即時尋呼軟件。你可以通過QQ和你的親朋好友進行交流,即時收發消息,文件傳輸,語音視頻,發送郵件等功能,QQ不僅僅在電腦在應用,還能通過移動電話登錄手機騰訊網址或者下載手機可用的手機客戶端進行QQ的登錄使用。QQ支持顯示好友的在線信息,即時傳送信息、即時交談、即時發送文件和網址。QQ可以在Win95/98/NT/2000/XP/Win7操作系統下運行,是十分靈活的網絡通信工具。雖然QQ軟件是免費的,而且功能也是越來越強大。但是唯一的不足的地方就是都需要在電腦聯網的情況下才能使用,脫離了Internet根本就是一個只能看不能用的軟件,為了

5、能在脫離了Internet的情況下使用的局域網聊天工具,那就必須要有服務器端,而本系統就是包括服務器端和客戶端,可以在局域網聊天的一個軟件。第二章關鍵技術2.1 開發技術什么是JavaJava是一種可以跨平臺應用的面向對象的程序設計語言,他是由Sun公司在1995年推出的程序設計語音。Java具有很高的通用性,安全性,跨平臺等特點。 Java與一般的編譯執行計算機語音和解釋執行計算機語音不同。他它首先是將源代碼編譯成二進制的字節碼,然后在各種不同平臺的虛擬機上來解釋執行字節碼,從而實現了“一次編譯、到處執行”的跨平臺的特性,這也是Java語言最大的特點。Sun公司在推出Java后就將它作為一種

6、開放式的技術,從而吸引了很多編程開發者。而Sun公司的口號之一就是“Java語言是靠群體的力量而非公司的力量”,并且獲得了廣大軟件開發商的認可。2.1.2主要特性Java語言的主要特性有: 1)Java語言是簡單的。Java語言的語法和C語言,C+語言很相近,從而使得大多數的程序員很容易學習。2)Java語言是一個面向對象的。比C+更純粹的面向對象程序設計語言。3)Java語言是分布式的。Java的網絡能力強大且易于使用。4)Java語言是健壯的。Java的強類型機制,異常處理,廢料的自動收集等是Java程序健壯性的重要保證。5)Java語言是安全的。Java通常應用在網絡環境中,因此Java

7、提供了一個安全機制來防止惡意代碼的攻擊。6)Java語言是體系結構中立的。Java程序在Java平臺上被編譯為體系結構中立的字節碼格式, 然后可以在實現這個Java平臺的任何系統中運行。7)Java語言是可移植的。這種可移植行又來源于體系結構的中立性。8)Java語言是解釋型的。Java程序在Java平臺上被編輯為字節碼格式,然后才可以在這個Java平臺的任何系統中運行。9)Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。10)Java語言是多線程的。在Java語言中,線程是特殊的對象,它必須由Thread類或其子類來創建。通常有兩種方法創建:第一,從Thread類

8、派生出子類并重寫run方法,使用該子類創建的對象即為線程。第二,實現Runnable接口。2.1.3 Java中的布局邊框布局BorderLayout、流布局FlowLayout、網格布局GridLayout、分組布局 GroupLayout、Box類布局。2.2 開發工具2.2.1 EclipseEclipse是一個開放源代碼的、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發工具(Java Development Kit,JDK)。雖然大多數用戶很樂于將Eclipse當作J

9、ava集成開發環境(IDE)來使用,但Eclipse的目標卻不僅限于此。Eclipse還包括插件開發環境(Plug-in Development Environment,PDE),這個組件主要針對希望擴展Eclipse的軟件開發人員,因為它允許他們構建與Eclipse環境無縫集成的工具。由于Eclipse 中的每樣東西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統一的集成開發環境而言,所有工具開發人員都具有同等的發揮場所。 這種平等和一致性并不僅限于Java開發工具。盡管Eclipse是使用Java語言開發的,但它的用途并不限于Java語言;例如,支持諸如C/C+和COBOL等

10、編程語言的插件已經可用,或預計將會推出。Eclipse框架還可用來作為與軟件開發無關的其他應用程序類型的基礎,比如內容管理系統。基于Eclipse的應用程序的一個突出例子是IBM RationalSoftwareArchitect,它構成了IBM Java開發工具系列的基礎。2.2.2 SQL Server數據庫SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種數據庫建立聯系,進行溝通。SQL Server是由Microsoft開發和推廣的關系數據庫管理系統(DBMS),它最初是由Microsoft、Sybase和Asht

11、on-Tate三家公司共同開發的,并于1988年推出了第一個OS/2版本。Microsoft SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用戶見面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2012年3月份推出的SQL SERVER 2012。特點:1)真正的客戶機/服務器體系結構。2)圖形化用戶界面,使系統管理和數據庫管理更加直觀、簡單。3)豐富的編程接口工具,為用戶進行程序設計提供了更大的選擇余地。4)SQL Server與Windo

12、ws NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。 5)具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。6)對Web技術的支持,使用戶能夠很容易地將數據庫中的數據發布到Web頁面上。7)SQL Server提供數據倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。第三章需求分析3.1可行性分析3.1.1 經濟可行性 本系統需要一個SQL Server數據庫服務器,由于使用人數比較少,安裝一個

13、免費的SQL Server數據庫完全可以應付需要,所以成本就不用考慮了。3.1.2 操作可行性 只要一臺以上計算機連接在同一個局域網內,本系統就可以安裝使用,所以操作上完全不存在問題。3.1.3 技術可行性 本系統采用Java語言,是基于CS架構的。開發這個系統需要開發者對socket 編程和 Java Swing這兩方面的技術比較熟。 由于本人長期從事于java語言編程,所以技術方面是可行的。3.2功能分析3.2.1 注冊 服務器收到用戶的注冊請求,便開始接受客戶傳遞的信息,諸如客戶的呢稱,性別,籍貫,個人資料等,接受完畢后,便通過JDBC與后臺數據庫連接,然后向數據庫添加記錄,如果成功,便

14、向客戶返回其號碼??蛻羰盏椒掌鞣祷氐男畔⒑?,便打開主登陸窗口。3.2.2 登錄 在客戶端,用戶輸入其號碼和密碼,然后建立與服務器的連接,告訴服務器我要登錄,服務器收到后,開始通過JDBC讀取數據庫,然后與用戶輸入的信息比較,如果成功,便打開主程序窗口。然后客戶向服務器請求讀取好友名單,服務器收到該請求,開始讀取數據庫中的表,得到好友的號碼后,再在icq表中讀取好友資料,然后向客戶端發送這些信息,客戶收到后就在主窗口顯示好友,并且建立幾個矢量用以存儲好友的呢稱,號碼。3.2.3 私聊 私聊就是兩個聊天??蛻舳耸紫劝l送消息到服務器端,服務器端根據發送人信息和接收者信息來轉發。例如服務器接收到一個

15、A發給B的消息先判斷B是否已經在線,如果在線就將信息發送過去。B接收到A發來的信息,如果是未建立對話窗口,就詢問是否建立對話,否則就丟棄信息。第四章概要設計4.1系統總體結構 4.2數據庫設計 1.用戶表(UserInfo): 屬性:用戶編號(uid),用戶名(uname),密碼(upass),登錄ip 和端口號(ipport),狀態(status)。 關系:一個用戶可以有多個好友。 一個用戶可以有多條消息。1用戶編號uid整數2用戶名uname字符型3密碼upass字符型4登錄ip和端口號ipport字符型5狀態status布爾型 2.好友表(Friends): 屬性:好友編號(fid),用

16、戶好友編號(fuid)。1好友編號fid整數2用戶好友編號(外鍵,引用UserInfo中的uid)fuid整數 3.消息表(Messages): 屬性:消息編號(mid),接受消息的用戶編號(ruid),發送消息 的用戶編號(suid),發送消息的時間(sendTime),消息 類型(mtype)。1消息編號mid整數2接受用戶的編號(外鍵,引用UserInfo中的uid)ruid整數3發送用戶的編號(外鍵,引用UserInfo中的uid)suid整數4發送時間sendTime日期類型5消息類型mtype布爾型第五章詳細設計5.1登錄模塊設計 該模塊的界面是仿照騰訊QQ的界面,界面與騰訊QQ相

17、比雖然不是那么美觀,但是基本的功能也與其差不多了,在這個界面上用戶的主要操作有用戶輸入用戶名,密碼,如果還沒有注冊用戶名的網友可以通過登錄界面的用戶注冊,從而使用該程序。在登錄該程序之前需要開啟服務器,當用戶把用戶名和密碼輸入好后點擊登錄按鈕后,就開始與服務器建立連接,服務器收到后開始通過JDBC的方式讀取數據庫的內容,然后與用戶輸入的用戶名和密碼進行比較,如果用戶名不存在或者用戶的密碼錯誤則登錄失敗,并且提示失敗的原因,如果有時候沒有把服務器開啟的話,則在登錄失敗后,會提示連接服務器超時。登錄成功后直接跳到程序的主窗口,開始向服務器請求讀取好友分組和好友名單。5.2注冊模塊設計 該模塊是對于

18、那些尚未注冊的用戶進行注冊使用,在這個界面注冊的用戶需要填寫的有,昵稱,密碼,確認密碼,密保問題,問題答案,當這些內容填寫完成以后,就可以點擊提交注冊按鈕。點擊這個按鈕后就會創建一個與服務器端的連接。連接成功就會將填寫的信息發送到服務器端。如果服務器寫入數據庫成功,那么你便注冊成功,成功后會返回一個數字帳號給用戶,這個時候你可以用你剛才注冊成功的數字帳號和密碼進行登錄。5.3消息格式化設計 5.4界面設計5.4.1 登錄界面 運行程序后,彈出登錄界面,等待用戶操作。 5.4.2 注冊界面在登錄界面,點擊“注冊”,彈出注冊界面,按要求輸入信息。 5.4.3 聊天界面 結束語課程設計的第一天我不是

19、拿到任務書就開始敲代碼,一整天我都是在看書上網絡編程的知識。然后就是在網上找資料,找插件。本來最先開始我使用的是TCP協議進行通信,但是后來感覺聊天系統不需要對數據的傳輸有絕對的正確,況且是在通信狀況非常好的局域網,所以我把協議改成了UDP。設計的聊天窗口需要輸入對方IP,如果對方也啟動了程序就可以相互發送消息。如果不輸入IP則默認的是向本機發送。數據庫的連接也遇上了點小麻煩,查詢數據庫還比較順利的,可是當要修改數據庫時,試了多次都沒添加進去。后來發現是因為我寫的數據庫連接的類查詢和插入必須用兩個不同的實例。不然數據集會在查詢以后有所改變。界面的設計是用的我在網上找的jigloo插件。因為這個插件功能比較完善,而且添加的也很方便,直接解壓到ECLIPSE文件夾就行了。起初我以為有了這個插件就可以像VB那樣拖一拖就能完成??墒呛髞戆l現它與VB的界面設計完全不一樣。最終還是要自己動手修改代碼。所以我采取的措施是先把組件都設置好,然后自己添加事件、數據庫的連接等等。好在組件設置好以后的JFRAME類的代碼寫的非常清楚。一個MAIN函數新建窗體實例,然后構造函數新建窗體,運用initGUI()方法將組件都賦值,設置大小等。清楚簡潔,所

溫馨提示

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

評論

0/150

提交評論