聊天室系統(tǒng)web課程設(shè)計(jì)_第1頁(yè)
聊天室系統(tǒng)web課程設(shè)計(jì)_第2頁(yè)
聊天室系統(tǒng)web課程設(shè)計(jì)_第3頁(yè)
聊天室系統(tǒng)web課程設(shè)計(jì)_第4頁(yè)
聊天室系統(tǒng)web課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告20212021學(xué)年第二學(xué)期課程 WEB課程設(shè)計(jì)課程設(shè)計(jì)名稱聊天室學(xué)生姓名學(xué)號(hào)專業(yè)班級(jí)軟件效勞外包10級(jí)計(jì)本4班 指導(dǎo)教師2012年6月12日目錄課程設(shè)計(jì)任務(wù)書1目錄2第一章、緒 論3題目簡(jiǎn)要描述3 1.2團(tuán)隊(duì)分工安排3第二章、系統(tǒng)需求分析33系統(tǒng)功能3第三章、系統(tǒng)設(shè)計(jì)43.1邏輯以及物理結(jié)構(gòu)4系統(tǒng)的開發(fā)環(huán)境選擇5系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)5系統(tǒng)的界面設(shè)計(jì)6第四章、系統(tǒng)實(shí)現(xiàn)及測(cè)試84.1主要模塊的實(shí)現(xiàn)8系統(tǒng)實(shí)現(xiàn)過程中遇到的主要疑難問題和解決方案8系統(tǒng)實(shí)現(xiàn)的特色之處13系統(tǒng)的測(cè)試開展13第五章、總結(jié)13第六章、參考文獻(xiàn)14一、 緒論課程設(shè)計(jì)名稱:聊天室設(shè)計(jì)內(nèi)容:設(shè)計(jì)一

2、個(gè)在線聊天室,實(shí)現(xiàn)用戶之間實(shí)時(shí)地文字聊天。任務(wù)和要求系統(tǒng)內(nèi)用戶分為管理員和普通用戶兩類,普通用戶可以在線聊天,管理員負(fù)責(zé)維護(hù)聊天室和用戶。1系統(tǒng)功能和界面參考QQ聊天室。2提供注冊(cè)功能,系統(tǒng)的訪問者可以注冊(cè)成為普通用戶。3普通用戶登陸后首先顯示聊天大廳,在大廳中有多個(gè)聊天室,選擇其中一個(gè)進(jìn)入后可進(jìn)行聊天。4用戶在聊天室中可以看到本聊天室的其他用戶,可以對(duì)所有人發(fā)言,也可以只對(duì)某一個(gè)用戶發(fā)言。發(fā)言可以選擇公開和秘密兩種,如果公開那么所有人都能看到該發(fā)言內(nèi)容;如果是秘密,那么只有接受者才能看到。聊天室的發(fā)言面板采用滾屏方式實(shí)時(shí)顯示所有用戶的發(fā)言5用戶可以退出聊天室,到大廳后再選擇進(jìn)入其他聊天室,也

3、可以從大廳退出系統(tǒng)。6管理員登陸后可以維護(hù)聊天室和用戶。管理員可以增加、修改和刪除聊天室,可以刪除注冊(cè)的普通用戶。團(tuán)隊(duì)分工:1、 注冊(cè)、登錄局部選擇聊天室局部:黃彭2、 聊天發(fā)言局部:高文泉本人3、 管理員維護(hù)添加修改刪除局部:秦紅旭 二、 系統(tǒng)需求分析題目要求的是做一個(gè)聊天室軟件,能夠?qū)崿F(xiàn)多人同時(shí)在線聊天,客戶能夠登錄系統(tǒng)注冊(cè)并且選擇房間進(jìn)入房間,在相應(yīng)的房間類可以對(duì)其它人私聊或者公共聊天而管理員能夠?qū)ο嚓P(guān)房間進(jìn)行添加刪除修改的操作。依據(jù)題目,首要問題是如何實(shí)時(shí)進(jìn)行聊天并且分情況顯示。因此系統(tǒng)需要將用戶發(fā)的信息的內(nèi)容存入數(shù)據(jù)庫(kù)并對(duì)其進(jìn)行依據(jù)用戶名分情況依序顯示。為了實(shí)現(xiàn)這個(gè)目標(biāo),首先用戶發(fā)送

