Java課程設計(論文)基于Java的聊天系統(tǒng)_第1頁
Java課程設計(論文)基于Java的聊天系統(tǒng)_第2頁
Java課程設計(論文)基于Java的聊天系統(tǒng)_第3頁
Java課程設計(論文)基于Java的聊天系統(tǒng)_第4頁
Java課程設計(論文)基于Java的聊天系統(tǒng)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學院學生課程設計(論文)題 目: java課程設計 聊天程序 學生姓名: 學 號: 所在院(系): 計算機學院 專 業(yè): 計算機科學與技術 班 級: (一)班 指導教師: 職稱: 年月日學生課程設計任務書題目聊天程序1、課程設計的目的通過本課程設計使學生能夠較全面的掌握面向?qū)ο蟪绦蛟O計的有關概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運用所學的知識,提高自身的編程能力。2、課程設計的內(nèi)容和要求(包括原始數(shù)據(jù)、技術要求、工作要求等)該程序?qū)崿F(xiàn)聊天功能,包括服務器段程序和客戶端程序。要求:(1)客戶端程序:可連接到服務器,并將消息發(fā)送到服務器端和接受服務器端發(fā)送來的消息。(2)服務器端程序:可將

2、消息發(fā)送到客戶端和接受客戶端發(fā)送來的消息。3、主要參考文獻1朱福喜.java語言程序設計(第二版).科學出版社2陳國君等.java程序設計基礎(第二版).清華大學出版社3 deitel.java大學基礎教程(第六版).電子工業(yè)出版社 4 marycampione.java語言導學(第四版).機械工業(yè)出版社5 y.daniel liang.java語言程序設計基礎篇(第六版). 機械工業(yè)出版社6 kathy sierra.head first java(第二版).東南大學出版社4、課程設計工作進度計劃序號時間(天)內(nèi)容安排備注11分析設計準備周一22編程調(diào)試階段周二至周三31編寫課程設計報告周四

3、41考核周五總計5(天)指導教師(簽字)日期年 月 日教研室意見:年 月 日學生(簽字): 接受任務時間: 年 月 日課程設計(論文)指導教師成績評定表題目名稱聊天程序評分項目分值得分評價內(nèi)涵工作表現(xiàn)20%01學習態(tài)度6遵守各項紀律,工作刻苦努力,具有良好的科學工作態(tài)度。02科學實踐、調(diào)研7通過實驗、試驗、查閱文獻、深入生產(chǎn)實踐等渠道獲取與課程設計有關的材料。03課題工作量7按期圓滿完成規(guī)定的任務,工作量飽滿。能力水平35%04綜合運用知識的能力10能運用所學知識和技能去發(fā)現(xiàn)與解決實際問題,能正確處理實驗數(shù)據(jù),能對課題進行理論分析,得出有價值的結論。05應用文獻的能力5能獨立查閱相關文獻和從事

4、其他調(diào)研;能提出并較好地論述課題的實施方案;有收集、加工各種信息及獲取新知識的能力。06設計(實驗)能力,方案的設計能力5能正確設計實驗方案,獨立進行裝置安裝、調(diào)試、操作等實驗工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計算及計算機應用能力5具有較強的數(shù)據(jù)運算與處理能力;能運用計算機進行資料搜集、加工、處理和輔助設計等。08對計算或?qū)嶒灲Y果的分析能力(綜合分析能力、技術經(jīng)濟分析能力)10具有較強的數(shù)據(jù)收集、分析、處理、綜合的能力。成果質(zhì)量45%09插圖(或圖紙)質(zhì)量、篇幅、設計(論文)規(guī)范化程度5符合本專業(yè)相關規(guī)范或規(guī)定要求;規(guī)范化符合本文件第五條要求。10設計說明書(論文)質(zhì)量30綜述簡練

