基于C的網(wǎng)絡聊天軟件的設計與實現(xiàn)_第1頁
基于C的網(wǎng)絡聊天軟件的設計與實現(xiàn)_第2頁
基于C的網(wǎng)絡聊天軟件的設計與實現(xiàn)_第3頁
基于C的網(wǎng)絡聊天軟件的設計與實現(xiàn)_第4頁
基于C的網(wǎng)絡聊天軟件的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、計具有一定的現(xiàn)實意義,同時也為其他相關項目的設計提供了參考。關鍵詞:網(wǎng)絡聊天工具 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ā)目標1第二章 開發(fā)環(huán)境與關鍵技術簡介22.1 C#簡介22.2 .NET Framework簡介42.3 WinForms窗體設計技術52.4 C/S結構52.5 ADO.NET技術62.6 SQL Server 2005數(shù)據(jù)庫簡介6第三章 需求分析83.1 可行性研究83.2 用戶需求83.3 性能需求83.4 系統(tǒng)功能需求9第四章 系統(tǒng)設計104.1 系統(tǒng)功能結構104.2 系統(tǒng)模塊劃分104.3 系統(tǒng)整體流程

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

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

9、論文的主要工作是設計一個類似 的網(wǎng)絡即時聊天工具,主要是采用WinForms+ADO.NET技術實現(xiàn)。軟件功能主要包括用戶注冊、用戶登錄、用戶間聊天、查找/添加好友、個人設置等。客戶端通過公共的數(shù)據(jù)庫交換信息,消息的發(fā)送和讀取都是通過操作數(shù)據(jù)庫來完成的。在程序中采用定時掃描數(shù)據(jù)庫的方式來查找未讀消息。文章首先簡介涉與的相關技術與基本知識,然后闡述本軟件的功能,再具體分析軟件各個模塊的功能與具體實現(xiàn)方法。第二章 開發(fā)環(huán)境與關鍵技術簡介2.1 C#簡介C#(讀作C Sharp)是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言,是一種安全的、穩(wěn)定的、簡單的、優(yōu)

