基于.NET的在線聊天系統(tǒng)—紀連文_第1頁
基于.NET的在線聊天系統(tǒng)—紀連文_第2頁
基于.NET的在線聊天系統(tǒng)—紀連文_第3頁
基于.NET的在線聊天系統(tǒng)—紀連文_第4頁
基于.NET的在線聊天系統(tǒng)—紀連文_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、. . . . 濰坊科技學(xué)院本科畢業(yè)設(shè)計(論文)題 目 基于.NET的在線聊天系統(tǒng) 院(系) 中印計算機軟件學(xué)院 專業(yè) 計算機科學(xué)與技術(shù) 學(xué) 號 6學(xué)生 紀 連 文 指導(dǎo)教師 祝 凌 云 起訖日期 2011.12.15-2012.4.30 設(shè)計地點 濰坊科技學(xué)院 32 / 36摘 要隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)聊天技術(shù)正成為目前產(chǎn)業(yè)界和科研機構(gòu)密切關(guān)注的焦點?;诰W(wǎng)絡(luò)的聊天技術(shù)已成了近年來新興的聊天交流方式。網(wǎng)絡(luò)聊天是在20世紀90年代發(fā)展起來的,它是在原有的面對面等通過動態(tài)聲音為信息載體的基礎(chǔ)上,增加了非接觸式的通過靜態(tài)文字為載體的交流方式。其使用的C/S結(jié)構(gòu)系統(tǒng)可以在任何一臺的計算機上使用

2、,系統(tǒng)的部署和維護只是在服務(wù)器上進行,這樣的模式既能減少管理的成本,更重要的是它能很方便的實現(xiàn)用戶與系統(tǒng)的交互,更快地響應(yīng)用戶信息交互請求,加之微軟C#編程語言在窗體應(yīng)用上的優(yōu)勢以與平臺的獨立性好、簡便的窗體生成為C/S的實現(xiàn)提供了很好的技術(shù)基礎(chǔ)。本系統(tǒng)前臺選用了C#等作為主要的編程工具和語言,后臺選用SQL Server2008作為數(shù)據(jù)庫服務(wù)器。利用ADO.NET編程技術(shù)實現(xiàn)前后臺的數(shù)據(jù)交互。本系統(tǒng)實現(xiàn)了以下功能:即時聊天,添加好友,文件上傳,聊天記錄查詢等。關(guān)鍵詞: C# C/S結(jié)構(gòu) 數(shù)據(jù)庫 主程序 AbstractWith the development of network techn

3、ology network chat technology is become the industry and scientific research institutions close attention Based on network chat technology in recent years has become the emerging chatcommunication Network chat is in the 1990s, it was developed in the original face to face for such information carrie

4、r by dynamic voice, on the basis of increased non-contact through the static text as the carriertype of communicationIts restrictive is lower, avoid the gleam of restraining factors in communication; Chat system is providing these services with dynamic interaction function of the management informat

5、ion system, it achieved a network of on-line chat; Users can chatting in information system and the be fond of according to oneself and character in his own way to communicate and find friends Such user never leave home, can communicate with people anywhere at any time, from the traditional way of c

6、ommunication in time and space, and the limitations of traditional exchange individual factors, enriched the limitations of the network life people As the Internet's rapid rise, C/S structure of system can be in any one computer use, the system's deployment and maint enance just on file serv

7、er, such a model can not only reduce the cost management, more important is it can e asily achieve user and system interaction, to respond more quickly to user information interaction request, together with Microsoft C # programming languages, as is known to all, put forward the application form on

8、the C # the independence of the advantages and platform, simple form was born the realization of becoming C/S, provide good technology foundation Thus, using the Internet to coverage area wide advantage, build a based on C/S structure of network chat system, and provide the network service mainly to

9、 chat to satisfy the users, according to his own will and communication needs and convenient degree of pursuit, rich user's network life and daily communication means, will gets more and more users favor Keywords: C # C/S structure DateBase MainProcess目 錄摘 要I目 錄II第1章 緒論111選題背景與意義112 網(wǎng)絡(luò)聊天簡介113 系統(tǒng)

10、設(shè)計思想114 可行性分析215 系統(tǒng)運行環(huán)境2第2章 相關(guān)技術(shù)概述321客戶端/服務(wù)器( Client/Server)結(jié)構(gòu)概述322 SOCKET編程技術(shù)32.6 SQL Server 2008概述42.7 ADONET技術(shù)4第3章 需求分析531 系統(tǒng)需求分析532 系統(tǒng)功能需求533 數(shù)據(jù)處理需求634 系統(tǒng)性能需求6第4章 系統(tǒng)分析與設(shè)計741 系統(tǒng)功能模塊設(shè)計74.2 系統(tǒng)模塊詳細設(shè)計74.2.1 客戶端功能模塊設(shè)計74.2.2 服務(wù)器端功能模塊設(shè)計104.3 系統(tǒng)整體流程圖10第5章數(shù)據(jù)庫設(shè)計135.1 概述135.2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計135.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計145.3.1

