簡單QQ聊天系統(tǒng)_第1頁
簡單QQ聊天系統(tǒng)_第2頁
簡單QQ聊天系統(tǒng)_第3頁
簡單QQ聊天系統(tǒng)_第4頁
簡單QQ聊天系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢工程大學(xué) 計算機科學(xué)與工程學(xué)院國家卓越工程師計劃校企合作綜合設(shè)計報告設(shè)計名稱: 軟件工程綜合設(shè)計 設(shè)計題目: 簡單QQ聊天系統(tǒng) 學(xué)生學(xué)號: 專業(yè)班級: 學(xué)生姓名: 學(xué)生成績: 指導(dǎo)教師(職稱): 企業(yè)指導(dǎo)教師: 課題工作時間:2013年6月24日 至 2013年7月5日說明:1、報告中的第一、二、三項由指導(dǎo)教師在綜合設(shè)計開始前填寫并發(fā)給每個學(xué)生;四、五兩項(中英文摘要)由學(xué)生在完成綜合設(shè)計后填寫。2、學(xué)生成績由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計情況給出各項分值及總評成績。3、指導(dǎo)教師評語一欄由指導(dǎo)教師就學(xué)生在整個設(shè)計期間的平時表現(xiàn)、設(shè)計完成情況、報告的質(zhì)量及答辯情況,給出客觀、全面的評價。4、所有學(xué)生

2、必須參加綜合設(shè)計的答辯環(huán)節(jié),凡不參加答辯者,其成績一律按不及格處理。答辯小組成員應(yīng)由2人及以上教師組成。5、報告正文字?jǐn)?shù)一般應(yīng)不少于5000字,也可由指導(dǎo)教師根據(jù)本門綜合設(shè)計的情況另行規(guī)定。6、平時表現(xiàn)成績低于6分的學(xué)生,取消答辯資格,其本項綜合設(shè)計成績按不及格處理。7、此表格式為武漢工程大學(xué)計算機科學(xué)與工程學(xué)院提供的基本格式(適用于學(xué)院各類綜合設(shè)計),各教研室可根據(jù)本門綜合設(shè)計的特點及內(nèi)容做適當(dāng)?shù)恼{(diào)整,并上報學(xué)院批準(zhǔn)。成績評定表學(xué)生姓名: 學(xué)號: 班級: 類別合計分值各項分值評分標(biāo)準(zhǔn)實際得分合計得分備注平時表現(xiàn)1010按時參加綜合設(shè)計,無曠課、遲到、早退、違反實驗室紀(jì)律等情況。由設(shè)計負(fù)責(zé)人給

3、出完成情況3020按設(shè)計任務(wù)書的要求完成了全部任務(wù),能完整演示其設(shè)計內(nèi)容,符合要求。10能對其設(shè)計內(nèi)容進行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問題進行正確的回答。報告質(zhì)量3510報告文字通順,內(nèi)容翔實,論述充分、完整,立論正確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報告字?jǐn)?shù)符合相關(guān)要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計方案合理、可行,論證嚴(yán)謹(jǐn),邏輯性強,具有說服力。5符號統(tǒng)一;圖表完備、符合規(guī)范要求。5能對整個設(shè)計過程進行全面的總結(jié),得出有價值的結(jié)論或結(jié)果。5參考文獻數(shù)量在3篇以上,格式符合要求,在正文中正確引用。答辯情況2510在規(guī)定時間內(nèi)能就所設(shè)計的內(nèi)容進行闡述,言簡意明,重點突出,

4、論點正確,條理清晰。15在規(guī)定時間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題??傇u成績: 分 補充說明: 指導(dǎo)教師: (簽字)日 期: 年 月 日答辯記錄表學(xué)生姓名: 學(xué)號: 班級: 答辯地點: 答辯內(nèi)容記錄:答辯成績合計分值各項分值評分標(biāo)準(zhǔn)實際得分合計得分備注2510在規(guī)定時間內(nèi)能就所設(shè)計的內(nèi)容進行闡述,言簡意明,重點突出,論點正確,條理清晰。15在規(guī)定時間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題。答辯小組成員(簽字): 年 月 日指導(dǎo)教師評語指導(dǎo)教師: (簽字)日 期: 年 月 日一、綜合設(shè)計目的、條件、任務(wù)和內(nèi)容要求:綜合設(shè)計的目的是:讓同學(xué)們應(yīng)用所學(xué)相應(yīng)的專業(yè)課程如面向?qū)ο蠓椒▽W(xué)、操