5、完整,有見解;立論正確,論述充分,結論嚴謹合理;實驗正確,分析處理科學。11創(chuàng)新10對前人工作有改進或突破,或有獨特見解。成績指導教師評語指導教師簽名: 年月日摘 要如何與別人更好地交流, 是當前人們普遍關心的問題。人們通過互聯(lián)網(wǎng)可以展示產(chǎn)品,發(fā)布最新動態(tài),與用戶進行交流和溝通,與合作伙伴建立聯(lián)系,以及開展電子商務等。其中網(wǎng)上聊天系統(tǒng)是構成網(wǎng)站的一個重要組成部分,為人們之間進行交流和聯(lián)系提供的一個平臺。java是一種程序設計語言,它具有簡單的、完全面向?qū)ο笠约芭c平臺無關的結構,也具有可移植性、高性能和安全性,并提供了多線程的功能,而java語言最大的成功之處在于它的平臺無關性和具有強大的網(wǎng)絡編

6、程1功能,基于java網(wǎng)絡編程的強大功能本人將用java編寫一個聊天系統(tǒng)。一般來說,聊天工具大多數(shù)由客戶端程序和服務器程序外加服務器端用于存放客戶數(shù)據(jù)的數(shù)據(jù)庫組成,本系統(tǒng)采用客戶機/服務器架構模式通過java提供的soket類來連接客戶機和服務器并使客戶機和服務器之間相互通信,由于聊天是多點對多點的而java提供的多線程功能用多線程可完成多點對多點的聊天,數(shù)據(jù)庫管理系統(tǒng)用sql server2000完成并通過jdbc-odbc橋訪問數(shù)據(jù)庫。聊天系統(tǒng)完成后將可進行多人對多人的聊天,對新用戶的注冊,發(fā)送消息、接受消息等等功能。關鍵字 互聯(lián)網(wǎng)聊天,java,客戶機/服務器,多線程,數(shù)據(jù)庫管理系統(tǒng)目

7、錄摘 要i1 緒 論11.1 課程背景11.2 課題的研究工作12 需求分析22.1 系統(tǒng)的總體需求22.1.1 服務器的需求22.1.2 客戶端的需求22.2 系統(tǒng)的需求分析22.2.1 服務器的功能32.2.2 客戶端的功能32.3 系統(tǒng)的應用平臺33 概要設計43.1 各模塊詳細功能43.1.1 服務器端結構43.1.2 客戶端結構43.1.3 用戶注冊流程53.1.4 用戶登錄流程53.1.5 用戶聊天流程63.1.6 用戶退出流程63.2 各模塊的功能73.2.1 用戶注冊功能73.2.2 戶登錄功能73.2.3 用戶退出功能73.2.4 接收用戶聊天信息功能83.2.5 服務器踢人

8、83.2.6 服務器公告84 詳細設計94.1 服務器啟動界面的設計94.1.1 服務器登錄界面的分析94.1.2 服務器信息的管理104.1.3 服務器踢人104.1.4 服務器公告114.2 用戶登錄界面的設計114.2.1 聊天室的登錄界面的分析114.2.2 聊天室用戶注冊界面分析124.3 用戶聊天室界面設計144.3.1 聊天室界面分析144.3.2 聊天室用戶聊天信息144.3.3 保存用戶消息164.3.4 用戶非法信息的屏蔽174.3.5 用戶聊天時間的監(jiān)聽175 結論18參考文獻19附件:程序主要源代碼201 緒 論聊天是internet中廣泛應用的服務之一,隨著網(wǎng)絡技術的

9、和軟件技術的不斷發(fā)展,而java是sun公司推出的新的一代面向?qū)ο蟪绦蛟O計語言,特別適合于internet應用程序開發(fā)?;趈ava語言對網(wǎng)絡編程的支持為了更好地實現(xiàn)聊天系統(tǒng)的網(wǎng)絡傳輸功能,使客戶端和服務器能夠更好的通信,本系統(tǒng)的編寫采用了java語言。1.1 課程背景伴隨著網(wǎng)絡時代潮流的到來使得人與人之間又多了一種交流方法,那就是通過網(wǎng)絡實現(xiàn)跨區(qū)域的間接交流,但是網(wǎng)絡只是提供了硬件上的支持想通過網(wǎng)絡實現(xiàn)無地域局限性的交流還需要有軟件方面的支持,迫于市場的需求關系聊天系統(tǒng)誕生了,最早的聊天系統(tǒng)只是在unix環(huán)境上,使用talk指令建立用戶間純文字的在線交談,其所提供的功能僅能傳輸一般asc碼文