11、用戶信息實體屬性圖145.3.2 用戶好友關(guān)系信息實體屬性圖145.4 數(shù)據(jù)表設(shè)計155.5創(chuàng)建數(shù)據(jù)的存儲過程15第6章 系統(tǒng)詳細設(shè)計與實現(xiàn)176.1 系統(tǒng)通用類設(shè)計176.1.1 數(shù)據(jù)庫表結(jié)構(gòu)類設(shè)計176.1.2 服務(wù)器端模塊數(shù)據(jù)庫表操作類設(shè)計186.1.3 對數(shù)據(jù)庫操作的封裝186.2 界面與功能設(shè)計186.2.1 服務(wù)器主界面196.2.2 客戶端界面196.3 系統(tǒng)實現(xiàn)過程中遇到的問題與解決276.3.1 Socket套接字異常問題276.3.2 多線程問題27第7章 結(jié)論與展望287.1結(jié)論287.2不足之處與未來展望28參考文獻29致30第1章 緒論11選題背景與意義Interne

12、t是目前世界上最大的計算機互聯(lián)網(wǎng)絡(luò),它遍布全球,將世界各地各種規(guī)模的網(wǎng)絡(luò)連接成一個整體。作為Internet上一種先進的,易于被人們所接受的信息檢索手段,World Wide Web(簡稱WWW)發(fā)展十分迅速,成為目前世界上最大的信息資源寶庫。如今,人們不僅可以在網(wǎng)上查詢自己需要的資源,而且可以通過網(wǎng)絡(luò)進行實時的溝通。從實時性和有效性上都超過了用信件和電子,并且在費用上要低于。因而各種聊天服務(wù)備受用戶青睞,在這方面的開發(fā)與應(yīng)用也較多,聊天服務(wù)也成為互聯(lián)網(wǎng)提供的重要服務(wù)之一,因此,建立一個好的在線交流聊天系統(tǒng)十分重要?;ヂ?lián)網(wǎng)的大多數(shù)都建有聊天室,并且有專業(yè)聊天提供聊天服務(wù)。它們部分都是絕對的C/

13、S模式,對遠程服務(wù)器有非常大的依賴性,沒有徹底實現(xiàn)點對點的交流。在網(wǎng)絡(luò)越來越發(fā)達的今天,人們對網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),由此而產(chǎn)生的聊天工具越來越多,類似 、網(wǎng)絡(luò)聊天時一類的聊天系統(tǒng)的發(fā)展日新月異。12 網(wǎng)絡(luò)聊天簡介網(wǎng)絡(luò)聊天,英文簡稱NC(Network chat ),指的是按照用戶的要求播放視頻。NC有很廣泛的含義,包含了娛樂、教育、商業(yè)等領(lǐng)域的多種應(yīng)用,如游戲聊天( Chat In Game)、在線語音聊天(Online voice chat)、離線文件傳輸(Offline file transfer)和遠程教學(xué)( Long Distance Learning)等。網(wǎng)絡(luò)聊天是在

14、20世紀90年代發(fā)展起來的,它是在原有的面對面等通過動態(tài)聲音為信息載體的基礎(chǔ)上,增加了非接觸式的通過靜態(tài)文字為載體的交流方式,其限制性比較低,避免了溝通上的一線制約因素;聊天系統(tǒng)就是提供了這些服務(wù)的具有動態(tài)交互功能的管理信息系統(tǒng),它實現(xiàn)了一個網(wǎng)絡(luò)上的在線聊天;用戶可以在聊天信息系統(tǒng)并根據(jù)自己的喜好和性格進行自己的交流方式和尋找朋友。這樣,使用戶足不出戶就可隨時隨地地與人交流,擺脫了傳統(tǒng)交流方式在時間和空間的局限性,以與傳統(tǒng)交流個人自身的因素的局限性,極大豐富了人們的網(wǎng)絡(luò)生活。13 系統(tǒng)設(shè)計思想聊天系統(tǒng)利用Net平臺的Winform技術(shù)和數(shù)據(jù)庫技術(shù),提供以文字聊天為中心的網(wǎng)絡(luò)文本傳輸服務(wù),系統(tǒng)采

15、用C#作為編程語言技術(shù),結(jié)合C/S結(jié)構(gòu)模式,能動態(tài)實現(xiàn)與用戶的交互,滿足用戶添加好友和修改用戶信息等需求,以與后臺管理員對系統(tǒng)信息管理的需求。14 可行性分析計算機網(wǎng)絡(luò)作為一種先進的信息傳輸媒體,有著信息傳送速度快、信息覆蓋面廣、成本低的特點。隨著信息技術(shù)的發(fā)展,利用C#技術(shù)結(jié)合數(shù)據(jù)庫技術(shù)來實現(xiàn)一個聊天系統(tǒng),提供以文字聊天為中心的網(wǎng)絡(luò)文本傳輸服務(wù),能更貼切的滿足用戶根據(jù)自己的意愿進行無打擾的聊天的需求,也必將受到用戶的青睞。但是,開發(fā)任何一個基于計算機的系統(tǒng),都會受到時間和資源上的限制。因此,在開發(fā)系統(tǒng)前必須進行可行性分析,以減少項目的開發(fā)風(fēng)險,避免人力、物力和財力的浪費??尚行匝芯康哪康?,就

16、是用最小的代價在盡可能短的時間確定問題能否解決。對在聊天系統(tǒng)的可行性分析如下:1、經(jīng)濟可行性分析:成本較低,系統(tǒng)建設(shè)不需要很大的投入,系統(tǒng)更新時也只需更新服務(wù)器端程序,方便維護。2、技術(shù)可行性分析:系統(tǒng)采用NET開發(fā)平臺,NET Framework是NET平臺的基本框架,具有強大的API,給系統(tǒng)奠定了技術(shù)基礎(chǔ)。系統(tǒng)采用C#NET技術(shù),結(jié)合C/S結(jié)構(gòu)模式,能夠方便實現(xiàn)用戶與系統(tǒng)的動態(tài)交互,以與方便信息的維護等。3、運行上可行性:本系統(tǒng)作為一個小型的聊天系統(tǒng),所耗費的資源非常的小。綜上所述通過可行性分析認為新系統(tǒng)的開發(fā)方案切實可行,可進行開發(fā)。15 系統(tǒng)運行環(huán)境系統(tǒng)開發(fā)環(huán)境:Microsoft V