5、所系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、java高級程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計等課程的知識,進行全面綜合的應(yīng)用,特別是要運用所學(xué)的面向?qū)ο蠓椒▽W(xué)的知識,學(xué)會使用面向?qū)ο蟮乃季S方式進行全局的看待軟件的設(shè)計過程、掌握面向?qū)ο蠓椒▽W(xué)課程所學(xué)知識,進行全面綜合的應(yīng)用,在軟件實現(xiàn)之前先進行面向?qū)ο蟮姆治?、設(shè)計、實現(xiàn)、測試等過程。綜合設(shè)計的條件:該綜合設(shè)計的條件是要求其先導(dǎo)課程面向?qū)ο蠓椒▽W(xué)、操所系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、java高級程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計等課程已經(jīng)學(xué)習(xí)。分組實現(xiàn),2-3人一組。本次綜合設(shè)計特點是校企合作,聘請企業(yè)教師來校講課。綜合設(shè)計的任務(wù):模仿騰訊QQ的系統(tǒng),要求同學(xué)們分組實現(xiàn)QQ聊天系統(tǒng)。綜合設(shè)計的內(nèi)容:1、使

6、用面向?qū)ο蟮姆椒▽Q聊天系統(tǒng)進行原型需求分析。2、對QQ聊天系統(tǒng)進行面向?qū)ο蟮脑O(shè)計。3、使用面向?qū)ο蟮恼Z言實現(xiàn)聊天系統(tǒng)。4、對自己設(shè)計的軟件系統(tǒng)進行測試。5、根據(jù)上面所做的事情撰寫綜合設(shè)計報告 指導(dǎo)教師簽字: 2013 年 6 月 24 日二、進度安排:6月24 6月26日 使用面向?qū)ο蟮姆椒▽Q聊天系統(tǒng)進行原型需求分析。6月27-6月28日 對QQ聊天系統(tǒng)進行面向?qū)ο蟮脑O(shè)計6月28-7月3日 使用面向?qū)ο蟮恼Z言實現(xiàn)聊天系統(tǒng)6月28-7月4日 系統(tǒng)測試7月5日 答辯6月24 -7月4日 撰寫綜合設(shè)計報告三、應(yīng)收集資料及主要參考文獻:1 Rogers Cadenhead Java從入門到精通

7、.北京:人民郵電出版社. 2007年3月2 Paul Hyde Java線程編程.北京:人民郵電出版社. 2003年11月3 李鐘蔚Java 開發(fā)實戰(zhàn)寶典.北京:清華大學(xué)出版社.2009年6月4 殷兆麟.Java網(wǎng)絡(luò)編程基礎(chǔ)M.北京:清華大學(xué)出版社,2004年5月四、綜合設(shè)計摘要(中文):本次課程設(shè)計實現(xiàn)類似于騰訊QQ的簡單聊天系統(tǒng),目的是為了方便局域網(wǎng)里的通信,給辦公或者學(xué)習(xí)帶來方便。系統(tǒng)的設(shè)計與實現(xiàn),主要的依據(jù)是面向?qū)ο蟮木幊趟枷牒蚃ava網(wǎng)絡(luò)編程。首先根據(jù)面向?qū)ο蟮乃枷?,抽象出系統(tǒng)的主要參與者與系統(tǒng)邊界,做出系統(tǒng)的用例,然后確定系統(tǒng)的對象,屬性與方法;再利用Java的socke

8、t網(wǎng)絡(luò)編程技術(shù),實現(xiàn)各個對象之間信息的交互,由于本系統(tǒng)采用的是C/S架構(gòu),所以主要的信息交互在客戶端與服務(wù)器端進行。在系統(tǒng)的實現(xiàn)過程中采用的方法與技術(shù)有socket網(wǎng)絡(luò)編程,Java的IO操作,多線程等。系統(tǒng)考慮到存儲的信息量并不是很大,所以采用文件方式進行系統(tǒng)相關(guān)信息的存儲。當(dāng)然,還有利用配置文件的技術(shù)保存一些重要的信息,方便系統(tǒng)的實現(xiàn)。在界面設(shè)計部分,主要采用的是Java的Swing技術(shù)。系統(tǒng)的主要功能有用戶注冊與登錄,用戶管理,服務(wù)器管理,添加、刪除好友,與好友進行聊天或者群聊等。本系統(tǒng)經(jīng)過不斷測試與調(diào)試,最終完成了預(yù)期功能,滿足了用戶需求。關(guān)鍵詞:面向?qū)ο?;Java;Socket;C/

9、S;Swing五、綜合設(shè)計Abstract(英文):The integrate design is to achieve a simple system which is similar Tencent QQ. The main purpose of the system is facilitate LAN communication, which is to the office or to learn convenience. System design and implementation are based on the main ideas of object-oriented pr

10、ogramming and Java network programming. First, according to object-oriented thinking, abstract systems and a major player in the system boundary, making the system use cases, and then determine the system's objects, properties, and methods; It reuse of Java socket network programming technology,

11、 information between the various objects interaction. The system uses C/S structure, so the main information exchange between the client and server side. In the system implementation process methods and techniques used in a socket network programming, Java's IO operations,Multi-Thread etc., the

12、system taking into account the amount of information stored is not great, so the use of the file system-related information by way of storage. Of course, there is the use of configuration files to save some important information technology to facilitate system implementation. Part in the interface d

13、esign, the main uses of Java Swing technology. The main function of the system is user registration and login, user management, server management, add and delete friends, which can chat with friends or a group. The system has been continuously testing and debugging, completion of the desired functio

