《Java課程設(shè)計(jì)》需求分析文檔要求_第1頁
《Java課程設(shè)計(jì)》需求分析文檔要求_第2頁
《Java課程設(shè)計(jì)》需求分析文檔要求_第3頁
《Java課程設(shè)計(jì)》需求分析文檔要求_第4頁
《Java課程設(shè)計(jì)》需求分析文檔要求_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄1. 選題背景12. 開發(fā)技術(shù)概述13. 功能需求分析14. 功能設(shè)計(jì)24.1 登錄界面功能表24.2 注冊(cè)界面功能表34.3 聊天界面功能表44.4 文件功能表55. 系統(tǒng)流程分析55.1 系統(tǒng)總體設(shè)計(jì)流程圖55.2 詳細(xì)設(shè)計(jì)流程圖66. 界面設(shè)計(jì)96.1 登錄界面96.2 注冊(cè)界面96.3 聊天界面107. 系統(tǒng)測(cè)試118. 關(guān)鍵代碼說明13小結(jié)16參考文獻(xiàn)171. 選題背景在網(wǎng)絡(luò)越來越發(fā)達(dá)的今天,人們對(duì)網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),由此而產(chǎn)生的聊天工具越來越多.目前國內(nèi)外做即時(shí)通訊軟件的公司很多,產(chǎn)品也琳瑯滿目,國內(nèi)有諸如騰訊QQ、新浪UC、網(wǎng)易泡泡、淘寶旺旺等,國外有著名的

2、MSN(新版改名為LiveMessenger)以及跨平臺(tái)的米聊等。QQ是國內(nèi)即時(shí)通訊軟件市場(chǎng)上無可爭(zhēng)議的“老大”,您使用QQ可以與好友交流,信息及時(shí)發(fā)送,及時(shí)回復(fù),收發(fā)及時(shí)功能全面。QQ與國外最大的即時(shí)通訊軟件MSN功能強(qiáng)大,但它們唯一不足的地方就是必須要聯(lián)網(wǎng)或者下載到它們的服務(wù)端,否則無法脫離Internet使用。本聊天系統(tǒng),是可以在局域網(wǎng)聊天的一個(gè)工具。無需聯(lián)網(wǎng),即可進(jìn)行群聊。所以也存在局限性,只有在同一局域網(wǎng)內(nèi)的用戶才能聊天交流,除此之外,該系統(tǒng)未設(shè)置私聊功能。2. 開發(fā)技術(shù)概述 本系統(tǒng)采用java技術(shù)開發(fā),使用文件保存數(shù)據(jù),集成開發(fā)環(huán)境使用eclipse。開發(fā)者應(yīng)有java程序設(shè)計(jì)語言

3、、SWING基本GUI組件、多線程、文件使用、socket編程、使用eclipse的基本知識(shí)和技能。系統(tǒng)采用兩層c/s體系結(jié)構(gòu),c端負(fù)責(zé)通過GUI與客戶交互,實(shí)現(xiàn)注冊(cè)、登錄、收發(fā)信息、退出等功能;c端和s端是通過網(wǎng)絡(luò)交互的。 首先服務(wù)器啟動(dòng),建立一個(gè)專門用于接收客戶端請(qǐng)求的”傾聽Socket”,然后等待客戶的連接請(qǐng)求。當(dāng)客戶想聊天時(shí),從界面輸入信息,然后與服務(wù)器建立Socket連接,服務(wù)器端的“傾聽Socket”收到連接請(qǐng)求后,一般會(huì)接收連接請(qǐng)求,并生成一個(gè)服務(wù)器端socket,專門負(fù)責(zé)與此客戶端socket的通信。一旦連接請(qǐng)求成功,通過I/O流來實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。用多線程來實(shí)現(xiàn)多人聊天功能