17、isual Studio 2008系統(tǒng)開發(fā)語言: C#運行平臺:Windows7數(shù)據(jù)庫:SQL Server 2008第2章 相關(guān)技術(shù)概述21 客戶端/服務(wù)器( Client/Server)結(jié)構(gòu)概述C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進行同樣的業(yè)務(wù)處理,應(yīng)用不同

18、的模塊共享邏輯組件;因此,部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。傳統(tǒng)的CS體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。而且代價高,效率低。如圖2.1和圖2.2所示:Client客戶端Server服務(wù)器數(shù)據(jù)庫圖2.1 C/S結(jié)構(gòu)圖圖2.2 客戶機服務(wù)器

19、通信結(jié)構(gòu)示圖22 SOCKET編程技術(shù)MicrosoftNet Framework為應(yīng)用程序訪問Internet提供了分層的、可擴展的以與受管轄的網(wǎng)絡(luò)服務(wù),其名字空間SystemNet和SystemNetSockets包含豐富的類可以開發(fā)多種網(wǎng)絡(luò)應(yīng)用程序。其實,Socket可以象流Stream一樣被視為一個數(shù)據(jù)通道,這個通道架設(shè)在應(yīng)用程序端(客戶端)和遠程服務(wù)器端之間,而后,數(shù)據(jù)的讀取(接收)和寫入(發(fā)送)均針對這個通道來進行。2.6 SQL Server 2008概述SQL Server 是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)。SQL Server 2008 的特性有:1 Internet 集成;2可伸縮

20、性和可用性;3 企業(yè)級數(shù)據(jù)庫功能;4 易于安裝、部署和使用;2.7 ADONET技術(shù)ADONET是在NET Framework平臺中負責(zé)數(shù)據(jù)存儲的對象。ADONET建立在如XML的業(yè)界的基礎(chǔ)之上,就像ADO,它提供了一個數(shù)據(jù)訪問接口,以便和OLE DB兼容的數(shù)據(jù)源進行通信,如SQL Server或Oracle應(yīng)用程序可以使用ADONET連接這些數(shù)據(jù)源,并檢索,處理和更新數(shù)據(jù)。使用ADONET最重要的理由是可以獲取一個真正斷開連接的數(shù)據(jù)體系結(jié)構(gòu)和XML的緊密集成和一個通用的數(shù)據(jù)表示法,可以將各種不同數(shù)據(jù)源中的數(shù)據(jù)組合起來,并優(yōu)化了和數(shù)據(jù)庫交互的功能。第3章 需求分析31 系統(tǒng)需求分析為了開發(fā)出真

21、正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論我們把設(shè)計和編碼工作做得如何出色,不能真正滿足用戶需求的系統(tǒng)只會令用戶失望,給開發(fā)者帶來煩惱。網(wǎng)絡(luò)聊天的出現(xiàn),最初是源于人們對遠程通信、遠程幫助的需求發(fā)展到現(xiàn)在的遠程群聊、遠程教育、遠程控制以與語音聊天和視屏聊天。在傳統(tǒng)的聊天中,要求人們面多面的聊天近距離的的溝通。雖然可以通過進行遠程沒接觸式的聊天,但是這種聊天費用高昂,對于對身體的健康也有一定的影響而且聊天對于偏遠地區(qū)效果并不好,在當今如此快節(jié)奏的生活中,在高速發(fā)展的信息經(jīng)濟中,用戶沒能在恰當?shù)臅r間通過交流接受到自己有用的信息是常有發(fā)

22、生的事情。這對于用戶的日常生活會產(chǎn)生極大影響,用戶希望可以根據(jù)自己的時間和安排進行方便的信息交換,不必遵守傳統(tǒng)的聊天時間機制,可以隨時隨地的聯(lián)系、表述自己的想法與朋友進行感情的交流。并且隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,人們越來越習(xí)慣于利用網(wǎng)絡(luò)來實現(xiàn)所需的服務(wù),網(wǎng)絡(luò)信息經(jīng)濟時代的來臨,因此,建立一個基于網(wǎng)絡(luò)的聊天系統(tǒng),以其不受時間與空間的限制,向用戶提供以文本信息傳輸為中心的服務(wù),動態(tài)地實現(xiàn)與用戶間的信息交互,必能滿足廣大用戶的需求,該系統(tǒng)主要分為兩部分:客戶端和服務(wù)器端兩部分。系統(tǒng)所要實現(xiàn)的功能主要是方便用戶進行網(wǎng)絡(luò)聊天。32 系統(tǒng)功能需求初步將在聊天系統(tǒng)分為兩個模塊:客戶端模塊與服務(wù)器模塊。1、客戶

