畢業(yè)設(shè)計(jì)(論文)基于C++的網(wǎng)絡(luò)聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于C++的網(wǎng)絡(luò)聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于C++的網(wǎng)絡(luò)聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于C++的網(wǎng)絡(luò)聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于C++的網(wǎng)絡(luò)聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘 要作為除電視、報(bào)紙、廣播之外的第四大媒體,互聯(lián)網(wǎng)不僅成為人們獲取新聞信息的主要來(lái)源,更成為了人們閑暇之余的一種休閑手段。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,各種各樣基于網(wǎng)絡(luò)的應(yīng)用也隨之誕生,網(wǎng)絡(luò)聊天工具便是其中的一種。本文采用visual studio 2008+sql server 2005開(kāi)發(fā)環(huán)境,結(jié)合winforms、ado.net等多種技術(shù),實(shí)現(xiàn)了一個(gè)類(lèi)似qq的網(wǎng)絡(luò)聊天工具,并在windows平臺(tái)上加以了實(shí)現(xiàn)。通過(guò)c#語(yǔ)言進(jìn)行網(wǎng)絡(luò)編程,通過(guò)公共的數(shù)據(jù)庫(kù)交換各種信息,實(shí)現(xiàn)了人性化的界面設(shè)計(jì)與功能設(shè)計(jì)。軟件經(jīng)過(guò)測(cè)試,滿足現(xiàn)代人們即時(shí)通信的需求,達(dá)到預(yù)期的設(shè)計(jì)效果,對(duì)網(wǎng)絡(luò)聊天工具的人性化設(shè)計(jì)具有一定的

2、現(xiàn)實(shí)意義,同時(shí)也為其他相關(guān)項(xiàng)目的設(shè)計(jì)提供了參考。關(guān)鍵詞:網(wǎng)絡(luò)聊天工具 c# 即時(shí)通信 數(shù)據(jù)庫(kù) 人性化abstractinternet is the fourth major media other than televisions, newspapers and broadcasting, acting not only as a major source of news information, it is also a means of recreation for people during their leisure. along with the high-speed develop

3、ment of the internet technology, various of applications which are based on network were born,one of them is online chat tool. this thesis develops a online chat tool which like qq and based on the integration of various technologies such as winforms, ado.net etc,and based on the adoption of visual

4、studio 2008+sql server 2005 development environment, then implement it on windows platform. it used c # language for network programming,and exchange different information through common database for the implemention of the humanized ui design and function design. after going through the tests, this

5、 online chat tool can achieve the projected design purpose of instantaneous communication needs of people in modern times, it also poses certain realistic significance to the humanization of online chat tool and provides as a reference to the design of other relevant projects.key words: online chat

6、tool c# instantaneous communication database humanization 目 錄第一章 引言11.1 系統(tǒng)開(kāi)發(fā)背景11.2 聊天軟件的開(kāi)發(fā)目標(biāo)1第二章 開(kāi)發(fā)環(huán)境與關(guān)鍵技術(shù)簡(jiǎn)介22.1 c#簡(jiǎn)介22.2 .net framework簡(jiǎn)介42.3 winforms窗體設(shè)計(jì)技術(shù)52.4 c/s結(jié)構(gòu)52.5 ado.net技術(shù)62.6 sql server 2005數(shù)據(jù)庫(kù)簡(jiǎn)介6第三章 需求分析83.1 可行性研究83.2 用戶需求83.3 性能需求83.4 系統(tǒng)功能需求9第四章 系統(tǒng)設(shè)計(jì)104.1 系統(tǒng)功能結(jié)構(gòu)104.2 系統(tǒng)模塊劃分104.3 系統(tǒng)整體流程圖

7、11第五章 詳細(xì)設(shè)計(jì)125.1 登錄界面設(shè)計(jì)125.2 注冊(cè)界面設(shè)計(jì)155.3 主界面設(shè)計(jì)195.4 查找/添加好友界面設(shè)計(jì)225.5 聊天界面設(shè)計(jì)285.6 個(gè)人設(shè)置界面設(shè)計(jì)335.7 頭像選擇界面設(shè)計(jì)345.8 系統(tǒng)消息界面設(shè)計(jì)35結(jié)束語(yǔ)38參考文獻(xiàn)39附錄一40附錄二41第一章 引言1.1 系統(tǒng)開(kāi)發(fā)背景當(dāng)今社會(huì)已進(jìn)入信息時(shí)代,信息是當(dāng)今世界最重要的資源之一,它與物質(zhì)及能源一起構(gòu)成了三大能源支柱。信息高速公路是信息社會(huì)的基礎(chǔ)設(shè)施,而互聯(lián)網(wǎng)則是信息高速公路的重要組成部分。在互聯(lián)網(wǎng)相當(dāng)普及的今天,你們對(duì)網(wǎng)絡(luò)的依賴越來(lái)越大,越來(lái)越離不開(kāi)網(wǎng)絡(luò),網(wǎng)絡(luò)聊天更是成為了人們的“家常便飯”。通過(guò)網(wǎng)絡(luò)聊天工具

