版權(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é)與工程學(xué)院國(guó)家卓越工程師計(jì)劃校企合作綜合設(shè)計(jì)報(bào)告設(shè)計(jì)名稱: 軟件工程綜合設(shè)計(jì) 設(shè)計(jì)題目: 簡(jiǎn)單QQ聊天系統(tǒng) 學(xué)生學(xué)號(hào): 專業(yè)班級(jí): 學(xué)生姓名: 學(xué)生成績(jī): 指導(dǎo)教師(職稱): 企業(yè)指導(dǎo)教師: 課題工作時(shí)間:2013年6月24日 至 2013年7月5日說明:1、報(bào)告中的第一、二、三項(xiàng)由指導(dǎo)教師在綜合設(shè)計(jì)開始前填寫并發(fā)給每個(gè)學(xué)生;四、五兩項(xiàng)(中英文摘要)由學(xué)生在完成綜合設(shè)計(jì)后填寫。2、學(xué)生成績(jī)由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)情況給出各項(xiàng)分值及總評(píng)成績(jī)。3、指導(dǎo)教師評(píng)語一欄由指導(dǎo)教師就學(xué)生在整個(gè)設(shè)計(jì)期間的平時(shí)表現(xiàn)、設(shè)計(jì)完成情況、報(bào)告的質(zhì)量及答辯情況,給出客觀、全面的評(píng)價(jià)。4、所有學(xué)生
2、必須參加綜合設(shè)計(jì)的答辯環(huán)節(jié),凡不參加答辯者,其成績(jī)一律按不及格處理。答辯小組成員應(yīng)由2人及以上教師組成。5、報(bào)告正文字?jǐn)?shù)一般應(yīng)不少于5000字,也可由指導(dǎo)教師根據(jù)本門綜合設(shè)計(jì)的情況另行規(guī)定。6、平時(shí)表現(xiàn)成績(jī)低于6分的學(xué)生,取消答辯資格,其本項(xiàng)綜合設(shè)計(jì)成績(jī)按不及格處理。7、此表格式為武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院提供的基本格式(適用于學(xué)院各類綜合設(shè)計(jì)),各教研室可根據(jù)本門綜合設(shè)計(jì)的特點(diǎn)及內(nèi)容做適當(dāng)?shù)恼{(diào)整,并上報(bào)學(xué)院批準(zhǔn)。成績(jī)?cè)u(píng)定表學(xué)生姓名: 學(xué)號(hào): 班級(jí): 類別合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注平時(shí)表現(xiàn)1010按時(shí)參加綜合設(shè)計(jì),無曠課、遲到、早退、違反實(shí)驗(yàn)室紀(jì)律等情況。由設(shè)計(jì)負(fù)責(zé)人給
3、出完成情況3020按設(shè)計(jì)任務(wù)書的要求完成了全部任務(wù),能完整演示其設(shè)計(jì)內(nèi)容,符合要求。10能對(duì)其設(shè)計(jì)內(nèi)容進(jìn)行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問題進(jìn)行正確的回答。報(bào)告質(zhì)量3510報(bào)告文字通順,內(nèi)容翔實(shí),論述充分、完整,立論正確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報(bào)告字?jǐn)?shù)符合相關(guān)要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計(jì)方案合理、可行,論證嚴(yán)謹(jǐn),邏輯性強(qiáng),具有說服力。5符號(hào)統(tǒng)一;圖表完備、符合規(guī)范要求。5能對(duì)整個(gè)設(shè)計(jì)過程進(jìn)行全面的總結(jié),得出有價(jià)值的結(jié)論或結(jié)果。5參考文獻(xiàn)數(shù)量在3篇以上,格式符合要求,在正文中正確引用。答辯情況2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡(jiǎn)意明,重點(diǎn)突出,
4、論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題??傇u(píng)成績(jī): 分 補(bǔ)充說明: 指導(dǎo)教師: (簽字)日 期: 年 月 日答辯記錄表學(xué)生姓名: 學(xué)號(hào): 班級(jí): 答辯地點(diǎn): 答辯內(nèi)容記錄:答辯成績(jī)合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡(jiǎn)意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題。答辯小組成員(簽字): 年 月 日指導(dǎo)教師評(píng)語指導(dǎo)教師: (簽字)日 期: 年 月 日一、綜合設(shè)計(jì)目的、條件、任務(wù)和內(nèi)容要求:綜合設(shè)計(jì)的目的是:讓同學(xué)們應(yīng)用所學(xué)相應(yīng)的專業(yè)課程如面向?qū)ο蠓椒▽W(xué)、操
5、所系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、java高級(jí)程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)等課程的知識(shí),進(jìn)行全面綜合的應(yīng)用,特別是要運(yùn)用所學(xué)的面向?qū)ο蠓椒▽W(xué)的知識(shí),學(xué)會(huì)使用面向?qū)ο蟮乃季S方式進(jìn)行全局的看待軟件的設(shè)計(jì)過程、掌握面向?qū)ο蠓椒▽W(xué)課程所學(xué)知識(shí),進(jìn)行全面綜合的應(yīng)用,在軟件實(shí)現(xiàn)之前先進(jìn)行面向?qū)ο蟮姆治?、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等過程。綜合設(shè)計(jì)的條件:該綜合設(shè)計(jì)的條件是要求其先導(dǎo)課程面向?qū)ο蠓椒▽W(xué)、操所系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、java高級(jí)程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)等課程已經(jīng)學(xué)習(xí)。分組實(shí)現(xiàn),2-3人一組。本次綜合設(shè)計(jì)特點(diǎn)是校企合作,聘請(qǐng)企業(yè)教師來校講課。綜合設(shè)計(jì)的任務(wù):模仿騰訊QQ的系統(tǒng),要求同學(xué)們分組實(shí)現(xiàn)QQ聊天系統(tǒng)。綜合設(shè)計(jì)的內(nèi)容:1、使
6、用面向?qū)ο蟮姆椒▽?duì)QQ聊天系統(tǒng)進(jìn)行原型需求分析。2、對(duì)QQ聊天系統(tǒng)進(jìn)行面向?qū)ο蟮脑O(shè)計(jì)。3、使用面向?qū)ο蟮恼Z言實(shí)現(xiàn)聊天系統(tǒng)。4、對(duì)自己設(shè)計(jì)的軟件系統(tǒng)進(jìn)行測(cè)試。5、根據(jù)上面所做的事情撰寫綜合設(shè)計(jì)報(bào)告 指導(dǎo)教師簽字: 2013 年 6 月 24 日二、進(jìn)度安排:6月24 6月26日 使用面向?qū)ο蟮姆椒▽?duì)QQ聊天系統(tǒng)進(jìn)行原型需求分析。6月27-6月28日 對(duì)QQ聊天系統(tǒng)進(jìn)行面向?qū)ο蟮脑O(shè)計(jì)6月28-7月3日 使用面向?qū)ο蟮恼Z言實(shí)現(xiàn)聊天系統(tǒng)6月28-7月4日 系統(tǒng)測(cè)試7月5日 答辯6月24 -7月4日 撰寫綜合設(shè)計(jì)報(bào)告三、應(yīng)收集資料及主要參考文獻(xiàn):1 Rogers Cadenhead Java從入門到精通
7、.北京:人民郵電出版社. 2007年3月2 Paul Hyde Java線程編程.北京:人民郵電出版社. 2003年11月3 李鐘蔚Java 開發(fā)實(shí)戰(zhàn)寶典.北京:清華大學(xué)出版社.2009年6月4 殷兆麟.Java網(wǎng)絡(luò)編程基礎(chǔ)M.北京:清華大學(xué)出版社,2004年5月四、綜合設(shè)計(jì)摘要(中文):本次課程設(shè)計(jì)實(shí)現(xiàn)類似于騰訊QQ的簡(jiǎn)單聊天系統(tǒng),目的是為了方便局域網(wǎng)里的通信,給辦公或者學(xué)習(xí)帶來方便。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),主要的依據(jù)是面向?qū)ο蟮木幊趟枷牒蚃ava網(wǎng)絡(luò)編程。首先根據(jù)面向?qū)ο蟮乃枷?,抽象出系統(tǒng)的主要參與者與系統(tǒng)邊界,做出系統(tǒng)的用例,然后確定系統(tǒng)的對(duì)象,屬性與方法;再利用Java的socke
8、t網(wǎng)絡(luò)編程技術(shù),實(shí)現(xiàn)各個(gè)對(duì)象之間信息的交互,由于本系統(tǒng)采用的是C/S架構(gòu),所以主要的信息交互在客戶端與服務(wù)器端進(jìn)行。在系統(tǒng)的實(shí)現(xiàn)過程中采用的方法與技術(shù)有socket網(wǎng)絡(luò)編程,Java的IO操作,多線程等。系統(tǒng)考慮到存儲(chǔ)的信息量并不是很大,所以采用文件方式進(jìn)行系統(tǒng)相關(guān)信息的存儲(chǔ)。當(dāng)然,還有利用配置文件的技術(shù)保存一些重要的信息,方便系統(tǒng)的實(shí)現(xiàn)。在界面設(shè)計(jì)部分,主要采用的是Java的Swing技術(shù)。系統(tǒng)的主要功能有用戶注冊(cè)與登錄,用戶管理,服務(wù)器管理,添加、刪除好友,與好友進(jìn)行聊天或者群聊等。本系統(tǒng)經(jīng)過不斷測(cè)試與調(diào)試,最終完成了預(yù)期功能,滿足了用戶需求。關(guān)鍵詞:面向?qū)ο?;Java;Socket;C/
9、S;Swing五、綜合設(shè)計(jì)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é)計(jì)算機(jī)科學(xué)與工程學(xué)院 綜合設(shè)計(jì)報(bào)告目 錄目 錄I摘 要IIIAbstractIV第一章 緒論11.1背景11.2開發(fā)技術(shù)與問題解決21.3理論依據(jù)和主要功能21.4意義2第二章 需求分析32.1 可行性分析32.2 基本功能需求3第三章 系統(tǒng)設(shè)計(jì)83.1主要功能設(shè)計(jì)83.2系統(tǒng)類圖設(shè)計(jì)83.3系統(tǒng)順序圖103.4 系統(tǒng)部署圖11第四章 詳細(xì)設(shè)計(jì)124.1系統(tǒng)程序流程設(shè)計(jì)124.2 服務(wù)器端功能實(shí)現(xiàn)13
15、4.3 客戶端功能實(shí)現(xiàn)16第五章 系統(tǒng)測(cè)試235.1 登陸注冊(cè)測(cè)試235.2 查找添加好友測(cè)試235.3 聊天功能測(cè)試26總結(jié)27致謝28參考文獻(xiàn)29摘 要本次課程設(shè)計(jì)實(shí)現(xiàn)類似于騰訊QQ的簡(jiǎn)單聊天系統(tǒng),目的是為了方便局域網(wǎng)里的通信,給辦公或者學(xué)習(xí)帶來方便。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),主要的依據(jù)是面向?qū)ο蟮木幊趟枷牒蚃ava網(wǎng)絡(luò)編程。首先根據(jù)面向?qū)ο蟮乃枷耄橄蟪鱿到y(tǒng)的主要參與者與系統(tǒng)邊界,做出系統(tǒng)的用例,然后確定系統(tǒng)的對(duì)象,屬性與方法;再利用Java的socket網(wǎng)絡(luò)編程技術(shù),實(shí)現(xiàn)各個(gè)對(duì)象之間信息的交互,由于本系統(tǒng)采用的是C/S架構(gòu),所以主要的信息交互在客戶端與服務(wù)器端進(jìn)行。在系統(tǒng)的實(shí)現(xiàn)過程中采用的方法
16、與技術(shù)有socket網(wǎng)絡(luò)編程,Java的IO操作,多線程等。系統(tǒng)考慮到存儲(chǔ)的信息量并不是很大,所以采用文件方式進(jìn)行系統(tǒng)相關(guān)信息的存儲(chǔ)。當(dāng)然,還有利用配置文件的技術(shù)保存一些重要的信息,方便系統(tǒng)的實(shí)現(xiàn)。在界面設(shè)計(jì)部分,主要采用的是Java的Swing技術(shù)。系統(tǒng)的主要功能有用戶注冊(cè)與登錄,用戶管理,服務(wù)器管理,添加、刪除好友,與好友進(jìn)行聊天或者群聊等。本系統(tǒng)經(jīng)過不斷測(cè)試與調(diào)試,最終完成了預(yù)期功能,滿足了用戶需求。關(guān)鍵詞:面向?qū)ο螅籎ava;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 背景一直以來,空間上的距離都是人們彼此相互交流的最大障礙。以前人們的信息交流是通過電話、信件、電報(bào)等手段,由于功能的局限給收發(fā)雙方帶來了很多不便。所以更加即時(shí)的直觀的使人們能在網(wǎng)上識(shí)別在線用戶并與他們實(shí)時(shí)交換消息的即時(shí)通信技術(shù)應(yīng)運(yùn)而生,它是電子郵件發(fā)明以來迅速崛起的在線通訊方式,為網(wǎng)絡(luò)用戶提供一個(gè)實(shí)時(shí)交流聊天的平臺(tái)。而且即時(shí)通信和社會(huì)化網(wǎng)絡(luò)、統(tǒng)一通信、在線協(xié)同三大技術(shù)熱點(diǎn)的關(guān)系將越來越密切,已經(jīng)構(gòu)成融合發(fā)展的趨勢(shì),因此即時(shí)通信技術(shù)的應(yīng)用將越來越廣泛,越來越普遍。即時(shí)消息系統(tǒng)(Instant Messenger,IM)是一種在后 PC 時(shí)代興起的
23、,以Internet 網(wǎng)絡(luò)為基礎(chǔ)的,允許交互雙方即時(shí)地傳送文字、語音、視頻等信息,能夠跟蹤網(wǎng)絡(luò)用戶在線狀態(tài)的網(wǎng)絡(luò)應(yīng)用軟件。即時(shí)消息系統(tǒng)產(chǎn)生有著深刻的社會(huì)原因:人們都有渴望社交,獲得社會(huì)尊重、實(shí)現(xiàn)自我的需求,這正是即時(shí)消息軟件風(fēng)行的原動(dòng)力,而物質(zhì)文明的日益發(fā)達(dá)所帶來副作用,又使得人們習(xí)慣與周圍的人保持距離,以致人們更愿意對(duì)陌生人敞開心扉,在網(wǎng)絡(luò)中可以跨越年齡、身份、行業(yè)、地域的限制,達(dá)到人與人、人與信息之間的零距離交流。從這點(diǎn)上講,即時(shí)消息系統(tǒng)的出現(xiàn)改變了人們的溝通方式和交友文化,大大拓展了個(gè)人生活交流的空間。國(guó)內(nèi)最為流行的即時(shí)消息軟件是 OICQ(簡(jiǎn)稱 QQ)。它以良好的中文界面和不斷增強(qiáng)的功
24、能形成了一定的 QQ 網(wǎng)絡(luò)文化。該軟件是由騰訊公司于 1999 年 2 月自主開發(fā)的基于Internet的即時(shí)消息系統(tǒng)。騰訊QQ 目前已成為中國(guó)最主要的即時(shí)消息服務(wù)網(wǎng)絡(luò)軟件。作為一種即時(shí)消息工具,QQ 支持顯示好友在線、即時(shí)傳送文字、語音和文件等功能。 QQ 還與無線尋呼、GSM 短信息、IP 電話網(wǎng)互聯(lián),為用戶提供互聯(lián)網(wǎng)短信及信息增值服務(wù)。騰訊 QQ 開發(fā)和拓展統(tǒng)一、高速、豐富的互聯(lián)網(wǎng)應(yīng)用平臺(tái)、在線廣告業(yè)務(wù)、移動(dòng)通信業(yè)務(wù)、ISP及IP電話合作業(yè)務(wù)、企業(yè)商用即時(shí)消息服務(wù)、在線客戶支持及在線呼叫業(yè)務(wù)。所以,本次課程設(shè)計(jì),以騰訊QQ為目標(biāo),做一個(gè)簡(jiǎn)單的局域網(wǎng)聊天系統(tǒng)。1.2開發(fā)技術(shù)與問題解決在該系
25、統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)過程中,主要的開發(fā)技術(shù)就是java的Socket網(wǎng)絡(luò)編程技術(shù),因?yàn)樗鼘?shí)現(xiàn)的是系統(tǒng)的核心功能。對(duì)于界面的設(shè)計(jì),采用的是java的swing技術(shù),在界面的布局上,對(duì)于小的面板主要采用絕對(duì)布局的方式,還有卡片布局,網(wǎng)格布局,最后采用邊界布局將各個(gè)面板集成起來,這樣做出的界面還是比較美觀的。在swing中用到了UIManager這個(gè)類來管理界面。當(dāng)然也用到了awt重量級(jí)的控件。在業(yè)務(wù)功能的實(shí)現(xiàn)方面,基于TCP協(xié)議的網(wǎng)絡(luò)聊天程序必須包括服務(wù)端和客戶端兩個(gè)程序,其中一臺(tái)計(jì)算機(jī)上運(yùn)行服務(wù)端程序,當(dāng)開啟服務(wù)端程序時(shí),設(shè)置一個(gè)監(jiān)聽端口(port)并調(diào)用startService方法。當(dāng)客戶端連接時(shí)(c
26、onnect)就會(huì)觸發(fā)connection request事件,在connection request事件中調(diào)用socket方法建立連接,然后服務(wù)會(huì)為每一個(gè)客戶開啟一個(gè)線程。同時(shí)在服務(wù)端的事件中,把接收到的客戶端傳來的數(shù)據(jù),轉(zhuǎn)發(fā)給所有客戶端。當(dāng)然針對(duì)用戶的不同請(qǐng)求,服務(wù)器會(huì)有不同的響應(yīng)。這其中就用到了多線程技術(shù)。然后,對(duì)于客戶端程序必須知道服務(wù)端計(jì)算機(jī)名或其IP地址(Remote Host屬性),以及服務(wù)端監(jiān)聽端口(PORT屬性)然后啟動(dòng)線程建立連接。任何客戶端一方都可以發(fā)送信息給服務(wù)器.也可以接收對(duì)方數(shù)據(jù)。其中在客戶端,用一個(gè)繼承了Thread的內(nèi)部類的run中方法就可以獲得傳送來的數(shù)據(jù)。在
27、客戶端與服務(wù)器端的信息交互過程中,主要的技術(shù)就是Socket網(wǎng)絡(luò)編程技術(shù),其中,為了封裝信息,用到了序列化與反序列化的技術(shù),即用對(duì)象流來實(shí)現(xiàn)通信。這樣會(huì)比較的方便,通過設(shè)置對(duì)象里的類型,以區(qū)分不同的客戶請(qǐng)求,還有服務(wù)器發(fā)的不同信息。1.3理論依據(jù)和主要功能本次課程設(shè)計(jì)主要理論依據(jù)就是面向?qū)ο蠓椒▽W(xué)。用面向?qū)ο蟮乃枷雭碓O(shè)計(jì)整個(gè)系統(tǒng),這其中設(shè)計(jì)到j(luò)ava設(shè)計(jì)模式,迭代式的開發(fā)模型,數(shù)據(jù)結(jié)構(gòu)等理論知識(shí)。本次設(shè)計(jì)雖然沒有使用數(shù)據(jù)庫,但是在需求分析階段,還是通過E-R圖來分析了系統(tǒng)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),并且抽象出公共的數(shù)據(jù)類型。系統(tǒng)的主要功能除了用戶注冊(cè),登陸,聊天以外,還有群聊,查找好友,添加好友,更新用戶
28、信息等。1.4意義21世紀(jì)是信息的時(shí)代,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,信息在傳遞方面也有了嶄新的一面?,F(xiàn)今聊天軟件成為信息傳遞最為廣泛的應(yīng)用工具,它發(fā)揮了即時(shí)性通信的特點(diǎn),可以讓用戶在第一時(shí)間內(nèi)得到信息的交流,它不僅可以讓用戶進(jìn)行文字聊天,而且還增添語音、視頻功能。這樣可以讓網(wǎng)上的好友身臨其境的面對(duì)面的聊天,讓彼此之間更為深入的了解。人性化的設(shè)計(jì)讓每個(gè)用戶都可以得心應(yīng)手的使用,從而獲得更多人的青睞。Internet的出現(xiàn)連通了整個(gè)世界,而聊天軟件的出現(xiàn)則連通了每一位網(wǎng)上的用戶。隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,聊天軟件已經(jīng)成為最熱門的網(wǎng)絡(luò)應(yīng)用之一。經(jīng)歷了近幾年突飛猛進(jìn)的發(fā)展之后,即時(shí)通訊工具早已不再是簡(jiǎn)單的互聯(lián)網(wǎng)通
29、訊工具,它已經(jīng)成為一個(gè)集互動(dòng)交流、休閑娛樂、信息管理為一體的多元化互聯(lián)網(wǎng)應(yīng)用平臺(tái)??傊奶燔浖某霈F(xiàn)給人們彼此之間的溝通帶來了無比的方便,人們可以通過聊天軟件建立深刻的友情,讓人們?cè)诨ヂ?lián)網(wǎng)上的交流更加充滿活力與生機(jī)。再者,通過本次課程設(shè)計(jì),是對(duì)自己大學(xué)三年來所學(xué)東西的一個(gè)綜合檢驗(yàn),因?yàn)檫@次課程設(shè)計(jì)確實(shí)包含了許多的內(nèi)容,設(shè)計(jì)到了幾年來學(xué)習(xí)的許多課程,當(dāng)然,最核心的還是面向?qū)ο蠓椒▽W(xué)的課程,通過這門課程的學(xué)習(xí),將面向?qū)ο蟮乃枷牍噍數(shù)搅四X中。通過這次課程設(shè)計(jì),將理論付諸實(shí)踐,是一個(gè)很好的提升自己能力的過程。第二章 需求分析2.1 可行性分析 經(jīng)濟(jì)可行性:本次系統(tǒng)的設(shè)計(jì)背景是學(xué)期末的綜合課程設(shè)計(jì),所
30、以并沒有考慮市場(chǎng)的經(jīng)濟(jì)效應(yīng)與開發(fā)投入,主要是以提升自己的專業(yè)能力為目的,需要的只是一臺(tái)能運(yùn)行java程序的電腦。所以經(jīng)濟(jì)上是可行的。技術(shù)可行性:該系統(tǒng)的設(shè)計(jì)是在我學(xué)習(xí)了面向?qū)ο蠓椒▽W(xué),java設(shè)計(jì)模式,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò),人機(jī)交互等理論知識(shí)之后開展的,加上平時(shí)的上機(jī)實(shí)驗(yàn),已經(jīng)具備了開發(fā)一個(gè)簡(jiǎn)單聊天系統(tǒng)的能力和技術(shù)。所以技術(shù)上是可行的。操作可行性:本次系統(tǒng)設(shè)計(jì)是在軟件工程專業(yè)機(jī)房進(jìn)行的,環(huán)境是比較舒適的,然后機(jī)房還連接了互聯(lián)網(wǎng),供我們查閱治療,開發(fā)平臺(tái)為windows XP,加上eclipse的開發(fā)工具,JDK已經(jīng)安裝好,整個(gè)開發(fā)平臺(tái),從需求分析到最后的測(cè)試都已經(jīng)搭建好,所以
31、在操作上是可行的。2.2 基本功能需求首先進(jìn)行參與者分析,本次系統(tǒng)的參與者有兩大部分,即客戶和系統(tǒng)管理員。參與者列表如下:表 2-1參與者編號(hào)參與者名稱參與者描述參與者間關(guān)系與用例的關(guān)系M1Person未注冊(cè)的用戶M2的父類注冊(cè)M2User已注冊(cè)的用戶M1的子類登錄聊天M3Administer系統(tǒng)管理員無直接關(guān)系管理用戶在分析了參與者之后,就可以確定系統(tǒng)的邊界了,然后設(shè)計(jì)出用例列表,因?yàn)楸鞠到y(tǒng)的開發(fā)是用用例驅(qū)動(dòng)的。用例之間有三種關(guān)系:特殊化、包含和擴(kuò)展。這些關(guān)系可以組合相關(guān)的用例,分解大的用例,重用行為,指定可選的行為。用例表如表2-2所示:表 2-2用例編號(hào)用例名稱用例描述用例關(guān)系是否為抽象
32、用例U1Register新用戶注冊(cè)包含U5、U6、U7,U4是其擴(kuò)展否U2Login注冊(cè)用戶登錄U3是其擴(kuò)展否U3Chat聊天是U2的擴(kuò)展否U4Initial初始化U1和U8是其擴(kuò)展否U5CheckInfo檢查注冊(cè)信息是否合法被U1包含否U6WriteInfo將注冊(cè)信息寫到文件被U1包含否U7SaveInfo保存用戶信息被U1包含否U8OpenServer開啟服務(wù)器被U4包含否 通過上面的分析,畫出用例圖,8個(gè)用例中,與可疑用用戶即注冊(cè)者有關(guān)的有一個(gè)用例,與用戶有關(guān)的有一個(gè)用例,與系統(tǒng)管理員有關(guān)的用例有三個(gè)。當(dāng)然有些小的用例并沒有畫上去,主要是一些大的功能模塊的用例。如圖2.1。圖 2.1 系
33、統(tǒng)用例圖該系統(tǒng)中共包括8個(gè)大的用例,詳細(xì)的用例列表如下:U1:register表2-3 注冊(cè)用例細(xì)節(jié)列表用例編號(hào):U1用例名稱:Register前置條件:無步 驟:1、用戶選擇注冊(cè)類型(User或VipUser) 2、填寫注冊(cè)信息后置條件:系統(tǒng)調(diào)用注冊(cè)驗(yàn)證模塊檢查注冊(cè)信息是否符合要求異常處理:a1、如果用戶名已存在,Ichat會(huì)提示并要求重新填寫 a2、如果注冊(cè)信息符合要求,則在保存后成功完成注冊(cè)U2:login表 2-4 登陸用例細(xì)節(jié)列表用例編號(hào):U2用例名稱:Login前置條件:用戶成功注冊(cè)步 驟:1、用戶輸入用戶名2、用戶輸入密碼3、選擇“登陸”(登陸界面有兩個(gè)按鈕“登陸”和“注冊(cè)”,選
34、擇注冊(cè)進(jìn)入注冊(cè)界面)后置條件:系統(tǒng)調(diào)用登陸驗(yàn)證模塊檢查登陸信息異常處理:a1、如果用戶名不存在,則提示用戶先注冊(cè) a2、如果用戶名存在但密碼不匹配,則提示用戶密碼錯(cuò)誤 a3、如果用戶名和密碼都正確,則成功登陸Ichat系統(tǒng)U3:chat表 2-5 聊天用例細(xì)節(jié)列表用例編號(hào):U8用例名稱:chat前置條件: 用戶已登錄步 驟:獲得對(duì)方端口號(hào)或IP地址后置條件:無 異常處理:無U4:initial表 2-6 初始化用例細(xì)節(jié)列表用例編號(hào):U4用例名稱:initial前置條件:用戶注冊(cè)步 驟:1、用戶注冊(cè) 2、用戶信息初始化后置條件:服務(wù)器已經(jīng)打開異常處理: 無U5: checkInfo表 2-7 檢
35、查用戶信息用例細(xì)節(jié)列表用例編號(hào):U5用例名稱:checkInfo前置條件:用戶注冊(cè)步 驟:1、檢查新注冊(cè)的用戶名是否存在2、已存在則提示并要求重新填寫3、注冊(cè)信息成功通過驗(yàn)證后置條件:注冊(cè)成功 異常處理:無 U6: writeInfo表 2-8 寫信息用例細(xì)節(jié)列表用例編號(hào):U5用例名稱:writeInfo前置條件:用戶注冊(cè)成功步 驟:將用戶注冊(cè)信息寫入文件中后置條件:無 異常處理: 寫入文件異常,給出錯(cuò)誤提示U7: saveInfo表 2-9 保存信息用例細(xì)節(jié)列表用例編號(hào):U6用例名稱:saveInfo前置條件:已填入的注冊(cè)信息通過驗(yàn)證步 驟:1、選擇“保存”,界面中各文本框進(jìn)入不可寫狀態(tài)2、
36、選擇“確認(rèn)注冊(cè)”,系統(tǒng)將注冊(cè)信息存入數(shù)據(jù)庫中3、提示新用戶注冊(cè)成功后置條件:無異常處理: 無U8:OpenServer表 2-10 打開服務(wù)器用例細(xì)節(jié)列表用例編號(hào):U8用例名稱:OpenServer前置條件:初始化 步 驟:1、初始化 2、連接至服務(wù)器后置條件:無 異常處理:如果服務(wù)器連接失敗,重新連接第三章 系統(tǒng)設(shè)計(jì)3.1主要功能設(shè)計(jì)首先服務(wù)器端是該系統(tǒng)的核心功能模塊,是首先要考慮的,服務(wù)器主要是監(jiān)聽用戶的行為,響應(yīng)用戶的請(qǐng)求,為用戶提供服務(wù)。他的功能模塊包括系統(tǒng)服務(wù),系統(tǒng)配置,用戶管理,在線用戶,顯示日志等功能。其中最核心的功能模塊式系統(tǒng)服務(wù),它上面負(fù)責(zé)處理客戶不同信息類型的請(qǐng)求,并且在面
37、板上顯示操作的記錄以及用戶的一些行為,方便系統(tǒng)管理員進(jìn)行管理,而其他面板主要負(fù)責(zé)一些顯示工作,當(dāng)然用戶的管理一些功能還未實(shí)現(xiàn),只能進(jìn)行查看。然后是對(duì)于客戶端的設(shè)計(jì),客戶端包括三大界面,也對(duì)應(yīng)這三大功能,即登陸界面,主界面,聊天界面。其中,登陸界面對(duì)應(yīng)的功能有用戶登陸與注冊(cè),主界面里可以查找添加好友,然后進(jìn)入聊天面板,在聊天界面主要是用戶之間的信息交流,這些信息的交換都是由服務(wù)器支撐的。最后畫出系統(tǒng)功能模塊圖:簡(jiǎn)單QQ聊天系統(tǒng)客戶端服務(wù)器端注冊(cè)登陸查找好友添加好友聊天系統(tǒng)服務(wù)系統(tǒng)配置用戶管理顯示日志圖 3.1 系統(tǒng)功能模塊圖3.2系統(tǒng)類圖設(shè)計(jì)本系統(tǒng)主要的類就是ServicePane和Regist
38、erPane、Mainpane,他們實(shí)現(xiàn)了系統(tǒng)的主要的功能,并且他們之間的信息交互時(shí)最多的,當(dāng)然其中設(shè)計(jì)到一些抽象的類,比如對(duì)與用戶數(shù)據(jù)的封裝,有一個(gè)具有全面信息的User,還有封裝好友信息的類FriendUser,封裝注冊(cè)信息的RegUser,用戶登陸信息封裝為L(zhǎng)oginUer等。ServicePane主要負(fù)責(zé)服務(wù)器端的功能,RegisterPane負(fù)責(zé)用戶的注冊(cè),Mainpane主要負(fù)責(zé)用戶管理自己的好友,包括查找和添加好友以及和好友聊天等。這個(gè)三個(gè)類涉及到的類共同組成了該系統(tǒng)。系統(tǒng)的類圖如圖3.2所示。圖 3.2 系統(tǒng)類圖3.3系統(tǒng)順序圖在系統(tǒng)的實(shí)現(xiàn)中,和服務(wù)的信息交互主要集中在用戶登陸
39、與注冊(cè)上面,而且這一塊對(duì)多線程操作和對(duì)象流的操作要求比較高,所以主要畫著兩個(gè)功能的順序圖,如圖3.3和3.4。圖 3.3 注冊(cè)順序圖圖 3.4 登陸順序圖在注冊(cè)順序圖中,用戶通過提交注冊(cè)信息,觸發(fā)系統(tǒng)的Socket監(jiān)聽,從而系統(tǒng)會(huì)為每一個(gè)用戶開啟一個(gè)線程,來處理用戶的注冊(cè)事件,當(dāng)然這個(gè)線程不會(huì)消亡,知道用戶下線。如果用戶提交的信息正確,那么服務(wù)器會(huì)調(diào)用dealRegister方法來為客戶生成QQ號(hào)和ID號(hào),并且將用戶的信息寫到文件中。然后會(huì)將注冊(cè)信息寫到對(duì)象輸出流中,發(fā)給客戶端。在登陸的順序圖中,也是客戶端向服務(wù)器提出請(qǐng)求,服務(wù)器為客戶端開啟單獨(dú)的線程來處理這個(gè)請(qǐng)求。在這個(gè)過程中,服務(wù)器會(huì)便利
40、客戶存儲(chǔ)信息的文件夾,查看是否存在這個(gè)用戶,并且檢查密碼是否正確,不管是否正確,服務(wù)器都會(huì)通過對(duì)象流將一個(gè)JQMessage的打包信息發(fā)給客戶端,客戶端接受后,也會(huì)根據(jù)數(shù)據(jù)的類型(JQMessage的一個(gè)屬性值)來判斷是否登錄成功,如果是,則會(huì)出事化一個(gè)MainPnae,并且加載用戶的信息,包括好友列表等。若登錄信息錯(cuò)誤,則會(huì)提示用戶。3.4 系統(tǒng)部署圖 系統(tǒng)的部署圖主要體現(xiàn)的是系統(tǒng)的構(gòu)架,本系統(tǒng)采用C/S架構(gòu)。所以部署圖如下:圖 3.5 系統(tǒng)部署圖第四章 詳細(xì)設(shè)計(jì)4.1系統(tǒng)程序流程設(shè)計(jì)通過系統(tǒng)的需求分析與系統(tǒng)設(shè)計(jì),可以得到整個(gè)系統(tǒng)的流程圖,對(duì)于這個(gè)系統(tǒng),可以分為聊天前的準(zhǔn)備工作,與用戶自己的
41、操作,這樣可以將系統(tǒng)的流程分為三個(gè)部分,一個(gè)是注冊(cè)登錄,一個(gè)是查找添加好友,一個(gè)是好友之間的聊天流程。如圖4.1,4.2,4.3。圖 4.1 注冊(cè)登陸流程圖圖 4.2 查找添加好友流程圖 圖 4.3 聊天流程 對(duì)于注冊(cè)與登錄,如果用戶注冊(cè)成功,是可以直接跳到主面板的,這樣為用戶帶來了極大的方便,如果不成功,那個(gè)用戶也可以再次注冊(cè)。然后對(duì)于查找好友與聊天,關(guān)鍵的條件就在于是否有在線用戶或者是在線好友,只有添加了好友,才能和他聊天。4.2 服務(wù)器端功能實(shí)現(xiàn)服務(wù)器端主要由幾個(gè)面板組成,其中JQServer啟動(dòng)服務(wù)器的界面并且添加設(shè)置字體,然后由Server來加載具體的面板,這些面板采用網(wǎng)格布局的形式
42、,其中包括系統(tǒng)服務(wù)、系統(tǒng)配置、用戶管理、在線用戶、日志管理5個(gè)面板,將這5個(gè)面板分裝為不同的類,因?yàn)樗麄儗?shí)現(xiàn)的是不同的功能。最后實(shí)現(xiàn)效果如圖4.4。圖 4.4 系統(tǒng)服務(wù)面板在ServerPane中,它實(shí)際上也是一個(gè)線程,繼承了Thread,在它的run方法中有一個(gè)死循環(huán),用來監(jiān)聽用戶的請(qǐng)求,一旦有客戶向它提出請(qǐng)求,他都會(huì)開啟一個(gè)ClientLink來處理這個(gè)用戶的所有不同類型的請(qǐng)求。主要實(shí)現(xiàn)代碼如下:public void run() /這整個(gè)類的run方法,不斷監(jiān)聽是否有新用戶連接while(isServiceRun)try Socket client = ss.accept();/收到了一
43、個(gè)用戶的socket,為每個(gè)用戶開啟一個(gè)線程new Thread(new ClientLink(client).start(); catch (IOException e) e.printStackTrace(); 這個(gè)方法中的ClientLink,是一個(gè)內(nèi)部類,他的作用就是處理用戶不同請(qǐng)求,然后返回用戶所需要的信息,其中有處理用戶注冊(cè)的dealRegister方法,有處理用戶登陸的dealLogin方法,有返回在線用戶數(shù)的dealFindOnlineUserNum方法,有返回已經(jīng)注冊(cè)用戶詳細(xì)信息的dealFindOnlineUser方法,當(dāng)然還有響應(yīng)添加好友的dealAddUser方法。這些
44、方法執(zhí)行完之后,服務(wù)器都會(huì)給客戶端反饋信息,即使操作執(zhí)行失敗。這個(gè)功能主要是由ClientWrite這個(gè)線程完成的。它的實(shí)現(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ā)給客戶端時(shí)發(fā)生異常!");writeSysLog("向客戶端"+clientlink.getClientIP()+"發(fā)生消息時(shí)發(fā)生異常!");e.printStackTrace(); 然后,服務(wù)器還有一個(gè)很重要的功能就是管理保存用戶信息,這也是在需求分析中考慮到了的
46、問題,由于本系統(tǒng)采用文件存儲(chǔ)用戶信息,所以主要是IO流的操作,在當(dāng)前的項(xiàng)目下,建立一個(gè)logs文件夾來存放用戶的所有信息。當(dāng)然有對(duì)應(yīng)的類;來實(shí)現(xiàn)這個(gè)功能,它就是RegisterDaoFile類,這個(gè)類不僅有寫用戶信息的功能,而且可以查找用戶,更新用戶和刪除用戶,由于這個(gè)類很關(guān)鍵,所有將其主要代碼附屬如下:import java.io.*;import data.*;/定義一個(gè)文件夾,里面每一個(gè).dat文件都是一個(gè)用戶的相關(guān)信息public class RegisterDaoFile implements DAO<User,Integer> private String path =
47、 "logs"private String suffName = ".dat"/注冊(cè)之后添加一個(gè)用戶的信息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)注冊(cè)了文件的qq
48、號(hào)就不需要再生成文件了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號(hào)查找文件中對(duì)應(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;從文件讀取用戶信息時(shí)出錯(cuò)!");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 客戶端功能實(shí)現(xiàn)客戶端的功能主要在注冊(cè),登陸,查找添加添加好友,還有聊天功能上面,而注冊(cè)與登陸大部分功能處理在服務(wù)器端,所以客戶端的功能實(shí)現(xiàn)主要集中在主面板MainPane上面,還有聊天面板ChatPane。4.3.1 注冊(cè)和登陸實(shí)現(xiàn)對(duì)于注冊(cè),客戶端的功能就是收集用戶輸入的信息,然后向服務(wù)器發(fā)出請(qǐng)求,即將信息封裝到對(duì)象中,然后用輸出流發(fā)給服務(wù)器。它的活動(dòng)圖如圖4.5圖 4.5 注冊(cè)活動(dòng)圖 通過活動(dòng)圖,可以清楚的分清楚系統(tǒng)的看出服務(wù)器和客戶交互信息的邊界,以及它們之間交互信息的先后次序,首先是客戶提交注冊(cè)信息,然后服務(wù)器端處理,在程序的實(shí)現(xiàn)中,這兩個(gè)過程對(duì)應(yīng)著客戶端用ObjectOutputStream向服務(wù)器寫信息,然后服務(wù)器用ObjectInputStream讀取客戶端發(fā)來的信息,然后通過case語句判斷用戶是什么請(qǐng)求,然后服務(wù)器再向客戶端寫信息,客戶端也通過相同的方式處理服務(wù)器發(fā)來的消息??蛻舳藢?shí)現(xiàn)代碼如下:/構(gòu)造方法public RegNewUser()try client = new Socket(txtServerIP.getText(),Integer.parseInt(tx
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技能提升與晉升培訓(xùn)合同(2篇)
- 承包木炭包生產(chǎn)銷售合同(2篇)
- 2025年度私募基金持股合同協(xié)議書4篇
- 二零二五年度醫(yī)院與急診科醫(yī)生簽訂的勞動(dòng)合同3篇
- 2025年度外墻保溫工程安全質(zhì)量監(jiān)理合同4篇
- 2025年度農(nóng)田灌溉自動(dòng)化設(shè)備采購合同4篇
- 2025版城市地下綜合管廊租賃合同范本4篇
- 2025年生態(tài)住宅幕墻勞務(wù)分包合同(綠色住宅社區(qū))6篇
- 2025年度室內(nèi)空氣凈化與裝修改造合同范本2篇
- 2025年個(gè)人二手房買賣合同模板(帶家具家電)
- 2024年供應(yīng)鏈安全培訓(xùn):深入剖析與應(yīng)用
- 飛鼠養(yǎng)殖技術(shù)指導(dǎo)
- 壞死性筋膜炎
- 整式的加減單元測(cè)試題6套
- 股權(quán)架構(gòu)完整
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 注塑部質(zhì)量控制標(biāo)準(zhǔn)全套
- 人教A版高中數(shù)學(xué)選擇性必修第一冊(cè)第二章直線和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 銀行網(wǎng)點(diǎn)服務(wù)禮儀標(biāo)準(zhǔn)培訓(xùn)課件
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 晶體三極管資料
評(píng)論
0/150
提交評(píng)論