10、字而已。于是尋找更好的人與人之間通過網(wǎng)絡交流的方法就為編程人員提出了新的課題,大家為了尋找一種更好的聊天方法一時間聊天系統(tǒng)變成了一個大金礦,也為編程人員提出了新的要求同時也提供了一個新的舞臺。1.2 課題的研究工作此聊天系統(tǒng)是一個典型的網(wǎng)絡傳輸程序,同時還要連接數(shù)據(jù)庫。該程序分兩大部分來編寫,服務器端和客戶端。服務器端用來響應客戶端所發(fā)出的請求,同時還要連接數(shù)據(jù)庫,對數(shù)據(jù)庫里的數(shù)據(jù)進行增加和刪除??蛻舳擞脕斫邮沼脩舻恼埱螅缓笞龀鱿鄳牟僮?,同時還要向服務器端發(fā)出申請,從而完成對數(shù)據(jù)庫的增加和刪除操作。其中網(wǎng)絡傳輸?shù)膶崿F(xiàn)和多線程技術是此聊天系統(tǒng)的核心部分,而java提供的api函數(shù)中針對網(wǎng)絡編

11、程的socket類正是針對網(wǎng)絡編程的,java語言是一種支持多線程的語言,多線程在服務器端主要是要滿足支持多個用戶的同時登陸,在客戶端主要滿足一對多的同時聊天。2 需求分析2.1 系統(tǒng)的總體需求要制作的聊天系統(tǒng)是一個簡單、方便的通信系統(tǒng),為兩部分:服務器端和客戶端。此聊天系統(tǒng)要可以方便用戶之間進行交流,信息即時發(fā)送,即時回復。2.1.1 服務器的需求實現(xiàn)服務器的監(jiān)控聊天內(nèi)容,服務器過濾非法內(nèi)容、發(fā)送通知、服務器踢人、保存服務器日志和用戶聊天信息等功能。2.1.2 客戶端的需求實現(xiàn)與聊天室成員一起聊天、與聊天室成員私聊、改變聊天室內(nèi)容風格、用戶注冊(含頭像)、用戶登錄的等功能。2.2 系統(tǒng)的需求

12、分析任何聊天系統(tǒng)不外乎由服務器端和客戶端兩部分組成,本聊天系統(tǒng)也不例外也是由服務器端和客戶端組成,其中服務器端主要是完成對數(shù)據(jù)庫的操作、監(jiān)聽客戶端、和建立連接三個部分既可,客戶端則要完成用戶的新建、用戶的登陸、聊天功能,這樣就基本完成了系統(tǒng)功能模塊的劃分,其功能圖如圖2.1。聊天系統(tǒng)客戶端服務器聊天用戶注冊用戶登錄監(jiān)聽客戶操作數(shù)據(jù)庫建立連接2.1 系統(tǒng)的功能圖2.2.1 服務器的功能服務器信息管理:顯示當前服務器狀態(tài)、在線人數(shù)、服務器名稱、服務器ip地址、保存服務器日志、服務器端口號和使用的通信協(xié)議等。用戶信息管理:顯示當前在線用戶列表和用戶聊天信息、給在線用戶發(fā)送系統(tǒng)通知、從聊天服務器中踢出

13、不合法用戶等。2.2.2 客戶端的功能用戶注冊:通過提供基本信息注冊成為聊天系統(tǒng)的合法用戶,并判斷用戶輸入密碼與確認密碼是否一致。用戶登錄:注冊用戶可以通過輸入用戶名和密碼登錄系統(tǒng)以便于其他用戶進行聊天,并判斷用戶輸入密碼是否正確。收發(fā)信息功能:收發(fā)信息是本聊天系統(tǒng)的核心部分,也是本系統(tǒng)網(wǎng)絡傳輸?shù)捏w現(xiàn)所在。兩個客戶端可以通過http協(xié)議直接通信,找到你想要聊天的對象通過http協(xié)議給他(她)發(fā)送消息,同時也可以接受其發(fā)給你的消息。2.3 系統(tǒng)的應用平臺java聊天室系統(tǒng)的開發(fā)環(huán)境為eclipse,它是一個開放源代碼的、基于java的可擴展開發(fā)平臺,它只是一個框架和一組服務,用于插件組件構建開發(fā)