23、端功能包括:用戶登錄:建立與服務(wù)器的連接并登陸,能顯示登陸錯誤信息,以與配置登陸的服務(wù)器IP地址和端口號。用戶注冊:連接本地數(shù)據(jù)庫,注冊用戶,并保存該用戶,同時將信息返回給客戶端。聊天功能:與好友進行聊天。信息顯示:顯示好友的在線列表和好友的離線列表。聊天紀錄:能夠記錄當前界面的聊天記錄。登錄提示:顯示歡迎界面。信息提示:能夠播放提示音,提示用戶有人向其發(fā)送聊天邀請。頭像閃爍提示:在收到消息而聊天面板未打開時,對你發(fā)出聊天信息的好友頭像閃爍。發(fā)送窗口抖動:發(fā)送提示聲音并對好友的聊天窗體進行顫動激活。添加好友:能夠通過連接本地數(shù)據(jù)庫進行添加好友。刪除好友:能夠通過連接本地數(shù)據(jù)庫進行刪除好友。2、

24、服務(wù)器端功能包括:登陸信息:檢查登陸信息是否正確,并向客戶端返回登陸信息,如信息正確。就將在線用戶好友列表和離線好友列表發(fā)給該用戶,并將該用戶的狀態(tài)發(fā)給各在線用戶并更新其在線好友列表和離線好友列表。消息發(fā)送:服務(wù)器打開監(jiān)聽,當接收到客戶端發(fā)送的消息建立線程通過Sockets套接字轉(zhuǎn)發(fā)消息。操作數(shù)據(jù)庫:服務(wù)器端對數(shù)據(jù)庫里的數(shù)據(jù)表進行映射生成在線好友列表和離線列表。用戶下線:將此用戶下線消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端的狀態(tài),更新客戶端的在線好友列表和離線列表。33 數(shù)據(jù)處理需求對用戶信息的處理需求:包括查詢好友信息、添加好友關(guān)系信息、刪除好友關(guān)系信息。對聊天信息的處理需求:包括發(fā)送字符串、

25、接收并顯示字符串、保存當前界面的信息。34 系統(tǒng)性能需求一個系統(tǒng)的性能包括信息系統(tǒng)的效率、處理方式、可靠性、安全性、適應(yīng)性等容。效率是信息系統(tǒng)的處理能力、處理速度、吞吐量、響應(yīng)時間等與系統(tǒng)處理時間有關(guān)的性能要素。處理方式涉與的圍比較寬,包括信息系統(tǒng)的結(jié)構(gòu)和分布模式、交互方式、業(yè)務(wù)處理方式等。可靠性是保證系統(tǒng)正常工作與抗故障、抗干擾的能力,它包括:保證系統(tǒng)正常工作的能力;對系統(tǒng)故障的預(yù)防、檢測以與自動糾錯的能力;出現(xiàn)故障時,保證系統(tǒng)不發(fā)生崩潰,并使系統(tǒng)重新恢復(fù)、重新啟動的能力等。安全性是保證合法用戶能夠正確使用信息系統(tǒng),并防止非法用戶訪問信息系統(tǒng)的能力。適應(yīng)性是信息系統(tǒng)對外部環(huán)境和需求變化的適應(yīng)

26、能力。根據(jù)系統(tǒng)的性能需求,在聊天系統(tǒng)的開發(fā)主要要實現(xiàn)的目標有以下幾個方面:(1)界面設(shè)計友好、美觀。(2)數(shù)據(jù)存儲安全、可靠。(3)信息分類清晰、準確。(4)數(shù)據(jù)查詢的靈活性。(5)實現(xiàn)對聊天信息的展示。 (6)提供好友關(guān)系信息的添加、刪除功能,方便用戶操作。(7)具有易維護性和易操作性。第4章 系統(tǒng)分析與設(shè)計41 系統(tǒng)功能模塊設(shè)計按系統(tǒng)的功能需求分析,將系統(tǒng)功能模塊分為兩大模塊:客戶端功能模塊和服務(wù)器端功能模塊??蛻舳斯δ苣K包括:用戶登錄模塊、用戶注冊模塊、軟件模塊、顯示好友模塊、在線聊天模塊、添加好友模塊、刪除好友模塊;服務(wù)器功能模塊包括:服務(wù)器登錄模塊。根據(jù)系統(tǒng)功能模塊設(shè)計,系統(tǒng)的整體

27、功能結(jié)構(gòu)圖如圖4.1所示:基于.Net平臺的聊天系統(tǒng)客戶端功能用戶注冊用戶登錄服務(wù)器端功能滾動和通知區(qū)域圖標開啟監(jiān)聽服務(wù)刪除好友在線聊天添加好友顯示好友圖4.1 系統(tǒng)整體功能結(jié)構(gòu)圖4.2 系統(tǒng)模塊詳細設(shè)計4.2.1 客戶端功能模塊設(shè)計(1)用戶注冊。設(shè)計流程如下:輸入要注冊的用戶名和密碼,系統(tǒng)會檢查用戶名是否已經(jīng)存在,如果不存在,就允許注冊新用戶并發(fā)回數(shù)據(jù)庫自動生成的用戶ID。模塊流程圖如圖4.2所示:用戶名是否存在?生成注冊用戶注冊用戶不存在存在返回生成酷熊號返回生成用戶ID圖4.2 用戶注冊流程圖(2)用戶登錄。設(shè)計流程如下:首先判斷服務(wù)器的端口號是否配置正確,然后判斷輸入的用戶名和密碼是