10、雅的,由C和C+衍生出來的面向對象的編程語言。它在繼承C和C+強大功能的同時去掉了一些它們的復雜特性(例如沒有宏和模版,不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡框架的主角。C#最引人入勝的地方是它和J

11、ava的不同,而不是相似的地方:中間代碼微軟在用戶選擇何時MSIL應該編譯成機器碼的時候是留了很大的余地。微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼。它也明白許多,如果不是大多數(shù)的話,程序員認為Java程序要不可避免的比C編寫的任何東西都要慢。而這種實現(xiàn)方式?jīng)Q定了基于MSIL的程序(指的是用C#,Visual Basic,Managed C+-C+的一個符合CLS的版本-等語言編寫的程序)將在性能上超過解釋性的Java代碼。當然,這一點還需要得到事實證明,因為C#和其他生成MSIL的編譯器還沒有發(fā)布。但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對一樣。象

12、C#是編譯語言而Java是解釋性的,之類的聲明只是商業(yè)技巧。Java的中間代碼和MSIL都是中間的匯編形式的語言,它們在運行時或其它的時候被編譯成機器代碼。命名空間中的申明當你創(chuàng)建一個程序的時候,你在一個命名空間里創(chuàng)建了一個或多個類。同在這個命名空間里(在類的外面)你還有可能聲明接口,枚舉類型和結構體。必須使用using關鍵字來引用其他命名空間的容。 基本的數(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進制數(shù)字。 兩個基本類一個名叫object的類是所有其他類的基類。而一個名叫string的類也象object一樣是這個語言的一部分。作為語言的一部分存在意味著編譯器有可能使用它,無論何時你在程序中寫入一句帶引號的字符串,編譯器會創(chuàng)建一個string對象來保存它。參數(shù)傳遞方法可以被聲明接受可變數(shù)目的參數(shù)。缺省的參數(shù)傳遞方法是對基本數(shù)據(jù)類型進行值傳遞。ref關鍵字可以用來強迫一個變

14、量通過引用傳遞,這使得一個變量可以接受一個返回值。out關鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數(shù)并不需要初始值。與COM的集成C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術。實際上,最終有可能在任何.NET語言里編寫COM客戶和服務器端。C#編寫的類可以子類化一個以存在的COM組件;生成的類也能被作為一個COM組件使用,然后又能使用,比方說,JScript語言子類化它從而得到第三個COM組件。這種現(xiàn)象的結果是導致了一個運行環(huán)境的產生,在這個環(huán)境里的組件是網(wǎng)絡服務,可用用任何.NET語言子類化。代理和反饋一個代理對象包

15、括了訪問一個特定對象的特定方法所需的信息。只要把它當成一個聰明的方法指針就行了。代理對象可以被移動到另一個地方,然后可以通過訪問它來對已存在的方法進行類型安全的調用。一個反饋方法是代理的特例。event關鍵字用在將在事件發(fā)生的時候被當成代理調用的方法聲明。2.2.NET Framework簡介.NET Framework是支持生成、運行下一代應用程序和XML Web Services的部Windows組件,它簡化了在高度分布式Internet環(huán)境中的應用程序開發(fā),.NET Framework可實現(xiàn)的功能如下:l 提供一個一致的面向對象的編程環(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,還是在本地執(zhí)行

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

17、行庫是 .NET Framework 的基礎。您可以將公共語言運行庫看作一個在執(zhí)行時管理代碼的代理,它提供存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以與可提高安全性和可靠性的其他形式的代碼準確性。這類似于Java的虛擬機。事實上,代碼管理的概念是公共語言運行庫的基本原則。以公共語言運行庫為目標的代碼稱為托管代碼,而不以公共語言運行庫為目標的代碼稱為非托管代碼。.NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發(fā)多種應用程序,這些應用程序包括傳統(tǒng)的命令行或圖形用戶界面 (GUI) 應用程序,也包括基于 ASP.N

18、ET 所提供的最新創(chuàng)新的應用程序(如 Web 窗體和 XML Web services)。.NET Framework 可由非托管組件承載,這些組件將公共語言運行庫加載到它們的進程中并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NET Framework 不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發(fā)。2.3 WinForms窗體設計技術WinForm是.Net開發(fā)平臺中對Windows Form的一種稱謂。.Net 為開發(fā)WinForm的應用程序提供了豐富的Class Library(類庫)。這些WinFrom 類庫支持RAD(快速應用程序開發(fā)),這

19、些類庫被封裝在一個名稱空間之中,這個名稱空間就是System.Windows.Forms。在此名稱空間中定義了許多類,在開發(fā)基于.Net的GUI應用程序的時候,就是通過繼承和擴展這些類才使得我們的程序有著多樣的用戶界面。2.4 C/S結構C/S (Client/Server)結構,即大家熟知的客戶機和服務器結構。它是軟件系統(tǒng)體系結構,通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層結構,由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和Client/Serv

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

21、總是被動地接收請求,返回客戶需要的結果。在客戶發(fā)出一個請求之前,服務進程一直處于休眠狀態(tài)。一個客戶提出請求后,服務進程被“喚醒”并且為客戶提供服務,對客戶的請求做出所需要的應答,如圖2-1所示。圖2-1 客戶機服務器通信結構示圖2.5 ADO.NET技術ADO.NET是一組用于和數(shù)據(jù)源進行交互的面向對象類庫。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但它同樣也能夠是文本文件、Excel表格或者XML文件。ADO.NET允許和不同類型的數(shù)據(jù)源以與數(shù)據(jù)庫進行交互。然而并沒有與此相關的一系列類來完成這樣的工作。因為不同的數(shù)據(jù)源采用不同的協(xié)議,所以對于不同的數(shù)據(jù)源必須采用相應的協(xié)議。一些老式的數(shù)據(jù)源使用ODBC協(xié)議

22、,許多新的數(shù)據(jù)源使用OleDb協(xié)議,并且現(xiàn)在還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過.NET的ADO.NET類庫來進行連接。 ADO.NET提供與數(shù)據(jù)源進行交互的相關的公共方法,但是對于不同的數(shù)據(jù)源采用一組不同的類庫。這些類庫稱為Data Providers,并且通常是以與之交互的協(xié)議和數(shù)據(jù)源的類型來命名的。然而無論使用什么樣的Data Provider,你將使用相似的對象與數(shù)據(jù)源進行交互。SqlConnection對象管理與數(shù)據(jù)源的連接。SqlCommand對象允許你與數(shù)據(jù)源交流并發(fā)送命令給它。為了對進行快速的只“向前”地讀取數(shù)據(jù),使用SqlDataReader。如果想使用斷開數(shù)據(jù),使用

23、DataSet并實現(xià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ù)庫引擎為關系型數(shù)據(jù)和結構化數(shù)據(jù)提供了更安全可靠的存儲功能,使您可以構建和管理用于業(yè)務的高可用和高性能的數(shù)據(jù)應用程序 。SQL Server 2005 數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外 SQL Server 2005 結合了分析、報表、集成和通知功能。這使您的企業(yè)可以構建和部署經(jīng)濟有效的 BI 解決方案,幫助您的團

24、隊通過記分卡、Dashboard、Web services 和移動設備將數(shù)據(jù)應用推向業(yè)務的各個領域。與 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ā)工具和強大的分析等方面的革新更好

25、的確立了微軟在BI領域的領導地位。SQL Server 2005 能夠把關鍵的信息與時的傳遞到組織員工的手中,從而實現(xiàn)了可伸縮的商業(yè)智能。從CEO 到信息工作者,員工可以快速的、容易的處理數(shù)據(jù),以更快更好的做出決策。SQL Server 2005全面的集成、分析和報表功能使企業(yè)能夠提高他們已有應用的價值,即便這些應用是在不同的平臺上。 商業(yè)智能增強體現(xiàn)在以下幾個方面: 端到端的集成BI平臺 集成服務 分析服務 報表服務 Microsoft Office System的集成本網(wǎng)絡聊天軟件的開發(fā)環(huán)境主要使用SQL Server 2005的開發(fā)版。SQL Server 2005 Developer

26、Edition(32位和64 位) Developer Edition 使開發(fā)人員可以在SQL Server 上生成任何類型的應用程序。它包括 SQL Server 2005 Enterprise Edition 的所有功能,但有許可限制,只能用于開發(fā)和測試系統(tǒng),而不能用作生產服務器。Developer Edition 是獨立軟件供應商(ISV)、咨詢人員、系統(tǒng)集成商、解決方案供應商以與創(chuàng)建和測試應用程序的企業(yè)開發(fā)人員的理想選擇。Developer Edition 可以根據(jù)生產需要升級至SQL Server 2005Enterprise Edition。第三章 需求分析3.1 可行性研究本軟件

27、只做開發(fā)學習使用,所以暫且不考慮經(jīng)濟成本與盈利問題。開發(fā)所需要的平臺已經(jīng)搭建好,并做好了充分的前期準備工作,其次因為本程序的平臺將基于WINDOWS,將要使用網(wǎng)絡通信技術,而WINDOWS有完善成熟的網(wǎng)絡通信接口,以與與C#開發(fā)環(huán)境的嚴密契合能力,加之相類似的更大規(guī)模的網(wǎng)絡聊天工具產品也已有例在先,所以這個程序的開發(fā)在技術上是完全可行的。3.2 用戶需求隨著互聯(lián)網(wǎng)的普與,網(wǎng)絡聊天工具已經(jīng)成為了人們日常生活中不可缺少的一部分。根據(jù)人們對聊天工具的需求,主要可以概括為以下幾點:1、 操作簡單方便、界面簡潔美觀;2、 能夠注冊新用戶;3、 擁有熟悉的聊天界面;4、 能夠查找/添加好友;5、 能夠進行

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

29、不發(fā)生存泄漏之類影響系統(tǒng)運行的錯誤事件。并且要求易于維護與擴展。所以應該采用模塊化開發(fā),各個模塊之間不要有太多的耦合,以免維護困難。3.4 系統(tǒng)功能需求這個程序要實現(xiàn)的功能如下:(1) 程序啟動之后就能直接進入登陸界面,輸入錯誤時會提示。(2) 登陸界面有注冊新用戶選項,點擊進入注冊界面。(3) 注冊成功后會提示自動生成的 。(4) 登陸后進入主界面,用戶可以添加好友,可以直接查找,也可以按條件查找,還可以查看所有用戶。(5)當雙擊列表中某個用戶頭像的時候,要彈出聊天對話框,可以在其中編輯要發(fā)送的聊天信息,并進行發(fā)送。(6)聊天界面要人性化,下面是發(fā)送框,上面對方發(fā)來的上一條聊天記錄。(7)可

30、以修改自己的個人資料,也可以更換頭像。第四章 系統(tǒng)設計4.1 系統(tǒng)功能結構基于C#的網(wǎng)絡聊天軟件更 換 頭 像 個 人 設 置用 戶 登 錄好 友 列 表發(fā) 送 消 息 刪 除 好 友 添 加 好 友接 收 消 息 查 找 好 友用 戶 注 冊圖4-1系統(tǒng)功能結構4.2 系統(tǒng)模塊劃分登錄模塊:實現(xiàn)用戶登錄功能。在沒有賬號的情況下可以選擇進入注冊新用戶界面。注冊模塊:實現(xiàn)注冊新用戶功能。注冊信息包括必填基本資料與選填資料。主模塊:實現(xiàn)列表功能。列表包括好友列表與陌生人列表。通過主界面可以進行聊天功能,也可以打開查找/添加好友功能與個人設置功能等。聊天模塊:實現(xiàn)發(fā)送消息與接收消息功能。通過公共的數(shù)

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

32、程序時,首先進入的是登錄界面,如圖5-1所示:圖5-1 登錄界面如果沒有賬號,則單擊“注冊新用戶”標簽,可以打開注冊界面;如果有已注冊的賬號,則在輸入賬號與密碼后,點擊“登錄”按鈕,可以打開主界面。如果輸入有誤,則出現(xiàn)圖5-2所示界面:圖5-2 輸入錯誤程序也不允許在賬號或密碼處輸入空格字符,如有此情況,則會出現(xiàn)圖5-3與圖5-4所示界面:圖 5-3 未輸入賬號圖5-4 未輸入密碼當點擊“登錄”按鈕時,則觸發(fā)登錄按鈕事件,其處理流程圖如圖5-5所示:用 戶輸入登錄數(shù)據(jù)掃描數(shù)據(jù)庫中的Users表有該用戶且密碼正確?登錄成功主界面YN圖5-5 登錄事件流程圖其中登錄按鈕的代碼實現(xiàn)如下:/ 登錄按鈕

33、事件處理privatevoid btnLogin_Click(object sender, EventArgs e) bool error = false; / 標志在執(zhí)行數(shù)據(jù)庫操作的過程中是否出錯/ 如果輸入驗證成功,就驗證身份,并轉到相應的窗體if (ValidateInput() int num = 0; / 數(shù)據(jù)庫操作結果 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(); / 關閉數(shù)據(jù)庫連接 if (!e

35、rror & (num = 1) / 驗證通過 / 設置登錄的用戶UserHelper.loginId = int.Parse(txtLoginId.Text.Trim();/ 創(chuàng)建主窗體MainForm mainForm = newMainForm(); mainForm.Show(); / 顯示窗體this.Visible = false; / 當前窗體不可見 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 注冊界面設計當在登錄界面點擊“注冊新用戶”標簽時,將打開注冊界面,如圖5-6所示:圖5-6 注冊界面其中基本資料為必填資料,詳細資料為選填資料。在用戶輸入完資料后,點擊“確認注冊”按鈕進行注冊。其間會對相關的輸入進行檢查,如果輸入不符合規(guī),則不允許注冊,不會向數(shù)據(jù)庫插入記錄,并會提示錯誤原因。如果輸入正確,則向數(shù)據(jù)庫插入一條用戶記錄,在數(shù)據(jù)庫中自動生成一個新的登錄(Users表的Id字段),以消息框的形式告訴用戶申請成功的。其流程圖如圖5-7所示:NY用戶返回登錄界面注冊成功并顯示號碼向數(shù)據(jù)庫中添加記錄合法?提示不合法原因檢查合法性輸入注冊信息自動

38、添加星座選項與血型選項打開注冊界面圖5-7 注冊界面流程圖其中確認注冊按鈕的代碼實現(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、錄的標識號 command mandText = sql; / 重新指定Command 對象的SQL 語句 my Num = Convert.ToInt32(command.ExecuteScalar(); / 強制類型轉換會出錯 message = string.Format(注冊成功!你的My 是0, my Num); else message = 注冊失敗,請重試!; catch (Exception ex) error = true; message = 服務器出現(xiàn)意外錯誤!請稍候再試!;Console.WriteLine(ex.Message); finally DBHelper.c

45、onnection.Close(); / 關閉數(shù)據(jù)庫連接 / 顯示注冊結果if (error) MessageBox.Show(message, 注冊失敗, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(message, 注冊結果, MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); 5.3主界面設計當用戶輸入正確的登錄信息并登錄后,出現(xiàn)圖5-8所示的主界面:圖5-8 主界面登陸后在“我的好友”列表中顯示當前好友列表,包括好友的

46、頭像和昵稱。在主界面的頂部要顯示當前登陸的用戶頭像,昵稱和登錄賬號。當有新的聊天消息時候。發(fā)來的消息的好友頭像要閃動,雙擊頭像彈出“聊天”窗口后,頭像停止閃動,當有添加好友請求消息時,窗體底部的好友請求驗證按鈕要閃爍,單擊該按鈕彈出“系統(tǒng)消息”窗體后,按鈕停止閃爍。通過主窗體下方的按紐打開“查找/添加好友”窗體,“個人信息”窗口,“系統(tǒng)消息”窗口,也可刷新好友列表和退出程序。通過右鍵菜單能夠切換大小頭像。能夠把陌生人轉為好友,能夠刪除一個好友或陌生人,如圖5-9所示:圖5-9 右鍵功能顯示好友列表的控鍵可以用提供的第三方控鍵sidebar,該控鍵的命名空間為Aptech.ui。Sidebar是

47、一個能夠以分組形式顯示列表的控件,能夠實現(xiàn)類似 的好友分組功能,sidebar控鍵中可以包含很多組(sbgroup),每個組可以包含很多sidebar項(sbitem)。Sidebar的列表項有兩種顯示方式:大圖標和小圖標,它可以通過它的view屬性來設置。Sidebar 控件還有一個imagelist 屬性,可以和一個imagelist控件關聯(lián),列表項中顯示的圖片就是存放在imagelist控件中的圖片。可以通過Sidebar項(sbitem)的imageindex來指定圖片在imagelist控件中的索引。其中加載窗體時的代碼如下:/ 窗體加載時發(fā)生privatevoid MainForm

48、_Load(object sender, EventArgs e) / 工具欄的消息圖標 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)/ 找出未讀消息對應的好友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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論