版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 . . . 摘 要作為除電視、報紙、廣播之外的第四大媒體,互聯(lián)網(wǎng)不僅成為人們獲取新聞信息的主要來源,更成為了人們閑暇之余的一種休閑手段。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,各種各樣基于網(wǎng)絡(luò)的應(yīng)用也隨之誕生,網(wǎng)絡(luò)聊天工具便是其中的一種。本文采用Visual Studio 2008+SQL Server 2005開發(fā)環(huán)境,結(jié)合WinForms、ADO.NET等多種技術(shù),實現(xiàn)了一個類似 的網(wǎng)絡(luò)聊天工具,并在WINDOWS平臺上加以了實現(xiàn)。通過C#語言進(jìn)行網(wǎng)絡(luò)編程,通過公共的數(shù)據(jù)庫交換各種信息,實現(xiàn)了人性化的界面設(shè)計與功能設(shè)計。軟件經(jīng)過測試,滿足現(xiàn)代人們即時通信的需求,達(dá)到預(yù)期的設(shè)計效果,對網(wǎng)絡(luò)聊天工具的人性化設(shè)
2、計具有一定的現(xiàn)實意義,同時也為其他相關(guān)項目的設(shè)計提供了參考。關(guān)鍵詞:網(wǎng)絡(luò)聊天工具 C# 即時通信 數(shù)據(jù)庫 人性化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 d
3、evelopment 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 and based on the integration of various technologies such as WinForms, ADO.NET etc,and based on the adoption of Visua
4、l 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, th
5、is online chat tool can achieve the projected design purpose of instantaneous communicationneeds 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)開發(fā)背景11.2 聊天軟件的開發(fā)目標(biāo)1第二章 開發(fā)環(huán)境與關(guān)鍵技術(shù)簡介22.1 C#簡介22.2 .NET Framework簡介42.3 WinForms窗體設(shè)計技術(shù)52.4 C/S結(jié)構(gòu)52.5 ADO.NET技術(shù)62.6 SQL Server 2005數(shù)據(jù)庫簡介6第三章 需求分析83.1 可行性研究83.2 用戶需求83.3 性能需求83.4 系統(tǒng)功能需求9第四章 系統(tǒng)設(shè)計104.1 系統(tǒng)功能結(jié)構(gòu)104.2 系統(tǒng)模塊劃分104.3 系統(tǒng)整體流程
7、圖11第五章 詳細(xì)設(shè)計125.1 登錄界面設(shè)計125.2 注冊界面設(shè)計155.3 主界面設(shè)計195.4查找/添加好友界面設(shè)計225.5 聊天界面設(shè)計285.6 個人設(shè)置界面設(shè)計335.7 頭像選擇界面設(shè)計345.8 系統(tǒng)消息界面設(shè)計35結(jié)束語38參考文獻(xiàn)39附錄一40附錄二4142 / 44第一章 引言1.1 系統(tǒng)開發(fā)背景當(dāng)今社會已進(jìn)入信息時代,信息是當(dāng)今世界最重要的資源之一,它與物質(zhì)與能源一起構(gòu)成了三大能源支柱。信息高速公路是信息社會的基礎(chǔ)設(shè)施,而互聯(lián)網(wǎng)則是信息高速公路的重要組成部分。在互聯(lián)網(wǎng)相當(dāng)普與的今天,你們對網(wǎng)絡(luò)的依賴越來越大,越來越離不開網(wǎng)絡(luò),網(wǎng)絡(luò)聊天更是成為了人們的“家常便飯”。通
8、過網(wǎng)絡(luò)聊天工具,人們足不出戶就可進(jìn)行閑聊甚至工作會談,極方便了人們的日常生活與工作需求。常用的網(wǎng)絡(luò)聊天工具主要是 與MSN。MSN主要用于國際,而國的主流網(wǎng)絡(luò)聊天工具是 。 有著非常良好的操作界面,和強(qiáng)大的通信功能,集娛樂、生活和工作于一身。隨著技術(shù)的進(jìn)步, 不僅可以通過寬帶網(wǎng)在PC上使用,通過手機(jī)也可以實現(xiàn)與好友、同事通信。而無論是 還是MSN,都存在一個很大的問題廣告。每次登陸后時不時會彈出一些廣告窗口,絕大多數(shù)網(wǎng)友都對此感覺厭煩。因此在本次論文的激勵下,我決定設(shè)計一個類似 并且無垃圾信息的網(wǎng)絡(luò)聊天工具,此外也希望通過本次論文能更好地學(xué)習(xí)與掌握網(wǎng)絡(luò)軟件編程知識。1.2 聊天軟件的開發(fā)目標(biāo)本
9、論文的主要工作是設(shè)計一個類似 的網(wǎng)絡(luò)即時聊天工具,主要是采用WinForms+ADO.NET技術(shù)實現(xiàn)。軟件功能主要包括用戶注冊、用戶登錄、用戶間聊天、查找/添加好友、個人設(shè)置等。客戶端通過公共的數(shù)據(jù)庫交換信息,消息的發(fā)送和讀取都是通過操作數(shù)據(jù)庫來完成的。在程序中采用定時掃描數(shù)據(jù)庫的方式來查找未讀消息。文章首先簡介涉與的相關(guān)技術(shù)與基本知識,然后闡述本軟件的功能,再具體分析軟件各個模塊的功能與具體實現(xiàn)方法。第二章 開發(fā)環(huán)境與關(guān)鍵技術(shù)簡介2.1 C#簡介C#(讀作C Sharp)是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級程序設(shè)計語言,是一種安全的、穩(wěn)定的、簡單的、優(yōu)
10、雅的,由C和C+衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C+強(qiáng)大功能的同時去掉了一些它們的復(fù)雜特性(例如沒有宏和模版,不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運(yùn)行的過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。C#最引人入勝的地方是它和J
11、ava的不同,而不是相似的地方:中間代碼微軟在用戶選擇何時MSIL應(yīng)該編譯成機(jī)器碼的時候是留了很大的余地。微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機(jī)器碼。它也明白許多,如果不是大多數(shù)的話,程序員認(rèn)為Java程序要不可避免的比C編寫的任何東西都要慢。而這種實現(xiàn)方式?jīng)Q定了基于MSIL的程序(指的是用C#,Visual Basic,Managed C+-C+的一個符合CLS的版本-等語言編寫的程序)將在性能上超過解釋性的Java代碼。當(dāng)然,這一點還需要得到事實證明,因為C#和其他生成MSIL的編譯器還沒有發(fā)布。但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對一樣。象
12、C#是編譯語言而Java是解釋性的,之類的聲明只是商業(yè)技巧。Java的中間代碼和MSIL都是中間的匯編形式的語言,它們在運(yùn)行時或其它的時候被編譯成機(jī)器代碼。命名空間中的申明當(dāng)你創(chuàng)建一個程序的時候,你在一個命名空間里創(chuàng)建了一個或多個類。同在這個命名空間里(在類的外面)你還有可能聲明接口,枚舉類型和結(jié)構(gòu)體。必須使用using關(guān)鍵字來引用其他命名空間的容。 基本的數(shù)據(jù)類型C#擁有比C,C+或者Java更廣泛的數(shù)據(jù)類型。這些類型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。象Java一樣,所有這些類型都有
13、一個固定的大小。又象C和C+一樣,每個數(shù)據(jù)類型都有有符號和無符號兩種類型。與Java一樣的是,一個字符變量包含的是一個16位的Unicode字符。C#新的數(shù)據(jù)類型是decimal數(shù)據(jù)類型,對于貨幣數(shù)據(jù),它能存放28位10進(jìn)制數(shù)字。 兩個基本類一個名叫object的類是所有其他類的基類。而一個名叫string的類也象object一樣是這個語言的一部分。作為語言的一部分存在意味著編譯器有可能使用它,無論何時你在程序中寫入一句帶引號的字符串,編譯器會創(chuàng)建一個string對象來保存它。參數(shù)傳遞方法可以被聲明接受可變數(shù)目的參數(shù)。缺省的參數(shù)傳遞方法是對基本數(shù)據(jù)類型進(jìn)行值傳遞。ref關(guān)鍵字可以用來強(qiáng)迫一個變
14、量通過引用傳遞,這使得一個變量可以接受一個返回值。out關(guān)鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數(shù)并不需要初始值。與COM的集成C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術(shù)。實際上,最終有可能在任何.NET語言里編寫COM客戶和服務(wù)器端。C#編寫的類可以子類化一個以存在的COM組件;生成的類也能被作為一個COM組件使用,然后又能使用,比方說,JScript語言子類化它從而得到第三個COM組件。這種現(xiàn)象的結(jié)果是導(dǎo)致了一個運(yùn)行環(huán)境的產(chǎn)生,在這個環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用用任何.NET語言子類化。代理和反饋一個代理對象包
15、括了訪問一個特定對象的特定方法所需的信息。只要把它當(dāng)成一個聰明的方法指針就行了。代理對象可以被移動到另一個地方,然后可以通過訪問它來對已存在的方法進(jìn)行類型安全的調(diào)用。一個反饋方法是代理的特例。event關(guān)鍵字用在將在事件發(fā)生的時候被當(dāng)成代理調(diào)用的方法聲明。2.2.NET Framework簡介.NET Framework是支持生成、運(yùn)行下一代應(yīng)用程序和XML Web Services的部Windows組件,它簡化了在高度分布式Internet環(huán)境中的應(yīng)用程序開發(fā),.NET Framework可實現(xiàn)的功能如下:l 提供一個一致的面向?qū)ο蟮木幊汰h(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,還是在本地執(zhí)行
16、但在 Internet 上分布,或者是在遠(yuǎn)程執(zhí)行的。l 提供一個將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。l 提供一個可提高代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)執(zhí)行安全性的代碼執(zhí)行環(huán)境。l 提供一個可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。l 使開發(fā)人員的經(jīng)驗在面對類型大不一樣的應(yīng)用程序(如基于 Windows 的應(yīng)用程序和基于 Web 的應(yīng)用程序)時保持一致。l 按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確?;?.NET Framework 的代碼可與任何其他代碼集成。.NET Framework 具有兩個主要組件:公共語言運(yùn)行庫和.NET Framework類庫。公共語言運(yùn)
17、行庫是 .NET Framework 的基礎(chǔ)。您可以將公共語言運(yùn)行庫看作一個在執(zhí)行時管理代碼的代理,它提供存管理、線程管理和遠(yuǎn)程處理等核心服務(wù),并且還強(qiáng)制實施嚴(yán)格的類型安全以與可提高安全性和可靠性的其他形式的代碼準(zhǔn)確性。這類似于Java的虛擬機(jī)。事實上,代碼管理的概念是公共語言運(yùn)行庫的基本原則。以公共語言運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以公共語言運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。.NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的命令行或圖形用戶界面 (GUI) 應(yīng)用程序,也包括基于 ASP.N
18、ET 所提供的最新創(chuàng)新的應(yīng)用程序(如 Web 窗體和 XML Web services)。.NET Framework 可由非托管組件承載,這些組件將公共語言運(yùn)行庫加載到它們的進(jìn)程中并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NET Framework 不但提供若干個運(yùn)行庫宿主,而且還支持第三方運(yùn)行庫宿主的開發(fā)。2.3 WinForms窗體設(shè)計技術(shù)WinForm是.Net開發(fā)平臺中對Windows Form的一種稱謂。.Net 為開發(fā)WinForm的應(yīng)用程序提供了豐富的Class Library(類庫)。這些WinFrom 類庫支持RAD(快速應(yīng)用程序開發(fā)),這
19、些類庫被封裝在一個名稱空間之中,這個名稱空間就是System.Windows.Forms。在此名稱空間中定義了許多類,在開發(fā)基于.Net的GUI應(yīng)用程序的時候,就是通過繼承和擴(kuò)展這些類才使得我們的程序有著多樣的用戶界面。2.4 C/S結(jié)構(gòu)C/S (Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(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/Serv
20、er 應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(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ù)庫應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展,使得當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造,其最大的優(yōu)點是將計算機(jī)工作任務(wù)分別由客戶端和服務(wù)器端來共同完成,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來,任何客戶機(jī)都可以通過訪問服務(wù)器而獲得所需的信息。Client/Server模型最終可歸結(jié)為一種“請求/應(yīng)答”關(guān)系。一個請求總是首先被客戶發(fā)出,然后服務(wù)器
21、總是被動地接收請求,返回客戶需要的結(jié)果。在客戶發(fā)出一個請求之前,服務(wù)進(jìn)程一直處于休眠狀態(tài)。一個客戶提出請求后,服務(wù)進(jìn)程被“喚醒”并且為客戶提供服務(wù),對客戶的請求做出所需要的應(yīng)答,如圖2-1所示。圖2-1 客戶機(jī)服務(wù)器通信結(jié)構(gòu)示圖2.5 ADO.NET技術(shù)ADO.NET是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢悗?。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但它同樣也能夠是文本文件、Excel表格或者XML文件。ADO.NET允許和不同類型的數(shù)據(jù)源以與數(shù)據(jù)庫進(jìn)行交互。然而并沒有與此相關(guān)的一系列類來完成這樣的工作。因為不同的數(shù)據(jù)源采用不同的協(xié)議,所以對于不同的數(shù)據(jù)源必須采用相應(yīng)的協(xié)議。一些老式的數(shù)據(jù)源使用ODBC協(xié)議
22、,許多新的數(shù)據(jù)源使用OleDb協(xié)議,并且現(xiàn)在還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過.NET的ADO.NET類庫來進(jìn)行連接。 ADO.NET提供與數(shù)據(jù)源進(jìn)行交互的相關(guān)的公共方法,但是對于不同的數(shù)據(jù)源采用一組不同的類庫。這些類庫稱為Data Providers,并且通常是以與之交互的協(xié)議和數(shù)據(jù)源的類型來命名的。然而無論使用什么樣的Data Provider,你將使用相似的對象與數(shù)據(jù)源進(jìn)行交互。SqlConnection對象管理與數(shù)據(jù)源的連接。SqlCommand對象允許你與數(shù)據(jù)源交流并發(fā)送命令給它。為了對進(jìn)行快速的只“向前”地讀取數(shù)據(jù),使用SqlDataReader。如果想使用斷開數(shù)據(jù),使用
23、DataSet并實現(xiàn)能進(jìn)行讀取或者寫入數(shù)據(jù)源的SqlDataAdapter。2.6 SQL Server 2005數(shù)據(jù)庫簡介SQL Server 2005 是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能 (BI) 工具提供了企業(yè)級的數(shù)據(jù)管理。SQL Server 2005 數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序 。SQL Server 2005 數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外 SQL Server 2005 結(jié)合了分析、報表、集成和通知功能。這使您的企業(yè)可以構(gòu)建和部署經(jīng)濟(jì)有效的 BI 解決方案,幫助您的團(tuán)
24、隊通過記分卡、Dashboard、Web services 和移動設(shè)備將數(shù)據(jù)應(yīng)用推向業(yè)務(wù)的各個領(lǐng)域。與 Microsoft Visual Studio、Microsoft Office System 以與新的開發(fā)工具包(包括 Business Intelligence Development Studio)的緊密集成使 SQL Server 2005 與眾不同。無論您是開發(fā)人員、數(shù)據(jù)庫管理員、信息工作者還是決策者,SQL Server 2005 都可以為您提供創(chuàng)新的解決方案,幫助您從數(shù)據(jù)中更多地獲益。SQL Server 2005 通過在可伸縮性、數(shù)據(jù)集成、開發(fā)工具和強(qiáng)大的分析等方面的革新更好
25、的確立了微軟在BI領(lǐng)域的領(lǐng)導(dǎo)地位。SQL Server 2005 能夠把關(guān)鍵的信息與時的傳遞到組織員工的手中,從而實現(xiàn)了可伸縮的商業(yè)智能。從CEO 到信息工作者,員工可以快速的、容易的處理數(shù)據(jù),以更快更好的做出決策。SQL Server 2005全面的集成、分析和報表功能使企業(yè)能夠提高他們已有應(yīng)用的價值,即便這些應(yīng)用是在不同的平臺上。 商業(yè)智能增強(qiáng)體現(xiàn)在以下幾個方面: 端到端的集成BI平臺 集成服務(wù) 分析服務(wù) 報表服務(wù) Microsoft Office System的集成本網(wǎng)絡(luò)聊天軟件的開發(fā)環(huán)境主要使用SQL Server 2005的開發(fā)版。SQL Server 2005 Developer
26、Edition(32位和64 位) Developer Edition 使開發(fā)人員可以在SQL Server 上生成任何類型的應(yīng)用程序。它包括 SQL Server 2005 Enterprise Edition 的所有功能,但有許可限制,只能用于開發(fā)和測試系統(tǒng),而不能用作生產(chǎn)服務(wù)器。Developer Edition 是獨立軟件供應(yīng)商(ISV)、咨詢?nèi)藛T、系統(tǒng)集成商、解決方案供應(yīng)商以與創(chuàng)建和測試應(yīng)用程序的企業(yè)開發(fā)人員的理想選擇。Developer Edition 可以根據(jù)生產(chǎn)需要升級至SQL Server 2005Enterprise Edition。第三章 需求分析3.1 可行性研究本軟件
27、只做開發(fā)學(xué)習(xí)使用,所以暫且不考慮經(jīng)濟(jì)成本與盈利問題。開發(fā)所需要的平臺已經(jīng)搭建好,并做好了充分的前期準(zhǔn)備工作,其次因為本程序的平臺將基于WINDOWS,將要使用網(wǎng)絡(luò)通信技術(shù),而WINDOWS有完善成熟的網(wǎng)絡(luò)通信接口,以與與C#開發(fā)環(huán)境的嚴(yán)密契合能力,加之相類似的更大規(guī)模的網(wǎng)絡(luò)聊天工具產(chǎn)品也已有例在先,所以這個程序的開發(fā)在技術(shù)上是完全可行的。3.2 用戶需求隨著互聯(lián)網(wǎng)的普與,網(wǎng)絡(luò)聊天工具已經(jīng)成為了人們?nèi)粘I钪胁豢扇鄙俚囊徊糠帧8鶕?jù)人們對聊天工具的需求,主要可以概括為以下幾點:1、 操作簡單方便、界面簡潔美觀;2、 能夠注冊新用戶;3、 擁有熟悉的聊天界面;4、 能夠查找/添加好友;5、 能夠進(jìn)行
28、個人設(shè)置;6、 系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。3.3 性能需求首先要求程序要完全可靠,可以應(yīng)付各種由于系統(tǒng)問題產(chǎn)生的錯誤,比如初始網(wǎng)絡(luò)失敗等。要求提前設(shè)想到類似的盡可能多的可能發(fā)生的事件,做出相應(yīng)的應(yīng)對措施,并向用戶提交簡單易懂清晰明白的提示信息。程序要有良好的容錯性,當(dāng)用戶進(jìn)行非法操作時或者系統(tǒng)本身出現(xiàn)問題時要能以最好的方式退出程序,避免發(fā)生程序假死現(xiàn)象。開發(fā)文檔要有好的易理解性,如果系統(tǒng)又要交由別人接手開發(fā),或者自己由于種種原因需要進(jìn)行二次開發(fā),那么要保證以后能夠清晰的理解整個系統(tǒng)的設(shè)計思路以與實現(xiàn)細(xì)節(jié)。要求程序?qū)λ\(yùn)行之系統(tǒng)的硬件條件要求盡可能低,運(yùn)行時存占用盡可能小,響應(yīng)速度要盡可能快。并且
29、不發(fā)生存泄漏之類影響系統(tǒng)運(yùn)行的錯誤事件。并且要求易于維護(hù)與擴(kuò)展。所以應(yīng)該采用模塊化開發(fā),各個模塊之間不要有太多的耦合,以免維護(hù)困難。3.4 系統(tǒng)功能需求這個程序要實現(xiàn)的功能如下:(1) 程序啟動之后就能直接進(jìn)入登陸界面,輸入錯誤時會提示。(2) 登陸界面有注冊新用戶選項,點擊進(jìn)入注冊界面。(3) 注冊成功后會提示自動生成的 。(4) 登陸后進(jìn)入主界面,用戶可以添加好友,可以直接查找,也可以按條件查找,還可以查看所有用戶。(5)當(dāng)雙擊列表中某個用戶頭像的時候,要彈出聊天對話框,可以在其中編輯要發(fā)送的聊天信息,并進(jìn)行發(fā)送。(6)聊天界面要人性化,下面是發(fā)送框,上面對方發(fā)來的上一條聊天記錄。(7)可
30、以修改自己的個人資料,也可以更換頭像。第四章 系統(tǒng)設(shè)計4.1 系統(tǒng)功能結(jié)構(gòu)基于C#的網(wǎng)絡(luò)聊天軟件更 換 頭 像 個 人 設(shè) 置用 戶 登 錄好 友 列 表發(fā) 送 消 息 刪 除 好 友 添 加 好 友接 收 消 息 查 找 好 友用 戶 注 冊圖4-1系統(tǒng)功能結(jié)構(gòu)4.2 系統(tǒng)模塊劃分登錄模塊:實現(xiàn)用戶登錄功能。在沒有賬號的情況下可以選擇進(jìn)入注冊新用戶界面。注冊模塊:實現(xiàn)注冊新用戶功能。注冊信息包括必填基本資料與選填資料。主模塊:實現(xiàn)列表功能。列表包括好友列表與陌生人列表。通過主界面可以進(jìn)行聊天功能,也可以打開查找/添加好友功能與個人設(shè)置功能等。聊天模塊:實現(xiàn)發(fā)送消息與接收消息功能。通過公共的數(shù)
31、據(jù)庫交換信息,消息的發(fā)送和讀取都是通過操作數(shù)據(jù)庫來完成的。在程序中采用定時掃描數(shù)據(jù)庫的方式來查找未讀消息。也能實現(xiàn)刪除好友功能。查找/添加好友模塊:實現(xiàn)查找好友功能與添加好友功能。主要方法有精確查找、按條件查找,與查看所有用戶。個人設(shè)置模塊:實現(xiàn)修改個人資料。更換頭像模塊:實現(xiàn)更換用戶頭像。系統(tǒng)消息模塊:實現(xiàn)添加好友信息的讀取。4.3 系統(tǒng)整體流程圖該網(wǎng)絡(luò)聊天工具系統(tǒng)整體流程圖如圖4-2所示:登錄成功主界面聊天界面/個人設(shè)置界面/查找添加好友界面NYYNNY顯示號碼注冊成功合法?輸入檢查注冊登錄驗證輸入登錄數(shù)據(jù)已注冊?用 戶圖4-2 系統(tǒng)整體流程圖第五章 詳細(xì)設(shè)計5.1 登錄界面設(shè)計當(dāng)用戶運(yùn)行
32、程序時,首先進(jìn)入的是登錄界面,如圖5-1所示:圖5-1 登錄界面如果沒有賬號,則單擊“注冊新用戶”標(biāo)簽,可以打開注冊界面;如果有已注冊的賬號,則在輸入賬號與密碼后,點擊“登錄”按鈕,可以打開主界面。如果輸入有誤,則出現(xiàn)圖5-2所示界面:圖5-2 輸入錯誤程序也不允許在賬號或密碼處輸入空格字符,如有此情況,則會出現(xiàn)圖5-3與圖5-4所示界面:圖 5-3 未輸入賬號圖5-4 未輸入密碼當(dāng)點擊“登錄”按鈕時,則觸發(fā)登錄按鈕事件,其處理流程圖如圖5-5所示:用 戶輸入登錄數(shù)據(jù)掃描數(shù)據(jù)庫中的Users表有該用戶且密碼正確?登錄成功主界面YN圖5-5 登錄事件流程圖其中登錄按鈕的代碼實現(xiàn)如下:/ 登錄按鈕
33、事件處理privatevoid btnLogin_Click(object sender, EventArgs e) bool error = false; / 標(biāo)志在執(zhí)行數(shù)據(jù)庫操作的過程中是否出錯/ 如果輸入驗證成功,就驗證身份,并轉(zhuǎn)到相應(yīng)的窗體if (ValidateInput() int num = 0; / 數(shù)據(jù)庫操作結(jié)果 try / 查詢用的sql語句string sql = string.Format(SELECT COUNT(*) FROM Users WHERE Id=0 AND LoginPwd = 1,int.Parse(txtLoginId.Text.Trim(), tx
34、tLoginPwd.Text.Trim();/ 創(chuàng)建Command 對象SqlCommand command = newSqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打開數(shù)據(jù)庫連接 num = Convert.ToInt32(command.ExecuteScalar(); catch (Exception ex) error = true;Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); / 關(guān)閉數(shù)據(jù)庫連接 if (!e
35、rror & (num = 1) / 驗證通過 / 設(shè)置登錄的用戶UserHelper.loginId = int.Parse(txtLoginId.Text.Trim();/ 創(chuàng)建主窗體MainForm mainForm = newMainForm(); mainForm.Show(); / 顯示窗體this.Visible = false; / 當(dāng)前窗體不可見 else MessageBox.Show(輸入的用戶名或密碼有誤!, 登錄提示, MessageBoxButtons.OK, MessageBoxIcon.Error); / 用戶輸入驗證privatebool ValidateIn
36、put() / 驗證用戶輸入if (txtLoginId.Text.Trim() = ) MessageBox.Show(請輸入登錄的, 登錄提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtLoginId.Focus();returnfalse; elseif (txtLoginPwd.Text.Trim() = ) MessageBox.Show(請輸入密碼, 登錄提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtLoginPwd.Focus();return
37、false; returntrue; 5.2 注冊界面設(shè)計當(dāng)在登錄界面點擊“注冊新用戶”標(biāo)簽時,將打開注冊界面,如圖5-6所示:圖5-6 注冊界面其中基本資料為必填資料,詳細(xì)資料為選填資料。在用戶輸入完資料后,點擊“確認(rèn)注冊”按鈕進(jìn)行注冊。其間會對相關(guān)的輸入進(jìn)行檢查,如果輸入不符合規(guī),則不允許注冊,不會向數(shù)據(jù)庫插入記錄,并會提示錯誤原因。如果輸入正確,則向數(shù)據(jù)庫插入一條用戶記錄,在數(shù)據(jù)庫中自動生成一個新的登錄(Users表的Id字段),以消息框的形式告訴用戶申請成功的。其流程圖如圖5-7所示:NY用戶返回登錄界面注冊成功并顯示號碼向數(shù)據(jù)庫中添加記錄合法?提示不合法原因檢查合法性輸入注冊信息自動
38、添加星座選項與血型選項打開注冊界面圖5-7 注冊界面流程圖其中確認(rèn)注冊按鈕的代碼實現(xiàn)如下:/ 點擊注冊,向數(shù)據(jù)庫添加記錄privatevoid btnRegist_Click(object sender, EventArgs e) / 輸入驗證通過,就插入記錄到數(shù)據(jù)庫if (ValidateInput() int my Num = 0; / string message; / 彈出的消息string sex = rdoMale.Checked ? rdoMale.Text : rdoFemale.Text; / 獲得選中的性別string sql = ; / 查詢用的SQL語句int star
39、Id; / 星座Idint bloodTypeId; / 血型Id bool error = false; / 操作數(shù)據(jù)庫是否出錯/ 根據(jù)星座和血型的選擇來分情況確定SQL語句if (cboStar.Text != & cboBloodType.Text != ) / 獲得星座的Id starId = GetStarId();/ 獲得血型的Id bloodTypeId = GetBloodType(); sql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, StarId, BloodTypeId)
40、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); elseif (cboStar.Text != & cboBloodType.Text = ) / 獲得星座的Id starId = GetStarId(); sql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age,
41、 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); elseif (cboStar.Text = & cboBloodType.Text != ) / 獲得血型的Id bloodTypeId = GetBloodType(); sql = string.Format(INSERT INTO Users (LoginPwd, NickName, S
42、ex, 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, NickName, Sex, Age, Name) values (0,1,2,3,4), txtLoginPwd.Text.Trim(), txtN
43、ickName.Text.Trim(), sex, int.Parse(txtAge.Text.Trim(), txtName.Text.Trim(); try / 創(chuàng)建Command 對象SqlCommand command = newSqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打開數(shù)據(jù)庫連接int result = command.ExecuteNonQuery(); / 執(zhí)行插入命令if (result = 1) sql = SELECT Identity FROM Users; / 查詢新增加的記
44、錄的標(biāo)識號 command mandText = sql; / 重新指定Command 對象的SQL 語句 my Num = Convert.ToInt32(command.ExecuteScalar(); / 強(qiáng)制類型轉(zhuǎn)換會出錯 message = string.Format(注冊成功!你的My 是0, my Num); else message = 注冊失敗,請重試!; catch (Exception ex) error = true; message = 服務(wù)器出現(xiàn)意外錯誤!請稍候再試!;Console.WriteLine(ex.Message); finally DBHelper.c
45、onnection.Close(); / 關(guān)閉數(shù)據(jù)庫連接 / 顯示注冊結(jié)果if (error) MessageBox.Show(message, 注冊失敗, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(message, 注冊結(jié)果, MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); 5.3主界面設(shè)計當(dāng)用戶輸入正確的登錄信息并登錄后,出現(xiàn)圖5-8所示的主界面:圖5-8 主界面登陸后在“我的好友”列表中顯示當(dāng)前好友列表,包括好友的
46、頭像和昵稱。在主界面的頂部要顯示當(dāng)前登陸的用戶頭像,昵稱和登錄賬號。當(dāng)有新的聊天消息時候。發(fā)來的消息的好友頭像要閃動,雙擊頭像彈出“聊天”窗口后,頭像停止閃動,當(dāng)有添加好友請求消息時,窗體底部的好友請求驗證按鈕要閃爍,單擊該按鈕彈出“系統(tǒng)消息”窗體后,按鈕停止閃爍。通過主窗體下方的按紐打開“查找/添加好友”窗體,“個人信息”窗口,“系統(tǒng)消息”窗口,也可刷新好友列表和退出程序。通過右鍵菜單能夠切換大小頭像。能夠把陌生人轉(zhuǎn)為好友,能夠刪除一個好友或陌生人,如圖5-9所示:圖5-9 右鍵功能顯示好友列表的控鍵可以用提供的第三方控鍵sidebar,該控鍵的命名空間為Aptech.ui。Sidebar是
47、一個能夠以分組形式顯示列表的控件,能夠?qū)崿F(xiàn)類似 的好友分組功能,sidebar控鍵中可以包含很多組(sbgroup),每個組可以包含很多sidebar項(sbitem)。Sidebar的列表項有兩種顯示方式:大圖標(biāo)和小圖標(biāo),它可以通過它的view屬性來設(shè)置。Sidebar 控件還有一個imagelist 屬性,可以和一個imagelist控件關(guān)聯(lián),列表項中顯示的圖片就是存放在imagelist控件中的圖片。可以通過Sidebar項(sbitem)的imageindex來指定圖片在imagelist控件中的索引。其中加載窗體時的代碼如下:/ 窗體加載時發(fā)生privatevoid MainForm
48、_Load(object sender, EventArgs e) / 工具欄的消息圖標(biāo) tsbtnMessageReading.Image = ilMessage.Images0;/ 顯示個人的信息 ShowSelfInfo();/ 添加 SideBar 的兩個組 sbFriends.AddGroup(我的好友); sbFriends.AddGroup(陌生人);/ 向我的好友組中添加我的好友列表 ShowFriendList(); 定時掃描數(shù)據(jù)庫讀取未讀信息的代碼如下:/ 定時掃描數(shù)據(jù)庫,找到未讀消息privatevoid tmrMessage_Tick(object sender, Ev
49、entArgs e) ShowFriendList(); / 刷新好友列表int messageTypeId = 1; / 消息類型int messageState = 1; / 消息狀態(tài)/ 找出未讀消息對應(yīng)的好友Idstring sql = string.Format(SELECT Top 1 FromUserId, MessageTypeId, MessageState FROM Messages WHERE ToUserId=0 AND MessageState=0, UserHelper.loginId);SqlCommand command;/ 消息有兩種類型:聊天消息、添加好友消息try command = newSqlCommand(sql
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年式輪式機(jī)器人租賃合同2篇
- 習(xí)作:我來編童話 說課稿-2024-2025學(xué)年語文三年級上冊統(tǒng)編版
- 二零二五年度廢棄電子產(chǎn)品回收處理承包合同3篇
- 專屬公司文秘職業(yè)聘用協(xié)議范本(2024版)
- 第一章 有理數(shù) 說課稿-2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊
- 第17課《貓》說課稿 2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- XX類型房產(chǎn)交易合同規(guī)范文本 2024年
- 專業(yè)紅酒采購方案:2024版協(xié)議樣本版
- Module7 Unit1 He can't see(說課稿)-2024-2025學(xué)年外研版(三起)英語五年級上冊
- 小學(xué)信息技術(shù)一年級上冊 1《移動鼠標(biāo)玩游戲》說課稿
- 2024年重慶市中考數(shù)學(xué)試卷(AB合卷)【附答案】
- 2024屆高考語文作文備考:立足材料打造分論點 教學(xué)設(shè)計
- 幼兒園大班數(shù)學(xué)練習(xí)題100道及答案解析
- 對講機(jī)外殼注射模設(shè)計 模具設(shè)計及制作專業(yè)
- 2024年四川省德陽市中考道德與法治試卷(含答案逐題解析)
- 施工現(xiàn)場水電費(fèi)協(xié)議
- SH/T 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范(正式版)
- 六年級數(shù)學(xué)質(zhì)量分析及改進(jìn)措施
- 一年級下冊數(shù)學(xué)口算題卡打印
- 【閱讀提升】部編版語文五年級下冊第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級上冊遞等式計算練習(xí)200題及答案
評論
0/150
提交評論