8、,人們足不出戶就可進(jìn)行閑聊甚至工作會(huì)談,極大地方便了人們的日常生活與工作需求。常用的網(wǎng)絡(luò)聊天工具主要是qq與msn。msn主要用于國(guó)際,而國(guó)內(nèi)的主流網(wǎng)絡(luò)聊天工具是qq。qq有著非常良好的操作界面,和強(qiáng)大的通信功能,集娛樂(lè)、生活和工作于一身。隨著技術(shù)的進(jìn)步,qq不僅可以通過(guò)寬帶網(wǎng)在pc上使用,通過(guò)手機(jī)也可以實(shí)現(xiàn)與好友、同事通信。而無(wú)論是qq還是msn,都存在一個(gè)很大的問(wèn)題廣告。每次登陸后時(shí)不時(shí)會(huì)彈出一些廣告窗口,絕大多數(shù)網(wǎng)友都對(duì)此感覺(jué)厭煩。因此在本次論文的激勵(lì)下,我決定設(shè)計(jì)一個(gè)類(lèi)似qq并且無(wú)垃圾信息的網(wǎng)絡(luò)聊天工具,此外也希望通過(guò)本次論文能更好地學(xué)習(xí)與掌握網(wǎng)絡(luò)軟件編程知識(shí)。1.2 聊天軟件的開(kāi)發(fā)目

9、標(biāo)本論文的主要工作是設(shè)計(jì)一個(gè)類(lèi)似qq的網(wǎng)絡(luò)即時(shí)聊天工具,主要是采用winforms+ado.net技術(shù)實(shí)現(xiàn)。軟件功能主要包括用戶注冊(cè)、用戶登錄、用戶間聊天、查找/添加好友、個(gè)人設(shè)置等??蛻舳送ㄟ^(guò)公共的數(shù)據(jù)庫(kù)交換信息,消息的發(fā)送和讀取都是通過(guò)操作數(shù)據(jù)庫(kù)來(lái)完成的。在程序中采用定時(shí)掃描數(shù)據(jù)庫(kù)的方式來(lái)查找未讀消息。文章首先簡(jiǎn)介涉及的相關(guān)技術(shù)與基本知識(shí),然后闡述本軟件的功能,再具體分析軟件各個(gè)模塊的功能及具體實(shí)現(xiàn)方法。第二章 開(kāi)發(fā)環(huán)境與關(guān)鍵技術(shù)簡(jiǎn)介2.1 c#簡(jiǎn)介c#(讀作c sharp)是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.net framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言, 是一種安全的、穩(wěn)定的、簡(jiǎn)

10、單的、優(yōu)雅的,由c和c+衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承c和c+強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒(méi)有宏和模版,不允許多重繼承)。c#綜合了vb簡(jiǎn)單的可視化操作和c+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.net開(kāi)發(fā)的首選語(yǔ)言。c#看起來(lái)與java有著驚人的相似;它包括了諸如單一繼承,界面,與java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過(guò)程.但是c#與java有著明顯的不同,它借鑒了delphi的一個(gè)特點(diǎn),與com(組件對(duì)象模型)是直接集成的, 而且它是微軟公司.net windows網(wǎng)絡(luò)框架的主角。c#最引人入勝的地