4、。3. 功能需求分析使得第一次使用的用戶可以通過填寫個(gè)人信息來注冊(cè),已注冊(cè)用戶可以在驗(yàn)證他的登錄信息后登錄,允許在線用戶查看其他在線用戶的列表,允許用戶在公共聊天室中聊天??蛻舳撕陀脩舳说男枨笕缦拢?a.客戶端 (1)用戶注冊(cè)界面及結(jié)果 (2)用戶登錄界面及結(jié)果 (3)用戶發(fā)送信息及結(jié)果 (4)用戶得到信息及結(jié)果 (5)用戶退出界面及結(jié)果 b.服務(wù)器端 (1)處理用戶注冊(cè) (2)處理用戶登錄 (3)處理用戶發(fā)送信息 (4)處理用戶退出 (5)保存服務(wù)器日志 (6)保存用戶聊天信息4. 功能設(shè)計(jì)4.1 登錄界面功能表 表4-1登錄功能表序號(hào)功能內(nèi)容控件對(duì)象名備注1.用戶名輸入框JTextFiel

5、dtextfield2.密碼輸入框JPasswordField password3.登錄JButtonb14. 取消 JButtonb25.注冊(cè)JButtonb36.存放組件的容器JPanelP1存放b1 b2 b37.盒式容器Box baseBox存box1 box28.盒式容器Box box1 box29.標(biāo)簽JLabel標(biāo)記用戶名 密碼4.2 注冊(cè)界面功能表表4-2注冊(cè)功能表序號(hào)功能內(nèi)容控件對(duì)象名備注1.用戶名輸入框TextFieldtextfield12.密碼輸入框TextFieldPw13.確認(rèn)密碼輸入框TextField Pw24.年齡輸入框TextFieldtextfield25

6、.復(fù)選框 男JCheckBoxC1選定6.復(fù)選框 女JCheckBoxC27.注冊(cè)按鈕JButtonbsubmit8.取消按鈕JButtonbcancel9.存放組件的容器JPanelP1存放信息10.存放組件的容器JPanelP2存放兩個(gè)提交 取消按鈕11.存放組件的容器JPanelP3存放性別選項(xiàng)4.3 聊天界面功能表表4-3聊天功能表序號(hào)功能內(nèi)容控件對(duì)象名備注12.聊天內(nèi)容顯示框TextAreatextareaMessage13.用戶列表顯示框TextAreatextareaList14.發(fā)送內(nèi)容輸入框TextFieldtextfield15.用戶列表標(biāo)簽JLabel userlist1

7、6.聊天室標(biāo)簽JLabelchatroom17.退出按鈕JButtonbuttonout18.發(fā)送按鈕JButtonbuttonsent19.存放組件的容器JPanel panelout存放退出按鈕20.存放組件的容器JPanelp21.顯示指定組件內(nèi)容JScrollPanemessagepaneltextareaMessage22.顯示指定組件內(nèi)容JScrollPanelistpaneltextareaList23.顯示指定組件內(nèi)容JScrollPanesendpaneltextfield24.格式布局GridBagLayout()25.GridBagLayout 類布置的組件的約束Grid

8、BagConstraintsbgc4.4 文件功能表表4-4文件功能表序號(hào)功能內(nèi)容控件對(duì)象名備注1.指定流里面讀取對(duì)象ObjectInputStreambr2.從流里讀取內(nèi)容getInputStream3.文件寫PrintWriter pw4.讀對(duì)象readObject5.客戶端套接字SocketfromClient建立連接6.服務(wù)器端套接字ServerSocketserver建立連接5. 系統(tǒng)流程分析 5.1 系統(tǒng)總體設(shè)計(jì)流程圖 聊天應(yīng)用程序包括登錄界面和注冊(cè)界面,當(dāng)啟動(dòng)登錄界面,用戶填寫信息后登錄,登錄的信息將反饋給聊天服務(wù)器,服務(wù)器驗(yàn)證用戶信息,若驗(yàn)證成功則跳到聊天界面,否則,服務(wù)器反饋