14、nality to meet the needs of users at late.Keywords : Object-oriented ; Java;Socket;C/S;Swing武漢工程大學(xué)計算機科學(xué)與工程學(xué)院 綜合設(shè)計報告目 錄目 錄I摘 要IIIAbstractIV第一章 緒論11.1背景11.2開發(fā)技術(shù)與問題解決21.3理論依據(jù)和主要功能21.4意義2第二章 需求分析32.1 可行性分析32.2 基本功能需求3第三章 系統(tǒng)設(shè)計83.1主要功能設(shè)計83.2系統(tǒng)類圖設(shè)計83.3系統(tǒng)順序圖103.4 系統(tǒng)部署圖11第四章 詳細(xì)設(shè)計124.1系統(tǒng)程序流程設(shè)計124.2 服務(wù)器端功能實現(xiàn)13

15、4.3 客戶端功能實現(xiàn)16第五章 系統(tǒng)測試235.1 登陸注冊測試235.2 查找添加好友測試235.3 聊天功能測試26總結(jié)27致謝28參考文獻29摘 要本次課程設(shè)計實現(xiàn)類似于騰訊QQ的簡單聊天系統(tǒng),目的是為了方便局域網(wǎng)里的通信,給辦公或者學(xué)習(xí)帶來方便。系統(tǒng)的設(shè)計與實現(xiàn),主要的依據(jù)是面向?qū)ο蟮木幊趟枷牒蚃ava網(wǎng)絡(luò)編程。首先根據(jù)面向?qū)ο蟮乃枷?,抽象出系統(tǒng)的主要參與者與系統(tǒng)邊界,做出系統(tǒng)的用例,然后確定系統(tǒng)的對象,屬性與方法;再利用Java的socket網(wǎng)絡(luò)編程技術(shù),實現(xiàn)各個對象之間信息的交互,由于本系統(tǒng)采用的是C/S架構(gòu),所以主要的信息交互在客戶端與服務(wù)器端進行。在系統(tǒng)的實現(xiàn)過程中采用的方法

16、與技術(shù)有socket網(wǎng)絡(luò)編程,Java的IO操作,多線程等。系統(tǒng)考慮到存儲的信息量并不是很大,所以采用文件方式進行系統(tǒng)相關(guān)信息的存儲。當(dāng)然,還有利用配置文件的技術(shù)保存一些重要的信息,方便系統(tǒng)的實現(xiàn)。在界面設(shè)計部分,主要采用的是Java的Swing技術(shù)。系統(tǒng)的主要功能有用戶注冊與登錄,用戶管理,服務(wù)器管理,添加、刪除好友,與好友進行聊天或者群聊等。本系統(tǒng)經(jīng)過不斷測試與調(diào)試,最終完成了預(yù)期功能,滿足了用戶需求。關(guān)鍵詞:面向?qū)ο?;Java;Socket;C/S;SwingAbstractThe integrate design is to achieve a simple system which

17、is similar Tencent QQ. The main purpose of the system is facilitate LAN communication, which is to the office or to learn convenience. System design and implementation are based on the main ideas of object-oriented programming and Java network programming. First, according to object-oriented thinkin

18、g, abstract systems and a major player in the system boundary, making the system use cases, and then determine the system's objects, properties, and methods; It reuse of Java socket network programming technology, information between the various objects interaction. The system uses C/S structure

19、, so the main information exchange between the client and server side. In the system implementation process methods and techniques used in a socket network programming, Java's IO operations,Multi-Thread etc., the system taking into account the amount of information stored is not great, so the us

20、e of the file system-related information by way of storage. Of course, there is the use of configuration files to save some important information technology to facilitate system implementation. Part in the interface design, the main uses of Java Swing technology. The main function of the system is u

21、ser registration and login, user management, server management, add and delete friends, which can chat with friends or a group. The system has been continuously testing and debugging, completion of the desired functionality to meet the needs of users at late.Keywords : Object-oriented ; Java;Socket;

22、C/S;Swing- 33 -第一章 緒論1.1 背景一直以來,空間上的距離都是人們彼此相互交流的最大障礙。以前人們的信息交流是通過電話、信件、電報等手段,由于功能的局限給收發(fā)雙方帶來了很多不便。所以更加即時的直觀的使人們能在網(wǎng)上識別在線用戶并與他們實時交換消息的即時通信技術(shù)應(yīng)運而生,它是電子郵件發(fā)明以來迅速崛起的在線通訊方式,為網(wǎng)絡(luò)用戶提供一個實時交流聊天的平臺。而且即時通信和社會化網(wǎng)絡(luò)、統(tǒng)一通信、在線協(xié)同三大技術(shù)熱點的關(guān)系將越來越密切,已經(jīng)構(gòu)成融合發(fā)展的趨勢,因此即時通信技術(shù)的應(yīng)用將越來越廣泛,越來越普遍。即時消息系統(tǒng)(Instant Messenger,IM)是一種在后 PC 時代興起的