28、否正確,正確就用戶登錄。模塊流程圖如圖4.3所示:端口是否正確用戶登錄不存在不正確用戶名和密碼是否正確圖4.3用戶登錄流程圖(3)滾動和通知區(qū)域圖標。設(shè)計流程如下:在登錄成功后,生成窗體的NotifyIcon圖標和一個滾動的歡迎圖標。(4)顯示好友。設(shè)計流程如下:在登錄成功后,服務(wù)器將為用戶對數(shù)據(jù)庫的表進行映射獲得在線好友的列表和離線好友的列表通過Socket套接字發(fā)送過去,顯示好友模塊在顯示面板上顯示好友。(5)在線聊天。設(shè)計流程如下:先判斷好友是否在線,進入聊天界面中寫入發(fā)送的信息,通過服務(wù)器監(jiān)聽到發(fā)送好友消息在轉(zhuǎn)發(fā)給好友,進行在線聊天,其還整合發(fā)送震動框提示功能、頭像閃爍提示以與聲音提示

29、功能。模塊流程圖如圖4.4所示:是否在線?用戶1是發(fā)送消息服務(wù)器端是否在線?用戶2發(fā)送消息圖4.4 在線聊天模塊流程圖(6)添加好友。設(shè)計流程如下:首先通過進行查詢操作判斷用戶是否已經(jīng)加過其好友,然后進行添加好友關(guān)系。模塊流程圖如圖4.5所示:是否已加其為好友?查詢好友否是添加好友圖4.5 添加好友模塊流程圖(7)刪除好友。設(shè)計流程如下:首先通過進行查詢操作判斷用戶是否是在操作自己的好友關(guān)系,然后判斷是否是好友關(guān)系,如果是就刪除好友關(guān)系。模塊流程圖如圖4.6所示:密碼和用戶ID是否匹配?查詢用戶ID是否刪除好友是否存在好友關(guān)系?是圖4.6 刪除好友模塊流程圖4.2.2 服務(wù)器端功能模塊設(shè)計服務(wù)

30、器端功能模塊就是服務(wù)器監(jiān)聽模塊:服務(wù)器監(jiān)聽模塊。設(shè)計流程如下:首先判斷服務(wù)器的端口是否更該,配置好端口號開啟服務(wù)器開始監(jiān)聽,監(jiān)聽到用戶登錄消息,客戶端進行操作數(shù)據(jù)庫驗證,正確就建立Socket連接,并讀取其在線好友列表和離線好友列表發(fā)送給客戶端,當監(jiān)聽客戶端進行各種操作,服務(wù)器端調(diào)用自身的監(jiān)聽處理方法進行處理并將結(jié)果或信息通過Socket發(fā)送給客戶端。服務(wù)器監(jiān)聽模塊流程圖如圖4.7所示:是否合法端口號?輸入端口號是否開啟客戶端監(jiān)聽是否接收到消息是開啟客戶端處理發(fā)送消息到客戶端否圖4.7 服務(wù)器監(jiān)聽模塊流程圖4.3 系統(tǒng)整體流程圖在聊天系統(tǒng)的流程是用戶在客戶端登錄,若用戶名不存在,則需先注冊用戶

31、信息,在注冊完用戶信息后,用戶輸入自己的與密碼登錄系統(tǒng),在用戶登錄成功后服務(wù)器端監(jiān)聽客戶端發(fā)來的登陸消息,進行登錄處理,驗證數(shù)據(jù)庫表中的數(shù)據(jù)進行對比以與該用戶當前的狀態(tài),如果用戶的賬號和密碼比對無錯,再比對在線用戶Hash表中是否已經(jīng)登錄,如果沒有登錄則建立Socket連接并更新在線用戶Hash表,建立線程處理與用戶的Socket連接操作,同時發(fā)送登錄用戶的在線好友列表和離線好友列表,用戶成功登錄后,進入好友顯示模塊,在在線好友界面中點擊好友頭像進入聊天界面,用戶發(fā)送信息給在線好友,服務(wù)器監(jiān)聽到客戶端通過Socket發(fā)過來的對好友進行聊天的消息,并截取Socket傳輸?shù)臄?shù)據(jù)流中的發(fā)送者要傳輸給

32、接收者的消息,通過與接收者建立Socket連接,將數(shù)據(jù)寫入其Socket傳輸數(shù)據(jù)中,實現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā),同時用戶對好友進行發(fā)顫抖框操作都是服務(wù)器接受其操作消息標識參數(shù),在發(fā)給好友操作標識參數(shù),然后其客戶端就會調(diào)用其自身定義的該標識參數(shù)下的方法,聊天完畢,用戶發(fā)送離線消息,服務(wù)器接受到其消息,關(guān)閉與其的Socket連接,更新在線用戶Hash表以與在線用戶的在線好友列表??蛻魴C/服務(wù)器模式在操作過程中采取的是主動請示方式,首先服務(wù)器方要先啟動,并根據(jù)請示提供相應(yīng)服務(wù):(過程如下)1、服務(wù)器(1)、打開一通信端口并告知本地主機,它愿意在某一個公認地址上接收客戶請求。(2)、等待客戶請求到達該端口。(3)

33、、接收到重復(fù)服務(wù)請求,處理該請求并發(fā)送應(yīng)答信號。(4)、返回第二步,等待另一客戶請求。(5)、關(guān)閉服務(wù)器。2、客戶方:(1)、打開一通信通道,并連接到服務(wù)器所在主機的特定端口。(2)、向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收應(yīng)答;繼續(xù)提出請求(3)、請求結(jié)束后關(guān)閉通信通道并終止。聊天系統(tǒng)的系統(tǒng)流程圖如圖4.8所示:圖4.8系統(tǒng)整體流程圖連接服務(wù)器發(fā)出消息請求入口監(jiān)聽端口入口封裝并發(fā)送消息到服務(wù)器在聊天去顯示客戶端消息還是服務(wù)器端消息選擇用戶發(fā)送離線消息服務(wù)器更新消息客戶端消息入口客戶端系統(tǒng)流圖更新在線用戶列表監(jiān)聽端口提取句柄報文目的地址轉(zhuǎn)發(fā)目的地址監(jiān)聽端口配置服務(wù)器判斷消息上線或離線請求聊天信息操

