版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)院學(xué)生課程設(shè)計(jì)(論文)題 目: java課程設(shè)計(jì) 聊天程序 學(xué)生姓名: 學(xué) 號: 所在院(系): 計(jì)算機(jī)學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級: (一)班 指導(dǎo)教師: 職稱: 年月日學(xué)生課程設(shè)計(jì)任務(wù)書題目聊天程序1、課程設(shè)計(jì)的目的通過本課程設(shè)計(jì)使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。2、課程設(shè)計(jì)的內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)要求、工作要求等)該程序?qū)崿F(xiàn)聊天功能,包括服務(wù)器段程序和客戶端程序。要求:(1)客戶端程序:可連接到服務(wù)器,并將消息發(fā)送到服務(wù)器端和接受服務(wù)器端發(fā)送來的消息。(2)服務(wù)器端程序:可將
2、消息發(fā)送到客戶端和接受客戶端發(fā)送來的消息。3、主要參考文獻(xiàn)1朱福喜.java語言程序設(shè)計(jì)(第二版).科學(xué)出版社2陳國君等.java程序設(shè)計(jì)基礎(chǔ)(第二版).清華大學(xué)出版社3 deitel.java大學(xué)基礎(chǔ)教程(第六版).電子工業(yè)出版社 4 marycampione.java語言導(dǎo)學(xué)(第四版).機(jī)械工業(yè)出版社5 y.daniel liang.java語言程序設(shè)計(jì)基礎(chǔ)篇(第六版). 機(jī)械工業(yè)出版社6 kathy sierra.head first java(第二版).東南大學(xué)出版社4、課程設(shè)計(jì)工作進(jìn)度計(jì)劃序號時(shí)間(天)內(nèi)容安排備注11分析設(shè)計(jì)準(zhǔn)備周一22編程調(diào)試階段周二至周三31編寫課程設(shè)計(jì)報(bào)告周四
3、41考核周五總計(jì)5(天)指導(dǎo)教師(簽字)日期年 月 日教研室意見:年 月 日學(xué)生(簽字): 接受任務(wù)時(shí)間: 年 月 日課程設(shè)計(jì)(論文)指導(dǎo)教師成績評定表題目名稱聊天程序評分項(xiàng)目分值得分評價(jià)內(nèi)涵工作表現(xiàn)20%01學(xué)習(xí)態(tài)度6遵守各項(xiàng)紀(jì)律,工作刻苦努力,具有良好的科學(xué)工作態(tài)度。02科學(xué)實(shí)踐、調(diào)研7通過實(shí)驗(yàn)、試驗(yàn)、查閱文獻(xiàn)、深入生產(chǎn)實(shí)踐等渠道獲取與課程設(shè)計(jì)有關(guān)的材料。03課題工作量7按期圓滿完成規(guī)定的任務(wù),工作量飽滿。能力水平35%04綜合運(yùn)用知識的能力10能運(yùn)用所學(xué)知識和技能去發(fā)現(xiàn)與解決實(shí)際問題,能正確處理實(shí)驗(yàn)數(shù)據(jù),能對課題進(jìn)行理論分析,得出有價(jià)值的結(jié)論。05應(yīng)用文獻(xiàn)的能力5能獨(dú)立查閱相關(guān)文獻(xiàn)和從事
4、其他調(diào)研;能提出并較好地論述課題的實(shí)施方案;有收集、加工各種信息及獲取新知識的能力。06設(shè)計(jì)(實(shí)驗(yàn))能力,方案的設(shè)計(jì)能力5能正確設(shè)計(jì)實(shí)驗(yàn)方案,獨(dú)立進(jìn)行裝置安裝、調(diào)試、操作等實(shí)驗(yàn)工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計(jì)算及計(jì)算機(jī)應(yīng)用能力5具有較強(qiáng)的數(shù)據(jù)運(yùn)算與處理能力;能運(yùn)用計(jì)算機(jī)進(jìn)行資料搜集、加工、處理和輔助設(shè)計(jì)等。08對計(jì)算或?qū)嶒?yàn)結(jié)果的分析能力(綜合分析能力、技術(shù)經(jīng)濟(jì)分析能力)10具有較強(qiáng)的數(shù)據(jù)收集、分析、處理、綜合的能力。成果質(zhì)量45%09插圖(或圖紙)質(zhì)量、篇幅、設(shè)計(jì)(論文)規(guī)范化程度5符合本專業(yè)相關(guān)規(guī)范或規(guī)定要求;規(guī)范化符合本文件第五條要求。10設(shè)計(jì)說明書(論文)質(zhì)量30綜述簡練
5、完整,有見解;立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理;實(shí)驗(yàn)正確,分析處理科學(xué)。11創(chuàng)新10對前人工作有改進(jìn)或突破,或有獨(dú)特見解。成績指導(dǎo)教師評語指導(dǎo)教師簽名: 年月日摘 要如何與別人更好地交流, 是當(dāng)前人們普遍關(guān)心的問題。人們通過互聯(lián)網(wǎng)可以展示產(chǎn)品,發(fā)布最新動態(tài),與用戶進(jìn)行交流和溝通,與合作伙伴建立聯(lián)系,以及開展電子商務(wù)等。其中網(wǎng)上聊天系統(tǒng)是構(gòu)成網(wǎng)站的一個(gè)重要組成部分,為人們之間進(jìn)行交流和聯(lián)系提供的一個(gè)平臺。java是一種程序設(shè)計(jì)語言,它具有簡單的、完全面向?qū)ο笠约芭c平臺無關(guān)的結(jié)構(gòu),也具有可移植性、高性能和安全性,并提供了多線程的功能,而java語言最大的成功之處在于它的平臺無關(guān)性和具有強(qiáng)大的網(wǎng)絡(luò)編
6、程1功能,基于java網(wǎng)絡(luò)編程的強(qiáng)大功能本人將用java編寫一個(gè)聊天系統(tǒng)。一般來說,聊天工具大多數(shù)由客戶端程序和服務(wù)器程序外加服務(wù)器端用于存放客戶數(shù)據(jù)的數(shù)據(jù)庫組成,本系統(tǒng)采用客戶機(jī)/服務(wù)器架構(gòu)模式通過java提供的soket類來連接客戶機(jī)和服務(wù)器并使客戶機(jī)和服務(wù)器之間相互通信,由于聊天是多點(diǎn)對多點(diǎn)的而java提供的多線程功能用多線程可完成多點(diǎn)對多點(diǎn)的聊天,數(shù)據(jù)庫管理系統(tǒng)用sql server2000完成并通過jdbc-odbc橋訪問數(shù)據(jù)庫。聊天系統(tǒng)完成后將可進(jìn)行多人對多人的聊天,對新用戶的注冊,發(fā)送消息、接受消息等等功能。關(guān)鍵字 互聯(lián)網(wǎng)聊天,java,客戶機(jī)/服務(wù)器,多線程,數(shù)據(jù)庫管理系統(tǒng)目
7、錄摘 要i1 緒 論11.1 課程背景11.2 課題的研究工作12 需求分析22.1 系統(tǒng)的總體需求22.1.1 服務(wù)器的需求22.1.2 客戶端的需求22.2 系統(tǒng)的需求分析22.2.1 服務(wù)器的功能32.2.2 客戶端的功能32.3 系統(tǒng)的應(yīng)用平臺33 概要設(shè)計(jì)43.1 各模塊詳細(xì)功能43.1.1 服務(wù)器端結(jié)構(gòu)43.1.2 客戶端結(jié)構(gòu)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 服務(wù)器踢人
8、83.2.6 服務(wù)器公告84 詳細(xì)設(shè)計(jì)94.1 服務(wù)器啟動界面的設(shè)計(jì)94.1.1 服務(wù)器登錄界面的分析94.1.2 服務(wù)器信息的管理104.1.3 服務(wù)器踢人104.1.4 服務(wù)器公告114.2 用戶登錄界面的設(shè)計(jì)114.2.1 聊天室的登錄界面的分析114.2.2 聊天室用戶注冊界面分析124.3 用戶聊天室界面設(shè)計(jì)144.3.1 聊天室界面分析144.3.2 聊天室用戶聊天信息144.3.3 保存用戶消息164.3.4 用戶非法信息的屏蔽174.3.5 用戶聊天時(shí)間的監(jiān)聽175 結(jié)論18參考文獻(xiàn)19附件:程序主要源代碼201 緒 論聊天是internet中廣泛應(yīng)用的服務(wù)之一,隨著網(wǎng)絡(luò)技術(shù)的
9、和軟件技術(shù)的不斷發(fā)展,而java是sun公司推出的新的一代面向?qū)ο蟪绦蛟O(shè)計(jì)語言,特別適合于internet應(yīng)用程序開發(fā)?;趈ava語言對網(wǎng)絡(luò)編程的支持為了更好地實(shí)現(xiàn)聊天系統(tǒng)的網(wǎng)絡(luò)傳輸功能,使客戶端和服務(wù)器能夠更好的通信,本系統(tǒng)的編寫采用了java語言。1.1 課程背景伴隨著網(wǎng)絡(luò)時(shí)代潮流的到來使得人與人之間又多了一種交流方法,那就是通過網(wǎng)絡(luò)實(shí)現(xiàn)跨區(qū)域的間接交流,但是網(wǎng)絡(luò)只是提供了硬件上的支持想通過網(wǎng)絡(luò)實(shí)現(xiàn)無地域局限性的交流還需要有軟件方面的支持,迫于市場的需求關(guān)系聊天系統(tǒng)誕生了,最早的聊天系統(tǒng)只是在unix環(huán)境上,使用talk指令建立用戶間純文字的在線交談,其所提供的功能僅能傳輸一般asc碼文
10、字而已。于是尋找更好的人與人之間通過網(wǎng)絡(luò)交流的方法就為編程人員提出了新的課題,大家為了尋找一種更好的聊天方法一時(shí)間聊天系統(tǒng)變成了一個(gè)大金礦,也為編程人員提出了新的要求同時(shí)也提供了一個(gè)新的舞臺。1.2 課題的研究工作此聊天系統(tǒng)是一個(gè)典型的網(wǎng)絡(luò)傳輸程序,同時(shí)還要連接數(shù)據(jù)庫。該程序分兩大部分來編寫,服務(wù)器端和客戶端。服務(wù)器端用來響應(yīng)客戶端所發(fā)出的請求,同時(shí)還要連接數(shù)據(jù)庫,對數(shù)據(jù)庫里的數(shù)據(jù)進(jìn)行增加和刪除??蛻舳擞脕斫邮沼脩舻恼埱?,然后做出相應(yīng)的操作,同時(shí)還要向服務(wù)器端發(fā)出申請,從而完成對數(shù)據(jù)庫的增加和刪除操作。其中網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)和多線程技術(shù)是此聊天系統(tǒng)的核心部分,而java提供的api函數(shù)中針對網(wǎng)絡(luò)編
11、程的socket類正是針對網(wǎng)絡(luò)編程的,java語言是一種支持多線程的語言,多線程在服務(wù)器端主要是要滿足支持多個(gè)用戶的同時(shí)登陸,在客戶端主要滿足一對多的同時(shí)聊天。2 需求分析2.1 系統(tǒng)的總體需求要制作的聊天系統(tǒng)是一個(gè)簡單、方便的通信系統(tǒng),為兩部分:服務(wù)器端和客戶端。此聊天系統(tǒng)要可以方便用戶之間進(jìn)行交流,信息即時(shí)發(fā)送,即時(shí)回復(fù)。2.1.1 服務(wù)器的需求實(shí)現(xiàn)服務(wù)器的監(jiān)控聊天內(nèi)容,服務(wù)器過濾非法內(nèi)容、發(fā)送通知、服務(wù)器踢人、保存服務(wù)器日志和用戶聊天信息等功能。2.1.2 客戶端的需求實(shí)現(xiàn)與聊天室成員一起聊天、與聊天室成員私聊、改變聊天室內(nèi)容風(fēng)格、用戶注冊(含頭像)、用戶登錄的等功能。2.2 系統(tǒng)的需求
12、分析任何聊天系統(tǒng)不外乎由服務(wù)器端和客戶端兩部分組成,本聊天系統(tǒng)也不例外也是由服務(wù)器端和客戶端組成,其中服務(wù)器端主要是完成對數(shù)據(jù)庫的操作、監(jiān)聽客戶端、和建立連接三個(gè)部分既可,客戶端則要完成用戶的新建、用戶的登陸、聊天功能,這樣就基本完成了系統(tǒng)功能模塊的劃分,其功能圖如圖2.1。聊天系統(tǒng)客戶端服務(wù)器聊天用戶注冊用戶登錄監(jiān)聽客戶操作數(shù)據(jù)庫建立連接2.1 系統(tǒng)的功能圖2.2.1 服務(wù)器的功能服務(wù)器信息管理:顯示當(dāng)前服務(wù)器狀態(tài)、在線人數(shù)、服務(wù)器名稱、服務(wù)器ip地址、保存服務(wù)器日志、服務(wù)器端口號和使用的通信協(xié)議等。用戶信息管理:顯示當(dāng)前在線用戶列表和用戶聊天信息、給在線用戶發(fā)送系統(tǒng)通知、從聊天服務(wù)器中踢出
13、不合法用戶等。2.2.2 客戶端的功能用戶注冊:通過提供基本信息注冊成為聊天系統(tǒng)的合法用戶,并判斷用戶輸入密碼與確認(rèn)密碼是否一致。用戶登錄:注冊用戶可以通過輸入用戶名和密碼登錄系統(tǒng)以便于其他用戶進(jìn)行聊天,并判斷用戶輸入密碼是否正確。收發(fā)信息功能:收發(fā)信息是本聊天系統(tǒng)的核心部分,也是本系統(tǒng)網(wǎng)絡(luò)傳輸?shù)捏w現(xiàn)所在。兩個(gè)客戶端可以通過http協(xié)議直接通信,找到你想要聊天的對象通過http協(xié)議給他(她)發(fā)送消息,同時(shí)也可以接受其發(fā)給你的消息。2.3 系統(tǒng)的應(yīng)用平臺java聊天室系統(tǒng)的開發(fā)環(huán)境為eclipse,它是一個(gè)開放源代碼的、基于java的可擴(kuò)展開發(fā)平臺,它只是一個(gè)框架和一組服務(wù),用于插件組件構(gòu)建開發(fā)
14、環(huán)境,其附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括java開發(fā)工具(java development tols,jdt)。該系統(tǒng)還需要安裝jdk1.4.0或以上版本的jdk在windows98或windows98以上操作系統(tǒng)的滿足內(nèi)存為128m以上計(jì)算機(jī)里運(yùn)行。系統(tǒng)中的數(shù)據(jù)可以用sql srver 2000數(shù)據(jù)庫。3 概要設(shè)計(jì)3.1 各模塊詳細(xì)功能3.1.1 服務(wù)器端結(jié)構(gòu)appserver啟動服務(wù)器監(jiān)聽serverframe服務(wù)器控制監(jiān)聽窗體connection處理所有用戶請求wordfilter聊天內(nèi)容過濾器3.1 服務(wù)器端的結(jié)構(gòu)圖appserver.java:為服務(wù)器端監(jiān)聽類,負(fù)責(zé)服務(wù)器的啟動,包括啟動
15、監(jiān)聽端口等。serverframe.java:為服務(wù)器端主窗體類,負(fù)責(zé)服務(wù)器監(jiān)聽服務(wù)器信息和客戶端用戶信息。 connection.java:為服務(wù)器端用戶信息類,負(fù)責(zé)處理所有用戶的請求。 wordfilter.java:為服務(wù)器端對用戶信息的監(jiān)聽類,負(fù)責(zé)對用戶聊天內(nèi)容的過濾。3.1.2 客戶端結(jié)構(gòu)login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時(shí)鐘窗體register用戶注冊窗體windowclose用戶窗體監(jiān)聽器3.2 客戶端的結(jié)構(gòu)圖chatroom.java:為客戶端程序啟動類,負(fù)責(zé)客戶端的啟動和退出。login.java:為客戶端程序登錄界面,
16、負(fù)責(zé)用戶賬號信息的驗(yàn)證與反饋。register.java:為客戶端程序注冊界面,負(fù)責(zé)用戶帳號信息的注冊驗(yàn)證與反饋。chatroom.java:為客戶端程序聊天室主界面,負(fù)責(zé)接收、發(fā)送聊天內(nèi)容與服務(wù)器端的connection.java親密合作。windowclose.java:為chatroom.java內(nèi)部類,負(fù)責(zé)監(jiān)聽聊天室用戶的操作。clock.java:為chatroom.java內(nèi)部類,負(fù)責(zé)監(jiān)聽聊天室用戶操作的時(shí)間。3.1.3 用戶注冊流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時(shí)鐘窗體register用戶注冊窗體windowclose用
17、戶窗體監(jiān)聽器register_customer注冊用戶數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務(wù)器監(jiān)聽serverframe服務(wù)器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器3.3 用戶注冊流程圖3.1.4 用戶登錄流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時(shí)鐘窗體register用戶注冊窗體windowclose用戶窗體監(jiān)聽器customer登錄用戶數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務(wù)器監(jiān)聽serverframe服務(wù)器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器3.4 用戶登
18、錄流程圖3.1.5 用戶聊天流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時(shí)鐘窗體windowclose用戶窗體監(jiān)聽器chat聊天數(shù)據(jù)類型connection處理所有用戶請求appserver啟動服務(wù)器監(jiān)聽serverframe服務(wù)器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器register用戶注冊窗體message聊天數(shù)據(jù)類型3.5 用戶聊天流程圖3.1.6 用戶退出流程login啟動客戶端chatclient用戶登錄窗體chatroom用戶聊天窗體clock時(shí)鐘窗體windowclose用戶窗體監(jiān)聽器connection處理所有用戶請求a
19、ppserver啟動服務(wù)器監(jiān)聽serverframe服務(wù)器控制監(jiān)聽窗體wordfilter聊天內(nèi)容過濾器register用戶注冊窗體exit退出用戶數(shù)據(jù)類型3.6 用戶退出流程圖3.2 各模塊的功能3.2.1 用戶注冊功能去數(shù)據(jù)庫讀數(shù)據(jù):首先創(chuàng)建一個(gè)file文件類,載入“user.txt”,再用對象輸入流objectinputstream包裝file文件類,將存儲在“user.txt”的向量對象vector中載入內(nèi)存中,現(xiàn)在系統(tǒng)中的向量就是對象型數(shù)據(jù)庫,存儲著每條用戶信息對象。驗(yàn)證用戶名是否存在:在對象數(shù)據(jù)庫中查找是否有與登錄用戶的用戶名相同的記錄,如果沒有繼續(xù)注冊,否則退出驗(yàn)證,返回“此用戶
20、不存在”的錯(cuò)誤。驗(yàn)證用戶輸入口令是否一致:驗(yàn)證用戶兩次輸入的口令是否一致,如果一致繼續(xù)注冊,否則退出驗(yàn)證,返回“密碼兩次輸入不一致,請重新輸入”的錯(cuò)誤。驗(yàn)證用戶年齡輸入是否合法:驗(yàn)證用戶輸入的年齡是否符合邏輯,如果符合就繼續(xù)注冊,否則退出驗(yàn)證處理,返回“年齡輸入不合法”的錯(cuò)誤。驗(yàn)證用戶年齡電子郵件輸入是否合法:驗(yàn)證用戶輸入的電子郵件是否含義“”字符,如果有就繼續(xù)注冊,否則退出驗(yàn)證處理,返回“電子郵件輸入不合法”的錯(cuò)誤。創(chuàng)建文件輸出流,再用對象輸出流包裝后寫入本地文件將其持久化。最后關(guān)閉對象輸出流和文件輸入流。給客戶端返回信息:將用戶注冊成功或失敗信息用打印流包裝socket以后,輸出給客戶端注
21、冊結(jié)果的詳細(xì)信息。關(guān)閉socket連接:當(dāng)以上程序正常運(yùn)行后,需要關(guān)閉socket連接,否則將會浪費(fèi)服務(wù)器與客戶端之間的資源。3.2.2 戶登錄功能去數(shù)據(jù)庫讀用戶數(shù)據(jù):打開用戶數(shù)據(jù)庫“user.txt”,將用戶數(shù)據(jù)對象集載入內(nèi)存,以供以下程序使用。驗(yàn)證用戶名是否存在:在對象數(shù)據(jù)庫中查找是否有與登錄用戶的用戶名相同的記錄,如果有繼續(xù)驗(yàn)證,否則退出驗(yàn)證處理,返回“沒有此用戶”的錯(cuò)誤。驗(yàn)證用戶密碼是否正確:如果有與登錄用戶的用戶名相同的記錄,接著判斷密碼是否正確,如果密碼正確,進(jìn)入聊天室,否則退出驗(yàn)證處理,返回“密碼不正確”的錯(cuò)誤。3.2.3 用戶退出功能接收退出信息:當(dāng)用戶退出時(shí),客戶端將會用基于
22、scoket的對象輸出流發(fā)給服務(wù)器退出對象。在線列表中刪除用戶:用戶退出后應(yīng)該把用戶從在線列表中刪除,否則用戶退出用戶還在在線列表中,那么該用戶下次將會無法登錄。更新在線列表:用戶退出后將從服務(wù)端監(jiān)控界面的用戶列表更新,否則用戶數(shù)據(jù)將會不同步。3.2.4 接收用戶聊天信息功能接收用戶聊天信息:當(dāng)用戶發(fā)送聊天信息時(shí),服務(wù)端將會收到客戶端用socket傳輸過來的聊天信息對象,然后將其強(qiáng)制轉(zhuǎn)換為chat對象。過濾用戶聊天內(nèi)容的非法信息:分析聊天信息對象的聊天內(nèi)容,用語言過濾類將非法字符過濾掉。語言過濾的時(shí)候?qū)蜷_“badword.txt”文件,不允許出現(xiàn)的關(guān)鍵詞將會存儲在文件中,關(guān)鍵字之間以逗號分
23、割。當(dāng)聊天內(nèi)容中出現(xiàn)要過濾的關(guān)鍵字時(shí),將會被系統(tǒng)屏蔽,而聊天內(nèi)容也將替換成“非法內(nèi)容,系統(tǒng)屏蔽”。添加到聊天信息列表:當(dāng)用戶想要保存聊天內(nèi)容時(shí),用戶保存的聊天信息將保存到“用戶名_message.txt”的文件類中。3.2.5 服務(wù)器踢人服務(wù)器將要踢的人的用戶名存到變量sframs.ti中,下發(fā)給客戶端。當(dāng)客戶端發(fā)現(xiàn)自己是被踢對象后就會自動退出聊天室并給服務(wù)器返回退出信息。3.2.6 服務(wù)器公告服務(wù)器將要下發(fā)的公告信息存到sframe.servermessage中,在聊天信息下發(fā)給客戶端時(shí),客戶端將對比公告是否更新,如果更新將顯示在用戶聊天信息中。4 詳細(xì)設(shè)計(jì)4.1 服務(wù)器啟動界面的設(shè)計(jì)4.1
24、.1 服務(wù)器登錄界面的分析聊天室系統(tǒng)的服務(wù)器應(yīng)用程序用于服務(wù)器端的啟動。服務(wù)器信息管理顯示服務(wù)器的狀態(tài)、名稱及ip,服務(wù)器端的端口號、服務(wù)器日志和聊天室在線用戶人數(shù)及其最多在線人數(shù),如下圖4.1所示。4.1 服務(wù)器信息管理用戶信息管理顯示在線用戶列表和用戶消息,如下圖4.2所示。4.2 用戶信息管理4.1.2 服務(wù)器信息的管理服務(wù)器將用戶的聊天和其他信息保存到log.txt文件中,如下圖4.3所示。4.3 服務(wù)器日志保存服務(wù)器日志保存的文件log.txt文件的顯示如下圖4.4所示。4.4 服務(wù)器日志文件4.1.3 服務(wù)器踢人服務(wù)器將要踢的人的用戶名選中后,選擇“踢人”后,被踢的對象自動退出聊天
25、室并給服務(wù)器返回信息。4.5 客戶端用戶退出聊天室4.6服務(wù)器返回信息4.1.4 服務(wù)器公告服務(wù)器在用戶信息管理界面內(nèi)發(fā)送系統(tǒng)公告,顯示在用戶聊天室的用戶信息中,如下圖4.7所示。4.7 客戶端聊天室用戶信息4.2 用戶登錄界面的設(shè)計(jì)4.2.1 聊天室的登錄界面的分析聊天室系統(tǒng)的登錄程序用于實(shí)現(xiàn)用戶登錄,程序通過login.java向已注冊用戶通過輸入用戶名和密碼在聊天服務(wù)器端進(jìn)行驗(yàn)證,登錄界面如下:4.8 用戶登錄界面 驗(yàn)證用戶密碼是否為空即用戶名和密碼的字符長度不為0,如果驗(yàn)證通過,就登陸進(jìn)入聊天室界面,否則返回“用戶名或密碼不能為空”的錯(cuò)誤,如下圖4.9所示。4.9 驗(yàn)證用
26、戶登陸用戶名和密碼是否為空4.10 驗(yàn)證用戶名是否被注冊 驗(yàn)證用戶是否被注冊即服務(wù)器端是否有該用戶的數(shù)據(jù)庫消息,如果驗(yàn)證通過,就登陸進(jìn)入聊天室界面,否則返回“沒有這個(gè)用戶,請先注冊”的錯(cuò)誤,如下圖4.10所示。 驗(yàn)證用戶密碼是否正確驗(yàn)證用戶密碼是否與服務(wù)器端的數(shù)據(jù)庫中的一致,如果驗(yàn)證通過,就登陸進(jìn)入聊天室界面,否則返回“用戶名或密碼不能為空”的錯(cuò)誤,如下圖4.11所示。4.11 驗(yàn)證用戶密碼是否正確4.2.2 聊天室用戶注冊界面分析程序?qū)⑼ㄟ^register.java用戶注冊界面收集用戶的用戶名、密碼、年齡、電子郵箱,如下圖4.12所示。4.12用戶注冊界面4.2.
27、2.1 驗(yàn)證用戶名是否重復(fù)驗(yàn)證用戶名是否被其他的用戶注冊過,保證用戶名不重復(fù),防止因?yàn)橛脩裘貜?fù)發(fā)生的錯(cuò)誤,如下圖4.13所示。4.13 驗(yàn)證用戶名是否重復(fù)4.14驗(yàn)證用戶注冊密碼是否為空 驗(yàn)證用戶密碼是否為空即密碼的字符長度不為0,如果驗(yàn)證通過,就進(jìn)行下面的驗(yàn)證,否則返回“用戶密碼為空”的錯(cuò)誤,如下圖4.14所示。 驗(yàn)證用戶密碼的一致性驗(yàn)證密碼兩次輸入是否一致,如果驗(yàn)證通過,就進(jìn)行下面的驗(yàn)證,否則返回“密碼兩次輸入不一致,請重復(fù)輸入”的錯(cuò)誤,如下圖4.15所示。4.15 驗(yàn)證用戶注冊密碼是否一致4.16驗(yàn)證用戶注冊年齡是否合法 驗(yàn)證用戶年齡的合法性驗(yàn)
28、證用戶輸入年齡是否合法,如果驗(yàn)證通過,就進(jìn)行下面的驗(yàn)證,否則返回“年齡輸入不合法”的錯(cuò)誤,如上圖4.16所示。 驗(yàn)證用戶電子郵箱的格式是否正確驗(yàn)證用戶電子郵箱字符串必須有“”,如果驗(yàn)證通過,就進(jìn)行下面的驗(yàn)證,否則返回“電子郵箱不合法”的錯(cuò)誤,如下圖4.17所示。4.17驗(yàn)證用戶注冊電子信箱是否合法4.18 用戶注冊成功 注冊成功用戶注冊通過所有的驗(yàn)證,返回“用戶名+注冊成功”的消息,如上圖4.18所示。4.3 用戶聊天室界面設(shè)計(jì)4.3.1 聊天室界面分析程序?qū)⑼ㄟ^chatroom.java用戶聊天室界面收集用戶的在線用戶列表、在線人數(shù)、聊天內(nèi)容等,如下圖4.19所示
29、。4.19 聊天室用戶daili的界面4.3.2 聊天室用戶聊天信息接收用戶的聊天信息是由多線程技術(shù)實(shí)現(xiàn)的,因?yàn)榭蛻舳吮仨殨r(shí)時(shí)關(guān)注更新服務(wù)器上是否有最新消息,在本程序中設(shè)定的是3秒刷新服務(wù)器一次,如果間隔時(shí)間太短將會增加客戶端與服務(wù)器端的通信負(fù)擔(dān),而間隔時(shí)間長就會讓人感覺沒有時(shí)效性,所以經(jīng)過權(quán)衡認(rèn)為3秒最佳,因?yàn)槊總€(gè)用戶都不可能在3秒內(nèi)連續(xù)發(fā)送信息。當(dāng)每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息人性化地顯示在聊天信息界面上,如上圖4.19所示。 聊天室的用戶私聊當(dāng)用戶想要和他的好友聊天,而不被其他的用戶看到其聊天的內(nèi)容,只需要雙擊該用戶的用戶名后,再把聊天室中
30、的“私聊”按鈕選中則,該用戶和其好友的聊天信息將不會出現(xiàn)在其他的用戶聊天界面的聊天信息中,如下圖中用戶wt與上圖4.3.1中用戶daili私聊時(shí)的聊天信息只在他們的聊天室界面中顯示,在其他用戶中該聊天內(nèi)容是不顯示的如下圖4.20所示。4.20 聊天室用戶wt的界面4.21 聊天室用dl的界面 聊天室的其他功能用戶在聊天的時(shí)候可以對聊天的內(nèi)容的字體及其顏色進(jìn)行設(shè)置,還可以選擇收聽聊天室里的音樂。這些功能使得聊天室更人性化。4.3.3 保存用戶消息當(dāng)用戶需要保存聊天記錄時(shí)可以直接點(diǎn)擊“保存”按鈕,為了防止多用戶聊天記錄文件沖突問題,聊天記錄將會以“用戶名_message
31、.txt”為文件名將信息保存在當(dāng)前應(yīng)用程序目錄下,如下圖4.22所示。4.22 聊天室用戶wt聊天信息的保存用戶聊天信息的保存文件“用戶名_message.txt”的顯示,如下圖4.23所示。4.23 聊天室用戶wt的聊天信息4.3.4 用戶非法信息的屏蔽程序?qū)⑼ㄟ^worldfiler.java對用戶聊天室聊天內(nèi)容進(jìn)行過濾,如果該用戶聊天信息為過濾內(nèi)容,將把該信息屏蔽,并將該屏蔽的內(nèi)容存入文件“bad.txt”文件中,如下圖4.24所示。4.24 聊天室聊天信息的非法屏蔽4.3.5 用戶聊天時(shí)間的監(jiān)聽程序?qū)⑼ㄟ^clock.java對用戶在線聊天進(jìn)行監(jiān)聽,如下圖4.25的時(shí)鐘界面所示。4.25
32、聊天室時(shí)鐘界面5 結(jié)論 本文討論了如何利用java技術(shù)開發(fā)聊天室系統(tǒng),基本滿足了結(jié)構(gòu)化,界面友好、速度快、安全性以及穩(wěn)定性等特點(diǎn)。系統(tǒng)著重研究并實(shí)現(xiàn)了網(wǎng)絡(luò)應(yīng)用的部分。根據(jù)實(shí)現(xiàn)的情況看,具有較好的聊天界面生成效果,以及流暢的網(wǎng)絡(luò)通信效果。生成的聊天室可以達(dá)到基本的聊天要求,具有較高的研究價(jià)值。系統(tǒng)具有目前聊天室的基本功能:包括支持多種頭像,字色,語氣選擇,支持emoto,支持私聊,支持在線聊友查找,支持分屏顯示,支持友好定制自己的私人頭像,支持臟話過濾,支持在線音樂的收聽,可以給所有的聊友發(fā)公共信息。具有速度快、高穩(wěn)定性,占用系統(tǒng)資源少,用戶界面友好等特點(diǎn)。通過這次的課程設(shè)計(jì),發(fā)現(xiàn)自己在理論研究
33、和實(shí)際工作能力等方面都得到了提高,受益匪淺。同時(shí)在老師的指導(dǎo)和課題組同學(xué)的共同幫助下,即使總結(jié)研究成果,這些無疑會對我今后的工作和學(xué)習(xí)帶來很大的幫助。參考文獻(xiàn)1 朱福喜,java語言程序設(shè)計(jì)(第二版),科學(xué)出版社,20012 陳國君等.,java程序設(shè)計(jì)基礎(chǔ)(第二版),清華大學(xué)出版社,20013 deitel.,java大學(xué)基礎(chǔ)教程(第六版),電子工業(yè)出版社,20104 marycampione,java語言導(dǎo)學(xué)(第四版),機(jī)械工業(yè)出版社,20015 y.daniel liang,java語言程序設(shè)計(jì)基礎(chǔ)篇(第六版),機(jī)械工業(yè)出版社,20066 kathy sierra,head first
34、java(第二版),東南大學(xué)出版社,20057 黃嘉輝, java網(wǎng)絡(luò)程序設(shè)計(jì), 清華大學(xué)出版社,20028 飛思科技產(chǎn)品研發(fā)中心, java靈感編程, 電子工業(yè)出版社,20029 李榮貴、鄧必孟等, java2.0網(wǎng)絡(luò)多線程實(shí)例教程,北京希望電子出版社,200110 林智揚(yáng)、范明翔、陳錦輝, 精通java swing程序設(shè)計(jì), 中國鐵道出版社,200211 何雄,jsp網(wǎng)絡(luò)程序設(shè)計(jì),人民郵電出版社。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項(xiàng)目設(shè)計(jì)與開發(fā)范例,電子工業(yè)出版社,200317 elliotte rusty harold ,java網(wǎng)絡(luò)編程,中國電力出版社,200518 郭立山游泳明,java函數(shù)使用手冊, 冶金工業(yè)出版社,200419 孫印杰劉斌孫玉強(qiáng),java編程案例精解, 電子工業(yè)出版社,200420 閃四清 , sql server使用簡明教程, 清華大學(xué)出版社,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() /構(gòu)造登陸窗體方法super(登錄聊天室);pnllogin = new jpanel();this.getcontentpane().add(pnllogin);lblserver = new jlabel(服務(wù)器(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(登錄到服務(wù)器);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);/組件的布局及其構(gòu)造方法 / 構(gòu)造方法結(jié)束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)建服務(wù)器 啟動服務(wù)監(jiān)聽1001端口sframe = new serverframe();try serversocket = new serversocket(1001);/ 獲取服務(wù)器的主機(jī)名和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, 不能啟動服務(wù)!);sframe.txtstatus.settext(已啟動.);this.start(); / 啟動線程public static void fail(exception e, string str) /退出服務(wù)器system.out.println(str + 。 + e);public void run() /監(jiān)聽客戶的請求,當(dāng)有用戶請求時(shí)創(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) /啟動服務(wù)器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 /設(shè)置服務(wù)器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)系上傳者。文件的所有權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)藥文化進(jìn)校園-中醫(yī)藥健康伴我行
- 斜面上靜摩擦問題課件
- 上下消化道出血鑒別
- 《血葡萄糖檢測》課件
- 河北省張家口市橋西區(qū)2024-2025學(xué)年九年級上學(xué)期期末 歷史試題(含答案)
- 2024年土地登記代理人題庫附完整答案【奪冠系列】
- 單位管理制度展示大全職工管理十篇
- Unit 1 語篇組合提升練
- 單位管理制度展示大合集員工管理篇
- 全球資產(chǎn)配置資金流向月報(bào)(2024年12月):強(qiáng)美元下12月資金流出非美市場流入美股
- GB/T 1819.2-2004錫精礦化學(xué)分析方法錫量的測定碘酸鉀滴定法
- GB/T 15605-2008粉塵爆炸泄壓指南
- 中國中樞神經(jīng)系統(tǒng)膠質(zhì)瘤診斷和治療指南
- 中考語文文學(xué)文本類閱讀復(fù)習(xí)專題課件:表現(xiàn)手法分析之襯托、對比與抑揚(yáng)
- 2023年海峽出版發(fā)行集團(tuán)有限責(zé)任公司招聘筆試題庫及答案解析
- 臺大公開課歐麗娟紅樓夢講義
- 【合同范本】補(bǔ)充協(xié)議-面積差補(bǔ)款-預(yù)售版
- 藝術(shù)(音樂、美術(shù))專業(yè)人才需求情況調(diào)研報(bào)告
- [QC成果]提高剪力墻施工質(zhì)量一次合格率
- 移印工作業(yè)指導(dǎo)書
- 樂高基礎(chǔ)篇樂高積木和搭建種類專題培訓(xùn)課件
評論
0/150
提交評論