11、方是它和java的不同,而不是相似的地方:中間代碼微軟在用戶選擇何時(shí)msil應(yīng)該編譯成機(jī)器碼的時(shí)候是留了很大的余地。微軟公司很小心的聲稱msil不是解釋性的,而是被編譯成了機(jī)器碼。它也明白許多,如果不是大多數(shù)的話,程序員認(rèn)為java程序要不可避免的比c編寫(xiě)的任何東西都要慢。而這種實(shí)現(xiàn)方式?jīng)Q定了基于msil的程序(指的是用c#,visual basic,managed c+-c+的一個(gè)符合cls的版本-等語(yǔ)言編寫(xiě)的程序)將在性能上超過(guò)解釋性的java代碼。當(dāng)然,這一點(diǎn)還需要得到事實(shí)證明,因?yàn)閏#和其他生成msil的編譯器還沒(méi)有發(fā)布。但是java jit編譯器的普遍存在使得java和c#在性能上相

12、對(duì)相同。象c#是編譯語(yǔ)言而java是解釋性的,之類(lèi)的聲明只是商業(yè)技巧。java的中間代碼和msil都是中間的匯編形式的語(yǔ)言,它們?cè)谶\(yùn)行時(shí)或其它的時(shí)候被編譯成機(jī)器代碼。命名空間中的申明當(dāng)你創(chuàng)建一個(gè)程序的時(shí)候,你在一個(gè)命名空間里創(chuàng)建了一個(gè)或多個(gè)類(lèi)。同在這個(gè)命名空間里(在類(lèi)的外面)你還有可能聲明接口,枚舉類(lèi)型和結(jié)構(gòu)體。必須使用using關(guān)鍵字來(lái)引用其他命名空間的內(nèi)容。 基本的數(shù)據(jù)類(lèi)型c#擁有比c,c+或者java更廣泛的數(shù)據(jù)類(lèi)型。這些類(lèi)型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。象java一樣,所有

13、這些類(lèi)型都有一個(gè)固定的大小。又象c和c+一樣,每個(gè)數(shù)據(jù)類(lèi)型都有有符號(hào)和無(wú)符號(hào)兩種類(lèi)型。與java相同的是,一個(gè)字符變量包含的是一個(gè)16位的unicode字符。c#新的數(shù)據(jù)類(lèi)型是decimal數(shù)據(jù)類(lèi)型,對(duì)于貨幣數(shù)據(jù),它能存放28位10進(jìn)制數(shù)字。 兩個(gè)基本類(lèi)一個(gè)名叫object的類(lèi)是所有其他類(lèi)的基類(lèi)。而一個(gè)名叫string的類(lèi)也象object一樣是這個(gè)語(yǔ)言的一部分。作為語(yǔ)言的一部分存在意味著編譯器有可能使用它,無(wú)論何時(shí)你在程序中寫(xiě)入一句帶引號(hào)的字符串,編譯器會(huì)創(chuàng)建一個(gè)string對(duì)象來(lái)保存它。參數(shù)傳遞方法可以被聲明接受可變數(shù)目的參數(shù)。缺省的參數(shù)傳遞方法是對(duì)基本數(shù)據(jù)類(lèi)型進(jìn)行值傳遞。ref關(guān)鍵字可以用

14、來(lái)強(qiáng)迫一個(gè)變量通過(guò)引用傳遞,這使得一個(gè)變量可以接受一個(gè)返回值。out關(guān)鍵字也能聲明引用傳遞過(guò)程,與ref不同的地方是,它指明這個(gè)參數(shù)并不需要初始值。與com的集成c#對(duì)windows程序最大的賣(mài)點(diǎn)可能就是它與com的無(wú)縫集成了,com就是微軟的win32組件技術(shù)。實(shí)際上,最終有可能在任何.net語(yǔ)言里編寫(xiě)com客戶和服務(wù)器端。c#編寫(xiě)的類(lèi)可以子類(lèi)化一個(gè)以存在的com組件;生成的類(lèi)也能被作為一個(gè)com組件使用,然后又能使用,比方說(shuō),jscript語(yǔ)言子類(lèi)化它從而得到第三個(gè)com組件。這種現(xiàn)象的結(jié)果是導(dǎo)致了一個(gè)運(yùn)行環(huán)境的產(chǎn)生,在這個(gè)環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用用任何.net語(yǔ)言子類(lèi)化。代理和反饋一

15、個(gè)代理對(duì)象包括了訪問(wèn)一個(gè)特定對(duì)象的特定方法所需的信息。只要把它當(dāng)成一個(gè)聰明的方法指針就行了。代理對(duì)象可以被移動(dòng)到另一個(gè)地方,然后可以通過(guò)訪問(wèn)它來(lái)對(duì)已存在的方法進(jìn)行類(lèi)型安全的調(diào)用。一個(gè)反饋方法是代理的特例。event關(guān)鍵字用在將在事件發(fā)生的時(shí)候被當(dāng)成代理調(diào)用的方法聲明。2.2 .net framework簡(jiǎn)介.net framework是支持生成、運(yùn)行下一代應(yīng)用程序和xml web services的內(nèi)部windows組件,它簡(jiǎn)化了在高度分布式internet環(huán)境中的應(yīng)用程序開(kāi)發(fā),.net framework可實(shí)現(xiàn)的功能如下:l 提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境,而無(wú)論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行

16、,還是在本地執(zhí)行但在 internet 上分布,或者是在遠(yuǎn)程執(zhí)行的。l 提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。l 提供一個(gè)可提高代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)執(zhí)行安全性的代碼執(zhí)行環(huán)境。l 提供一個(gè)可消除腳本環(huán)境或解釋環(huán)境的性能問(wèn)題的代碼執(zhí)行環(huán)境。l 使開(kāi)發(fā)人員的經(jīng)驗(yàn)在面對(duì)類(lèi)型大不相同的應(yīng)用程序(如基于 windows 的應(yīng)用程序和基于 web 的應(yīng)用程序)時(shí)保持一致。l 按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確保基于 .net framework 的代碼可與任何其他代碼集成。.net framework 具有兩個(gè)主要組件:公共語(yǔ)言運(yùn)行庫(kù)和.net framework

17、類(lèi)庫(kù)。公共語(yǔ)言運(yùn)行庫(kù)是 .net framework 的基礎(chǔ)。您可以將公共語(yǔ)言運(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供內(nèi)存管理、線程管理和遠(yuǎn)程處理等核心服務(wù),并且還強(qiáng)制實(shí)施嚴(yán)格的類(lèi)型安全以及可提高安全性和可靠性的其他形式的代碼準(zhǔn)確性。這類(lèi)似于java的虛擬機(jī)。事實(shí)上,代碼管理的概念是公共語(yǔ)言運(yùn)行庫(kù)的基本原則。以公共語(yǔ)言運(yùn)行庫(kù)為目標(biāo)的代碼稱為托管代碼,而不以公共語(yǔ)言運(yùn)行庫(kù)為目標(biāo)的代碼稱為非托管代碼。.net framework 的另一個(gè)主要組件是類(lèi)庫(kù),它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙?lèi)型集合,您可以使用它開(kāi)發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的命令行或圖形用戶界面 (gui) 應(yīng)用程序,也包