23、,以Internet 網(wǎng)絡(luò)為基礎(chǔ)的,允許交互雙方即時地傳送文字、語音、視頻等信息,能夠跟蹤網(wǎng)絡(luò)用戶在線狀態(tài)的網(wǎng)絡(luò)應(yīng)用軟件。即時消息系統(tǒng)產(chǎn)生有著深刻的社會原因:人們都有渴望社交,獲得社會尊重、實現(xiàn)自我的需求,這正是即時消息軟件風(fēng)行的原動力,而物質(zhì)文明的日益發(fā)達所帶來副作用,又使得人們習(xí)慣與周圍的人保持距離,以致人們更愿意對陌生人敞開心扉,在網(wǎng)絡(luò)中可以跨越年齡、身份、行業(yè)、地域的限制,達到人與人、人與信息之間的零距離交流。從這點上講,即時消息系統(tǒng)的出現(xiàn)改變了人們的溝通方式和交友文化,大大拓展了個人生活交流的空間。國內(nèi)最為流行的即時消息軟件是 OICQ(簡稱 QQ)。它以良好的中文界面和不斷增強的功

24、能形成了一定的 QQ 網(wǎng)絡(luò)文化。該軟件是由騰訊公司于 1999 年 2 月自主開發(fā)的基于Internet的即時消息系統(tǒng)。騰訊QQ 目前已成為中國最主要的即時消息服務(wù)網(wǎng)絡(luò)軟件。作為一種即時消息工具,QQ 支持顯示好友在線、即時傳送文字、語音和文件等功能。 QQ 還與無線尋呼、GSM 短信息、IP 電話網(wǎng)互聯(lián),為用戶提供互聯(lián)網(wǎng)短信及信息增值服務(wù)。騰訊 QQ 開發(fā)和拓展統(tǒng)一、高速、豐富的互聯(lián)網(wǎng)應(yīng)用平臺、在線廣告業(yè)務(wù)、移動通信業(yè)務(wù)、ISP及IP電話合作業(yè)務(wù)、企業(yè)商用即時消息服務(wù)、在線客戶支持及在線呼叫業(yè)務(wù)。所以,本次課程設(shè)計,以騰訊QQ為目標(biāo),做一個簡單的局域網(wǎng)聊天系統(tǒng)。1.2開發(fā)技術(shù)與問題解決在該系

25、統(tǒng)的設(shè)計實現(xiàn)過程中,主要的開發(fā)技術(shù)就是java的Socket網(wǎng)絡(luò)編程技術(shù),因為它實現(xiàn)的是系統(tǒng)的核心功能。對于界面的設(shè)計,采用的是java的swing技術(shù),在界面的布局上,對于小的面板主要采用絕對布局的方式,還有卡片布局,網(wǎng)格布局,最后采用邊界布局將各個面板集成起來,這樣做出的界面還是比較美觀的。在swing中用到了UIManager這個類來管理界面。當(dāng)然也用到了awt重量級的控件。在業(yè)務(wù)功能的實現(xiàn)方面,基于TCP協(xié)議的網(wǎng)絡(luò)聊天程序必須包括服務(wù)端和客戶端兩個程序,其中一臺計算機上運行服務(wù)端程序,當(dāng)開啟服務(wù)端程序時,設(shè)置一個監(jiān)聽端口(port)并調(diào)用startService方法。當(dāng)客戶端連接時(c

26、onnect)就會觸發(fā)connection request事件,在connection request事件中調(diào)用socket方法建立連接,然后服務(wù)會為每一個客戶開啟一個線程。同時在服務(wù)端的事件中,把接收到的客戶端傳來的數(shù)據(jù),轉(zhuǎn)發(fā)給所有客戶端。當(dāng)然針對用戶的不同請求,服務(wù)器會有不同的響應(yīng)。這其中就用到了多線程技術(shù)。然后,對于客戶端程序必須知道服務(wù)端計算機名或其IP地址(Remote Host屬性),以及服務(wù)端監(jiān)聽端口(PORT屬性)然后啟動線程建立連接。任何客戶端一方都可以發(fā)送信息給服務(wù)器.也可以接收對方數(shù)據(jù)。其中在客戶端,用一個繼承了Thread的內(nèi)部類的run中方法就可以獲得傳送來的數(shù)據(jù)。在

27、客戶端與服務(wù)器端的信息交互過程中,主要的技術(shù)就是Socket網(wǎng)絡(luò)編程技術(shù),其中,為了封裝信息,用到了序列化與反序列化的技術(shù),即用對象流來實現(xiàn)通信。這樣會比較的方便,通過設(shè)置對象里的類型,以區(qū)分不同的客戶請求,還有服務(wù)器發(fā)的不同信息。1.3理論依據(jù)和主要功能本次課程設(shè)計主要理論依據(jù)就是面向?qū)ο蠓椒▽W(xué)。用面向?qū)ο蟮乃枷雭碓O(shè)計整個系統(tǒng),這其中設(shè)計到j(luò)ava設(shè)計模式,迭代式的開發(fā)模型,數(shù)據(jù)結(jié)構(gòu)等理論知識。本次設(shè)計雖然沒有使用數(shù)據(jù)庫,但是在需求分析階段,還是通過E-R圖來分析了系統(tǒng)的數(shù)據(jù)存儲結(jié)構(gòu),并且抽象出公共的數(shù)據(jù)類型。系統(tǒng)的主要功能除了用戶注冊,登陸,聊天以外,還有群聊,查找好友,添加好友,更新用戶