9、給登錄界面拒絕登錄消息。啟動(dòng)注冊(cè)界面,用戶在界面填寫注冊(cè)信息,注冊(cè)信息反饋給服務(wù)器,服務(wù)器要驗(yàn)證用戶信息,驗(yàn)證成功,跳到登錄界面,否則,服務(wù)器反饋給注冊(cè)界面,顯示錯(cuò)誤消息。 圖 5-1系統(tǒng)總體流程圖5.2 詳細(xì)設(shè)計(jì)流程圖 1. 服務(wù)器結(jié)構(gòu) 服務(wù)器端,處理用戶的請(qǐng)求,當(dāng)收到“來自定時(shí)器”消息時(shí),服務(wù)器給客戶反饋,客戶端在聊天界面更新消息和在線用戶信息;服務(wù)器收到“登錄信息”請(qǐng)求時(shí),驗(yàn)證登錄信息,驗(yàn)證成功則更新聊天界面里的消息和在線用戶信息,否則給客戶端反饋“用戶不存在”消息;當(dāng)服務(wù)器端接收到“注冊(cè)消息”請(qǐng)求時(shí),服務(wù)器驗(yàn)證注冊(cè)信息,若驗(yàn)證成功,將注冊(cè)信息寫入文件保存,并反饋給客戶端“注冊(cè)成功”信息

10、,跳到登錄界面,否則在注冊(cè)界面給客戶端反饋“用戶已經(jīng)存在”消息。圖5-2服務(wù)器結(jié)構(gòu)流程圖2. 客戶端結(jié)構(gòu) 登錄界面,將登錄消息發(fā)送給聊天服務(wù)器,聊天服務(wù)器驗(yàn)證登錄消息,如果驗(yàn)證成功將“歡迎”消息發(fā)送給登錄界面,登錄界面向用戶顯示聊天界面;如果驗(yàn)證不成功,則將拒絕消息發(fā)送給登錄界面,登錄界面顯示錯(cuò)誤對(duì)話框。注冊(cè)界面,同登錄界面。 圖5-3登錄界面流程圖 聊天界面,服務(wù)器接收“來自定時(shí)器”的消息,隨時(shí)更新消息和在線用戶信息,若用戶在聊天界面中單擊“發(fā)送”按鈕,服務(wù)器接收用戶“發(fā)送”請(qǐng)求,服務(wù)器將用戶的發(fā)送信息保存,向聊天界面,若用戶退出,服務(wù)器收到用戶“用戶退出”請(qǐng)求,將在線列表中刪除用戶,并更新

11、聊天界面里的消息和在線用戶信息。圖5-4聊天界面流程圖6. 界面設(shè)計(jì)6.1 登錄界面 運(yùn)行Login.java程序會(huì)出現(xiàn)如下界面。圖6-1登錄界面6.2 注冊(cè)界面運(yùn)行Resigter.java可出現(xiàn)如下界面,注冊(cè)信息時(shí),用戶名不能為中文,程序采用了RandomAccessFile來隨機(jī)讀取文件,為單獨(dú)設(shè)置類來處理中文字符,用戶若注冊(cè)用戶名信息含有中文將無法讀取,盡管注冊(cè)成功,登錄時(shí)將報(bào)錯(cuò):用戶名或密碼錯(cuò)誤。圖6-2注冊(cè)界面6.3 聊天界面 用戶先注冊(cè),在登錄,登錄成功可以出現(xiàn)如下界面。圖6-3聊天界面7. 系統(tǒng)測(cè)試 用戶xiaowang和wang注冊(cè)后登錄聊天室,xiaowang在聊天室里發(fā)送