18、括基于 asp.net 所提供的最新創(chuàng)新的應(yīng)用程序(如 web 窗體和 xml web services)。.net framework 可由非托管組件承載,這些組件將公共語(yǔ)言運(yùn)行庫(kù)加載到它們的進(jìn)程中并啟動(dòng)托管代碼的執(zhí)行,從而創(chuàng)建一個(gè)可以同時(shí)利用托管和非托管功能的軟件環(huán)境。.net framework 不但提供若干個(gè)運(yùn)行庫(kù)宿主,而且還支持第三方運(yùn)行庫(kù)宿主的開(kāi)發(fā)。2.3 winforms窗體設(shè)計(jì)技術(shù)winform是.net開(kāi)發(fā)平臺(tái)中對(duì)windows form的一種稱謂。.net 為開(kāi)發(fā)winform的應(yīng)用程序提供了豐富的class library(類(lèi)庫(kù))。這些winfrom 類(lèi)庫(kù)支持rad(快速

19、應(yīng)用程序開(kāi)發(fā)),這些類(lèi)庫(kù)被封裝在一個(gè)名稱空間之中,這個(gè)名稱空間就是system.windows.forms。在此名稱空間中定義了許多類(lèi),在開(kāi)發(fā)基于.net的gui應(yīng)用程序的時(shí)候,就是通過(guò)繼承和擴(kuò)展這些類(lèi)才使得我們的程序有著多樣的用戶界面。2.4 c/s結(jié)構(gòu)c/s (client/server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到client端和server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開(kāi)銷(xiāo)。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是client/server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的web應(yīng)用發(fā)展,web和cl

20、ient/server 應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問(wèn)新的和現(xiàn)有的應(yīng)用系統(tǒng),通過(guò)現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。c/s結(jié)構(gòu)是當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展,使得當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造,其最大的優(yōu)點(diǎn)是將計(jì)算機(jī)工作任務(wù)分別由客戶端和服務(wù)器端來(lái)共同完成,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來(lái),任何客戶機(jī)都可以通過(guò)訪問(wèn)服務(wù)器而獲得所需的信息。client/server模型最終可歸結(jié)為一種“請(qǐng)求/應(yīng)答”關(guān)系。一個(gè)請(qǐng)求總是首先被

21、客戶發(fā)出,然后服務(wù)器總是被動(dòng)地接收請(qǐng)求,返回客戶需要的結(jié)果。在客戶發(fā)出一個(gè)請(qǐng)求之前,服務(wù)進(jìn)程一直處于休眠狀態(tài)。一個(gè)客戶提出請(qǐng)求后,服務(wù)進(jìn)程被“喚醒”并且為客戶提供服務(wù),對(duì)客戶的請(qǐng)求做出所需要的應(yīng)答,如圖2-1所示。圖2-1 客戶機(jī)服務(wù)器通信結(jié)構(gòu)示圖2.5 ado.net技術(shù)ado.net是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢?lèi)庫(kù)。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫(kù),但它同樣也能夠是文本文件、excel表格或者xml文件。ado.net允許和不同類(lèi)型的數(shù)據(jù)源以及數(shù)據(jù)庫(kù)進(jìn)行交互。然而并沒(méi)有與此相關(guān)的一系列類(lèi)來(lái)完成這樣的工作。因?yàn)椴煌臄?shù)據(jù)源采用不同的協(xié)議,所以對(duì)于不同的數(shù)據(jù)源必須采用相應(yīng)的協(xié)議。一些老式的數(shù)

22、據(jù)源使用odbc協(xié)議,許多新的數(shù)據(jù)源使用oledb協(xié)議,并且現(xiàn)在還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過(guò).net的ado.net類(lèi)庫(kù)來(lái)進(jìn)行連接。 ado.net提供與數(shù)據(jù)源進(jìn)行交互的相關(guān)的公共方法,但是對(duì)于不同的數(shù)據(jù)源采用一組不同的類(lèi)庫(kù)。這些類(lèi)庫(kù)稱為data providers,并且通常是以與之交互的協(xié)議和數(shù)據(jù)源的類(lèi)型來(lái)命名的。然而無(wú)論使用什么樣的data provider,你將使用相似的對(duì)象與數(shù)據(jù)源進(jìn)行交互。sqlconnection對(duì)象管理與數(shù)據(jù)源的連接。sqlcommand對(duì)象允許你與數(shù)據(jù)源交流并發(fā)送命令給它。為了對(duì)進(jìn)行快速的只“向前”地讀取數(shù)據(jù),使用sqldatareader。如果