34、作服務(wù)器端程序流程圖圖客戶端客戶端A客戶端B服務(wù)器端封裝發(fā)送拆封、提取目的信息并轉(zhuǎn)發(fā)拆封、提取操作消息和目的信息轉(zhuǎn)發(fā)地址服務(wù)器端客戶端交互流程圖圖圖4.9 系統(tǒng)分布流程圖第5章數(shù)據(jù)庫設(shè)計5.1 概述數(shù)據(jù)庫設(shè)計是指根據(jù)用戶需求研制數(shù)據(jù)庫結(jié)構(gòu)并應(yīng)用數(shù)據(jù)庫的過程。一般,數(shù)據(jù)庫的設(shè)計過程大致可分數(shù)據(jù)庫設(shè)計為5個步驟:1、需求分析:調(diào)查和分析用戶的業(yè)務(wù)活動和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、圍、數(shù)量以與它們在業(yè)務(wù)活動流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。2、概念設(shè)計:對用戶要求描述的現(xiàn)實世界(可能是一個工廠、一個商場或者一個學(xué)校等),通過對其中住處的分類、聚集和概

35、括,建立抽象的概念數(shù)據(jù)模型。這個概念模型應(yīng)反映現(xiàn)實世界各部門的信息結(jié)構(gòu)、信息流動情況、信息間的互相制約關(guān)系以與各部門對信息儲存、查詢和加工的要求等。所建立的模型應(yīng)避開數(shù)據(jù)庫在計算機上的具體實現(xiàn)細節(jié),用一種抽象的形式表示出來。3、邏輯設(shè)計:主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設(shè)計成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。4、物理設(shè)計:根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲結(jié)構(gòu)和存取方法等依賴于具體計算機結(jié)構(gòu)的各項物理設(shè)計措施,對具體的應(yīng)用任務(wù)選定最合適的物理存儲結(jié)

36、構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設(shè)計的結(jié)果就是所謂“物理數(shù)據(jù)庫”。 5、驗證設(shè)計:在上述設(shè)計的基礎(chǔ)上,收集數(shù)據(jù)并具體建立一個數(shù)據(jù)庫,運行一些典型的應(yīng)用任務(wù)來驗證數(shù)據(jù)庫設(shè)計的正確性和合理性。一般,一個大型數(shù)據(jù)庫的設(shè)計過程往往需要經(jīng)過多次循環(huán)反復(fù)。當設(shè)計的某步發(fā)現(xiàn)問題時,可能就需要返回到前面去進行修 改。因此,在做上述數(shù)據(jù)庫設(shè)計時就應(yīng)考慮到今后修改設(shè)計的可能性和方便性。5.2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計是在需求分析的基礎(chǔ)上,設(shè)計出能夠滿足用戶需求的各種實體,以與它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。這階段可用的工具很多。用的最多

37、的是E-R圖(Entity-Relation,實體-關(guān)系圖),另外還有許多計算機輔助工具(Computer Aided Software Engineering, CASE)可以幫助進行設(shè)計。本系統(tǒng)采用了E-R圖的方法進行數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。E-R圖是描述數(shù)據(jù)實體關(guān)系的一種直觀描述工具。這種圖中有:1、實體:用方框表示,方框為實體的名稱。2、實體的各種屬性:用橢圓表示,橢圓為屬性名稱。使用線段將其和響應(yīng)的實體連接起來。3、實體之間的聯(lián)系:用菱形表示,菱形為聯(lián)系的名稱。實體和實體之間的聯(lián)系較多,比較常見的聯(lián)系有l(wèi):1,l:N和M:N這三種。5.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)是獨立于實際數(shù)據(jù)模型的

38、信息結(jié)構(gòu),必須將其轉(zhuǎn)化為邏輯結(jié)構(gòu)后才能進行數(shù)據(jù)庫應(yīng)用的設(shè)計。也就是要將概念上的結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型。第一種轉(zhuǎn)化是將實體轉(zhuǎn)化為關(guān)系表。這種轉(zhuǎn)化較簡單,需要將實體的屬性定義為表的屬性即可。第二種轉(zhuǎn)化是聯(lián)系的轉(zhuǎn)化。即將各個實體之間的聯(lián)系轉(zhuǎn)化為表格之間的關(guān)系,如外部鍵的定義。5.3.1用戶信息實體屬性圖在聊天系統(tǒng)中要有聊天的實體,用戶是聊天系統(tǒng)中密不可分的主體部分,因此要創(chuàng)建一用戶信息實體,用來保存用戶登錄賬號、密碼等詳細的信息。用戶信息實體屬性圖,如圖5.1所示:用戶信息實體用戶頭像圖片用戶昵稱用戶密碼用戶的使用權(quán)限用戶在線時間用戶ID圖5.1 用戶信息實體E-R圖5.3.2 用