14、環(huán)境,其附帶了一個標準的插件集,包括java開發(fā)工具(java development tols,jdt)。該系統(tǒng)還需要安裝jdk1.4.0或以上版本的jdk在windows98或windows98以上操作系統(tǒng)的滿足內(nèi)存為128m以上計算機里運行。系統(tǒng)中的數(shù)據(jù)可以用sql srver 2000數(shù)據(jù)庫。3 概要設計3.1 各模塊詳細功能3.1.1 服務器端結構appserver啟動服務器監(jiān)聽serverframe服務器控制監(jiān)聽窗體connection處理所有用戶請求wordfilter聊天內(nèi)容過濾器3.1 服務器端的結構圖appserver.java:為服務器端監(jiān)聽類,負責服務器的啟動,包括啟動

15、監(jiān)聽端口等。serverframe.java:為服務器端主窗體類,負責服務器監(jiān)聽服務器信息和客戶端用戶信息。 connection.java:為服務器端用戶信息類,負責處理所有用戶的請求。 wordfilter.java:為服務器端對用戶信息的監(jiān)聽類,負責對用戶聊天內(nèi)容的過濾。3.1.2 客戶端結構login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時鐘窗體register用戶注冊窗體windowclose用戶窗體監(jiān)聽器3.2 客戶端的結構圖chatroom.java:為客戶端程序啟動類,負責客戶端的啟動和退出。login.java:為客戶端程序登錄界面,

16、負責用戶賬號信息的驗證與反饋。register.java:為客戶端程序注冊界面,負責用戶帳號信息的注冊驗證與反饋。chatroom.java:為客戶端程序聊天室主界面,負責接收、發(fā)送聊天內(nèi)容與服務器端的connection.java親密合作。windowclose.java:為chatroom.java內(nèi)部類,負責監(jiān)聽聊天室用戶的操作。clock.java:為chatroom.java內(nèi)部類,負責監(jiān)聽聊天室用戶操作的時間。3.1.3 用戶注冊流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時鐘窗體register用戶注冊窗體windowclose用

17、戶窗體監(jiān)聽器register_customer注冊用戶數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務器監(jiān)聽serverframe服務器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器3.3 用戶注冊流程圖3.1.4 用戶登錄流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時鐘窗體register用戶注冊窗體windowclose用戶窗體監(jiān)聽器customer登錄用戶數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務器監(jiān)聽serverframe服務器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器3.4 用戶登

18、錄流程圖3.1.5 用戶聊天流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時鐘窗體windowclose用戶窗體監(jiān)聽器chat聊天數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務器監(jiān)聽serverframe服務器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器register用戶注冊窗體message聊天數(shù)據(jù)類型3.5 用戶聊天流程圖3.1.6 用戶退出流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時鐘窗體windowclose用戶窗體監(jiān)聽器connection處理所有用戶請求a

19、ppserver啟動服務器監(jiān)聽serverframe服務器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器register用戶注冊窗體exit退出用戶數(shù)據(jù)類型3.6 用戶退出流程圖3.2 各模塊的功能3.2.1 用戶注冊功能去數(shù)據(jù)庫讀數(shù)據(jù):首先創(chuàng)建一個file文件類,載入“user.txt”,再用對象輸入流objectinputstream包裝file文件類,將存儲在“user.txt”的向量對象vector中載入內(nèi)存中,現(xiàn)在系統(tǒng)中的向量就是對象型數(shù)據(jù)庫,存儲著每條用戶信息對象。驗證用戶名是否存在:在對象數(shù)據(jù)庫中查找是否有與登錄用戶的用戶名相同的記錄,如果沒有繼續(xù)注冊,否則退出驗證,返回“此用戶