28、信息等。1.4意義21世紀(jì)是信息的時代,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,信息在傳遞方面也有了嶄新的一面?,F(xiàn)今聊天軟件成為信息傳遞最為廣泛的應(yīng)用工具,它發(fā)揮了即時性通信的特點,可以讓用戶在第一時間內(nèi)得到信息的交流,它不僅可以讓用戶進行文字聊天,而且還增添語音、視頻功能。這樣可以讓網(wǎng)上的好友身臨其境的面對面的聊天,讓彼此之間更為深入的了解。人性化的設(shè)計讓每個用戶都可以得心應(yīng)手的使用,從而獲得更多人的青睞。Internet的出現(xiàn)連通了整個世界,而聊天軟件的出現(xiàn)則連通了每一位網(wǎng)上的用戶。隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,聊天軟件已經(jīng)成為最熱門的網(wǎng)絡(luò)應(yīng)用之一。經(jīng)歷了近幾年突飛猛進的發(fā)展之后,即時通訊工具早已不再是簡單的互聯(lián)網(wǎng)通

29、訊工具,它已經(jīng)成為一個集互動交流、休閑娛樂、信息管理為一體的多元化互聯(lián)網(wǎng)應(yīng)用平臺??傊?,聊天軟件的出現(xiàn)給人們彼此之間的溝通帶來了無比的方便,人們可以通過聊天軟件建立深刻的友情,讓人們在互聯(lián)網(wǎng)上的交流更加充滿活力與生機。再者,通過本次課程設(shè)計,是對自己大學(xué)三年來所學(xué)東西的一個綜合檢驗,因為這次課程設(shè)計確實包含了許多的內(nèi)容,設(shè)計到了幾年來學(xué)習(xí)的許多課程,當(dāng)然,最核心的還是面向?qū)ο蠓椒▽W(xué)的課程,通過這門課程的學(xué)習(xí),將面向?qū)ο蟮乃枷牍噍數(shù)搅四X中。通過這次課程設(shè)計,將理論付諸實踐,是一個很好的提升自己能力的過程。第二章 需求分析2.1 可行性分析 經(jīng)濟可行性:本次系統(tǒng)的設(shè)計背景是學(xué)期末的綜合課程設(shè)計,所

30、以并沒有考慮市場的經(jīng)濟效應(yīng)與開發(fā)投入,主要是以提升自己的專業(yè)能力為目的,需要的只是一臺能運行java程序的電腦。所以經(jīng)濟上是可行的。技術(shù)可行性:該系統(tǒng)的設(shè)計是在我學(xué)習(xí)了面向?qū)ο蠓椒▽W(xué),java設(shè)計模式,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,操作系統(tǒng),計算機網(wǎng)絡(luò),人機交互等理論知識之后開展的,加上平時的上機實驗,已經(jīng)具備了開發(fā)一個簡單聊天系統(tǒng)的能力和技術(shù)。所以技術(shù)上是可行的。操作可行性:本次系統(tǒng)設(shè)計是在軟件工程專業(yè)機房進行的,環(huán)境是比較舒適的,然后機房還連接了互聯(lián)網(wǎng),供我們查閱治療,開發(fā)平臺為windows XP,加上eclipse的開發(fā)工具,JDK已經(jīng)安裝好,整個開發(fā)平臺,從需求分析到最后的測試都已經(jīng)搭建好,所以

31、在操作上是可行的。2.2 基本功能需求首先進行參與者分析,本次系統(tǒng)的參與者有兩大部分,即客戶和系統(tǒng)管理員。參與者列表如下:表 2-1參與者編號參與者名稱參與者描述參與者間關(guān)系與用例的關(guān)系M1Person未注冊的用戶M2的父類注冊M2User已注冊的用戶M1的子類登錄聊天M3Administer系統(tǒng)管理員無直接關(guān)系管理用戶在分析了參與者之后,就可以確定系統(tǒng)的邊界了,然后設(shè)計出用例列表,因為本系統(tǒng)的開發(fā)是用用例驅(qū)動的。用例之間有三種關(guān)系:特殊化、包含和擴展。這些關(guān)系可以組合相關(guān)的用例,分解大的用例,重用行為,指定可選的行為。用例表如表2-2所示:表 2-2用例編號用例名稱用例描述用例關(guān)系是否為抽象