4、消息,系統(tǒng)將消息保存到數(shù)據(jù)庫(kù),根據(jù)用戶發(fā)言房間決定顯示房間,如果在這個(gè)房間,如果用戶選擇私聊那么分辨是不是對(duì)所有人說話,是那么對(duì)所有人顯示消息否那么只是對(duì)發(fā)送者和被發(fā)送者顯示,如果用戶選擇公開,那么將結(jié)果顯示給房間的所有人。流程圖如下:開始發(fā)送消息保存消息是否私聊? 否 是是否對(duì)所有人顯示信息到房間所有人 是 否顯示給特定人 聊天流程圖三、 系統(tǒng)設(shè)計(jì)3.1系統(tǒng)采用的邏輯以及物理結(jié)構(gòu)普通用戶進(jìn)入網(wǎng)頁(yè)進(jìn)行登錄或者注冊(cè),完成后選擇房間,進(jìn)入房間進(jìn)行聊天,用戶可以退出房間進(jìn)入房間選擇頁(yè)面,可以在房間選擇頁(yè)面選擇退出系統(tǒng)。管理員直接后臺(tái)登錄地房間、用戶進(jìn)行查詢、增加、修改、刪除等操作,從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新

5、。開始登錄/注冊(cè) 退出注冊(cè)登錄房間選擇 管理 房間2房間3房間1 整體流程圖 系統(tǒng)的開發(fā)環(huán)境選擇tomcat6.5+SQL server20053.3 系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì),各表展示以及表與表之間的E-R關(guān)系圖Chat數(shù)據(jù)庫(kù): 表匯總表名功能說明用戶信息表(userbiao)存放用戶信息房間表(room)存放房間相關(guān)信息聊天信息表(msgs)存放用戶聊天信息表1 用戶信息表 userbiao序號(hào)字段名類型是否為空是否主鍵描述1userIdint否是記錄標(biāo)志2userNamenvarchar是否用戶名稱3userpwdnvarchar否否用戶密碼45userxbroomidnvarcharint是是

6、否否性別房間號(hào)表2 房間信息表 room序號(hào)字段名類型是否為空是否主鍵描述1useridint否是記錄標(biāo)志2roomnamenvarchar是否房間名3roomnumberInt是否房間人數(shù)45roomfullnumberroomplaceIntnvarchar是是否否房間最大人數(shù)房間地區(qū)表3 聊天信息表 msgs序號(hào)字段名類型是否為空是否主鍵描述1NOint否是記錄標(biāo)志2usernamenvarchar是否發(fā)言者3whonvarchar是否發(fā)言對(duì)象4567kindmsgtimeroomidnvarcharnvarchartimeint是是是是否否否否發(fā)言形式發(fā)言信息發(fā)言時(shí)間發(fā)言房間位置用戶

7、1 0.1發(fā)送擁有 0.n 1 包含消息房間 0.m 1 E-R圖3.4 系統(tǒng)的界面設(shè)計(jì)方案一:用框架設(shè)置選擇 顯示 發(fā)送 顯示 方案設(shè)計(jì)1圖方案二:DIV 背景圖片 發(fā)送可移動(dòng)DIV可移動(dòng)DIV 方案設(shè)計(jì)2圖方案三:最終版本 顯示 用戶顯示 發(fā)送 方案設(shè)計(jì)3圖四、 系統(tǒng)實(shí)現(xiàn)及測(cè)試4.1主要模塊的實(shí)現(xiàn)本人承當(dāng)?shù)氖橇奶炀植康膶?shí)現(xiàn),所有內(nèi)容存放在2/文件夾內(nèi),組成,styles.css作為CSS布局。I 是作為和登陸界面后的房間選擇界面的一個(gè)接口,將用戶名和房間號(hào)存入session并且跳轉(zhuǎn)到框架中去。并且通過對(duì)數(shù)據(jù)庫(kù)操作,對(duì)數(shù)據(jù)庫(kù)room進(jìn)行更新。將房間內(nèi)人數(shù)加一"update room

8、 set roomnumber=roomnumber+1 where roomid='"+room+"'"當(dāng)其他文件需要使用session中的房間號(hào)和用戶名是需要使用以下語(yǔ)句:String username=(String)session.getAttribute("username");int room=Integer.parseInt(String)session.getAttribute("roomid");Ace.html是一個(gè)frame框架,將聊天室中的其它模塊整合在一起,其中包括top.jsp,c