12、消息:你好;wang發(fā)送消息:好。兩個(gè)用戶都能看到彼此所發(fā)的信息。 圖7-1系統(tǒng)測(cè)試圖7-2系統(tǒng)測(cè)試8. 關(guān)鍵代碼說明表8-1關(guān)鍵代碼表序號(hào)事件內(nèi)容事件名對(duì)象名1登錄JButtonb12注冊(cè)JButtonb23聊天JButtonb34發(fā)送JButtonbuttonsentpublic Connect(Socket inFromClient) / 建立一個(gè)用戶/vcList = new Vector();String msg = ;String mesg = ;try / 服務(wù)器端先讀再寫streamFromClient = new BufferedReader(new InputStreamR

13、eader(inFromClient.getInputStream();/System.out.println(客戶端連接成功);streamtoClient = new ObjectOutputStream(inFromClient.getOutputStream();/System.out.println(服務(wù)器反饋信息給用戶);msg = streamFromClient.readLine();System.out.println(從客戶獲得的信息為: + msg);if (msg.equals(來自定時(shí)器) streamtoClient.writeObject(vector);/ 將指

14、定的對(duì)象寫入 / ObjectOutputStreamstreamtoClient.writeObject(vcList);else if (msg.equals(登錄消息) msg = streamFromClient.readLine();System.out.println(客戶信息為: + msg);int ver = verify(msg);System.out.println(驗(yàn)證消息為: + ver);if (ver = 1) String colon = new String(:);int index = msg.lastIndexOf(colon);String userna

15、me = msg.substring(0, index);System.out.println(usernaem-+username);if (!(vcList.indexOf(username) = 0) / 如果用戶列表中不存在該用戶則在列表中添加該用戶streamtoClient.writeObject(歡迎);/ addElement將指定的組件添加到此向量的末尾,將其大小增加/ 1。如果向量的大小比容量大,則增大其容量。vcList.addElement(String)username);System.out.println(用戶列表人數(shù)為:+vcList.size(); else

16、/已經(jīng)登錄了streamtoClient.writeObject(歡迎);/System.out.println(用戶列表人數(shù)為:+vcList.size();streamtoClient.writeObject(拒絕登錄);/ 給客戶端反饋信息 else streamtoClient.writeObject(該用戶不存在);else if (msg.equals(注冊(cè)消息) msg = streamFromClient.readLine();System.out.println(從客戶端接收的信息為: + msg);int ret = checkFile(msg);System.out.pr

17、intln(用戶存在為0 + ret);if (ret = 0) streamtoClient.writeObject(用戶已經(jīng)存在);if (ret = 1) / 創(chuàng)建在文件中寫入的文件流System.out.println( 在文件中寫入信息);FileOutputStream out = new FileOutputStream(UsrPwd.txt,true);PrintStream p = new PrintStream(out);p.println();p.println(msg);p.close();streamtoClient.writeObject(注冊(cè)成功);System.

18、out.println( 注冊(cè)成功);else if (msg.equals(用戶退出) System.out.println( 用戶退出);String remuser = streamFromClient.readLine();/boolean b = vcList.removeElement(remuser);/移除退出用戶vcList.removeElement(remuser);else /發(fā)送信息message = message + msg;System.out.println(message: + message);vector.addElement(message);/向聊天

19、列表中添加用戶發(fā)送的聊天信息streamtoClient.writeObject(vector);/反饋給用戶現(xiàn)在的 向量集合catch (Exception e1) e1.printStackTrace();System.out.println(無法獲取客戶端的流對(duì)象 + e1);/ try.catch結(jié)束finally try inFromClient.close(); catch (IOException e2) e2.printStackTrace();System.out.println(發(fā)生異常 + e2); 小結(jié) 本次系統(tǒng)設(shè)計(jì)總結(jié),我將對(duì)我在做這次系統(tǒng)設(shè)計(jì)中遇到過的問題以及新學(xué)的

20、內(nèi)容進(jìn)行總結(jié)。本系統(tǒng)的登錄界面,我采用了Box容器來排版界面格式,注冊(cè)界面與聊天界面采用了GirdBagLayout()布局格式,來排版界面。用Vector類來實(shí)現(xiàn)添加、刪除用戶的操作,Vector 類可以實(shí)現(xiàn)可增長的對(duì)象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進(jìn)行訪問的組件。但是,Vector 的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector 后進(jìn)行添加或移除項(xiàng)的操作。用RandomAccessFile來實(shí)現(xiàn)文件內(nèi)容的讀取,RandomAccessFile創(chuàng)建從中讀取和向其中寫入的隨機(jī)訪問文件流,類里面有g(shù)etFilePointer方法來返回文件中的當(dāng)前偏移量,到此文件開頭的偏移量,在該位置發(fā)生下一個(gè)讀取或?qū)懭氩僮?。采用objectOutpu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論