版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本科畢業(yè)論文(設(shè)計(jì))題 目 高校局域網(wǎng)聊天室系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 院(系) 計(jì)算機(jī)與信息工程學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生姓名 周 后 偉 學(xué) 號(hào) 10012131 指導(dǎo)教師 許榮泉 職稱 講 師 論文字?jǐn)?shù) 10341 完成日期: 2014 年 5 月 25 日巢湖學(xué)院本科畢業(yè)論文(設(shè)計(jì))誠(chéng)信承諾書本人鄭重聲明:所呈交的本科畢業(yè)論文(設(shè)計(jì)),是本人在導(dǎo)師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律結(jié)果由本人承擔(dān)。本人簽名:日
2、期:巢湖學(xué)院本科畢業(yè)論文 (設(shè)計(jì))使用授權(quán)說明本人完全了解巢湖學(xué)院有關(guān)收集、保留和使用畢業(yè)論文 (設(shè)計(jì))的規(guī)定,即:本科生在校期間進(jìn)行畢業(yè)論文(設(shè)計(jì))工作的知識(shí)產(chǎn)權(quán)單位屬巢湖學(xué)院。學(xué)校根據(jù)需要,有權(quán)保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許畢業(yè)論文 (設(shè)計(jì))被查閱和借閱;學(xué)??梢詫厴I(yè)論文(設(shè)計(jì))的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編畢業(yè),并且本人電子文檔和紙質(zhì)論文的內(nèi)容相一致。保密的畢業(yè)論文(設(shè)計(jì))在解密后遵守此規(guī)定。本人簽名:日期:導(dǎo)師簽名:日期:II摘 要近年,隨著全球信息化程度的加深,局域網(wǎng)的發(fā)展也同樣迅速,很多政府機(jī)構(gòu)、企業(yè)
3、、學(xué)校,最先都是以一個(gè)統(tǒng)一的局域網(wǎng)聯(lián)結(jié)在一起,再接入INTERNET。為了越來越高效、快捷地處理各種內(nèi)部事務(wù),公司對(duì)于使用局域網(wǎng)來進(jìn)行工作提出了越來越迫切的要求。并且出于安全考慮,機(jī)構(gòu)內(nèi)部也需要構(gòu)建一種聊天機(jī)制,以便于內(nèi)部的人員信息交流與文件的傳輸。 本系統(tǒng)通過Java的網(wǎng)絡(luò)編程實(shí)現(xiàn)了一個(gè)基于局域網(wǎng)的聊天室系統(tǒng)。該局域網(wǎng)聊天室采用客戶端/服務(wù)器(C/S)模式,運(yùn)用了Java的socket技術(shù),JDBC等技術(shù)。本系統(tǒng)基本上具有聊天軟件的大多數(shù)功能,如注冊(cè)帳號(hào)、多帳號(hào)登錄、離線發(fā)消息等。關(guān)鍵字:高校局域網(wǎng)聊天室系統(tǒng);TCP/IP ;Java;MysqlAbstractIn recent years
4、, with the degree of global information, the development of local area network (LAN) is also quickly. Many government agencies, enterprises, schools, the first is based on a unified together, local area network (LAN) connection to access the INTERNET. In order to more and more efficient, fast to dea
5、l with all kinds of internal affairs, the company for the use of local area network (LAN) to work has become more and more urgent requirements are put forward. And for security reasons, internal agency also needs to build a chat mechanism, so that the internal personnel information exchange and tran
6、smission of files.The system through the Java network programming implements a system based on LAN chat room. The LAN chat room adopts client/server (C/S) model, using the Java socket technology, such as JDBC technology. This system basically has the function of most of chat software, such as regist
7、ered account, account login, offline messages, etc.Keywords:Universities LAN chat room system ;TCP/IP ;Java ; Mysql目 錄第1章緒論11.1系統(tǒng)開發(fā)背景11.2 系統(tǒng)開發(fā)目標(biāo)11.3 開發(fā)工具和開發(fā)環(huán)境11.3.1 MyEclipse 201311.3.2 MySql21.3.3 Navicat for MySql21.3.4 JDK(Java Development Kit)2第2章系統(tǒng)分析32.1 需求分析32.2 可行性研究32.2.1 經(jīng)濟(jì)可行性32.2.2 技術(shù)可行性32
8、.2.3 操作可行性42.3 系統(tǒng)功能分析4第3章系統(tǒng)總體設(shè)計(jì)63.1 系統(tǒng)總體結(jié)構(gòu)模型63.2 數(shù)據(jù)庫設(shè)計(jì)73.3 界面設(shè)計(jì)9第4章系統(tǒng)實(shí)現(xiàn)114.1 服務(wù)器模塊114.1.1 監(jiān)聽模塊114.1.2與客戶端連接的模塊124.2客戶端模塊124.2.1注冊(cè)模塊124.2.2登錄模塊134.2.3主界面模塊134.2.4聊天模塊14第5章系統(tǒng)測(cè)試與維護(hù)175.1 系統(tǒng)功能測(cè)試175.1.1登錄功能測(cè)試175.1.2主界面功能測(cè)試175.2 系統(tǒng)維護(hù)18第6章結(jié)論與展望196.1 系統(tǒng)總結(jié)196.2 前景展望19參考文獻(xiàn)20巢湖學(xué)院2014屆本科畢業(yè)論文(設(shè)計(jì))第1章緒論1.1系統(tǒng)開發(fā)背景局域網(wǎng)
9、聊天軟件,簡(jiǎn)稱LCS(LAN chat software),是一種面向企業(yè)局域網(wǎng)終端用戶的網(wǎng)絡(luò)交流服務(wù)工具。當(dāng)前,中國(guó)市場(chǎng)上的局域網(wǎng)聊天軟件主要有:騰訊RTX、IBM的LotusSametime、通軟聯(lián)合的GOCom、偉我、中國(guó)贏通匯訊WiseIC等。局域網(wǎng)聊天軟件不僅僅只是一個(gè)聊天工具,它已發(fā)展成為一個(gè)綜合化的信息平臺(tái),包括娛樂、搜索、資訊、交流、辦公協(xié)作、客戶服務(wù)等等。局域網(wǎng)聊天的一大特色在于即時(shí)性,它為企業(yè)內(nèi)部的實(shí)時(shí)協(xié)作和即時(shí)溝通提供了可能,建立起員工交流的平臺(tái)。不僅如此,它大大加深了人們之間的聯(lián)系,從普通的文字聊天,到語音、視頻聊天,到兩人私聊,到廣播聊天。1.2 系統(tǒng)開發(fā)目標(biāo)作為聊天
10、工具,最基本的就能進(jìn)行基本的文字交流。但我們要給客戶最大的自由,能讓客戶在任何聯(lián)網(wǎng)的時(shí)候發(fā)送消息。這就需要軟件實(shí)現(xiàn)對(duì)離線客戶消息的存儲(chǔ)并在客戶上線 時(shí)及時(shí)轉(zhuǎn)發(fā)。為了增加聊天時(shí)的樂趣,我還想添加發(fā)送表情,消息發(fā)送的音效,以及提示消息的頭像閃爍等功能。同時(shí)為提高軟件的實(shí)用性,我還想增加一些圖片、文件傳輸?shù)墓δ?。但是事?shí)上我最終僅僅實(shí)現(xiàn)了其中的小部分功能,比較遺憾。1.3 開發(fā)工具和開發(fā)環(huán)境1.3.1 MyEclipse 2013MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipseEnterprise Workbench ,簡(jiǎn)稱MyEclipse)是對(duì)EclipseIDE的擴(kuò)展,是一個(gè)非常優(yōu)秀的Ec
11、lipse插件集合。使用MyEclipse我們可以更方便高效的來進(jìn)行軟件的開發(fā)。它的功能十分豐富,具有編碼、測(cè)試、調(diào)試及發(fā)布功能。MyEclipse支持大多數(shù)開源產(chǎn)品,如JDBC,Java Servlet,AJAX,EJB3,JSP 等。它的快捷鍵設(shè)計(jì)也十分合理,特別是Alt+?的幫助提示快捷鍵,僅此一個(gè)快捷鍵就能成倍提高編碼的速度。1.3.2 MySqlMySQL目前屬于Oracle公司,是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。MySQL所使用的是訪問數(shù)據(jù)庫的常用標(biāo)準(zhǔn)化SQL語言語言。大多中小型網(wǎng)站的開發(fā)都會(huì)去使用MySQL去進(jìn)行網(wǎng)站的開發(fā)。因?yàn)樗纳鐓^(qū)版的性能良好,和PHP、Apache一起可以非常方
12、便的開發(fā)出高質(zhì)量的網(wǎng)站。MySQL占用體積小、速度辦快,特別是它放源碼,大大減少了開發(fā)成本。雖然與大型的數(shù)據(jù)庫相比,MySQL有許多不足。但是一般的中小型的企業(yè)對(duì)于數(shù)據(jù)庫的需求它應(yīng)付起來會(huì)游刃有余。1.3.3 Navicat for MySqlNavicat是專為數(shù)據(jù)庫管理而設(shè)的,它的設(shè)計(jì)既符合數(shù)據(jù)庫管理員,又符合開發(fā)人員。而且它能以單一的程序同時(shí)連接到多個(gè)不同的數(shù)據(jù)庫,使各個(gè)數(shù)據(jù)庫之間數(shù)據(jù)傳輸更加方便。Navicat for MySQL是基于Windows為MySQL量身打造的管理工具。它提供的圖形用戶界面讓用戶可以直觀地去追創(chuàng)建、存取、共享用組織數(shù)據(jù)。用戶還方便地對(duì)記錄進(jìn)行備份,跨數(shù)據(jù)庫的
13、數(shù)據(jù)移動(dòng),對(duì)用戶權(quán)限的進(jìn)行管理,瀏覽數(shù)據(jù)庫,表,記錄,建立、修改、刪除記錄,編寫或執(zhí)行SQL語句。1.3.4 JDK(Java Development Kit) Java最主要的貢獻(xiàn)過者是James Gosling,是Sun公司開發(fā)的一門語言?!癑ava”中文名是“爪哇”,這名字本是一個(gè)盛產(chǎn)咖啡的小島,James Gosling 決定以這個(gè)島名命名這門語言的寓意是為全世界人端上一杯咖啡。Java的最大特點(diǎn)就是它的跨平臺(tái)性3。JDK(Java Development Kit) 是 Java 軟件開發(fā)工具包(SDK),也是Java的核心,包括編譯器,Java工具,Java運(yùn)行環(huán)境(JRE,Java
14、 Runtime Environment),Java的基礎(chǔ)類庫。JDK主要有以下三個(gè)版本:Java SE,Java標(biāo)準(zhǔn)版。SE提供了標(biāo)準(zhǔn)的Java開發(fā)平臺(tái),使用SE可以開發(fā)桌面應(yīng)該程序,也可以是Java Applet。Java EE,Java企業(yè)版;用EE能構(gòu)建企業(yè)級(jí)的服務(wù)應(yīng)用。Java EE在Java SE的基礎(chǔ)上增加了交易管理、消息處理等功能。Java ME,Java 微型版。ME是一種非常小的Java運(yùn)行環(huán)境,這樣它就可以用于嵌入式的產(chǎn)品中。第2章系統(tǒng)分析2.1 需求分析高校局域網(wǎng)聊天室系統(tǒng)最主要的功能就是要讓在線的用戶能隨時(shí)地進(jìn)行文字聊天。但是對(duì)于那些發(fā)給不在線的用戶的消息我們也要為之
15、保存在服務(wù)器,并在用戶上線時(shí)及時(shí)的轉(zhuǎn)發(fā)給用戶。這樣就要用到數(shù)據(jù)庫,用來存儲(chǔ)、查找、取出離線用戶的數(shù)據(jù)。我們還要給每個(gè)用戶一個(gè)帳號(hào),這就需要系統(tǒng)提供注冊(cè)功能為注冊(cè)的用戶生成一個(gè)帳號(hào)。這樣本系統(tǒng)的主要活動(dòng)如下:(1) 開啟服務(wù)器,等待客戶端的連接。(2) 打開登錄界面,點(diǎn)擊注冊(cè)按鈕。(3) 輸入必要的信息,得到系統(tǒng)分配的帳號(hào)。(4) 返回登錄界面,用得到的帳號(hào)登錄。(5) 用戶好友登錄自動(dòng)更新列表。(6) 與好友進(jìn)行文字聊天。(7) 若好友不在線也可發(fā)送消息,當(dāng)好友上線時(shí)即可收到消息。2.2 可行性研究2.2.1 經(jīng)濟(jì)可行性從觀察本校的現(xiàn)況來看,整個(gè)校園的聯(lián)系主要是手機(jī)與廣域網(wǎng)的聊天工具。因此我校
16、確實(shí)需要建立一個(gè)校內(nèi)局域網(wǎng)的聊天軟件。這樣可以大大加強(qiáng)學(xué)生之間老師之間以及學(xué)生與老師之間的溝通,逐漸形成相互借鑒與討論的氛圍,提高了同學(xué)的學(xué)習(xí)效率與老師的工作效率。這樣平時(shí)教學(xué)過程中的會(huì)議通知,作業(yè)布置與上交,文件的傳輸與共享,問題的探討與解決,都無疑會(huì)更加方便快捷。如今同學(xué)老師大多都擁有自己的計(jì)算機(jī),校園的網(wǎng)絡(luò)也已鋪設(shè)好。雖然還需要一個(gè)服務(wù)器,以及以后的系統(tǒng)與設(shè)備維護(hù)費(fèi)用,但從長(zhǎng)遠(yuǎn)的角度看這個(gè)軟件所帶來的效益將會(huì)遠(yuǎn)遠(yuǎn)超過前期的支出。因此,本系統(tǒng)在在經(jīng)濟(jì)上是可行的1。2.2.2 技術(shù)可行性技術(shù)上的可行性,主要指軟硬件條件能否符合本系統(tǒng)的要求,現(xiàn)有的技術(shù)可不可以實(shí)現(xiàn)本軟件。本系統(tǒng)采用MySQL數(shù)
17、據(jù)庫作為服務(wù)器使用的數(shù)據(jù)庫,能適應(yīng)中小型數(shù)據(jù)訪問量的要求。若隨著學(xué)校的發(fā)展MySQL數(shù)據(jù)庫支撐不住也可更換大型的數(shù)據(jù)如Oracle數(shù)據(jù)庫。開發(fā)工具是MyEclipse2010,作為開源的Java集成開發(fā)環(huán)境深受大家的喜愛。MyEclipse界面直觀,操作簡(jiǎn)單,很容易上手。其功能也十分強(qiáng)大,完全可以開發(fā)出本系統(tǒng)。Java是現(xiàn)在很流行的面向?qū)ο蟮恼Z言,在校時(shí)經(jīng)學(xué)習(xí)的基礎(chǔ)內(nèi)容,在實(shí)習(xí)期間又在導(dǎo)師的指導(dǎo)下又做了一個(gè)小項(xiàng)目,受益很多。因此,對(duì)于開發(fā)這個(gè)局域網(wǎng)聊天軟件有上信心。整個(gè)系統(tǒng)的開發(fā)過程,主要依靠在網(wǎng)絡(luò)上搜索相關(guān)軟件的制作視頻,并補(bǔ)習(xí)了Java的基礎(chǔ)語法。對(duì)于遇到的問題,也在上網(wǎng)搜索解決方法以及查
18、閱資料下的逐個(gè)解決。2.2.3 操作可行性由于騰訊QQ等網(wǎng)絡(luò)聊天的工具的普及,現(xiàn)在人們對(duì)于聊天軟件的使用已經(jīng)駕輕就熟了。本系統(tǒng)的設(shè)計(jì)也是在參考現(xiàn)今的聊天軟件的操作習(xí)慣來設(shè)計(jì)的,所以人們不會(huì)對(duì)本軟件感到很陌生。其界面簡(jiǎn)單明了,而且在系統(tǒng)中也設(shè)有比較明顯的提示信息,用戶根據(jù)上面的提示將會(huì)很輕松地使用來進(jìn)行正常注冊(cè)、登錄及聊天。2.3 系統(tǒng)功能分析由上述的需求分析可以確定本系統(tǒng)的所需的分為四個(gè)功能模塊:?jiǎn)?dòng)服務(wù)器模塊,注冊(cè)模塊,登錄模塊,聊天模塊。1.啟動(dòng)服務(wù)器模塊在服務(wù)器的界面,點(diǎn)擊“啟動(dòng)服務(wù)器”按鈕,即啟動(dòng)了服務(wù)器。此時(shí),本系統(tǒng)的服務(wù)器模塊即開始運(yùn)行,監(jiān)測(cè)本機(jī)的上的特定端口,等待客戶端的連接。如
19、有客戶來連接,則首先判斷是否是合法用戶,若是則允許用戶正常登錄,若不是則拒絕登錄并返回提示信息。2. 注冊(cè)模塊注冊(cè)模塊中,用戶只需在填寫界面上的各項(xiàng)后點(diǎn)擊“提交”按鈕,即可完成注冊(cè)。這時(shí)面的提示區(qū)域會(huì)以紅字顯示你所的帳號(hào)及密碼,并請(qǐng)用戶記住。3.登錄模塊用戶只需填寫上正確的用戶名及密碼,點(diǎn)擊“登錄”后,即進(jìn)入到程序的界面。若用戶忘記了自己的密碼則填上帳號(hào)后,點(diǎn)擊“找回密碼”就會(huì)彈出提示窗口,上面將顯示服務(wù)器返回的正確密碼。若用戶是第一次使用本軟件,則可點(diǎn)擊“注冊(cè)用戶”按鈕,即轉(zhuǎn)到注冊(cè)界面。4.聊天模塊用戶在主界面中雙擊你想要的聊天的好友,即彈出聊天窗口。若頭像是灰色的則說明此好友此時(shí)不在線,你
20、發(fā)送的消息將會(huì)暫存在服務(wù)器。當(dāng)他下次登錄時(shí),會(huì)收到你的發(fā)送消息。若頭像是彩色的,則說明他當(dāng)前在線,你們可以正常的聊天。第3章系統(tǒng)總體設(shè)計(jì)3.1 系統(tǒng)總體結(jié)構(gòu)模型本系統(tǒng)是典型的客戶/服務(wù)器模式,因此形成以服務(wù)器為中心客戶端都與服務(wù)器連接的的星型結(jié)構(gòu),只有服務(wù)器與數(shù)據(jù)庫連接。如下圖:圖1 系統(tǒng)總體結(jié)構(gòu)模型本系統(tǒng)的使用很簡(jiǎn)潔,首先打開登錄窗口。若沒有帳號(hào),則點(diǎn)擊“注冊(cè)用戶”,填寫基本信息即可獲得你的帳號(hào)。在登錄界面輸入正確的帳號(hào)及密碼登錄后,即可打開聊天界面與好友聊天。系統(tǒng)的流程大致如下圖:使用本系統(tǒng)時(shí),用戶首先在登錄界面輸入正確的姓名與密碼,并選擇相對(duì)應(yīng)的權(quán)限,方可進(jìn)入相應(yīng)的功能模塊。系統(tǒng)流程圖如
21、下所示:N注冊(cè)聊天成功主界面登錄N用戶是否合法退出關(guān)閉Y結(jié)束圖2 系統(tǒng)流程圖3.2 數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)采用的數(shù)據(jù)庫是MySQL,在其中創(chuàng)建了一個(gè)名為aisay的數(shù)據(jù)庫,其中建立了三個(gè)表:1.消息表(aisay_message) ,2.用戶表(aisay_user), 3.用戶交換信息表(aisay_userexchange)。(1)消息表是用來暫時(shí)存放發(fā)給不在線用戶消息的表,它對(duì)應(yīng)系統(tǒng)中服務(wù)器端與客戶端交換的Message類。當(dāng)用戶上線時(shí)服務(wù)器就會(huì)去消息表中查找是否有好友發(fā)給該用戶消息,若有則全部查找出來轉(zhuǎn)發(fā)給該用戶并刪除表中的已轉(zhuǎn)發(fā)的消息12。表1 消息表(aisay_message)(2)用
22、戶表是用來保存所有已分配出去的用戶帳號(hào)及密碼的。當(dāng)用戶上線時(shí),服務(wù)器就去查詢用戶表,查看有無該用戶并核對(duì)密碼。若帳號(hào)密碼都正確則返回登錄成功的消息給客戶端,若不存在該帳號(hào)或密碼則返回相應(yīng)的消息。表2 用戶表(aisay_user)3.用戶交換信息表是用來保存與每個(gè)用戶對(duì)應(yīng)的用來交換的信息的表。此表是用來以后擴(kuò)展用的,比如可以存放用戶的說說,心情,文字的格式,頭像等信息。下圖是各個(gè)表的結(jié)構(gòu):表3 用戶交換表(aisay_userexchange)3.3界面設(shè)計(jì)軟件的界面就好比是人的一張臉,是給人第一印象。設(shè)計(jì)合理的的界面不僅能吸引用戶,而且還能引導(dǎo)用戶完成操作,這樣用戶就能輕松愉悅地使用軟件。而
23、糟糕的界面,則會(huì)使人產(chǎn)生煩悶失敗的感覺,一旦如此那么再好的功能也會(huì)被用戶放棄。好的界面要要到以下幾點(diǎn):1. 屏幕中心是用戶直視的地方,上方四分之一處是最吸引用戶注意的地方,所以把醒目的東西放在那4。2. 界面通常要按Windows界面的規(guī)范來設(shè)計(jì),即窗口中包含“菜單條、工具欄、狀態(tài)欄、滾動(dòng)條、右鍵快捷菜單”。3. 按鈕、標(biāo)題等用詞要準(zhǔn)確,見名知義。4. 界面大小要適合,讓你感覺協(xié)調(diào)舒適。本系統(tǒng)雖然并末做到以上的幾點(diǎn),但界面整體顯得還比較簡(jiǎn)潔合理。下面分開介紹本系統(tǒng)的各界面:1登錄界面用戶只須輸入正確的帳號(hào)和密碼,敲回車即可登錄。若什么都不輸入,或是輸入錯(cuò)誤的帳號(hào)、密碼,都會(huì)彈出提示窗口,顯示相
24、應(yīng)的提示信息。若點(diǎn)擊了注冊(cè)用戶按鈕將會(huì)彈出注冊(cè)用戶界面,若點(diǎn)擊找回密碼將會(huì)彈出窗口,顯示正確的密碼。圖3 登錄界面2.注冊(cè)界面在輸入框中輸入昵稱及密碼,點(diǎn)擊“提交“后,下方的顯示區(qū)將會(huì)顯示你所分配的帳號(hào)。若昵稱及密碼沒輸入,則會(huì)提示輸入相應(yīng)的信息3主界面同一臺(tái)計(jì)算機(jī)登錄多個(gè)帳號(hào),就會(huì)出現(xiàn)多個(gè)主界面。主界面中有好友、陌生人及黑名單三個(gè)列表,若頭像是灰色的則表明當(dāng)前好友不在線,若是彩色的則在線。雙擊任一好友頭像則可打開與其聊天的窗口。下方有一個(gè)“查找”按鈕和一個(gè)“主菜單”按鈕,這兩個(gè)按鈕目前還沒有任何作用。4.聊天界面在下方的輸入?yún)^(qū)域中可以輸入您想說的話,單擊“發(fā)送”或敲回車即可將消息發(fā)送給對(duì)方。
25、聊天信息的頭部有好友的帳號(hào)以及發(fā)送的時(shí)間。可以同時(shí)打開幾個(gè)聊天窗口與多個(gè)好友聊天。第4章 系統(tǒng)實(shí)現(xiàn)高校局域網(wǎng)聊天室系統(tǒng)以MySQL作為服務(wù)器的數(shù)據(jù)庫,以Java作為編程語言,由MyEclispe工具來實(shí)現(xiàn)軟件的開發(fā)。4.1 服務(wù)器模塊服務(wù)器端與客戶端的信息交流是根據(jù)定義不同的消息包來區(qū)分的。不同的情況、要求就用不同種類的消息包來表達(dá),服務(wù)器端就根據(jù)不同的消息包來進(jìn)行不同的處理。服務(wù)器端面要完成的功能較多,等待客戶端的連接請(qǐng)求,正確轉(zhuǎn)發(fā)客戶端發(fā)送的消息,及時(shí)處理客戶端的各種請(qǐng)求,讀寫數(shù)據(jù)庫等等。下面分別介紹是如何實(shí)現(xiàn)的:4.1.1 監(jiān)聽模塊服務(wù)器端用類ServerSocket在特定的端口進(jìn)行監(jiān)聽
26、,調(diào)用accept()方法來獲取用戶的socket,并用socket的輸入輸出流與客戶端溝通,處理客戶端的連接請(qǐng)求。根據(jù)客戶端的三種消息來進(jìn)行不不同的處理。若收到登錄請(qǐng)求(login_request)消息,則根據(jù)其中內(nèi)容來對(duì)數(shù)據(jù)庫進(jìn)行查找,并根據(jù)查找結(jié)果返回給客戶端不同的登錄返回消息(login_response)。若在aisay_user表中查找不到該用戶就返回nouser消息,若有該用戶但密碼與數(shù)據(jù)庫中的不匹配則返回passworderror消息。收到的是注冊(cè)消息(register_resquest),則調(diào)用GenerateId類的generateId()方法生成一個(gè)末分配的帳號(hào)給客戶端1
27、5。如果收到的是找回密碼消息(findpassword),則根據(jù)消息中的帳號(hào)到數(shù)據(jù)庫中查找出對(duì)應(yīng)的密碼并返回給請(qǐng)求用戶。下面是監(jiān)聽模塊處理登錄消息的代碼:if (message.getMessagetype() = MessageType.login_request) UserDBudb = new UserDB();User usr = udb.findUserById(message.getSource();if ( usr = null) /不存在該用戶Message login_response = new Message(MessageType.login_response, ser
28、ver,nouser,nouser, new Timestamp(System.currentTimeMillis();ObjectOutputStreamoos = new ObjectOutputStream(acceptskt.getOutputStream();oos.writeObject(login_response);oos.close();ois.close();acceptskt.close();4.1.2與客戶端連接的模塊此模塊是用來與客戶端保持通訊的模塊,服務(wù)器為每個(gè)上線的客戶端新建一個(gè)通訊線程與它們交換消息5。此線程用來處理用戶上線后的種種請(qǐng)求,本系統(tǒng)有三個(gè)不同的請(qǐng)求:
29、聊天消息轉(zhuǎn)發(fā)(common)、線好友列表請(qǐng)求(onlinefriend_request)和下線請(qǐng)求(offline)。當(dāng)收到聊天消息時(shí),首先根據(jù)發(fā)送的目的地到ManageClientThread類中查詢?cè)撚脩羰欠裆暇€,若不在線則調(diào)用MessageDB中的addMessage()方法將該消息存儲(chǔ)在服務(wù)器端的aisay_message表中。若發(fā)送的用戶則立即利用socket中的對(duì)象輸出流將該消息轉(zhuǎn)發(fā)出去。當(dāng)接收的消息是在線好友請(qǐng)求時(shí),即將除了自己以外的所有在線用戶的帳號(hào)發(fā)送給請(qǐng)求用戶。(這里假設(shè)所有在線的用戶都互為好友)。然后再根據(jù)目的地到數(shù)據(jù)庫中查找是否有好友發(fā)送給該用戶消息,有則取出來將其發(fā)送
30、給該用戶,并將已轉(zhuǎn)發(fā)的消息從表中刪除。若收到的是下線請(qǐng)求,則調(diào)用notifyOffline()方法將下線消息發(fā)送給所有好友,通知下線11。然后關(guān)閉下線用戶的socket,并停止與好友通信的ServerClientThread線程。4.2客戶端模塊客戶端概括起來有兩大方面的任務(wù),一、取得用戶的請(qǐng)求,即通過界面與用戶形成交互。二、通過socket與服務(wù)器端通信,取得服務(wù)器端的服務(wù)6。下面分介紹本系統(tǒng)是如何實(shí)現(xiàn)的:4.2.1注冊(cè)模塊該模塊比較簡(jiǎn)單,只需通過注冊(cè)窗口獲得昵稱和密碼,然后將register_request請(qǐng)求發(fā)送給服務(wù)器,之后接收服務(wù)器發(fā)回的register_response消息即可10
31、。在register_response中有服務(wù)器分配的帳號(hào),將之顯示在界面下方的顯示區(qū)域即可。當(dāng)用戶輸入時(shí)要進(jìn)行必要的判斷,比如若用戶什么都不輸入即點(diǎn)擊“提交”按鈕,則顯示“請(qǐng)輸入昵稱及密碼!”信息,若輸入的密碼不一樣,則彈出窗口顯示“您兩次輸入的密碼不一樣,請(qǐng)重新輸入!”以引導(dǎo)用戶進(jìn)行正確的輸入。圖4注冊(cè)4.2.2登錄模塊這個(gè)模塊將用戶輸入的帳號(hào)及密碼打包成登錄請(qǐng)求消息(login_request)發(fā)送給服務(wù)器進(jìn)行難用戶的合法性,服務(wù)器根據(jù)login_request中內(nèi)容以及在數(shù)據(jù)庫中的查找結(jié)果來進(jìn)行判斷,根據(jù)不同的情況發(fā)送不同的消息給客戶端14。若根據(jù)成員變量source的值查找不到,則說
32、明此用戶不存在,因?yàn)榉祷亍皀ouser”的login_response的消息給請(qǐng)求用戶。若在aisay_user表中查到此用戶,但消息中的密碼與數(shù)據(jù)庫中的不一致,則返回passworderror消息9。若在界面點(diǎn)擊“注冊(cè)用戶”按鈕則打開注冊(cè)界面,若點(diǎn)擊了“找回密碼”則發(fā)送findpassword消息給服務(wù)器。而服務(wù)器發(fā)回的包含正確密碼的消息將顯示在彈出的窗口中。4.2.3主界面模塊這個(gè)界面可以查看你的好友、陌生人和黑名單。若想與某個(gè)好友聊天,雙擊對(duì)應(yīng)的頭像即會(huì)打開聊天窗口。在這個(gè)模塊中要處理各種不同的情況。若有好友上線,則點(diǎn)亮好友的頭像,并播放好友上線的音效,還要把好友的帳號(hào)添加到MainVi
33、ew中的list_onlinefriends列表中8。若有好友發(fā)送消息過來,則調(diào)用promptMessage()方法使對(duì)應(yīng)的好友頭像閃爍以提示用戶并暫存發(fā)來的消息到list_prompt_message列表中,當(dāng)用戶雙擊閃爍頭像查看消息時(shí),即停止閃爍并將list_prompt_message中的消息取出來顯示在聊天窗口中。下面是雙擊好友打開聊天窗口的部分代碼:public void mouseClicked(MouseEvent e) / TODO Auto-generated method stubsuper.mouseClicked(e);String friendid = (JLabel
34、) e.getSource().getText();if (e.getClickCount() = 2) / 判斷是不已有好友發(fā)送消息過來,如有顯示消息ChatView cv = new ChatView(usr.getId(), friendid);ManageChatView.addChatView(usr.getId() + + friendid, cv);/顯示好友發(fā)來的消息,并從list_prompt_message刪除暫存的消息for(inti = 0 ;ilist_prompt_message.size();i+)Message temp = list_prompt_messag
35、e.get(i);if(temp.getSource().equals(friendid);cv.showMessage(temp);list_prompt_message.remove(i);/如已在閃爍,停止閃爍if(list_prompt_flag.contains(friendid)hm_promptmessage_timertask.get(friendid).cancel();hm_promptmessage_timertask2.get(friendid).cancel();hm_promptmessage_timertask.remove(friendid); hm_promp
36、tmessage_timertask2.remove(friendid);list_prompt_flag.remove(friendid);hm_jlb.get(friendid).setBackground(Color.white);4.2.4聊天模塊該模塊要實(shí)現(xiàn)獲取用戶要發(fā)送的數(shù)據(jù),并發(fā)給服務(wù)器,讓其轉(zhuǎn)發(fā)給接收方。當(dāng)收到的消息時(shí)能正確的將其顯示在窗口中的顯示區(qū)域內(nèi),并播放收到消息的音效7。當(dāng)關(guān)閉窗口時(shí),要將刪除自己在ManageChatView類中hm_chatview表中相應(yīng)的登記數(shù)據(jù),以便當(dāng)再次收到消息時(shí),根據(jù)hm_chatview中內(nèi)容來分別做處理。圖5是本系統(tǒng)的聊天界面。下面的代
37、碼是處理用戶點(diǎn)擊“發(fā)送”按鈕或敲回車響應(yīng)的事件代碼:圖5 聊天界面public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif (JButton) e.getSource() = jbtn_send| (JTextPane) e.getSource() = jtp_edit) / 顯示消息到自己的屏幕String text = (JTextPane) jtp_edit).getText();Message com = new Message(MessageTmon, usrid, usrid,tex
38、t, new Timestamp(System.currentTimeMillis();showMessage(com);StyledDocumentshow_doc = jtp_show.getStyledDocument();show_doc.setCharacterAttributes(0, show_doc.getLength(), aSet,false);jtp_edit.setText();/ 好友在線,發(fā)送Common消息Message common = new Message();common.setMessagetype(MessageTmon);common.setSour
39、ce(usrid);common.setDestination(friendid);common.setContent(text);common.setSendtime(new Timestamp(System.currentTimeMillis();try ObjectOutputStreamoos = new ObjectOutputStream(ManageReceiveThread.getReceiveThread(usrid).getSkt().getOutputStream();oos.writeObject(common); catch (IOException e1) / TO
40、DO Auto-generated catch blocke1.printStackTrace();第5章 系統(tǒng)測(cè)試與維護(hù)5.1 系統(tǒng)功能測(cè)試軟件測(cè)試就是以較少用例、時(shí)間和人力發(fā)現(xiàn)程序中的錯(cuò)誤缺陷而執(zhí)行程序的過程,它軟件質(zhì)量密切相關(guān)。按測(cè)試方法來對(duì)軟件測(cè)試分類,可以分為白盒測(cè)試和黑盒測(cè)試。按測(cè)試目的來分類,則有功能測(cè)試、健壯性測(cè)試、接口測(cè)試、壓力測(cè)試、性能測(cè)試等等。功能測(cè)試主要根據(jù)產(chǎn)品需求說明書來進(jìn)行測(cè)試,驗(yàn)證軟件的功能能否符合要求,包括有無冗余功能,遺漏的功能等2。下面是用黑盒測(cè)試方法對(duì)本軟件的部分功能進(jìn)行的測(cè)試。測(cè)試的目的就是要盡可能找出本軟件的存在的潛在缺陷,讓系統(tǒng)在用戶在正確操作以及誤
41、操作下都能做出相應(yīng)的反應(yīng),提高系統(tǒng)的實(shí)用性。5.1.1登錄功能測(cè)試檢測(cè)登錄模塊的各個(gè)功能是否都能正常使用。是否能正確登錄,當(dāng)用戶不輸入信息或輸入不正確的信息系統(tǒng)能否都做出正確的回應(yīng)。表4 登錄模塊的測(cè)試結(jié)果序號(hào)測(cè)試子項(xiàng)執(zhí)行步驟預(yù)期結(jié)果實(shí)際結(jié)果1正確登錄測(cè)試輸入正確的帳號(hào)和密碼正常登錄同預(yù)期結(jié)果2錯(cuò)誤登錄測(cè)試輸入錯(cuò)誤的帳號(hào)和正確密碼提示無此用戶同預(yù)期結(jié)果3輸入正確的帳號(hào)和錯(cuò)誤的密碼提示密碼錯(cuò)誤同預(yù)期結(jié)果4不輸入任何信息提示輸入相應(yīng)信息同預(yù)期結(jié)果5注冊(cè)帳號(hào)測(cè)試點(diǎn)擊注冊(cè)帳號(hào)按鈕打開注冊(cè)窗口同預(yù)期結(jié)果6找回密碼測(cè)試點(diǎn)擊找回密碼按鈕顯示正確的密碼同預(yù)期結(jié)果5.1.2主界面功能測(cè)試點(diǎn)擊好友、陌生人及黑名單
42、按鈕是不能正確顯示好友列表,雙擊能否打開聊天窗口,有好友上下線時(shí)時(shí)頭像能否正確顯示,有好友發(fā)消息過來時(shí)頭像能否閃爍。表4 主界面模塊的測(cè)試結(jié)果序號(hào)測(cè)試子項(xiàng)執(zhí)行步驟預(yù)期結(jié)果實(shí)際結(jié)果1雙擊打開聊天窗口測(cè)試雙擊任一好友頭像打開聊天窗口同預(yù)期結(jié)果2好友上線測(cè)試登錄一個(gè)好友頭像自動(dòng)刷新,并有提示音同預(yù)期結(jié)果3好友下線測(cè)試關(guān)閉一個(gè)好友主界面,下線對(duì)應(yīng)好友頭像變灰同預(yù)期結(jié)果4好友發(fā)來消息頭像閃爍測(cè)試給一在線好友發(fā)消息頭像閃爍同預(yù)期結(jié)果5雙擊閃爍頭像測(cè)試雙擊閃爍的頭像停止閃爍,打開聊天窗口同預(yù)期結(jié)果5.2 系統(tǒng)維護(hù)軟件維護(hù)就是在系統(tǒng)使用后,為改正用戶發(fā)現(xiàn)的錯(cuò)誤及增加新功能刪除不需要功能的過程。具體地有四類維護(hù)活動(dòng)。(1)改正性維護(hù),即改正廣大用戶所發(fā)現(xiàn)的錯(cuò)誤。若本系統(tǒng)被投入使用后,我會(huì)增加一個(gè)反饋錯(cuò)誤模塊,讓用戶積極地對(duì)本系統(tǒng)出現(xiàn)的任何錯(cuò)誤提出自己的意見。根據(jù)用戶的反饋,盡快的解決錯(cuò)誤,滿足用戶的要求。(2)適應(yīng)性維護(hù),為了適應(yīng)變化的環(huán)境而進(jìn)行的對(duì)軟件的修改13??梢酝ㄟ^問卷調(diào)查、當(dāng)面訪問等方式對(duì)使用本軟件的用戶調(diào)查,了解用戶對(duì)本系統(tǒng)的使用情況。根據(jù)調(diào)查結(jié)果,積極地對(duì)系統(tǒng)進(jìn)行必要的更改。(3)完善性維護(hù)。根據(jù)用戶的意見,增加一些用戶都要求的新功能,修改一些用戶建議修改的功能等。(4)預(yù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境電商網(wǎng)店設(shè)計(jì)趨勢(shì)
- 2024年家具定制協(xié)議范本綜合指南
- 創(chuàng)新型企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)服務(wù)協(xié)議范例
- 2024年度學(xué)生宿舍租賃協(xié)議樣本
- 太陽課件模板教學(xué)課件
- 2024施工項(xiàng)目協(xié)議條款管理與應(yīng)用
- 專題01 名詞-中考英語語法單項(xiàng)選擇題專項(xiàng)突破(解析版)
- 2024年廢鋼采購與銷售協(xié)議范本
- 餐具買賣協(xié)議:2024新款化
- 收購快遞合同范本
- 分層次教學(xué)與個(gè)性化輔導(dǎo)計(jì)劃
- 基于物聯(lián)網(wǎng)的農(nóng)業(yè)無人機(jī)高效配送方案
- 毛細(xì)支氣管炎護(hù)理查房課件
- EHS(環(huán)境健康安全)管理制度
- GB/T 10476-2024尿素高壓冷凝器技術(shù)條件
- 2024-2030年中國(guó)金融BPO行業(yè)市場(chǎng)發(fā)展分析及投資前景與策略研究報(bào)告
- 二年級(jí)《公共安全教育》全冊(cè)教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年小學(xué)科學(xué)四年級(jí)下冊(cè)青島版(六三制2024)教學(xué)設(shè)計(jì)合集
- 2024版中國(guó)血脂管理指南
- 2022下半年四川省考公務(wù)員考試行測(cè)題及解析(三十二)
- 快樂讀書吧《魯濱遜漂流記》整本書導(dǎo)讀課 教學(xué)設(shè)計(jì)-2023-2024學(xué)年語文六年級(jí)下冊(cè)統(tǒng)編版
評(píng)論
0/150
提交評(píng)論