23、想使用斷開(kāi)數(shù)據(jù),使用dataset并實(shí)現(xiàn)能進(jìn)行讀取或者寫(xiě)入數(shù)據(jù)源的sqldataadapter。2.6 sql server 2005數(shù)據(jù)庫(kù)簡(jiǎn)介sql server 2005 是一個(gè)全面的數(shù)據(jù)庫(kù)平臺(tái),使用集成的商業(yè)智能 (bi) 工具提供了企業(yè)級(jí)的數(shù)據(jù)管理。sql server 2005 數(shù)據(jù)庫(kù)引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序 。sql server 2005 數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外 sql server 2005 結(jié)合了分析、報(bào)表、集成和通知功能。這使您的企業(yè)可以構(gòu)建和部署經(jīng)濟(jì)有效的 bi

24、解決方案,幫助您的團(tuán)隊(duì)通過(guò)記分卡、dashboard、web services 和移動(dòng)設(shè)備將數(shù)據(jù)應(yīng)用推向業(yè)務(wù)的各個(gè)領(lǐng)域。與 microsoft visual studio、microsoft office system 以及新的開(kāi)發(fā)工具包(包括 business intelligence development studio)的緊密集成使 sql server 2005 與眾不同。無(wú)論您是開(kāi)發(fā)人員、數(shù)據(jù)庫(kù)管理員、信息工作者還是決策者,sql server 2005 都可以為您提供創(chuàng)新的解決方案,幫助您從數(shù)據(jù)中更多地獲益。sql server 2005 通過(guò)在可伸縮性、數(shù)據(jù)集成、開(kāi)發(fā)工具和強(qiáng)大的

25、分析等方面的革新更好的確立了微軟在bi領(lǐng)域的領(lǐng)導(dǎo)地位。sql server 2005 能夠把關(guān)鍵的信息及時(shí)的傳遞到組織內(nèi)員工的手中,從而實(shí)現(xiàn)了可伸縮的商業(yè)智能。從ceo 到信息工作者,員工可以快速的、容易的處理數(shù)據(jù),以更快更好的做出決策。sql server 2005全面的集成、分析和報(bào)表功能使企業(yè)能夠提高他們已有應(yīng)用的價(jià)值,即便這些應(yīng)用是在不同的平臺(tái)上。 商業(yè)智能增強(qiáng)體現(xiàn)在以下幾個(gè)方面: 端到端的集成bi平臺(tái) 集成服務(wù) 分析服務(wù) 報(bào)表服務(wù) microsoft office system的集成本網(wǎng)絡(luò)聊天軟件的開(kāi)發(fā)環(huán)境主要使用sql server 2005的開(kāi)發(fā)版。sql server 2005

26、 developer edition(32位和64 位) developer edition 使開(kāi)發(fā)人員可以在sql server 上生成任何類(lèi)型的應(yīng)用程序。它包括 sql server 2005 enterprise edition 的所有功能,但有許可限制,只能用于開(kāi)發(fā)和測(cè)試系統(tǒng),而不能用作生產(chǎn)服務(wù)器。developer edition 是獨(dú)立軟件供應(yīng)商(isv)、咨詢?nèi)藛T、系統(tǒng)集成商、解決方案供應(yīng)商以及創(chuàng)建和測(cè)試應(yīng)用程序的企業(yè)開(kāi)發(fā)人員的理想選擇。developer edition 可以根據(jù)生產(chǎn)需要升級(jí)至sql server 2005 enterprise edition。第三章 需求分析

27、3.1 可行性研究本軟件只做開(kāi)發(fā)學(xué)習(xí)使用,所以暫且不考慮經(jīng)濟(jì)成本及盈利問(wèn)題。開(kāi)發(fā)所需要的平臺(tái)已經(jīng)搭建好,并做好了充分的前期準(zhǔn)備工作,其次因?yàn)楸境绦虻钠脚_(tái)將基于windows,將要使用網(wǎng)絡(luò)通信技術(shù),而windows有完善成熟的網(wǎng)絡(luò)通信接口,以及與c#開(kāi)發(fā)環(huán)境的嚴(yán)密契合能力,加之相類(lèi)似的更大規(guī)模的網(wǎng)絡(luò)聊天工具產(chǎn)品也已有例在先,所以這個(gè)程序的開(kāi)發(fā)在技術(shù)上是完全可行的。3.2 用戶需求隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)聊天工具已經(jīng)成為了人們?nèi)粘I钪胁豢扇鄙俚囊徊糠?。根?jù)人們對(duì)聊天工具的需求,主要可以概括為以下幾點(diǎn):1、 操作簡(jiǎn)單方便、界面簡(jiǎn)潔美觀;2、 能夠注冊(cè)新用戶;3、 擁有熟悉的聊天界面;4、 能夠查找/