32、用例U1Register新用戶注冊包含U5、U6、U7,U4是其擴展否U2Login注冊用戶登錄U3是其擴展否U3Chat聊天是U2的擴展否U4Initial初始化U1和U8是其擴展否U5CheckInfo檢查注冊信息是否合法被U1包含否U6WriteInfo將注冊信息寫到文件被U1包含否U7SaveInfo保存用戶信息被U1包含否U8OpenServer開啟服務(wù)器被U4包含否 通過上面的分析,畫出用例圖,8個用例中,與可疑用用戶即注冊者有關(guān)的有一個用例,與用戶有關(guān)的有一個用例,與系統(tǒng)管理員有關(guān)的用例有三個。當(dāng)然有些小的用例并沒有畫上去,主要是一些大的功能模塊的用例。如圖2.1。圖 2.1 系

33、統(tǒng)用例圖該系統(tǒng)中共包括8個大的用例,詳細(xì)的用例列表如下:U1:register表2-3 注冊用例細(xì)節(jié)列表用例編號:U1用例名稱:Register前置條件:無步 驟:1、用戶選擇注冊類型(User或VipUser) 2、填寫注冊信息后置條件:系統(tǒng)調(diào)用注冊驗證模塊檢查注冊信息是否符合要求異常處理:a1、如果用戶名已存在,Ichat會提示并要求重新填寫 a2、如果注冊信息符合要求,則在保存后成功完成注冊U2:login表 2-4 登陸用例細(xì)節(jié)列表用例編號:U2用例名稱:Login前置條件:用戶成功注冊步 驟:1、用戶輸入用戶名2、用戶輸入密碼3、選擇“登陸”(登陸界面有兩個按鈕“登陸”和“注冊”,選

34、擇注冊進入注冊界面)后置條件:系統(tǒng)調(diào)用登陸驗證模塊檢查登陸信息異常處理:a1、如果用戶名不存在,則提示用戶先注冊 a2、如果用戶名存在但密碼不匹配,則提示用戶密碼錯誤 a3、如果用戶名和密碼都正確,則成功登陸Ichat系統(tǒng)U3:chat表 2-5 聊天用例細(xì)節(jié)列表用例編號:U8用例名稱:chat前置條件: 用戶已登錄步 驟:獲得對方端口號或IP地址后置條件:無 異常處理:無U4:initial表 2-6 初始化用例細(xì)節(jié)列表用例編號:U4用例名稱:initial前置條件:用戶注冊步 驟:1、用戶注冊 2、用戶信息初始化后置條件:服務(wù)器已經(jīng)打開異常處理: 無U5: checkInfo表 2-7 檢

35、查用戶信息用例細(xì)節(jié)列表用例編號:U5用例名稱:checkInfo前置條件:用戶注冊步 驟:1、檢查新注冊的用戶名是否存在2、已存在則提示并要求重新填寫3、注冊信息成功通過驗證后置條件:注冊成功 異常處理:無 U6: writeInfo表 2-8 寫信息用例細(xì)節(jié)列表用例編號:U5用例名稱:writeInfo前置條件:用戶注冊成功步 驟:將用戶注冊信息寫入文件中后置條件:無 異常處理: 寫入文件異常,給出錯誤提示U7: saveInfo表 2-9 保存信息用例細(xì)節(jié)列表用例編號:U6用例名稱:saveInfo前置條件:已填入的注冊信息通過驗證步 驟:1、選擇“保存”,界面中各文本框進入不可寫狀態(tài)2、

36、選擇“確認(rèn)注冊”,系統(tǒng)將注冊信息存入數(shù)據(jù)庫中3、提示新用戶注冊成功后置條件:無異常處理: 無U8:OpenServer表 2-10 打開服務(wù)器用例細(xì)節(jié)列表用例編號:U8用例名稱:OpenServer前置條件:初始化 步 驟:1、初始化 2、連接至服務(wù)器后置條件:無 異常處理:如果服務(wù)器連接失敗,重新連接第三章 系統(tǒng)設(shè)計3.1主要功能設(shè)計首先服務(wù)器端是該系統(tǒng)的核心功能模塊,是首先要考慮的,服務(wù)器主要是監(jiān)聽用戶的行為,響應(yīng)用戶的請求,為用戶提供服務(wù)。他的功能模塊包括系統(tǒng)服務(wù),系統(tǒng)配置,用戶管理,在線用戶,顯示日志等功能。其中最核心的功能模塊式系統(tǒng)服務(wù),它上面負(fù)責(zé)處理客戶不同信息類型的請求,并且在面

37、板上顯示操作的記錄以及用戶的一些行為,方便系統(tǒng)管理員進行管理,而其他面板主要負(fù)責(zé)一些顯示工作,當(dāng)然用戶的管理一些功能還未實現(xiàn),只能進行查看。然后是對于客戶端的設(shè)計,客戶端包括三大界面,也對應(yīng)這三大功能,即登陸界面,主界面,聊天界面。其中,登陸界面對應(yīng)的功能有用戶登陸與注冊,主界面里可以查找添加好友,然后進入聊天面板,在聊天界面主要是用戶之間的信息交流,這些信息的交換都是由服務(wù)器支撐的。最后畫出系統(tǒng)功能模塊圖:簡單QQ聊天系統(tǒng)客戶端服務(wù)器端注冊登陸查找好友添加好友聊天系統(tǒng)服務(wù)系統(tǒng)配置用戶管理顯示日志圖 3.1 系統(tǒng)功能模塊圖3.2系統(tǒng)類圖設(shè)計本系統(tǒng)主要的類就是ServicePane和Regist

