![聊天管理系統(tǒng)設計與實現(xiàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/aba3e616-7a6f-42d3-be77-4cdd4ff2db21/aba3e616-7a6f-42d3-be77-4cdd4ff2db211.gif)
![聊天管理系統(tǒng)設計與實現(xiàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/aba3e616-7a6f-42d3-be77-4cdd4ff2db21/aba3e616-7a6f-42d3-be77-4cdd4ff2db212.gif)
![聊天管理系統(tǒng)設計與實現(xiàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/aba3e616-7a6f-42d3-be77-4cdd4ff2db21/aba3e616-7a6f-42d3-be77-4cdd4ff2db213.gif)
![聊天管理系統(tǒng)設計與實現(xiàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/aba3e616-7a6f-42d3-be77-4cdd4ff2db21/aba3e616-7a6f-42d3-be77-4cdd4ff2db214.gif)
![聊天管理系統(tǒng)設計與實現(xiàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/aba3e616-7a6f-42d3-be77-4cdd4ff2db21/aba3e616-7a6f-42d3-be77-4cdd4ff2db215.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、即時通訊系統(tǒng)的設計與實現(xiàn) 摘 要運用delphi面向?qū)ο箝_發(fā)技術,建立一個基于應用的即時通訊系統(tǒng)。本系統(tǒng)實現(xiàn)了用戶注冊,用戶登陸,分組管理,好友管理,查詢用戶,用戶即時通訊,查看聊天記錄等功能。用戶注冊是通過系統(tǒng)來添加新的用戶;用戶登錄用來驗證用戶的信息是否合法;分組管理功能主要是對分組的管理,如添加分組、刪除分組等;好友管理功能主要是對好友的管理,如添加好友、刪除好友等;查詢用戶是查詢所有已注冊的用戶以便加為好友進行通訊;用戶即時通訊使成為好友的雙方可以即時在線交流;查看聊天記錄保存了與好友通訊的所有記錄。關鍵詞即時通訊系統(tǒng);目 錄1 緒論11.1 項目背景11.2 國內(nèi)外研究現(xiàn)狀11.3
2、預期目標和經(jīng)濟效益21.4 課題簡要介紹31.5系統(tǒng)創(chuàng)新點32 需求分析32.1 功能需求32.1.1 用戶管理32.1.2 分組管理42.1.3 好友管理42.1.4 即時通訊52.2 通訊模型的特點52.2.1 適用性52.2.2 擴展性52.3 可行性研究52.3.1 技術可行性分析52.3.2 不確定性分析62.3.3 分析結(jié)論62.4 運行環(huán)境63 概要設計63.1 框架設計63.2 拓撲結(jié)構73.3 功能設計93.2.1 用戶注冊模塊93.2.2 用戶登錄模塊10分組管理模塊103.2.4 好友管理模塊103.2.5 查詢用戶模塊113.2.6 即時通訊模塊113.2.7 聊天記錄
3、模塊123.4 設計原則及一般要求124 系統(tǒng)設計124.1 模塊設計124.2 即時通訊系統(tǒng)關系型數(shù)據(jù)庫的實現(xiàn)124.2.1 數(shù)據(jù)庫分析134.2.2 數(shù)據(jù)庫概念設計134.2.3 數(shù)據(jù)庫邏輯結(jié)構設計145 系統(tǒng)實現(xiàn)155.1 注冊模塊155.2 登錄模塊175.3 分組管理模塊18添加分組18刪除分組205.4 好友管理模塊215.4.1 添加好友215.4.2 刪除好友235.5 查詢用戶模塊245.6 即時通訊模塊255.7 聊天記錄模塊266 測試報告286.1 測試基本要求286.1.1 內(nèi)容檢查286.1.2 易用性測試286.1.3 功能檢查286.1.4 容錯性測試286.2
4、測試用例方法舉例296.2.1 功能測試296.2.3 性能測試29結(jié)論及尚存在的問題30參考文獻30致謝311 緒論即時通訊軟件的出現(xiàn)正在逐漸改變?nèi)藗兊臏贤ㄅc交際方式。無論近在咫尺,還是遠隔重洋,通訊也只是在鍵盤和鼠標之間就可以解決問題。即時通訊服務非常適合企業(yè)內(nèi)部或企業(yè)和客戶之間的交流。網(wǎng)絡聊天程序.越來越影響著我們的網(wǎng)絡生活。隨著全球信息化進程的不斷發(fā)展,網(wǎng)絡也在飛速發(fā)展。出于高效、快速地處理各種事務的目的,越來越多的企業(yè)和單位在其內(nèi)部使用局域網(wǎng)來進行工作和交流。在內(nèi)部局域網(wǎng)的幫助下,企業(yè)得以簡化信息流程,提高信息交換的速度,從而提高工作效率。然而,隨著局域網(wǎng)規(guī)模的擴大,業(yè)務量的增加,在
5、局域網(wǎng)上運行的應用越來越多,如知識庫、網(wǎng)絡會議、數(shù)據(jù)庫應用和數(shù)據(jù)的同步與備份等,這些應用對局域網(wǎng)的信息吞吐、處理能力的要求也越來越高。這些在原有局域網(wǎng)設計之初未曾考慮到的新情況的出現(xiàn)使得局域網(wǎng)不堪重負,容易發(fā)生信息阻塞,此時,局域網(wǎng)不但不能提高生產(chǎn)效率,反而成為工作效率的瓶頸。1.1 項目背景即時聊天使親友的溝通突破時空極限,使人與人的溝通突破上下級極限,使陌生人的溝通突破環(huán)境極限,使自我與外界的溝通突破心理極限 作為使用頻率最高的網(wǎng)絡軟件,即時聊天已經(jīng)突破了作為技術工具的極限,被認為是現(xiàn)代交流方式的象征,并構建起一種新的社會關系。它是迄今為止對人類社會生活改變最為深刻的一種網(wǎng)絡新形態(tài),沒有極
6、限的溝通將帶來沒有極限的生活。 聊天一直是網(wǎng)民們上網(wǎng)的主要活動之一,網(wǎng)上聊天的主要工具已經(jīng)從初期的聊天室、論壇變?yōu)橐訫SN、OICQ(又稱QQ)為代表的即時通訊軟件。迄今為止,全球約有一億多人使用即時通訊軟件在網(wǎng)上交流。中國網(wǎng)民慣用的即時聊天工具騰訊QQ從1999年2月誕生到現(xiàn)在,注冊用戶已超過7億,在線用戶最高時超過1.454億人,幾乎覆蓋所有中國網(wǎng)民。 即時通訊工具使用頻率之高,超出任何一種網(wǎng)絡軟件。電子郵件曾是最重要的通訊交流工具,是互聯(lián)網(wǎng)最早的“殺手級應用。到2012年,即時通訊軟件已取代電子郵件,成為最流行的互聯(lián)網(wǎng)通訊工具1.2 國內(nèi)外研究現(xiàn)狀即時通訊軟件,幾乎是每一個上網(wǎng)用戶都必備
7、的聯(lián)絡工具。即時通訊軟件除了能夠讓您迅速地在網(wǎng)上找到自己的朋友和工作伙伴,還可以實時交談和傳遞信息,而且,現(xiàn)在不少即時通訊軟件還集成了文件共享、語音聊天、網(wǎng)絡會議等功能。截止到目前,全球約有近30億多人使用即時通訊軟件進行交流,正因為即時通訊軟件擁有數(shù)以億計的用戶和迅速增長的市場,所以各個公司都盯上了中國這個潛在的最大市場,一時間,即時通訊市場硝煙四起。除了騰訊QQ和國外的幾款著名即時通訊軟件紛紛推出新版本,網(wǎng)易也推出了一種新的即時通訊軟件網(wǎng)易泡泡。朗瑪公司也推出了名為UC的通訊工具。即時通訊軟件最早發(fā)布于1996年11月15日,以色列特拉維文的Mirabilis Ltd.發(fā)表了一個題為E.T
8、 SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER INTERNET COMMUNICATIONS的新聞稿,同時發(fā)布了他們新產(chǎn)品ICQ(I Seek You)的Beta測試版。這天標志著Internet上的第一個成熱的即時通訊系統(tǒng)(Instant Message System)的誕生。即時通訊服務在誕生之后的幾年時間得到了迅猛發(fā)展,成為新增Internet用戶的3個主要應用之一(WEB,電子郵件和即時通訊)。在國內(nèi),1999年2月,深圳騰訊公司正式發(fā)布OICQ99 beta build 0210,開通騰訊即時通訊服
9、務。2000年5月,騰訊QQ同時在線用戶突破10萬;2001年2月l0日,騰訊QQ同時在線用戶突破100萬。截至2011年9月30日,QQ即時通信的活躍帳戶數(shù)達到7.117億,最高同時在線帳戶數(shù)達到1.454億?,F(xiàn)在騰訊公司正在把即時通訊系統(tǒng)往移動通訊方向擴展,如今已經(jīng)將即時通訊與手機短信息(SMS)成功結(jié)合起來。即時通訊軟件涉及和影響的領域已近越來越廣,其競爭也越來越激烈??v觀即時通訊軟件業(yè)的迅速發(fā)展,設計并開發(fā)一個即時通訊平臺,對于現(xiàn)階段的學習和研究,都是極為有意義的,基于這個前提和起因,我選擇了設計一個名為JQQ的即時通訊系統(tǒng)作為我的畢業(yè)設計。1.3 預期目標和經(jīng)濟效益即時通訊簡稱IM(
10、Instant Messaging),它是一種面向終端使用者的網(wǎng)絡溝通工具服務,使用者可以通過安裝了即時通信的終端機進行兩人或多人之間的實時溝通。即時通信利用的是互聯(lián)網(wǎng)線路,通過文字、語音、視頻、文件的信息交流與互動,有效節(jié)省了溝通雙方的時間與經(jīng)濟成本。即時通信不再是一個單純的聊天工具,它已經(jīng)發(fā)展成集交流、資訊、娛樂、搜索、電子商務、辦公協(xié)作和企業(yè)客戶服務等為一體的綜合化信息平臺。即時通訊系統(tǒng)一旦開發(fā)完成,只需要一些基本維護和簡單擴展的費用,產(chǎn)生的經(jīng)濟效益源源不斷,相當樂觀,有著很廣闊的發(fā)展前景。1.4 課題簡要介紹本課題之前:充分調(diào)查了市場主流類似通訊軟件的優(yōu)點與缺點;對大數(shù)操作者的年齡、職
11、業(yè)、文化層次等做了一系列調(diào)查;在結(jié)合行業(yè)自身的特點的同時,也充分考慮到設計者自身的條件與現(xiàn)有技術成熟程度的基礎上做出的一款適合大多數(shù)人使用的即時通訊軟件。產(chǎn)品定位:大多數(shù)人能夠使用,操作者有無相關專業(yè)知識都可主要功能有:用戶注冊用戶登陸分組管理好友管理即時通訊 查詢用戶 查詢聊天記錄實現(xiàn)技術:Delphi7.0SQL Server 2003 數(shù)據(jù)庫1.5 系統(tǒng)創(chuàng)新點操作簡單、方便,快捷、準確、數(shù)據(jù)存儲安全可靠,針對自身特點去除了不必要的冗余東西,使系統(tǒng)負擔最小,速度最快;采用更高的安全機制,使數(shù)據(jù)更加安全,用戶可以放心的使用。2 需求分析2.1 功能需求 用戶管理即時通訊系統(tǒng)擁有多個賬戶,允許
12、多個用戶注冊;一個用戶可以注冊多個標識;注冊所使用的帳號類型為字母數(shù)字的組合;注冊新用戶時必須填寫符合要求的信息;注冊后只有用戶名與密碼驗證成功才能正確登錄。用戶管理如圖2-1所示。圖2-1 用戶管理用例圖2.1.2 分組管理分組管理部分要能夠?qū)崿F(xiàn)分組的添加與刪除,所添加的分組名稱可以是中文也可以是字母數(shù)字的組合,通過對分組的有效管理以便于更方便的管理好友。分組管理如圖2-2所示。圖2-2 分組管理用例圖2.1.3 好友管理用戶可以查詢所有用戶;選擇適當?shù)目梢约訛楹糜?;一個用戶可以添加多個人為好友,一個用戶也可以被多個人添加為好友;用戶可以刪除好友;用戶只可以將好友放在一個組中。好友管理如圖2
13、-3所示。圖2-3 好友管理用例圖2.1.4 即時通訊即時通訊模塊用戶可以與在線的好友進行聊天,用戶首先查看好友是否在線,如果在線即可進行即時通訊,并且用戶可以查看與好友的所有聊天記錄。即時通訊如圖2-4所示。圖2-4 即時通訊用例圖2.2 通訊模型的特點2.2.1 適用性作為一個一般性的模型,本通訊模型適用于無線網(wǎng)絡和Internet上現(xiàn)存的多種系統(tǒng)。模型中的JQQ可以是Internet上的應用程序,也可以是移植到移動電話和其他各種無線手持設備上的應用程序。即時通訊和服務可以是Internet上ICQ服務,可以是GSM標準中的SMS(Short Message Service,短信息服務),
14、也可以是NTT Do Co Me的I-MODE服務。 擴展性模型具有很強的擴展性。本模型并沒有規(guī)定服務必須采用中央服務器。在模型實現(xiàn)的時候,可以使用基于中央服務器的星形結(jié)構,也可以使用對等網(wǎng)絡結(jié)構甚至其他混合結(jié)構。例如,深圳騰訊QQ的通訊服務系統(tǒng)使用的是基于中央服務器的Client/Server的混合星型結(jié)構,而即時通訊服務使用的是對等網(wǎng)絡加客戶機服務器結(jié)構。2.3 可行性研究 技術可行性分析(1)項目開發(fā)過程中遇到難以克服的技術問題,該怎么辦。這一方面,我們慶幸的是在網(wǎng)上我們有好多的前輩在背后支持著我們,同時公司的網(wǎng)絡比較方面,給我們解決問題提供了方便。而且,憑借借閱圖書館收藏圖書更增加了我
15、們解決技術問題的信心。(2)軟件的質(zhì)量如何。有些應用對實時性要求很高,如果軟件運行慢如蝸牛,即便功能完備也毫無實用價值。有些高風險的應用對軟件的正確性與精確性要求極高,如果軟件出了差錯而造成用戶利益損失,那么軟件開發(fā)在某種意義上說也就失敗了。鑒于此,我們在編碼測試的時候,找專業(yè)同事做為技術支持。并且在完成之后,實際驗證可行性,同時要考慮到機器硬件設備的不同而給軟件帶來的不可預知的結(jié)果,所以在不同電腦上運行軟件達到測試目的。2.3.2 不確定性分析需要格外考慮的實際情況也可以說是面臨的一個現(xiàn)實問題就是:畢業(yè)生面臨著畢業(yè)與找工作,還有就是最后的畢業(yè)答辯與論文設計。這個過程中,學校會有許多有關畢業(yè)生
16、的信息要安排,事物要處理。在進行課題設計的時候,難免會有一些格外的因素,如,時間被耽誤,在規(guī)定的時間中無法完成相應的任務;有問題存在的時候,網(wǎng)上找不到解決方案,問題無法及時解決等一系列問題,都是要考慮在內(nèi)的。再有就是,最害怕在做系統(tǒng)的中途遇到系統(tǒng)崩潰而東西又無法保存;或者是東西全部做好之后,忘記了備份,而更為不巧的是以染上了病毒,而致使幾個月的辛苦負于東流。這些是容易忽視的也是最容易出現(xiàn)的情況。所以要在設計的時候做足這方面的準備,不讓那種情況發(fā)生。2.3.3 分析結(jié)論通過上面簡要的分析,最后做出的結(jié)論是:方案可以按照時間要求、保證質(zhì)量的基礎上運用MyEclipse與SQL Server 200
17、8 數(shù)據(jù)庫進行系統(tǒng)的開發(fā),這2個運行安裝軟件可自行去 下載安裝的。2.4 運行環(huán)境操作系統(tǒng):windows2003server中文版、windows 2007 Server或者Windows XP 數(shù)據(jù)庫:SQL Server 2003 中文個人版開發(fā)工具:Delphi硬件配置:CPU 1.7GHz以上,內(nèi)存512MB以上3 概要設計3.1 框架設計本系統(tǒng)總體框架如圖3-1所示。圖3-1 系統(tǒng)總體框架圖3.2 拓撲結(jié)構 系統(tǒng)的拓撲結(jié)構如圖3-2所示。S1S3S2C1C2C3客戶端服務器星型結(jié)構服務器服務器對等結(jié)構模式一S1S3S2C1C2C3客戶端服務器星型結(jié)構服務器服務器對等結(jié)構客戶端客戶機
18、對等結(jié)構模式二CS服務器客戶端客戶端客戶端連接客戶端服務器連接服務器服務器連接圖3-2 系統(tǒng)的拓撲結(jié)構圖現(xiàn)在不少即時通訊系統(tǒng)服務的內(nèi)部拓撲中采用模式一;也有極其個別系統(tǒng)在即時通訊服務上面采用模式二(例如,深圳騰訊的QQ服務中的即時通訊服務,發(fā)信者首先考慮直接與即時收信箱進行通訊,如果發(fā)現(xiàn)直接通訊超時,會轉(zhuǎn)為使用服務器中轉(zhuǎn)完成通訊)。模式一是一種非常成熟的模式,大多數(shù)TCP/IP應用系統(tǒng),例如SMTP服務、DNS服務、WWW服務等都是使用這種模式。模式二,對于模式一是一個技術上的修正,雖然這個修正帶來了新的問題,但是其實用性是不可質(zhì)疑的;JQQ正是實用模式二作為服務模式。JQQ的服務是由服務器構
19、成的;JQQ中每個實體都由一個寄主服務器管理。個體必須向服務器注冊,注冊后就有可以控制的發(fā)信者和即時收件箱。發(fā)信者是獨立于即時通訊服務外的實體,而即時收信箱則存在于寄主服務器中。JQQ的通訊系統(tǒng)中只有存在發(fā)送者和接收者兩類實體。注冊后的用戶必須在服務器上建立登記表,才能知道其他用戶的存在,與其他用戶進行交流。1) TCP協(xié)議TCP和UDP是TCP/IP協(xié)議族的兩個主要的傳輸協(xié)議,TCP是面向連接的,UDP是面向無連接的,而實際上他們最大的區(qū)別在于為應用協(xié)議提供不同的服務,TCP協(xié)議為應用程序提供點到點的通信:建立可靠的連接。如果有故障發(fā)生,阻礙分組到達遠程系統(tǒng),或者服務器不接受連接,客戶都會得
20、到通知:數(shù)據(jù)可靠的交付,故障而不能交付,發(fā)送方會得到通知;具有流控的傳輸;雙工的傳輸,單個TCP連接允許同時雙向傳送數(shù)據(jù)流模式,TCP從發(fā)送方到接收方發(fā)送沒有報文邊界的字節(jié)。2) UDP協(xié)議UDP為應用程序提供多對多的通信,UDP在進行通訊的應用的數(shù)量上面,具有更大的靈活性。多個應用可以向一個接收方發(fā)送報文,一個發(fā)送方向也可以向多個接收方發(fā)送報文。UDP還可以使用底層網(wǎng)絡的廣播和組播設施交付報文:UDP提供的是不可靠交付語義,報文可能丟失、重復或者失序,而發(fā)送方是得不到通知的;缺乏流控制;報文模式,當有數(shù)據(jù)交付的時候,必須制定報文邊界。3) 傳輸層協(xié)議的選定由于TCP和UDP的語義及其不同,如
21、果要考慮應用協(xié)議所要求的語義,設計者就不能不在面向連接和無連接的傳輸協(xié)議間作出選擇。利用面向連接的TCP協(xié)議,可以大大簡化應用協(xié)議的設計工作。由于UDP不提供可靠的交付,無連接傳輸要求應用協(xié)議提供可靠性,并在必要時,使用一種稱為自適應重傳的復雜技術。為現(xiàn)有的應用程序增加自適應重傳比較困難,它需要程序員具有相當?shù)貙I(yè)知識。選擇TCP一個很大的缺點就是,建立和中止連接的三次握手使TCP比起UDP開銷大。在考慮是用UDP還是用TCP作為域名服務系統(tǒng)的運輸層協(xié)議是,設計者往往陷入兩難的境地。一個理想的解決方案應該既能提供可靠的數(shù)據(jù)傳輸,又不需要專門的建立和釋放連接,不需要報文的反段和重組,同時還能是兩
22、端的空閑狀態(tài)所處的時間最短。TCP什么都好,只可惜他需要建立和釋放連接。還有一個嚴重的問題就是TCP在空閑的連接上根本不發(fā)送任何分組。假設客戶與某個服務器建立了連接,并與之交換請求和響應,接著便崩潰了。因為客戶已經(jīng)崩潰了,它就不會再發(fā)送任何請求了,然而,服務器到目前為止對它收到的所有請求都進行了響應,它便不會再向客戶發(fā)送更多的數(shù)據(jù)了。這種情況下,服務器擁有分配給該連接的數(shù)據(jù)結(jié)構(包括緩存空間),這些資源不能被重新分配。服務器是設計成始終運行的。如果不斷有客戶崩潰,服務器就會耗盡資源(如套接字、緩存空間、TCP連接)從而中止運行。3.3 功能設計系統(tǒng)功能設計,如圖3-3所示??蛻舳擞脩糇杂脩舻?/p>
23、錄分組管理好友管理查詢用戶即時通訊聊天記錄圖3-3 系統(tǒng)功能設計圖3.2.1 用戶注冊模塊用戶需要正確填寫自己的用戶名、密碼、真實姓名、性別、個性簽名等信息,如果用戶名合法且未被占用,則可以注冊成功。用戶注冊如圖3-4所示。圖3-4 用戶注冊流程圖3.2.2 用戶登錄模塊用戶需要正確填寫自己的用戶名、密碼,如果驗證成功,則可以進入到JQQ即時通訊系統(tǒng)主面板,與在線好友進行即時通訊。用戶登錄如圖3-5所示。圖3-5 用戶登錄流程圖3.2.3分組管理模塊分組管理模塊包括對分組的添加與刪除。添加分組過程中,分組不能為空并且不能有重復的分組。刪除分組過程中,只要選定要刪除的分組,即可刪除成功。分組管理
24、如圖3-6所示。圖3-6 分組管理流程圖3.2.4 好友管理模塊好友管理模塊包括對好友的添加與刪除。添加好友過程中,好友不能為空,不能加自己為好友,要添加的好友必須存在并且不能有重復的好友。刪除好友過程中,只要選定所屬分組下的相應好友,即可刪除成功。好友管理如圖3-7所示。圖3-7 好友管理流程圖3.2.5 查詢用戶模塊查詢用戶模塊列出了除了自己的所有用戶的基本信息包括是否在線,用戶可以根據(jù)需要加為好友并進行通訊,對于在線狀態(tài)的好友可以進行在線交流。查詢用戶如圖3-8所示。圖3-8 查詢用戶流程圖3.2.6 即時通訊模塊即時通訊模塊是本系統(tǒng)最關鍵的環(huán)節(jié)與目的所在。用戶可以選擇分組中的在線好友進
25、行即時通訊,并且當交流完畢時自動保存聊天記錄。即時通訊如圖3-9所示。圖3-9 即時通訊流程圖3.2.7 聊天記錄模塊聊天記錄模塊主要記錄了與相應好友的所有聊天內(nèi)容,可以方便的瀏覽一些重要信息和談論話題等。3.4 設計原則及一般要求參照各模塊的功能與具體的特點,我們設計的整個即時通訊系統(tǒng)應達到以下目的:(1)穩(wěn)定性。整個系統(tǒng)應能穩(wěn)定運行,硬件配置的局部改變不會影響整體的正常運行,其它系統(tǒng)的差錯不會導致即時通訊系統(tǒng)無法正確運作。(2)準確性。系用戶按操作要求操作產(chǎn)生的數(shù)據(jù)與數(shù)據(jù)庫產(chǎn)生的變化應嚴格保持一致,杜絕錯誤、異常等情況的出現(xiàn)。(3)安全性。所有數(shù)據(jù)定時備份,錯誤的出現(xiàn)由系統(tǒng)自動記錄備份文件
26、,以備查驗,避免用戶誤操作而造成不必要的損失。(4)易使用性。即時通訊系統(tǒng)的界面與操作人員的交互性好,用Client/Server(客戶端/服務器)結(jié)構。4 系統(tǒng)設計4.1 模塊設計功能模塊設計如表4-1所示:表4-1 功能模塊設計表功能模塊用戶注冊模塊1.用戶注冊用戶登錄模塊1.用戶登錄分組管理模塊1.添加分組2.刪除分組好友管理模塊1.添加好友2.刪除好友 查詢用戶模塊1.查詢用戶即時通訊模塊1.即時通訊聊天記錄模塊1.查看聊天記錄4.2 即時通訊系統(tǒng)關系型數(shù)據(jù)庫的實現(xiàn)Microsoft SQL Server 2003 是一個高性能的客戶端/服務器結(jié)構的關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。S
27、QL Server 2003是為支持高容量的事務處理(比如在線訂購錄入、存貨目錄、記賬或制造)以及數(shù)據(jù)倉庫和決策支持系統(tǒng)而設計的。它運行在Microsoft Windows NT4或Microsoft Windows 2000 Server上基于使用Intel處理器的網(wǎng)絡。也能夠為其他的Microsoft操作系統(tǒng)提供很多客戶端工具和網(wǎng)絡接口。由于SQL Server的開放結(jié)構,其他系統(tǒng)也能和它交互操作。使用它可以完成事務處理、存儲和分析數(shù)據(jù)以及創(chuàng)建新的應用程序。其中SQL Server的RDBMS負責維護數(shù)據(jù)庫中數(shù)據(jù)之間的關系,確保正確的存儲數(shù)據(jù)和不違反定義數(shù)據(jù)之間的規(guī)則,而且在系統(tǒng)發(fā)生錯誤時
28、將所有數(shù)據(jù)恢復到某個已知的、具備一致性的檢查點上。SQL Server 2003就是關系數(shù)據(jù)庫開發(fā)工具,數(shù)據(jù)庫能匯集各種信息以供查詢、存儲和檢索。SQL Server 2003 的優(yōu)點在于它能使用數(shù)據(jù)表示圖或自定義窗體收集信息。數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構設計可以提高數(shù)據(jù)存儲的效率,報填數(shù)據(jù)的完整和一致。另外,合理的數(shù)據(jù)庫結(jié)構將非常有利于程序的實現(xiàn)。設計數(shù)據(jù)可系統(tǒng)是應該首先充分了解用戶各個方面的要求,包括現(xiàn)有的以及將來可能增加的要求。4.2.1 數(shù)據(jù)庫分析即時通訊系統(tǒng)需求包括對用戶信息、分組信息
29、、好友信息等各方面信息的管理,這些信息都需要保存在數(shù)據(jù)庫中,因此需要建立一些相應的表結(jié)構來存儲這些相應的數(shù)據(jù)。針對這些情況,我們大致建立了以下若干表來存儲相應的信息:表名:用戶表,分組表,好友表等。1) 用戶表:包括的數(shù)據(jù)項有:用戶名、密碼、真實姓名、性別、個性簽名、是否在線等。2) 分組表:包括的數(shù)據(jù)項有:分組名稱、用戶等。3) 好友表:包括的數(shù)據(jù)項有:好友名稱、所在分組、用戶等。4.2.2 數(shù)據(jù)庫概念設計根據(jù)前面的需求分析和概要設計規(guī)劃出本系統(tǒng)所使用的實體對象,分別為:用戶實體、分組實體、好友實體。下面將給出幾個關鍵實體的E-R圖。(1) 用戶實體用戶實體包括用戶名、密碼、真實姓名、性別、
30、個人簽名、是否在線、登錄IP、綁定端口等。其E-R圖如下所示。圖4-1 用戶實體E-R圖(2) 分組實體分組實體包括分組名稱、用戶等。其E-R圖如下所示。圖4-2 分組實體E-R圖(3) 好友實體好友實體包括好友名稱、所在分組,用戶等。其E-R圖如下所示。圖4-3 好友實體E-R圖 數(shù)據(jù)庫邏輯結(jié)構設計根據(jù)上面所做的總結(jié),再參考系統(tǒng)的實際需要,表及邏輯結(jié)構如下圖所示:1) 用戶表users,如下所示。表4-2 用戶表字段名數(shù)據(jù)類型字段說明備注usernameVarchar(20)用戶名主鍵passwordvarchar(20)密碼不允許為空namevarchar(50)真實姓名不允許為空sexv
31、archar(10)性別不允許為空signvarchar(512)個性簽名允許為空isonlineBit(1)是否在線不允許為空(默認0)loginIPvarchar(20)登錄IP允許為空bindportInt(4)綁定端口不允許為空(默認0)2) 分組表groups,如下所示。表4-3 分組表字段名數(shù)據(jù)類型字段說明備注g_namevarchar(50)分組名稱主鍵Owner_groupvarchar(50)用戶主鍵3) 好友表friends,如下所示。表4-4 好友表字段名數(shù)據(jù)類型字段說明備注friendvarchar(50)好友名稱主鍵group_invarchar(50)所在分組主鍵o
32、wner_friendvarchar(50)用戶主鍵5 系統(tǒng)實現(xiàn)5.1 注冊模塊如果用戶名不存在,則可以使用此用戶名,然后輸入用戶的密碼、真實姓名、性別個性簽名等成功注冊。注冊模塊如圖5-1所示。圖5-1 用戶注冊圖主要代碼實現(xiàn)如下:public int Verify() /驗證用戶名是否存在String username = txtUserName.getText().trim();UserItem ui = new UserItem();ui.setUsername(username);Protocal proVerifyUser = new Protocal(ProtocalNumber
33、.VERIFYUSER2, "",ui);SendPacket sp = new SendPacket(proVerifyUser);int result = (Integer) sp.Send().intValue();return result;public void actionPerformed(ActionEvent e) /用戶注冊JButton btnSource = (JButton) e.getSource();if (btnSource = btnOK) int res = Verify();if (res = 0) regUser = new User
34、Item(username, password, name,sex, sign, "", false, 0); Protocal proAddUser = new Protocal(ProtocalNumber.ADDUSER,"", regUser); SendPacket sp = new SendPacket(proAddUser); int result = (Integer) sp.Send().intValue(); if (result !=0) JOptionPane.showMessageDialog(this, "注冊成功,
35、請登陸!","注冊用戶", JOptionPane.INFORMATION_MESSAGE);new frmLogin();確認信息填寫無誤后,點擊注冊按鈕就可注冊成功,如圖5-2所示:圖5-2 用戶注冊成功圖5.2 登錄模塊本部分主要用于用戶的登錄,只有在注冊后才可以進入系統(tǒng),用戶登錄時將按照用戶名和密碼進行驗證,當輸入錯誤時會出現(xiàn)相應的提示,當用戶名和密碼都正確時進入程序主界面,才能進行日常管理工作。該模塊的界面設計如圖5-3所示。圖5-3 登錄界面如果登錄身份驗證成功,則進入主界面如圖5-4所示:圖5-4 主界面如果用戶名或密碼錯誤則會提示,需要重新輸入。主
36、要代碼實現(xiàn)如下:public void actionPerformed(ActionEvent e) JButton btnSource = (JButton) e.getSource(); if (btnSource = btnLogin) int bindport = CommonData.GetBindPort();String loginIP = CommonData.GetLocalIP();UserItem ui = new UserItem();ui.setUsername(username);ui.setPassword(password);ui.setBindport(bin
37、dport); ui.setLoginIP(loginIP);Protocal proVerifyUser = new Protocal(ProtocalNumber.VERIFYUSER,"", ui);SendPacket sp = new SendPacket(proVerifyUser);int result = (Integer) sp.Send().intValue();if (result !=0) JOptionPane.showMessageDialog(this,"登錄成功!", "用戶登錄",JOptionPan
38、e.INFORMATION_MESSAGE); this.dispose();new FrmMain(ui.getUsername(); elseJOptionPane.showMessageDialog(this, "用戶名或密碼錯誤!", "用戶登錄",JOptionPane.INFORMATION_MESSAGE); this.txtUserName.setText(""); this.txtPassword.setText("");5.3 分組管理模塊 添加分組主要功能是添加分組以便管理好友,如圖5-5所示
39、。圖5-5添加分組界面主要代碼實現(xiàn)如下:public void actionPerformed(ActionEvent e) /添加分組if (e.getSource() = jbok) g_name = (String) text.getText().trim();if (g_name.equals("") JOptionPane.showMessageDialog(this, "分組名稱不能為空!", "添加分組", JOptionPane.INFORMATION_MESSAGE);return;gi = new GroupIte
40、m();gi.setG_name(g_name);gi.setOwner_group(CommonData.currUser.getUsername();Protocal proaddgroup = new Protocal(ProtocalNumber.ADDGROUP, CommonData.currUser.getUsername(), gi);SendPacket sp = new SendPacket(proaddgroup);int result = (Integer) sp.Send().intValue();if (result = 1) JOptionPane.showMes
41、sageDialog(this, "此分組已添加過!", "添加分組", JOptionPane.INFORMATION_MESSAGE); text.setText("");return;if(result =0) JOptionPane.showMessageDialog(this, "添加分組成功!", "添加分組", JOptionPane.INFORMATION_MESSAGE); this.dispose();5.3.2 刪除分組主要功能是刪除分組同時刪除分組下的所有好友。如圖5-6
42、所示。圖5-6 刪除分組界面主要代碼實現(xiàn)如下:public void actionPerformed(ActionEvent e) /刪除分組if (e.getSource() = jbok) tryString g_name=choiceGroup.getSelectedItem().toString();FriendItem fi=new FriendItem();fi.setGroup_in(g_name);fi.setOwner_friend(CommonData.currUser.getUsername();Protocal proExit = new Protocal(Protoc
43、alNumber.DELETEGROUP, CommonData.currUser.getUsername(), fi);SendPacket sp = new SendPacket(proExit);int result=(Integer)sp.Send().intValue();if(result!=0) JOptionPane.showMessageDialog(this, "刪除分組成功!", "刪除分組", JOptionPane.INFORMATION_MESSAGE); dispose();elseJOptionPane.showMessa
44、geDialog(this, "刪除分組失??!", "刪除分組",JOptionPane.INFORMATION_MESSAGE);catch(Exception ee)JOptionPane.showMessageDialog(this, "你的分組為空,無法刪除!", "刪除分組", JOptionPane.INFORMATION_MESSAGE); 5.4 好友管理模塊5.4.1 添加好友主要功能是添加已存在的用戶為好友以便進行通訊,如圖5-7所示。圖5-7 添加好友界面主要實現(xiàn)代碼如下:public int
45、 Verify() /驗證用戶是否存在String username = jt.getText().trim();UserItem ui = new UserItem();ui.setUsername(username);Protocal proVerifyUser = new Protocal(ProtocalNumber.VERIFYUSER2, "",ui);SendPacket sp = new SendPacket(proVerifyUser);int result = (Integer) sp.Send().intValue();return result; p
46、ublic void actionPerformed(ActionEvent e) /添加好友if (e.getSource() = btnok) friend = (String) jt.getText().trim();if (friend.equals("") JOptionPane.showMessageDialog(this, "好友名稱不能為空!", "添加好友",JOptionPane.INFORMATION_MESSAGE);return;if (friend.equals(CommonData.currUser.ge
47、tUsername() JOptionPane.showMessageDialog(this, "你不能加自己為好友!", "添加好友", JOptionPane.INFORMATION_MESSAGE);jt.setText("");return;int verify = Verify();if (verify = 0) JOptionPane.showMessageDialog(this, "你要添加的好友不存在!", "添加好友",JOptionPane.INFORMATION_MESSA
48、GE);jt.setText("");return; else ui = new UserItem(); ui.setUsername(friend);fi = new FriendItem();fi.setFriend(ui);String g_name = (String) choice.getSelectedItem();fi.setGroup_in(g_name);fi.setOwner_friend(CommonData.currUser.getUsername();Protocal proaddfriend = new Protocal(ProtocalNumb
49、er.ADDFRIEND,CommonData.currUser.getUsername(), fi);SendPacket sp = new SendPacket(proaddfriend);int result = (Integer) sp.Send().intValue();if (result = 1) JOptionPane.showMessageDialog(this, "此好友已添加過!", "添加好友",JOptionPane.INFORMATION_MESSAGE);jt.setText("");return;if
50、(result = 0) JOptionPane.showMessageDialog(this, "添加好友成功!", "添加好友",JOptionPane.INFORMATION_MESSAGE);this.dispose();5.4.2 刪除好友主要功能是刪除相應分組下的對應好友,如圖5-8所示。圖5-8 刪除好友界面主要實現(xiàn)代碼如下:public void actionPerformed(ActionEvent e) /刪除好友if (e.getSource() = btnok) try group = choiceGroup.getSelecte
51、dItem().toString();friend = choiceFriend.getSelectedItem().toString(); FriendItem fi = new FriendItem();fi.setOwner_friend(CommonData.currUser.getUsername();fi.setGroup_in(group); UserItem ui = new UserItem();ui.setUsername(friend);fi.setFriend(ui);Protocal proExit = new Protocal(ProtocalNumber.DELE
52、TEFRIEND,CommonData.currUser.getUsername(), fi);SendPacket sp = new SendPacket(proExit);int result = (Integer) sp.Send().intValue();if (result != 0) JOptionPane.showMessageDialog(this, "刪除好友成功!", "刪除好友",JOptionPane.INFORMATION_MESSAGE); dispose();catch (Exception ee) JOptionPane.
53、showMessageDialog(this, "你的分組或好友為空,無法刪除!", "刪除好友", JOptionPane.INFORMATION_MESSAGE);5.5 查詢用戶模塊主要功能是查詢當前用戶外的所有用戶基本信息(包括是否在線),如圖5-9所示。圖5-9 查詢用戶界面主要實現(xiàn)代碼為: public Vector<Object> Select() /查詢用戶ui=new UserItem(); ui.setUsername(CommonData.currUser.getUsername();Protocal proVerify
54、User = new Protocal(ProtocalNumber.SELECTUSER, CommonData.currUser.getUsername(),ui);SendPacket sp = new SendPacket(proVerifyUser);Vector<Object> vv= (Vector<Object>)sp.Send();return vv;5.6 即時通訊模塊主要功能是在線用戶之間的即時通訊,如圖5-10所示。圖5-10 即時通訊界面主要實現(xiàn)代碼為:public void actionPerformed(ActionEvent e) /即時
55、通訊if (e.getSource() = jbsend) try if (jt2.getText().equals("") JOptionPane.showMessageDialog(this, "發(fā)送內(nèi)容不能為空!", "JQQ聊天",JOptionPane.INFORMATION_MESSAGE);return;UserItem ui = new UserItem();ui.setUsername(uiTarget.getUsername();Protocal proFindUser = new Protocal(ProtocalNumber.FINDUSER, &qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學二年級數(shù)學上冊口算題
- 2024-2025年高中化學課時分層作業(yè)5元素的電負性及其變化規(guī)律含解析魯科版選修3
- 西門子油煙機指導書
- 2025年年度尊重生命總結(jié)報告
- 二次消防改造工程合同范本
- 海南經(jīng)貿(mào)職業(yè)技術學院《建筑構造Ⅰ》2023-2024學年第二學期期末試卷
- 福州科技職業(yè)技術學院《德語口譯》2023-2024學年第二學期期末試卷
- 常州信息職業(yè)技術學院《中學語文課程與教學論》2023-2024學年第二學期期末試卷
- 宿遷學院《編譯原理》2023-2024學年第二學期期末試卷
- 烏蘭察布職業(yè)學院《建筑物理》2023-2024學年第二學期期末試卷
- 2024年度碳陶剎車盤分析報告
- 2025年1月 浙江首考英語試卷
- 十首最美的唐詩
- 2024年中考二輪專題復習道德與法治主觀題答題技巧(小論文)之演講稿
- 質(zhì)檢工作計劃書2025質(zhì)檢部工作計劃范文
- 《纏論的實戰(zhàn)技法》課件
- 新版標準化機電專業(yè)管理體系解讀課件
- 承包魚塘維修施工合同范例
- 耶魯綜合抽動嚴重程度量表正式版
- 水利水電工程建設常見事故類型及典型事故分析(標準版)
- 政府采購項目采購需求調(diào)查指引文本
評論
0/150
提交評論