28、添加好友;5、 能夠進(jìn)行個(gè)人設(shè)置;6、 系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。3.3 性能需求首先要求程序要完全可靠,可以應(yīng)付各種由于系統(tǒng)問(wèn)題產(chǎn)生的錯(cuò)誤,比如初始網(wǎng)絡(luò)失敗等。要求提前設(shè)想到類(lèi)似的盡可能多的可能發(fā)生的事件,做出相應(yīng)的應(yīng)對(duì)措施,并向用戶提交簡(jiǎn)單易懂清晰明白的提示信息。程序要有良好的容錯(cuò)性,當(dāng)用戶進(jìn)行非法操作時(shí)或者系統(tǒng)本身出現(xiàn)問(wèn)題時(shí)要能以最好的方式退出程序,避免發(fā)生程序假死現(xiàn)象。開(kāi)發(fā)文檔要有好的易理解性,如果系統(tǒng)又要交由別人接手開(kāi)發(fā),或者自己由于種種原因需要進(jìn)行二次開(kāi)發(fā),那么要保證以后能夠清晰的理解整個(gè)系統(tǒng)的設(shè)計(jì)思路以及實(shí)現(xiàn)細(xì)節(jié)。要求程序?qū)λ\(yùn)行之系統(tǒng)的硬件條件要求盡可能低,運(yùn)行時(shí)內(nèi)存占用盡可能小

29、,響應(yīng)速度要盡可能快。并且不發(fā)生內(nèi)存泄漏之類(lèi)影響系統(tǒng)運(yùn)行的錯(cuò)誤事件。并且要求易于維護(hù)及擴(kuò)展。所以應(yīng)該采用模塊化開(kāi)發(fā),各個(gè)模塊之間不要有太多的耦合,以免維護(hù)困難。3.4 系統(tǒng)功能需求這個(gè)程序要實(shí)現(xiàn)的功能如下:(1) 程序啟動(dòng)之后就能直接進(jìn)入登陸界面,輸入錯(cuò)誤時(shí)會(huì)提示。(2) 登陸界面有注冊(cè)新用戶選項(xiàng),點(diǎn)擊進(jìn)入注冊(cè)界面。(3) 注冊(cè)成功后會(huì)提示自動(dòng)生成的qq號(hào)碼。(4) 登陸后進(jìn)入主界面,用戶可以添加好友,可以直接查找,也可以按條件查找,還可以查看所有用戶。(5)當(dāng)雙擊列表中某個(gè)用戶頭像的時(shí)候,要彈出聊天對(duì)話框,可以在其中編輯要發(fā)送的聊天信息,并進(jìn)行發(fā)送。(6)聊天界面要人性化,下面是發(fā)送框,上面

30、對(duì)方發(fā)來(lái)的上一條聊天記錄。(7)可以修改自己的個(gè)人資料,也可以更換頭像。第四章 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)功能結(jié)構(gòu)基于c#的網(wǎng)絡(luò)聊天軟件更 換 頭 像 個(gè) 人 設(shè) 置用 戶 登 錄好 友 列 表發(fā) 送 消 息 刪 除 好 友 添 加 好 友接 收 消 息 查 找 好 友用 戶 注 冊(cè)圖4-1 系統(tǒng)功能結(jié)構(gòu)4.2 系統(tǒng)模塊劃分登錄模塊:實(shí)現(xiàn)用戶登錄功能。在沒(méi)有賬號(hào)的情況下可以選擇進(jìn)入注冊(cè)新用戶界面。注冊(cè)模塊:實(shí)現(xiàn)注冊(cè)新用戶功能。注冊(cè)信息包括必填基本資料與選填資料。主模塊:實(shí)現(xiàn)列表功能。列表包括好友列表與陌生人列表。通過(guò)主界面可以進(jìn)行聊天功能,也可以打開(kāi)查找/添加好友功能與個(gè)人設(shè)置功能等。聊天模塊:實(shí)現(xiàn)

31、發(fā)送消息與接收消息功能。通過(guò)公共的數(shù)據(jù)庫(kù)交換信息,消息的發(fā)送和讀取都是通過(guò)操作數(shù)據(jù)庫(kù)來(lái)完成的。在程序中采用定時(shí)掃描數(shù)據(jù)庫(kù)的方式來(lái)查找未讀消息。也能實(shí)現(xiàn)刪除好友功能。查找/添加好友模塊:實(shí)現(xiàn)查找好友功能與添加好友功能。主要方法有精確查找、按條件查找,與查看所有用戶。個(gè)人設(shè)置模塊:實(shí)現(xiàn)修改個(gè)人資料。更換頭像模塊:實(shí)現(xiàn)更換用戶頭像。系統(tǒng)消息模塊:實(shí)現(xiàn)添加好友信息的讀取。4.3 系統(tǒng)整體流程圖該網(wǎng)絡(luò)聊天工具系統(tǒng)整體流程圖如圖4-2所示:登錄成功主界面聊天界面/個(gè)人設(shè)置界面/查找添加好友界面nyynny顯示號(hào)碼注冊(cè)成功合法?輸入檢查注冊(cè)登錄驗(yàn)證輸入登錄數(shù)據(jù)已注冊(cè)?用 戶圖4-2 系統(tǒng)整體流程圖第五章 詳