38、erPane、Mainpane,他們實現(xiàn)了系統(tǒng)的主要的功能,并且他們之間的信息交互時最多的,當(dāng)然其中設(shè)計到一些抽象的類,比如對與用戶數(shù)據(jù)的封裝,有一個具有全面信息的User,還有封裝好友信息的類FriendUser,封裝注冊信息的RegUser,用戶登陸信息封裝為LoginUer等。ServicePane主要負(fù)責(zé)服務(wù)器端的功能,RegisterPane負(fù)責(zé)用戶的注冊,Mainpane主要負(fù)責(zé)用戶管理自己的好友,包括查找和添加好友以及和好友聊天等。這個三個類涉及到的類共同組成了該系統(tǒng)。系統(tǒng)的類圖如圖3.2所示。圖 3.2 系統(tǒng)類圖3.3系統(tǒng)順序圖在系統(tǒng)的實現(xiàn)中,和服務(wù)的信息交互主要集中在用戶登陸

39、與注冊上面,而且這一塊對多線程操作和對象流的操作要求比較高,所以主要畫著兩個功能的順序圖,如圖3.3和3.4。圖 3.3 注冊順序圖圖 3.4 登陸順序圖在注冊順序圖中,用戶通過提交注冊信息,觸發(fā)系統(tǒng)的Socket監(jiān)聽,從而系統(tǒng)會為每一個用戶開啟一個線程,來處理用戶的注冊事件,當(dāng)然這個線程不會消亡,知道用戶下線。如果用戶提交的信息正確,那么服務(wù)器會調(diào)用dealRegister方法來為客戶生成QQ號和ID號,并且將用戶的信息寫到文件中。然后會將注冊信息寫到對象輸出流中,發(fā)給客戶端。在登陸的順序圖中,也是客戶端向服務(wù)器提出請求,服務(wù)器為客戶端開啟單獨的線程來處理這個請求。在這個過程中,服務(wù)器會便利

40、客戶存儲信息的文件夾,查看是否存在這個用戶,并且檢查密碼是否正確,不管是否正確,服務(wù)器都會通過對象流將一個JQMessage的打包信息發(fā)給客戶端,客戶端接受后,也會根據(jù)數(shù)據(jù)的類型(JQMessage的一個屬性值)來判斷是否登錄成功,如果是,則會出事化一個MainPnae,并且加載用戶的信息,包括好友列表等。若登錄信息錯誤,則會提示用戶。3.4 系統(tǒng)部署圖 系統(tǒng)的部署圖主要體現(xiàn)的是系統(tǒng)的構(gòu)架,本系統(tǒng)采用C/S架構(gòu)。所以部署圖如下:圖 3.5 系統(tǒng)部署圖第四章 詳細(xì)設(shè)計4.1系統(tǒng)程序流程設(shè)計通過系統(tǒng)的需求分析與系統(tǒng)設(shè)計,可以得到整個系統(tǒng)的流程圖,對于這個系統(tǒng),可以分為聊天前的準(zhǔn)備工作,與用戶自己的

41、操作,這樣可以將系統(tǒng)的流程分為三個部分,一個是注冊登錄,一個是查找添加好友,一個是好友之間的聊天流程。如圖4.1,4.2,4.3。圖 4.1 注冊登陸流程圖圖 4.2 查找添加好友流程圖 圖 4.3 聊天流程 對于注冊與登錄,如果用戶注冊成功,是可以直接跳到主面板的,這樣為用戶帶來了極大的方便,如果不成功,那個用戶也可以再次注冊。然后對于查找好友與聊天,關(guān)鍵的條件就在于是否有在線用戶或者是在線好友,只有添加了好友,才能和他聊天。4.2 服務(wù)器端功能實現(xiàn)服務(wù)器端主要由幾個面板組成,其中JQServer啟動服務(wù)器的界面并且添加設(shè)置字體,然后由Server來加載具體的面板,這些面板采用網(wǎng)格布局的形式

42、,其中包括系統(tǒng)服務(wù)、系統(tǒng)配置、用戶管理、在線用戶、日志管理5個面板,將這5個面板分裝為不同的類,因為他們實現(xiàn)的是不同的功能。最后實現(xiàn)效果如圖4.4。圖 4.4 系統(tǒng)服務(wù)面板在ServerPane中,它實際上也是一個線程,繼承了Thread,在它的run方法中有一個死循環(huán),用來監(jiān)聽用戶的請求,一旦有客戶向它提出請求,他都會開啟一個ClientLink來處理這個用戶的所有不同類型的請求。主要實現(xiàn)代碼如下:public void run() /這整個類的run方法,不斷監(jiān)聽是否有新用戶連接while(isServiceRun)try Socket client = ss.accept();/收到了一