20、不存在”的錯誤。驗證用戶輸入口令是否一致:驗證用戶兩次輸入的口令是否一致,如果一致繼續(xù)注冊,否則退出驗證,返回“密碼兩次輸入不一致,請重新輸入”的錯誤。驗證用戶年齡輸入是否合法:驗證用戶輸入的年齡是否符合邏輯,如果符合就繼續(xù)注冊,否則退出驗證處理,返回“年齡輸入不合法”的錯誤。驗證用戶年齡電子郵件輸入是否合法:驗證用戶輸入的電子郵件是否含義“”字符,如果有就繼續(xù)注冊,否則退出驗證處理,返回“電子郵件輸入不合法”的錯誤。創(chuàng)建文件輸出流,再用對象輸出流包裝后寫入本地文件將其持久化。最后關閉對象輸出流和文件輸入流。給客戶端返回信息:將用戶注冊成功或失敗信息用打印流包裝socket以后,輸出給客戶端注

21、冊結果的詳細信息。關閉socket連接:當以上程序正常運行后,需要關閉socket連接,否則將會浪費服務器與客戶端之間的資源。3.2.2 戶登錄功能去數(shù)據(jù)庫讀用戶數(shù)據(jù):打開用戶數(shù)據(jù)庫“user.txt”,將用戶數(shù)據(jù)對象集載入內(nèi)存,以供以下程序使用。驗證用戶名是否存在:在對象數(shù)據(jù)庫中查找是否有與登錄用戶的用戶名相同的記錄,如果有繼續(xù)驗證,否則退出驗證處理,返回“沒有此用戶”的錯誤。驗證用戶密碼是否正確:如果有與登錄用戶的用戶名相同的記錄,接著判斷密碼是否正確,如果密碼正確,進入聊天室,否則退出驗證處理,返回“密碼不正確”的錯誤。3.2.3 用戶退出功能接收退出信息:當用戶退出時,客戶端將會用基于

22、scoket的對象輸出流發(fā)給服務器退出對象。在線列表中刪除用戶:用戶退出后應該把用戶從在線列表中刪除,否則用戶退出用戶還在在線列表中,那么該用戶下次將會無法登錄。更新在線列表:用戶退出后將從服務端監(jiān)控界面的用戶列表更新,否則用戶數(shù)據(jù)將會不同步。3.2.4 接收用戶聊天信息功能接收用戶聊天信息:當用戶發(fā)送聊天信息時,服務端將會收到客戶端用socket傳輸過來的聊天信息對象,然后將其強制轉(zhuǎn)換為chat對象。過濾用戶聊天內(nèi)容的非法信息:分析聊天信息對象的聊天內(nèi)容,用語言過濾類將非法字符過濾掉。語言過濾的時候?qū)蜷_“badword.txt”文件,不允許出現(xiàn)的關鍵詞將會存儲在文件中,關鍵字之間以逗號分

23、割。當聊天內(nèi)容中出現(xiàn)要過濾的關鍵字時,將會被系統(tǒng)屏蔽,而聊天內(nèi)容也將替換成“非法內(nèi)容,系統(tǒng)屏蔽”。添加到聊天信息列表:當用戶想要保存聊天內(nèi)容時,用戶保存的聊天信息將保存到“用戶名_message.txt”的文件類中。3.2.5 服務器踢人服務器將要踢的人的用戶名存到變量sframs.ti中,下發(fā)給客戶端。當客戶端發(fā)現(xiàn)自己是被踢對象后就會自動退出聊天室并給服務器返回退出信息。3.2.6 服務器公告服務器將要下發(fā)的公告信息存到sframe.servermessage中,在聊天信息下發(fā)給客戶端時,客戶端將對比公告是否更新,如果更新將顯示在用戶聊天信息中。4 詳細設計4.1 服務器啟動界面的設計4.1

24、.1 服務器登錄界面的分析聊天室系統(tǒng)的服務器應用程序用于服務器端的啟動。服務器信息管理顯示服務器的狀態(tài)、名稱及ip,服務器端的端口號、服務器日志和聊天室在線用戶人數(shù)及其最多在線人數(shù),如下圖4.1所示。4.1 服務器信息管理用戶信息管理顯示在線用戶列表和用戶消息,如下圖4.2所示。4.2 用戶信息管理4.1.2 服務器信息的管理服務器將用戶的聊天和其他信息保存到log.txt文件中,如下圖4.3所示。4.3 服務器日志保存服務器日志保存的文件log.txt文件的顯示如下圖4.4所示。4.4 服務器日志文件4.1.3 服務器踢人服務器將要踢的人的用戶名選中后,選擇“踢人”后,被踢的對象自動退出聊天