9、hat1.jsp,chat2.jsp,Send.jsp,Save.jsp, 多個(gè)jsp文件 聊天界面top.jsp是頂部圖片以及房間名顯示,以及后臺(tái)音樂的播放,通過對(duì)數(shù)據(jù)庫(kù)的房間表的查詢,用id來查詢房間并將房間名顯示出來。 頂部界面C是作為公共聊天局部,只要是沒設(shè)為私聊的房間內(nèi)容都會(huì)在此顯示,為了讓數(shù)據(jù)庫(kù)中語(yǔ)句按順序?qū)⑶?0個(gè)房間內(nèi)對(duì)話顯示,本局部使用了select * from msgs where (kind='1' or who='所有人')and NO in(select top 60 NO from msgs where roomid='&q

10、uot;+room+"'order by time DESC)order by time的數(shù)據(jù)庫(kù)操作,先將數(shù)據(jù)庫(kù)中的信息所有和房間名匹配的60個(gè)信息選擇出來,再對(duì)其中kind種類,即代表發(fā)言人選擇的聊天類型 公開/私聊=1公開的或者是對(duì)所有人說的話的信息進(jìn)行選取,選取后處理結(jié)果對(duì)其中信息顯示通過 if(!(rs.getString("who").equals("所有人") ) out.print("對(duì)"+rs.getString("who")+"說:"); 語(yǔ)句來將對(duì)所有的的公

11、開信息中去掉對(duì)*這條信息。 公共聊天局部Chat0.jsp中對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢:select * from msgs where kind='0' and (userName='"+username+"')or(who='"+username+"') and NOT (who ='所有人') and NO in(select top 60 NO from msgs where roomid='"+room+"'order by time DESC)order

12、 by time先選取60個(gè)本房間的信息,再對(duì)其中不是對(duì)所有人并且用戶名是發(fā)言者或者用戶名是接受者的信息進(jìn)行選取。在對(duì)其中信息逐個(gè)顯示。用<meta -equiv="Refresh" content="2">來對(duì)其中頁(yè)面進(jìn)行自動(dòng)刷新從而更新顯示。 私聊局部發(fā)送局部將表單信息發(fā)送到Sava。Jsp進(jìn)行存儲(chǔ)。其中Send.jsp顯示用戶名、并在下拉列表顯示所有房間其他成員,能夠選擇公開或者私聊的單項(xiàng)選擇按鈕組,以及發(fā)言信息和發(fā)送按鈕、退出鏈接。發(fā)送信息局部存儲(chǔ)到數(shù)據(jù)庫(kù)之中,其中使用SQL語(yǔ)句Getdate()讀取當(dāng)前時(shí)間并存入數(shù)據(jù)庫(kù)。其中的數(shù)據(jù)庫(kù)

13、操作語(yǔ)句如下:"Insert into msgs ( userName,who,kind,msg,time,roomid ) values ('"+username+"','"+whom+"','"+kind+"','"+msg+"',Getdate(),'"+room+"')"Dante.jsp主要將房間中所有用戶進(jìn)行顯示,并且通過2/Luccifer.jsp的鏈接可以選擇是否查看房間內(nèi)所有用戶

14、的信息。Luccifer.jsp中顯示當(dāng)前房間所有用戶信息。 4.2系統(tǒng)實(shí)現(xiàn)過程中遇到的主要疑難問題和解決方案 開發(fā)過程中遇到三個(gè)問題:1、 如何將信息顯示給適合的用戶。需要對(duì)信息進(jìn)行區(qū)分,如果用戶符合條件那么將其中數(shù)據(jù)進(jìn)行輸出。不符合那么不輸出。2、 自動(dòng)刷新問題。程序需要能夠自動(dòng)刷新,但是如果使用全局刷新的話,會(huì)讓發(fā)送的時(shí)候被刷新打斷,所以只能對(duì)聊天內(nèi)容局部進(jìn)行刷新。3、如何對(duì)私聊公開局部的的區(qū)分。要將信息進(jìn)行處理,如果是對(duì)所有人的私聊應(yīng)該如何處理?以及私聊公開按鍵的種類。解決方案:方案一:聊天室1.0版,在2A.jsp中,對(duì)信息進(jìn)行處理,送到框架2B。jsp中,如果從2C.JSP中發(fā)送信

15、息,那么將信息傳送至2A,讓2A進(jìn)行判斷如果用戶名符合那么將信息鏈接起來msgs=msgs+并發(fā)送到2D中進(jìn)行顯示。結(jié)果:只能對(duì)字符。子母進(jìn)行傳送,無法對(duì)漢字進(jìn)行傳送,主要是由于漢字局部無法通過url進(jìn)行傳送。方案二:聊天室2.0版,改良1.0版,使用javabean全局變量,根據(jù)session中的用戶名選擇符合條件的信息,如果符合條件那么對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)并將其中數(shù)據(jù)在2D中進(jìn)行顯示。由于javabean是全局變量,所以只要發(fā)送信息,那么javabean就會(huì)在2A.jsp中改變并且在2D中進(jìn)行自動(dòng)刷新操作<meta -equiv="Refresh" content=&q