39、戶好友關(guān)系信息實體屬性圖用戶好友關(guān)系是在聊天系統(tǒng)實現(xiàn)的橋梁和標志,是在聊天系統(tǒng)的重要組成部分,這里創(chuàng)建了一個用戶好友關(guān)系信息實體,用來存儲用戶好友關(guān)系的詳細信息。用戶好友關(guān)系信息E-R圖,如圖5.2所示:用戶好友關(guān)系信息實體用戶A的ID關(guān)系名用戶B的ID圖5.2 用戶關(guān)系信息E-R圖5.4 數(shù)據(jù)表設(shè)計系統(tǒng)采用SQL Server 2005的數(shù)據(jù)庫管理 ,建立數(shù)據(jù)庫名為CoolBearServerDB,數(shù)據(jù)庫中存放的表有UserDT (用戶登錄信息表)、FriendsRelationDT (用戶好友關(guān)系詳細信息表)。數(shù)據(jù)庫各表詳細結(jié)構(gòu)如下:表5.1 UserDT (用戶登錄信息表)列名類型主鍵非

40、空外鍵注釋CoolBear_UserIDint是是酷熊號CoolBear_UserNamevarchar(10)是酷熊昵稱CoolBear_UserHeadImagvarchar(25)是用戶頭像圖片CoolBear_UserPasswordvarchar(25)是酷熊密碼CoolBear_UserOnlineTimeint是用戶在線時間CoolBear_UserLogo lint是用戶權(quán)限表5.2 CoolBear_FriendsRelationID (用戶好友關(guān)系信息表)列名類型主鍵非空 外鍵注釋CoolBear_FriendsRelationIDint 是是好友關(guān)系名CoolBear_F

41、riendsRelationFriendID1CoolBear_FriendsRelationFriendID2intint是是用戶1酷熊號用戶2酷熊號5.5創(chuàng)建數(shù)據(jù)的存儲過程下面存儲過程為數(shù)據(jù)庫提供檢索驗證登錄信息,為服務(wù)器端向客戶端提供更新好友列表提供數(shù)據(jù):public static bool ValidateUser(string UserMessage) string sqlstring = "select * from UserDT WHERE CoolBear_UserID=UserID AND CoolBear_UserPassword=UserPassword&quo

42、t; int coolBearID = Int32Parse(UserMessage0); string coolBearPw = UserMessage1; SqlConnection conn = new SqlConnection(connString); connOpen(); SqlCommand scd = new SqlCommand(sqlstring, conn); scdParametersAddWithValue("UserID", coolBearID); scdParametersAddWithValue("UserPassword&qu

43、ot;, coolBearPw); SqlDataAdapter sda = new SqlDataAdapter(scd); DataTable dt = new DataTable(); sdaFill(dt); try scdExecuteNonQuery(); if (dtRowsCount>0) return true; else return false; catch (SystemException ex) return false; finally sdaDispose(); scdDispose(); connClose(); connDispose(); 第6章 系統(tǒng)

44、詳細設(shè)計與實現(xiàn)本系統(tǒng)的詳細設(shè)計與實現(xiàn)主要分為通用類的設(shè)計和界面設(shè)計以與事件處理邏輯實現(xiàn)的設(shè)計。本系統(tǒng)中要經(jīng)常對數(shù)據(jù)庫進行添加、刪除、修改等操作為了避免重復(fù)寫一樣的代碼,將對數(shù)據(jù)庫的基本操作封裝到一個類中。這樣每次需要對數(shù)據(jù)庫進行操作的時候,只要直接調(diào)用這個封裝好的類就可以實現(xiàn)對數(shù)據(jù)庫的增加、刪除、修改等操作。系統(tǒng)的實現(xiàn)主要是進行客戶端和服務(wù)器端的通信以與信息的交換:主要的結(jié)構(gòu)是,系統(tǒng)有兩個文件夾分別是:CoolBearServer和CoolBearClient;CoolBearServer包括各個子文件夾,以下是對各文件夾的描述如下:1、Bin:Bin目錄用來保存項目生成后程序集,在NET中,

45、編譯是分模塊進行的,編譯整個完成后會合并為一個DLL或EXE保存到bin目錄下。2、Obj:obj目錄是用來保存每個模塊的編譯結(jié)果。3、Properties:此目錄用來存放程序集的屬性和配置。CoolBearClient包括多個WinForm程序類文件以與各個子文件夾,以下是對各文件夾的描述如下(除去和CoolBearServer中一模一樣的文件夾):1、Images:用于存放系統(tǒng)使用到得圖片。2、Resource:此文件夾放置系統(tǒng)使用的嵌入在資源。3、Music:此文件夾放置系統(tǒng)用到的聲音文件。6.1 系統(tǒng)通用類設(shè)計系統(tǒng)的功能模塊從操作處理上主要是服務(wù)器端模塊。服務(wù)器端模塊包括用戶登錄、用戶

46、注冊、添加好友、刪除好友四部分。主要通過對表UserDT和表FriendsRelationDT的操作來實現(xiàn),封裝在類SqlControl里面。系統(tǒng)通用類設(shè)計如下:6.1.1 數(shù)據(jù)庫表結(jié)構(gòu)類設(shè)計1、UserDTClass類對UserDTClass類中,實現(xiàn)UserDT表基礎(chǔ)字段屬性的定義:用戶IDpublic int CoolBear_UserID;用戶名public string CoolBear_UserName;用戶頭像public string CoolBear_UserHeadImage;用戶密碼public string CoolBear_UserPassword;用戶在線時間pub