25、室并給服務器返回信息。4.5 客戶端用戶退出聊天室4.6服務器返回信息4.1.4 服務器公告服務器在用戶信息管理界面內(nèi)發(fā)送系統(tǒng)公告,顯示在用戶聊天室的用戶信息中,如下圖4.7所示。4.7 客戶端聊天室用戶信息4.2 用戶登錄界面的設計4.2.1 聊天室的登錄界面的分析聊天室系統(tǒng)的登錄程序用于實現(xiàn)用戶登錄,程序通過login.java向已注冊用戶通過輸入用戶名和密碼在聊天服務器端進行驗證,登錄界面如下:4.8 用戶登錄界面 驗證用戶密碼是否為空即用戶名和密碼的字符長度不為0,如果驗證通過,就登陸進入聊天室界面,否則返回“用戶名或密碼不能為空”的錯誤,如下圖4.9所示。4.9 驗證用

26、戶登陸用戶名和密碼是否為空4.10 驗證用戶名是否被注冊 驗證用戶是否被注冊即服務器端是否有該用戶的數(shù)據(jù)庫消息,如果驗證通過,就登陸進入聊天室界面,否則返回“沒有這個用戶,請先注冊”的錯誤,如下圖4.10所示。 驗證用戶密碼是否正確驗證用戶密碼是否與服務器端的數(shù)據(jù)庫中的一致,如果驗證通過,就登陸進入聊天室界面,否則返回“用戶名或密碼不能為空”的錯誤,如下圖4.11所示。4.11 驗證用戶密碼是否正確4.2.2 聊天室用戶注冊界面分析程序?qū)⑼ㄟ^register.java用戶注冊界面收集用戶的用戶名、密碼、年齡、電子郵箱,如下圖4.12所示。4.12用戶注冊界面4.2.

27、2.1 驗證用戶名是否重復驗證用戶名是否被其他的用戶注冊過,保證用戶名不重復,防止因為用戶名重復發(fā)生的錯誤,如下圖4.13所示。4.13 驗證用戶名是否重復4.14驗證用戶注冊密碼是否為空 驗證用戶密碼是否為空即密碼的字符長度不為0,如果驗證通過,就進行下面的驗證,否則返回“用戶密碼為空”的錯誤,如下圖4.14所示。 驗證用戶密碼的一致性驗證密碼兩次輸入是否一致,如果驗證通過,就進行下面的驗證,否則返回“密碼兩次輸入不一致,請重復輸入”的錯誤,如下圖4.15所示。4.15 驗證用戶注冊密碼是否一致4.16驗證用戶注冊年齡是否合法 驗證用戶年齡的合法性驗

28、證用戶輸入年齡是否合法,如果驗證通過,就進行下面的驗證,否則返回“年齡輸入不合法”的錯誤,如上圖4.16所示。 驗證用戶電子郵箱的格式是否正確驗證用戶電子郵箱字符串必須有“”,如果驗證通過,就進行下面的驗證,否則返回“電子郵箱不合法”的錯誤,如下圖4.17所示。4.17驗證用戶注冊電子信箱是否合法4.18 用戶注冊成功 注冊成功用戶注冊通過所有的驗證,返回“用戶名+注冊成功”的消息,如上圖4.18所示。4.3 用戶聊天室界面設計4.3.1 聊天室界面分析程序?qū)⑼ㄟ^chatroom.java用戶聊天室界面收集用戶的在線用戶列表、在線人數(shù)、聊天內(nèi)容等,如下圖4.19所示

29、。4.19 聊天室用戶daili的界面4.3.2 聊天室用戶聊天信息接收用戶的聊天信息是由多線程技術實現(xiàn)的,因為客戶端必須時時關注更新服務器上是否有最新消息,在本程序中設定的是3秒刷新服務器一次,如果間隔時間太短將會增加客戶端與服務器端的通信負擔,而間隔時間長就會讓人感覺沒有時效性,所以經(jīng)過權衡認為3秒最佳,因為每個用戶都不可能在3秒內(nèi)連續(xù)發(fā)送信息。當每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息人性化地顯示在聊天信息界面上,如上圖4.19所示。 聊天室的用戶私聊當用戶想要和他的好友聊天,而不被其他的用戶看到其聊天的內(nèi)容,只需要雙擊該用戶的用戶名后,再把聊天室中