43、個用戶的socket,為每個用戶開啟一個線程new Thread(new ClientLink(client).start(); catch (IOException e) e.printStackTrace(); 這個方法中的ClientLink,是一個內(nèi)部類,他的作用就是處理用戶不同請求,然后返回用戶所需要的信息,其中有處理用戶注冊的dealRegister方法,有處理用戶登陸的dealLogin方法,有返回在線用戶數(shù)的dealFindOnlineUserNum方法,有返回已經(jīng)注冊用戶詳細(xì)信息的dealFindOnlineUser方法,當(dāng)然還有響應(yīng)添加好友的dealAddUser方法。這些

44、方法執(zhí)行完之后,服務(wù)器都會給客戶端反饋信息,即使操作執(zhí)行失敗。這個功能主要是由ClientWrite這個線程完成的。它的實現(xiàn)如下:private class ClientWrite extends Threadprivate ClientLink clientlink;private JQMessage message;public ClientWrite(ClientLink clientlink,JQMessage message)this.clientlink = clientlink;this.message = message;Overridepublic void run() if

45、(clientlink.oos != null)try clientlink.oos.writeObject(message);clientlink.oos.flush(); catch (IOException e) System.out.println("服務(wù)器將信息發(fā)給客戶端時發(fā)生異常!");writeSysLog("向客戶端"+clientlink.getClientIP()+"發(fā)生消息時發(fā)生異常!");e.printStackTrace(); 然后,服務(wù)器還有一個很重要的功能就是管理保存用戶信息,這也是在需求分析中考慮到了的

46、問題,由于本系統(tǒng)采用文件存儲用戶信息,所以主要是IO流的操作,在當(dāng)前的項目下,建立一個logs文件夾來存放用戶的所有信息。當(dāng)然有對應(yīng)的類;來實現(xiàn)這個功能,它就是RegisterDaoFile類,這個類不僅有寫用戶信息的功能,而且可以查找用戶,更新用戶和刪除用戶,由于這個類很關(guān)鍵,所有將其主要代碼附屬如下:import java.io.*;import data.*;/定義一個文件夾,里面每一個.dat文件都是一個用戶的相關(guān)信息public class RegisterDaoFile implements DAO<User,Integer> private String path =

47、 "logs"private String suffName = ".dat"/注冊之后添加一個用戶的信息Overridepublic boolean add(User obj) throws Exception File category = new File(path);if(!category.exists()/創(chuàng)建文件夾category.mkdir();File file = new File(path+File.separator+obj.getJqnum()+suffName);if(file.exists()/保證唯一,已經(jīng)注冊了文件的qq

48、號就不需要再生成文件了return false;ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file,false);oos.writeObject(obj);oos.flush();oos.close();oos = null;return true;/根據(jù)QQ號查找文件中對應(yīng)的Userpublic User findById(Integer jqnum)/獲取存放用戶信息的文件File file = new File(path+File.separa

49、tor+jqnum+suffName);if(file.exists()try ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file);/將用戶信息從文件讀出來Object obj = ois.readObject();ois.close();ois = null;if(obj instanceof User)return (User)obj;elsereturn null; catch (Exception e) System.out.println(&qu

50、ot;從文件讀取用戶信息時出錯!");e.printStackTrace();return null;return null;/更新操作,是先刪除,再添加public boolean update(User user) throws Exceptionif(delete(user)return add(user);elsereturn false;/刪除操作private boolean delete(User user) File file = new File(path+File.separator+user.getJqnum()+suffName);if(file.exists

51、()return file.delete();elsereturn false;4.3 客戶端功能實現(xiàn)客戶端的功能主要在注冊,登陸,查找添加添加好友,還有聊天功能上面,而注冊與登陸大部分功能處理在服務(wù)器端,所以客戶端的功能實現(xiàn)主要集中在主面板MainPane上面,還有聊天面板ChatPane。4.3.1 注冊和登陸實現(xiàn)對于注冊,客戶端的功能就是收集用戶輸入的信息,然后向服務(wù)器發(fā)出請求,即將信息封裝到對象中,然后用輸出流發(fā)給服務(wù)器。它的活動圖如圖4.5圖 4.5 注冊活動圖 通過活動圖,可以清楚的分清楚系統(tǒng)的看出服務(wù)器和客戶交互信息的邊界,以及它們之間交互信息的先后次序,首先是客戶提交注冊信息,然后服務(wù)器端處理,在程序的實現(xiàn)中,這兩個過程對應(yīng)著客戶端用ObjectOutputStream向服務(wù)器寫信息,然后服務(wù)器用ObjectInputStream讀取客戶端發(fā)來的信息,然后通過case語句判斷用戶是什么請求,然后服務(wù)器再向客戶端寫信息,客戶端也通過相同的方式處理服務(wù)器發(fā)來的消息。客戶端實現(xiàn)代碼如下:/構(gòu)造方法public RegNewUser()try client = new Socket(txtServerIP.getText(),Integer.parseInt(tx

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論