47、lic int CoolBear_UserOnlineTime;用戶權(quán)限public int CoolBear_UserLogo。2、FriendsRelationDTClass類對FriendsRelationDTClass類中,實現(xiàn)FriendsRelationDT表基礎(chǔ)字段屬性的定義:好友關(guān)系名public int CoolBear_FriendsRelationID;好友名字1public int CoolBear_FriendsRelationFriendID1;好友名字2public int CoolBear_FriendsRelationFriendID26.1.2 服務(wù)器端模塊

48、數(shù)據(jù)庫表操作類設(shè)計SqlControl類對表UserDT和表FriendsRelationDT的操作封裝在SqlControl類里面,實現(xiàn)的操作有:驗證登錄信息ValidateUser();查找所有好友FindFriend ();注冊用戶InsertUser()添加好友InsertFriendRelation();刪除好友DeleteFriendRelation();生成好友列表List<UserDTClass> FindUserInfo();6.1.3 對數(shù)據(jù)庫操作的封裝在數(shù)據(jù)庫類SqlCommand和DataRead中封裝了對數(shù)據(jù)庫的基本操作操作,常用的方法有:ExecuteN

49、onQuery()它的返回值類型為int型,多用于執(zhí)行增加,刪除,修改數(shù)據(jù)、返回受影響的行數(shù);ExecuteReader()它的返回類型為SqlDataReader。此方法用于用戶進行的查詢操作。使用SqlDataReader對象的Read();方法進行逐行讀?。籈xecuteScalar()它的返回值類型多位int類型。它返回的多為執(zhí)行select查詢。得到的返回結(jié)果為一個值的情況,比如使用count函數(shù)求表中記錄個數(shù)或者使用sum函數(shù)求和等。6.2 界面與功能設(shè)計界面設(shè)計時使用了Microsoft Visual Studio 2008里面的集成界面組件,集成組件設(shè)計具有的優(yōu)點有:簡單強大:

50、Windows窗體可用于設(shè)計窗體和可視控件,以創(chuàng)建豐富的基于Windows的應(yīng)用程序;新的數(shù)據(jù)提供程序管理:數(shù)據(jù)提供程序管理提供易于連接OLEDB和ODBC數(shù)據(jù)源的數(shù)據(jù)控件,包括Microsoft SQL Server、Microsoft Access、Jet、DB2以與Oracle等;安全:Windows窗體充分利用公共語言運行庫的安全特性。這就意味著,一切都可以通過Windows窗體來實現(xiàn),包括在瀏覽器中運行的不可信控件和用戶硬盤上安裝的完全可信的應(yīng)用程序;靈活的控件。Windows窗體提供了一套豐富的控件,并且開發(fā)人員可以定義自己有特色的新的控件;方便的數(shù)據(jù)顯示和操作:應(yīng)用程序開發(fā)中最常

51、見的情形之一是在窗體上顯示數(shù)據(jù)。Windows窗體對數(shù)據(jù)庫處理提供全面支持??梢栽L問數(shù)據(jù)中的數(shù)據(jù),并在窗體上顯示和操作數(shù)據(jù);向?qū)В合蛴脩籼峁﹦?chuàng)建窗體、數(shù)據(jù)處理、打包和部署等的分布指導(dǎo),這樣為提高工作效率,降低開發(fā)和維護強度上提供了有力的支持。在聊天系統(tǒng)的功能設(shè)計上,添加好友和刪除好友都在顯示好友界面的菜單里,并在事件處理的設(shè)計中添加了大量的提示框提示操作。為用戶的不當操作提供了很好的向?qū)Чδ茉诤竺娴捻撁嬖O(shè)計時,在組件的與數(shù)據(jù)庫進行處理時添加了邏輯判定操作語句以便實現(xiàn)安全的訪問數(shù)據(jù)庫。6.2.1 服務(wù)器主界面服務(wù)器主界面,在運行CoolBearServerexe后就會運行服務(wù)器的主界面。這個類似

52、于DOS界面中里,要求我們輸入服務(wù)器的端口號然后按ENTER鍵開啟服務(wù)器,在程序中規(guī)定了端口號介于1024-65535之間,如果你輸入的端口號不在其間,將會報錯,提示用戶端口格式不符合規(guī),如果不輸入任何值就直接按ENTER鍵,服務(wù)器將會自動設(shè)置為默認值8888,這樣就開啟了服務(wù)器。服務(wù)器主界面如下圖所示:圖6-1 服務(wù)主界面6.2.2 客戶端界面1、用戶在進入聊天主界面前,首先要求用戶登錄,在登陸界面中,用戶不但要輸入正確匹配的用戶名和密碼,還要在折疊遠程服務(wù)器界面設(shè)置遠程服務(wù)器的IP地址和端口號。而點擊登錄界面中的設(shè)置按鈕就可打開遠程服務(wù)器的配置面板,用戶在點擊登錄按鈕時,向服務(wù)器上發(fā)送上線請求,服務(wù)器通過Socket接受到用戶發(fā)來的上線請求,然后截取客戶端發(fā)來的數(shù)據(jù)進行用戶驗證。驗證通過的話,就允許用戶登錄,并且將用戶的上線狀態(tài)更新至好友在線Hash表中同時將該用戶的在線好友列表與離線好友列表發(fā)送到其好友顯示界面,并建立進程進行Socket通信。登錄界面在界面設(shè)計時,還定義了兩個linkLabel控件,一個linklabel用于注冊新用戶,一個用于顯示信息。登錄界面如圖6-2所示:圖6-2 聊天系統(tǒng)用戶登錄界面使用登錄按鈕,客戶端產(chǎn)生的事件處理方法:private void L

溫馨提示

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

最新文檔

評論

0/150

提交評論