30、的“私聊”按鈕選中則,該用戶和其好友的聊天信息將不會出現(xiàn)在其他的用戶聊天界面的聊天信息中,如下圖中用戶wt與上圖4.3.1中用戶daili私聊時的聊天信息只在他們的聊天室界面中顯示,在其他用戶中該聊天內(nèi)容是不顯示的如下圖4.20所示。4.20 聊天室用戶wt的界面4.21 聊天室用dl的界面 聊天室的其他功能用戶在聊天的時候可以對聊天的內(nèi)容的字體及其顏色進行設置,還可以選擇收聽聊天室里的音樂。這些功能使得聊天室更人性化。4.3.3 保存用戶消息當用戶需要保存聊天記錄時可以直接點擊“保存”按鈕,為了防止多用戶聊天記錄文件沖突問題,聊天記錄將會以“用戶名_message

31、.txt”為文件名將信息保存在當前應用程序目錄下,如下圖4.22所示。4.22 聊天室用戶wt聊天信息的保存用戶聊天信息的保存文件“用戶名_message.txt”的顯示,如下圖4.23所示。4.23 聊天室用戶wt的聊天信息4.3.4 用戶非法信息的屏蔽程序?qū)⑼ㄟ^worldfiler.java對用戶聊天室聊天內(nèi)容進行過濾,如果該用戶聊天信息為過濾內(nèi)容,將把該信息屏蔽,并將該屏蔽的內(nèi)容存入文件“bad.txt”文件中,如下圖4.24所示。4.24 聊天室聊天信息的非法屏蔽4.3.5 用戶聊天時間的監(jiān)聽程序?qū)⑼ㄟ^clock.java對用戶在線聊天進行監(jiān)聽,如下圖4.25的時鐘界面所示。4.25

32、聊天室時鐘界面5 結論 本文討論了如何利用java技術開發(fā)聊天室系統(tǒng),基本滿足了結構化,界面友好、速度快、安全性以及穩(wěn)定性等特點。系統(tǒng)著重研究并實現(xiàn)了網(wǎng)絡應用的部分。根據(jù)實現(xiàn)的情況看,具有較好的聊天界面生成效果,以及流暢的網(wǎng)絡通信效果。生成的聊天室可以達到基本的聊天要求,具有較高的研究價值。系統(tǒng)具有目前聊天室的基本功能:包括支持多種頭像,字色,語氣選擇,支持emoto,支持私聊,支持在線聊友查找,支持分屏顯示,支持友好定制自己的私人頭像,支持臟話過濾,支持在線音樂的收聽,可以給所有的聊友發(fā)公共信息。具有速度快、高穩(wěn)定性,占用系統(tǒng)資源少,用戶界面友好等特點。通過這次的課程設計,發(fā)現(xiàn)自己在理論研究

33、和實際工作能力等方面都得到了提高,受益匪淺。同時在老師的指導和課題組同學的共同幫助下,即使總結研究成果,這些無疑會對我今后的工作和學習帶來很大的幫助。參考文獻1 朱福喜,java語言程序設計(第二版),科學出版社,20012 陳國君等.,java程序設計基礎(第二版),清華大學出版社,20013 deitel.,java大學基礎教程(第六版),電子工業(yè)出版社,20104 marycampione,java語言導學(第四版),機械工業(yè)出版社,20015 y.daniel liang,java語言程序設計基礎篇(第六版),機械工業(yè)出版社,20066 kathy sierra,head first