32、細(xì)設(shè)計(jì)5.1 登錄界面設(shè)計(jì)當(dāng)用戶運(yùn)行程序時(shí),首先進(jìn)入的是登錄界面,如圖5-1所示:圖5-1 登錄界面如果沒(méi)有賬號(hào),則單擊“注冊(cè)新用戶”標(biāo)簽,可以打開(kāi)注冊(cè)界面;如果有已注冊(cè)的賬號(hào),則在輸入賬號(hào)與密碼后,點(diǎn)擊“登錄”按鈕,可以打開(kāi)主界面。如果輸入有誤,則出現(xiàn)圖5-2所示界面:圖5-2 輸入錯(cuò)誤程序也不允許在賬號(hào)或密碼處輸入空格字符,如有此情況,則會(huì)出現(xiàn)圖5-3與圖5-4所示界面:圖 5-3 未輸入賬號(hào)圖5-4 未輸入密碼當(dāng)點(diǎn)擊“登錄”按鈕時(shí),則觸發(fā)登錄按鈕事件,其處理流程圖如圖5-5所示:用 戶輸入登錄數(shù)據(jù)掃描數(shù)據(jù)庫(kù)中的users表有該用戶且密碼正確?登錄成功主界面yn圖5-5 登錄事件流程圖其中