16、uot;2">,由于2D只是框架中的一局部,所以也算是局部刷新。這個(gè)聊天室已經(jīng)能夠?qū)崿F(xiàn)聊天發(fā)送漢字并且能夠自動(dòng)局部刷新,功能已經(jīng)能夠滿足,而私聊公共也開始參加了。但是通過分析發(fā)現(xiàn),這個(gè)聊天室雖然大體符合可是實(shí)際上如果多人聊天msgs這個(gè)javabean全局變量無法 從一個(gè)人的瀏覽器中傳送到另一個(gè)人的瀏覽器中,所以2.0版本作廢,啟動(dòng)新版本!方案三:聊天室3.0版本,這是第一個(gè)能夠?qū)崿F(xiàn)所有功能的聊天室,他是對(duì)2.0的完全革新,絕對(duì)的新版,后來的版本從功能上都是以此為根底的。而最后的5.0版本也主要是通過對(duì)3.0版本的改良升級(jí)從而實(shí)現(xiàn)的,所以這是最重要的一個(gè)版本。在這一版本中我吸取

17、了前面的教訓(xùn),要真正的實(shí)現(xiàn)功能必須使用存儲(chǔ)信息的的數(shù)據(jù)庫(kù),為此在這一版本中,我將包含發(fā)言者接受者,信息類型,發(fā)言內(nèi)容這些信息存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中。并在Mars當(dāng)中讀取數(shù)據(jù)庫(kù)信息,如果公開那么直接顯示,如果不是那么檢查用戶名,決定是否顯示。在Dante.jsp中還有退出按鍵從而到達(dá)能夠退出的效果。Mars.jsp中能夠進(jìn)行自動(dòng)刷新。戰(zhàn)神!這是一部偉大的作品!驚天地,泣鬼神!自盤古開天以來,前無古人后無來者!茫茫洪荒,誰(shuí)與爭(zhēng)鋒?聊天室4.0版是本人奮斗幾天卻最終失敗的作品,其中運(yùn)用了大量未學(xué)到的知識(shí),通過大量百度從而知道,其中顯示頁(yè)面的jsp文件就長(zhǎng)達(dá)8kb。4.0中以3.0為根底主要對(duì)顯示頁(yè)面進(jìn)行大

18、幅度更改。為了能夠?qū)δ苓M(jìn)行升級(jí),本人特地研究了QQ聊天室,更具對(duì)QQ聊天室的具體分析,從而絕定創(chuàng)造這款劃時(shí)代的作品,雖然最后因?yàn)榧夹g(shù)問題失敗告終。本版的改變:1:使用兩個(gè)div來顯示相應(yīng)的聊天,比方私聊在下面的div,公共的在上面的div;2:通過js對(duì)div進(jìn)行局部自動(dòng)刷新。3:div可以手動(dòng)移動(dòng);4:div增加退出按鍵;5:div增加滾動(dòng)條;6:div滾動(dòng)條設(shè)置開始自動(dòng)滾動(dòng)至最低端;7:通過聊天私聊按鍵能夠改變div是否顯示并且能夠決定聊天方式;失敗原因:由于為了能夠?qū)崿F(xiàn)局部刷新和通過按鍵改變div的開關(guān)狀態(tài)而且不能讓全局刷新有背景圖片是全局刷新影響顯示效果。所以,要用js對(duì)DIV進(jìn)行刷

19、新。而其中必須要對(duì)數(shù)據(jù)改變,這就需要在js中對(duì)變量操作,而通過幾天查資料結(jié)果顯示這樣并不可能,雖然個(gè)人通過努力能夠通過js獲得變量但是卻是無法通過js改變變量。這個(gè)最后的一個(gè)問題導(dǎo)致了全局的失敗!藍(lán)色的淚由于4.0的失敗,所以只能在3.0根底上改良,從而開發(fā)此版本,由于在這一版本中改良了很多3.0的缺點(diǎn),能夠完全實(shí)現(xiàn)多人聊天并且能夠?qū)崿F(xiàn)聊天,這一版本中將聊天公開局部和私人聊天局部分隔開,并且當(dāng)是對(duì)所有人的發(fā)言那么將其劃分為公共聊天,從而實(shí)現(xiàn)了實(shí)際效果。而刷新局部依舊,只是在frame框架中的局部jsp中全局刷新。4.3系統(tǒng)實(shí)現(xiàn)的特色之處 一:能夠?qū)崿F(xiàn)多人聊天并且能夠隱藏私聊的內(nèi)容,可以退出聊天室。 二:可以顯示所有用戶,可以及時(shí)看到房間的用戶; 三:具有背景音樂,可以享受音樂; 四:使用session、全局刷新、frame框架、數(shù)據(jù)庫(kù)操作、js、jsp、html、ja

溫馨提示

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

評(píng)論

0/150

提交評(píng)論