34、java(第二版),東南大學出版社,20057 黃嘉輝, java網(wǎng)絡程序設計, 清華大學出版社,20028 飛思科技產(chǎn)品研發(fā)中心, java靈感編程, 電子工業(yè)出版社,20029 李榮貴、鄧必孟等, java2.0網(wǎng)絡多線程實例教程,北京希望電子出版社,200110 林智揚、范明翔、陳錦輝, 精通java swing程序設計, 中國鐵道出版社,200211 何雄,jsp網(wǎng)絡程序設計,人民郵電出版社。200012 薩師煊,王珊,數(shù)據(jù)庫系統(tǒng)概述,高等教育出版社,200013 bruce eckel, thinking in java,200014 brett spell, profession

35、java programming,wrox,200115 danny ayers, professional java data, wrox,200216 唐曉軍 朱福喜 , java項目設計與開發(fā)范例,電子工業(yè)出版社,200317 elliotte rusty harold ,java網(wǎng)絡編程,中國電力出版社,200518 郭立山游泳明,java函數(shù)使用手冊, 冶金工業(yè)出版社,200419 孫印杰劉斌孫玉強,java編程案例精解, 電子工業(yè)出版社,200420 閃四清 , sql server使用簡明教程, 清華大學出版社,2006附件:程序主要源代碼/login.java主要源代碼publ

36、ic class login extends jframe implements actionlistener private static final long serialversionuid = -8965773902056088264l;private jpanel pnllogin;private jbutton btnlogin, btnregister, btnexit;private jlabel lblserver, lblusername, lblpassword, lbllogo;private jtextfield txtusername, txtserver;priv

37、ate jpasswordfield pwdpassword;private string strserverip;private dimension scrnsize; public login() /構造登陸窗體方法super(登錄聊天室);pnllogin = new jpanel();this.getcontentpane().add(pnllogin);lblserver = new jlabel(服務器(s):);lblusername = new jlabel(用戶名(u):);lblpassword = new jlabel(口 令(p):);txtserver = new j

38、textfield(20);txtserver.settext(54);txtusername = new jtextfield(20);pwdpassword = new jpasswordfield(20);btnlogin = new jbutton(登錄(l);btnlogin.settooltiptext(登錄到服務器);btnlogin.setmnemonic(l);btnregister = new jbutton(注冊(r);btnregister.settooltiptext(注冊新用戶);btnregister.setmnemonic(r);btnex

39、it = new jbutton(退出(x);btnexit.settooltiptext(退出系統(tǒng));btnexit.setmnemonic(x);/組件的布局及其構造方法 / 構造方法結束public static void main(string args) /啟動登陸窗體new login();/appserver.java程序源代碼public class appserver extends thread private serversocket serversocket;private serverframe sframe;private static vector useronl

40、ine = new vector(1, 1);private static vector v = new vector(1,1);public appserver() / 創(chuàng)建服務器 啟動服務監(jiān)聽1001端口sframe = new serverframe();try serversocket = new serversocket(1001);/ 獲取服務器的主機名和ip地址inetaddress address = inetaddress.getlocalhost();sframe.txtservername.settext(address.gethostname();sframe.txti

41、p.settext(address.gethostaddress();sframe.txtport.settext(1001); catch (ioexception e) fail(e, 不能啟動服務!);sframe.txtstatus.settext(已啟動.);this.start(); / 啟動線程public static void fail(exception e, string str) /退出服務器system.out.println(str + 。 + e);public void run() /監(jiān)聽客戶的請求,當有用戶請求時創(chuàng)建 connection線程try while

42、 (true) / 監(jiān)聽并接受客戶的請求socket client = serversocket.accept();new connection(sframe, client, useronline, v); / 支持多線程 catch (ioexception e) fail(e, 不能監(jiān)聽!);public static void main(string args) /啟動服務器new appserver(); /chat.java源代碼public class chat implements serializableprivate static final long serialvers

43、ionuid = 4058485121419391969l;public string chatuser; /發(fā)言人用戶名public string chatmessage; /聊天內(nèi)容public string chattouser;/ 接受對象用戶名public string emote; /聊天語氣public boolean whisper;/ 是否私聊 /chatclient.java源代碼public class chatclient /設置服務器ip地址public chatclient() public static void main(string args) new login();/chatroom.java源代碼public class chatroom extends thread implements actionlistener private jcombobox daxiaocombobox;private jcombobox yangshicombobox;private jcombobox ziticombobox;private jcombobox emo

溫馨提示

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

評論

0/150

提交評論