33、登錄按鈕的代碼實(shí)現(xiàn)如下:/ 登錄按鈕事件處理 private void btnlogin_click(object sender, eventargs e) bool error = false; / 標(biāo)志在執(zhí)行數(shù)據(jù)庫(kù)操作的過(guò)程中是否出錯(cuò) / 如果輸入驗(yàn)證成功,就驗(yàn)證身份,并轉(zhuǎn)到相應(yīng)的窗體 if (validateinput() int num = 0; / 數(shù)據(jù)庫(kù)操作結(jié)果 try / 查詢用的sql語(yǔ)句 string sql = string.format(select count(*) from users where id=0 and loginpwd = 1, int.parse(tx

34、tloginid.text.trim(), txtloginpwd.text.trim(); / 創(chuàng)建command 對(duì)象 sqlcommand command = new sqlcommand(sql, dbhelper.connection); dbhelper.connection.open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 num = convert.toint32(command.executescalar(); catch (exception ex) error = true; console.writeline(ex.message); finally dbhelper.connect

35、ion.close(); / 關(guān)閉數(shù)據(jù)庫(kù)連接 if (!error & (num = 1) / 驗(yàn)證通過(guò) / 設(shè)置登錄的用戶號(hào)碼 userhelper.loginid = int.parse(txtloginid.text.trim(); / 創(chuàng)建主窗體 mainform mainform = new mainform(); mainform.show(); / 顯示窗體 this.visible = false; / 當(dāng)前窗體不可見(jiàn) else messagebox.show(輸入的用戶名或密碼有誤!, 登錄提示, messageboxbuttons.ok, messageboxicon.er

36、ror); / 用戶輸入驗(yàn)證 private bool validateinput() / 驗(yàn)證用戶輸入 if (txtloginid.text.trim() = ) messagebox.show(請(qǐng)輸入登錄的號(hào)碼, 登錄提示, messageboxbuttons.ok, messageboxicon.information); txtloginid.focus(); return false; else if (txtloginpwd.text.trim() = ) messagebox.show(請(qǐng)輸入密碼, 登錄提示, messageboxbuttons.ok, messageboxi

37、con.information); txtloginpwd.focus(); return false; return true; 5.2 注冊(cè)界面設(shè)計(jì)當(dāng)在登錄界面點(diǎn)擊“注冊(cè)新用戶”標(biāo)簽時(shí),將打開(kāi)注冊(cè)界面,如圖5-6所示:圖5-6 注冊(cè)界面其中基本資料為必填資料,詳細(xì)資料為選填資料。在用戶輸入完資料后,點(diǎn)擊“確認(rèn)注冊(cè)”按鈕進(jìn)行注冊(cè)。其間會(huì)對(duì)相關(guān)的輸入進(jìn)行檢查,如果輸入不符合規(guī)范,則不允許注冊(cè),不會(huì)向數(shù)據(jù)庫(kù)插入記錄,并會(huì)提示錯(cuò)誤原因。如果輸入正確,則向數(shù)據(jù)庫(kù)插入一條用戶記錄,在數(shù)據(jù)庫(kù)中自動(dòng)生成一個(gè)新的登錄號(hào)碼(users表的id字段),以消息框的形式告訴用戶申請(qǐng)成功的號(hào)碼。其流程圖如圖5-7所示

38、:ny用戶返回登錄界面注冊(cè)成功并顯示號(hào)碼向數(shù)據(jù)庫(kù)中添加記錄合法?提示不合法原因檢查合法性輸入注冊(cè)信息自動(dòng)添加星座選項(xiàng)與血型選項(xiàng)打開(kāi)注冊(cè)界面圖5-7 注冊(cè)界面流程圖其中確認(rèn)注冊(cè)按鈕的代碼實(shí)現(xiàn)如下:/ 點(diǎn)擊注冊(cè),向數(shù)據(jù)庫(kù)添加記錄 private void btnregist_click(object sender, eventargs e) / 輸入驗(yàn)證通過(guò),就插入記錄到數(shù)據(jù)庫(kù) if (validateinput() int myqqnum = 0; / qq號(hào)碼 string message; / 彈出的消息 string sex = rdomale.checked ? rdomale.text

39、 : rdofemale.text; / 獲得選中的性別 string sql = ; / 查詢用的sql語(yǔ)句 int starid; / 星座id int bloodtypeid; / 血型id bool error = false; / 操作數(shù)據(jù)庫(kù)是否出錯(cuò) / 根據(jù)星座和血型的選擇來(lái)分情況確定sql語(yǔ)句 if (cbostar.text != & cbobloodtype.text != ) / 獲得星座的id starid = getstarid(); / 獲得血型的id bloodtypeid = getbloodtype(); sql = string.format(insert i

40、nto users (loginpwd, nickname, sex, age, name, starid, bloodtypeid) values (0,1,2,3,4,5,6), txtloginpwd.text.trim(), txtnickname.text.trim(), sex, int.parse(txtage.text.trim(), txtname.text.trim(), starid, bloodtypeid); else if (cbostar.text != & cbobloodtype.text = ) / 獲得星座的id starid = getstarid();

41、 sql = string.format(insert into users (loginpwd, nickname, sex, age, name, starid) values (0,1,2,3,4, 5), txtloginpwd.text.trim(), txtnickname.text.trim(), sex, int.parse(txtage.text.trim(), txtname.text.trim(),starid); else if (cbostar.text = & cbobloodtype.text != ) / 獲得血型的id bloodtypeid = getblo

42、odtype(); sql = string.format(insert into users (loginpwd, nickname, sex, age, name, bloodtypeid) values (0,1,2,3,4, 5), txtloginpwd.text.trim(), txtnickname.text.trim(), sex, int.parse(txtage.text.trim(), txtname.text.trim(), bloodtypeid); else sql = string.format(insert into users (loginpwd, nickn

43、ame, sex, age, name) values (0,1,2,3,4), txtloginpwd.text.trim(), txtnickname.text.trim(), sex, int.parse(txtage.text.trim(), txtname.text.trim(); try / 創(chuàng)建command 對(duì)象 sqlcommand command = new sqlcommand(sql, dbhelper.connection); dbhelper.connection.open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 int result = command.executenonqu

44、ery(); / 執(zhí)行插入命令 if (result = 1) sql = select identity from users; / 查詢新增加的記錄的標(biāo)識(shí)號(hào) command.commandtext = sql; / 重新指定command 對(duì)象的sql 語(yǔ)句 myqqnum = convert.toint32(command.executescalar(); / 強(qiáng)制類(lèi)型轉(zhuǎn)換會(huì)出錯(cuò) message = string.format(注冊(cè)成功!你的myqq號(hào)碼是0, myqqnum); else message = 注冊(cè)失敗,請(qǐng)重試!; catch (exception ex) error =

45、 true; message = 服務(wù)器出現(xiàn)意外錯(cuò)誤!請(qǐng)稍候再試!; console.writeline(ex.message); finally dbhelper.connection.close(); / 關(guān)閉數(shù)據(jù)庫(kù)連接 / 顯示注冊(cè)結(jié)果 if (error) messagebox.show(message, 注冊(cè)失敗, messageboxbuttons.ok, messageboxicon.warning); else messagebox.show(message, 注冊(cè)結(jié)果, messageboxbuttons.ok, messageboxicon.information); th

46、is.close(); 5.3 主界面設(shè)計(jì)當(dāng)用戶輸入正確的登錄信息并登錄后,出現(xiàn)圖5-8所示的主界面:圖5-8 主界面登陸后在“我的好友”列表中顯示當(dāng)前好友列表,包括好友的頭像和昵稱。在主界面的頂部要顯示當(dāng)前登陸的用戶頭像,昵稱和登錄賬號(hào)。當(dāng)有新的聊天消息時(shí)候。發(fā)來(lái)的消息的好友頭像要閃動(dòng),雙擊頭像彈出“聊天”窗口后,頭像停止閃動(dòng),當(dāng)有添加好友請(qǐng)求消息時(shí),窗體底部的好友請(qǐng)求驗(yàn)證按鈕要閃爍,單擊該按鈕彈出“系統(tǒng)消息”窗體后,按鈕停止閃爍。通過(guò)主窗體下方的按紐打開(kāi)“查找/添加好友”窗體,“個(gè)人信息”窗口,“系統(tǒng)消息”窗口,也可刷新好友列表和退出程序。通過(guò)右鍵菜單能夠切換大小頭像。能夠把陌生人轉(zhuǎn)為好友,能夠刪除一個(gè)好友或陌生人,如圖5-9所示:圖5-

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論