版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題 目 網(wǎng)絡(luò)聊天室的規(guī)劃和設(shè)計(jì)</p><p><b> 摘 要 </b></p><p> 聊天室主要分為WebChat、BBSChat兩種。BBSChat是基于Telnet的Tcp協(xié)議,是BBS的附設(shè)功能,需要客戶端Telnet
2、程序。WebChat則采用瀏覽器方式,實(shí)際上是一個(gè)多人共同使用的CGI程序。其基本原理是把每個(gè)用戶的發(fā)言通過(guò)瀏覽器傳給系統(tǒng),再由系統(tǒng)收集處理后分發(fā)給特定用戶。</p><p> 下面所做的是一個(gè)利用ASP.NET技術(shù)、數(shù)據(jù)庫(kù)技術(shù)、#C語(yǔ)言、ADO.NET技術(shù)制作的功能比較完善的文本聊天室。</p><p> 關(guān)鍵詞:ASP.NET技術(shù),數(shù)據(jù)庫(kù)技術(shù),#C語(yǔ)言,ADO.NET技術(shù)</
3、p><p><b> 目 錄</b></p><p><b> 第一章 引言8</b></p><p> 第二章 相關(guān)技術(shù)9</p><p> 2.1 ASP.NET技術(shù)9</p><p> 2.2 數(shù)據(jù)庫(kù)技術(shù)10</p><p>
4、 2.3 C#語(yǔ)言10</p><p> 2.4 ADO.NET技術(shù)11</p><p> 第三章 需求分析與總體設(shè)計(jì)13</p><p> 3.1 需求分析13</p><p> 3.1.1 功能需求13</p><p> 3.1.2 性能需求13</p><p>
5、3.2系統(tǒng)環(huán)境13</p><p> 3.2.1系統(tǒng)運(yùn)行環(huán)境13</p><p> 3.2.2系統(tǒng)開(kāi)發(fā)環(huán)境14</p><p> 3.3 系統(tǒng)框架14</p><p> 3.3.1 系統(tǒng)流程分析14</p><p> 3.3.2 系統(tǒng)功能模塊分析15</p><p> 第
6、四章 具體實(shí)現(xiàn)17</p><p> 4.1 數(shù)據(jù)庫(kù)的實(shí)現(xiàn)17</p><p> 4.1.1 創(chuàng)建表17</p><p> 4.1.2 創(chuàng)建存儲(chǔ)過(guò)程18</p><p> 4.2 主要界面及相關(guān)代碼的實(shí)現(xiàn)19</p><p> 4.2.1 用戶注冊(cè)頁(yè)面19</p><p>
7、 4.2.2 用戶登錄頁(yè)面22</p><p> 4.2.3 管理員管理頁(yè)面25</p><p> 4.2.4用戶信息顯示頁(yè)面28</p><p> 4.2.5 取回密碼頁(yè)面30</p><p> 4.2.6聊天室主頁(yè)33</p><p><b> 第五章 結(jié)論36</b>
8、</p><p> 第六章 參考文獻(xiàn)37</p><p><b> 第七章 謝辭38</b></p><p><b> 第一章 引言</b></p><p> 隨著網(wǎng)絡(luò)的普及和人們溝通的需要,網(wǎng)絡(luò)聊天室已經(jīng)成為人們溝通的一個(gè)重要工具。許多大型的門戶網(wǎng)站都提供功能完善的www聊天室系統(tǒng),而
9、這些聊天室系統(tǒng)逐漸成為年輕人認(rèn)識(shí)朋友,交流感情的好場(chǎng)所,隨著網(wǎng)絡(luò)速度的提高,目前許多服務(wù)商推出了多媒體聊天室,能夠支持語(yǔ)音聊天,視頻聊天以及文本聊天。</p><p> 聊天室主要分為WebChat、BBSChat兩種。BBSChat是基于Telnet的Tcp協(xié)議,是BBS的附設(shè)功能,需要客戶端Telnet程序。WebChat則采用瀏覽器方式,實(shí)際上是一個(gè)多人共同使用的CGI程序。其基本原理是把每個(gè)用戶的發(fā)言通
10、過(guò)瀏覽器傳給系統(tǒng),再由系統(tǒng)收集處理后分發(fā)給特定用戶。</p><p> 下面所做的是一個(gè)功能比較完善的文本聊天室。本網(wǎng)站以網(wǎng)絡(luò)交友為主,為廣大用戶提供一個(gè)借助網(wǎng)絡(luò)進(jìn)行人際交往的平臺(tái),也是網(wǎng)絡(luò)與現(xiàn)實(shí)最貼近的實(shí)用型網(wǎng)站。</p><p><b> 第二章 相關(guān)技術(shù)</b></p><p> 2.1 ASP.NET技術(shù)</p>&
11、lt;p> Asp.net是建立在通用語(yǔ)言運(yùn)行時(shí)刻庫(kù)(CLR)上的應(yīng)用程序框架。他用來(lái)在服務(wù)器端構(gòu)建功能強(qiáng)大的web應(yīng)用程序。Asp.net提供了幾個(gè)超越以前web開(kāi)發(fā)模式的優(yōu)點(diǎn): </p><p> ·增強(qiáng)的性能。Asp.net是運(yùn)行在服務(wù)器端的編譯后的CLR代碼,而不是像ASP那樣解釋執(zhí)行。 </p><p> ·Asp.net利用提前綁定,即時(shí)編譯,本
12、地優(yōu)化和緩存服務(wù)來(lái)提高性能。所有這一切,性能遠(yuǎn)遠(yuǎn)大于你以往寫的每一行代碼。 </p><p> ·世界級(jí)水平的開(kāi)發(fā)工具支持。在Visual Studio .net的集成開(kāi)發(fā)環(huán)境(IDE)中,Asp.net框架由豐富的工具箱和設(shè)計(jì)器組成。所見(jiàn)即所得的(WYSIWYG)編輯方式、拖放服務(wù)器控件、以及自動(dòng)部署,僅僅是這一強(qiáng)大工具所提供的一少部分功能。 </p><p> ·
13、;強(qiáng)大而富有彈性。由于asp.net是基于(CLR)的,因此整個(gè).net平臺(tái)的強(qiáng)大和富有彈性,同樣可以應(yīng)用于web應(yīng)用程序開(kāi)發(fā)者。.net框架的類庫(kù)、消息以及數(shù)據(jù)訪問(wèn)解決方案,都可以無(wú)縫集成到web。Asp.net也是語(yǔ)言中立的,因此你可以選擇你最熟悉的語(yǔ)言,或者通過(guò)幾種語(yǔ)言來(lái)共同完成一個(gè)應(yīng)用。而且,CLR的互用性可以保證你升級(jí)到asp.ent的時(shí)候,現(xiàn)存的基于COM的開(kāi)發(fā)投資依然保留。 </p><p> &
14、#183;簡(jiǎn)單。Asp.net使執(zhí)行常用的工作變得很容易,比如從簡(jiǎn)單的表單提交、客戶端驗(yàn)證,到部署和站點(diǎn)配置。例如,asp.net允許你建立用戶接口,實(shí)現(xiàn)頁(yè)面和邏輯代碼的分離,同時(shí),就像vb的表單執(zhí)行模式那樣來(lái)處理事件(也就是說(shuō),由頁(yè)面驅(qū)動(dòng)模式變成了事件驅(qū)動(dòng)模式)。此外,CLR簡(jiǎn)化了部署,用來(lái)管理代碼服務(wù),例如自動(dòng)參照和垃圾回收。 </p><p> ·易于管理。Asp.net使用一個(gè)基于文本的、分層
15、次的配置系統(tǒng),它簡(jiǎn)化了服務(wù)器端環(huán)境和web應(yīng)用程序的設(shè)置。由于配置信息用純文本格式保存,新的設(shè)置不需要本地管理工具的支持。這種“零本地支持”的理念也同樣應(yīng)用到了部署asp.net應(yīng)用程序。Asp.net應(yīng)用程序部署到服務(wù)器,簡(jiǎn)化為復(fù)制必要的文件到服務(wù)器。在部署,甚至替換正在運(yùn)行的變異代碼的時(shí)候,也不需要重新啟動(dòng)服務(wù)器。 </p><p> ·可伸縮性和有效利用性。Asp.net被設(shè)計(jì)成可伸縮的,能為集
16、群和多處理器環(huán)境設(shè)計(jì)提高性能。而且,asp.net運(yùn)行時(shí)刻密切監(jiān)視和管理進(jìn)程,這樣,如果發(fā)生了錯(cuò)誤的行為,例如漏洞和死鎖,新的進(jìn)程會(huì)在當(dāng)前位置建立,來(lái)幫助你的應(yīng)用程序繼續(xù)處理事件請(qǐng)求。 </p><p> ·可訂制和擴(kuò)展。Asp.net提供一種良好的擴(kuò)充結(jié)構(gòu),允許開(kāi)發(fā)者在適當(dāng)?shù)募?jí)別“插入”他們的代碼。事實(shí)上,使用自己的編寫的組件可以擴(kuò)展或者替換asp.net運(yùn)行時(shí)刻的任何子組件。執(zhí)行自定義驗(yàn)證或狀態(tài)服
17、務(wù)變得前所未有的容易。 </p><p> ·安全性。內(nèi)建的windows驗(yàn)證和每一個(gè)應(yīng)用程序的獨(dú)立配置,你可以認(rèn)為你的應(yīng)用程序是安全的。</p><p><b> 2.2 數(shù)據(jù)庫(kù)技術(shù)</b></p><p> SQL Server是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)引擎,只要一套系統(tǒng)就既能支持小型數(shù)據(jù)庫(kù),也能支持企業(yè)級(jí)大型數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)系統(tǒng)的管
18、理工作包括許多富于挑戰(zhàn)性的任務(wù),特別是運(yùn)行性能的管理工作。它采用了多線程技術(shù),支持存儲(chǔ)過(guò)程,采用基于成本的優(yōu)化技術(shù),在核心層實(shí)現(xiàn)數(shù)據(jù)完整性約束,并具有很強(qiáng)的安全保密性。它的工作主要是負(fù)責(zé)高速計(jì)算,數(shù)據(jù)管理,安全性及事務(wù)管理。</p><p> SQL Server2000在SQL Server7.0的基礎(chǔ)上新增了許多的功能,使得用戶能更方便、更快捷的管理數(shù)據(jù)庫(kù)和開(kāi)發(fā)應(yīng)用程序。SQL Server2000最常用的
19、是企業(yè)管理器。通過(guò)企業(yè)管理器可以方便的可視化的建立起數(shù)據(jù)庫(kù)系統(tǒng),從而可以在對(duì)SQL不是很精通的情況下,一樣建立起一個(gè)良好的數(shù)據(jù)庫(kù)來(lái)。</p><p> 企業(yè)管理器是一個(gè)集成化的數(shù)據(jù)庫(kù)操作環(huán)境,幾乎所有的數(shù)據(jù)庫(kù)操作都可以在這里里面完成。它是SQL Server 2000的主要管理工具,提供了一個(gè)遵從微軟管理控制臺(tái)的用戶界面,使用戶可以進(jìn)行如下的操作:</p><p> ·定義運(yùn)
20、行SQL Server的服務(wù)器組。</p><p> ·將個(gè)別服務(wù)器注冊(cè)到組中。</p><p> ·為每個(gè)已注冊(cè)的服務(wù)器配置所有SQL Server選項(xiàng)。</p><p> ·在每個(gè)已注冊(cè)的服務(wù)器中創(chuàng)建并管理所有SQL Server數(shù)據(jù)庫(kù)、對(duì)象、登錄、用戶和權(quán)限。</p><p> ·在每個(gè)已
21、注冊(cè)的服務(wù)器上定義并執(zhí)行所有SQL Server管理任務(wù)。</p><p> ·通過(guò)調(diào)用SQL查詢分析器,交互的設(shè)計(jì)并測(cè)試SQL語(yǔ)句、批處理和腳本。</p><p> ·調(diào)用為SQL Server定義的各種向?qū)А?lt;/p><p> 結(jié)構(gòu)化查詢語(yǔ)言SQL(Structured Query Language)是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)
22、言,其功能包括查詢、操縱、定義和控制4個(gè)方面,是一種通過(guò)的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。目前已成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。常用的功能包括數(shù)據(jù)定義、查詢、數(shù)據(jù)更新和視圖。</p><p> 要在良好的SQL Server方案中實(shí)現(xiàn)最優(yōu)的性能,最關(guān)鍵的是要有1個(gè)很好的數(shù)據(jù)庫(kù)設(shè)計(jì)方案。在實(shí)際工作中,許多SQL Server方案往往是由于數(shù)據(jù)庫(kù)設(shè)計(jì)得不好導(dǎo)致性能很差。所以,要實(shí)現(xiàn)良好的數(shù)據(jù)庫(kù)設(shè)計(jì)就必須考慮這些問(wèn)題。<
23、/p><p><b> 2.3 C#語(yǔ)言</b></p><p> C#是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它的基本語(yǔ)法與C/C++相同,其將軟件開(kāi)發(fā)中的邏輯分成5大部分:商業(yè)外觀層(BusinessFacade),商業(yè)規(guī)則層(BusinessRules),數(shù)據(jù)訪問(wèn)層(DataAccess),Model層等。這種邏輯上的劃分使得軟件的開(kāi)發(fā)更加方便,并使語(yǔ)句和數(shù)據(jù)庫(kù)的訪問(wèn)分開(kāi)
24、,而由商業(yè)規(guī)則層單獨(dú)提出規(guī)則,便于軟件的擴(kuò)展和維護(hù)。</p><p> 2.4 ADO.NET技術(shù)</p><p> ADO.NET是在.NET Framework平臺(tái)中負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的對(duì)象。ADO.NET是Active Data Objects2.6(ADO)的后續(xù)版本。ADO.NET的主要目的是可以在.NET Framework中更容易的創(chuàng)建分布式的數(shù)據(jù)共享的應(yīng)用程序。ADO.NET
25、建立在如XML的業(yè)界的基礎(chǔ)之上,就像ADO,它提供了一個(gè)數(shù)據(jù)訪問(wèn)接口,以便和OLE DB兼容的數(shù)據(jù)源進(jìn)行通信,如SQL Server或Oracle。應(yīng)用程序可以使用ADO.NET連接這些數(shù)據(jù)源,并檢索,處理和更新數(shù)據(jù)。</p><p> 可能大家已經(jīng)學(xué)過(guò)ADO,那么在舊版本還能正常工作時(shí),為什么還要學(xué)習(xí)新的數(shù)據(jù)訪問(wèn)對(duì)象模型呢?如果需要,也可以在NET.Framework中使用ADO,但需要為COM層方面付出一些
26、性能上的代價(jià),另外,NET.Framework并不支持COM Variant數(shù)據(jù)類型,這是ADO用于Recordset對(duì)象中的Field對(duì)象值的數(shù)據(jù)類型,也就是說(shuō),如果在.NET中使用ADO Recordset對(duì)象,為了訪問(wèn)數(shù)據(jù),NETCLR就經(jīng)常會(huì)對(duì)每個(gè)字段進(jìn)行類型轉(zhuǎn)換,如果要一直訪問(wèn)數(shù)據(jù),進(jìn)行這些類型轉(zhuǎn)換就會(huì)造成太大的系統(tǒng)開(kāi)銷。 使用ADO.NET最重要的理由是可以獲取一個(gè)真正斷開(kāi)連接的數(shù)據(jù)體系結(jié)構(gòu)和XML的緊密集成和一個(gè)通用
27、的數(shù)據(jù)表示法,可以將各種不同數(shù)據(jù)源中的數(shù)據(jù)組合起來(lái),并優(yōu)化了和數(shù)據(jù)庫(kù)交互的功能,同樣ADO.NET和NET.Framework的其它部分緊密的集成在一起,并充分利用NET.Framework中所有對(duì)象的層結(jié)構(gòu)及設(shè)計(jì)模式。ADO.NET建立在ADO的基礎(chǔ)之上,而且為數(shù)據(jù)訪問(wèn)工具集提供了許多工具。</p><p> ADO.NET的特點(diǎn)</p><p> · ADO.NET使用不
28、連接的數(shù)據(jù)結(jié)構(gòu);</p><p> · 數(shù)據(jù)被緩存到數(shù)據(jù)集內(nèi);</p><p> · 數(shù)據(jù)集獨(dú)立于數(shù)據(jù)源;</p><p> · 數(shù)據(jù)保持為XML</p><p> 數(shù)據(jù)需要從數(shù)據(jù)存儲(chǔ)區(qū)移動(dòng)到數(shù)據(jù)集以及從數(shù)據(jù)集移動(dòng)到各種組件,在ADO.NET中,傳統(tǒng)數(shù)據(jù)的格式是XML。類似地,如果需要保持?jǐn)?shù)據(jù),則將其存儲(chǔ)
29、為XML,如果有XML文件,則可以像使用任何數(shù)據(jù)源一樣使用它,并從它創(chuàng)建數(shù)據(jù)集。</p><p> 實(shí)際上,在ADO.NET,XML是數(shù)據(jù)的基本格式,ADO.NET數(shù)據(jù)API自動(dòng)用數(shù)據(jù)集內(nèi)的信息創(chuàng)建XML文件或流,并將它們發(fā)送給另一個(gè)組件,第二個(gè)組件可以調(diào)用類似的API將XML讀回?cái)?shù)據(jù)集。</p><p> · 使數(shù)據(jù)協(xié)議以XML為基礎(chǔ)可提供一個(gè)多便利之處,XML是工業(yè)標(biāo)準(zhǔn)格
30、式。這意味著你的應(yīng)用程序數(shù)據(jù)組件可以與其他任何應(yīng)用程序中其他任何組件交換數(shù)據(jù),只要該組件理解為XML,許多應(yīng)用程序被編寫為可理解XML,為異類應(yīng)用程序間交換提供空前高的水平。</p><p> ·XML是基于文本的,數(shù)據(jù)的XML表示形式不使用任何二進(jìn)制信息,這使它可以通過(guò)任何協(xié)議發(fā)送,大多數(shù)防火墻將阻塞二進(jìn)制信息,但通過(guò)將信息格式化為XML,組件仍可以方便的交換信息。對(duì)于大多數(shù)方案,不必知道XML便可
31、以使用ADO.NET中的數(shù)據(jù)。ADO.NET自動(dòng)根據(jù)需要將數(shù)據(jù)轉(zhuǎn)換為XML或XML自動(dòng)根據(jù)需要將數(shù)據(jù)轉(zhuǎn)化為ADO.NET,便使用普通編程的方法與數(shù)據(jù)進(jìn)行交互。</p><p> · 架構(gòu)定義數(shù)據(jù)結(jié)構(gòu)</p><p> 盡管不必知道有關(guān)XML的任何事情便可以讀寫數(shù)據(jù)庫(kù)和數(shù)據(jù)集,但也有一些事情使用XML恰是你追求的標(biāo)準(zhǔn)。不打算訪問(wèn)數(shù)據(jù)而要進(jìn)行數(shù)據(jù)設(shè)計(jì)時(shí)的情況,也就是,在ADO.N
32、ET中使用元數(shù)據(jù)時(shí),將直接使用XML。</p><p> 數(shù)據(jù)集以XML表示,數(shù)據(jù)集的結(jié)構(gòu)使用XML架構(gòu)進(jìn)行定義,就像數(shù)據(jù)集包含的數(shù)據(jù)可以從XML加載和序列化為XML,數(shù)據(jù)集的結(jié)構(gòu)也可以從XSD架構(gòu)和序列化為XSD架構(gòu)。</p><p> 對(duì)ADO.NET中的數(shù)據(jù)進(jìn)行的大部分操作,不必深入鉆研架構(gòu)。通常,基于Visual Studio.NET工具將可以在可視化設(shè)計(jì)器中進(jìn)行操作,并根據(jù)需
33、要生成和更新架構(gòu)。</p><p> ADO.NET中的連接是在每個(gè)托管提供程序中,一單個(gè)connection類的形式來(lái)建模的。Connection類表示到一個(gè)數(shù)據(jù)源的單個(gè)連接,但并非一定表示單個(gè)調(diào)用。ADO.NET是為斷開(kāi)數(shù)據(jù)而設(shè)計(jì)的,所以必須為重復(fù)打開(kāi)和關(guān)閉連接提供connection類。創(chuàng)建好connection對(duì)象后,接著要設(shè)置連接字符串,它描述了數(shù)據(jù)源的位置(本地?cái)?shù)據(jù)庫(kù)服務(wù)器)。接著,我們打開(kāi)連接并在
34、ADO.NET數(shù)據(jù)庫(kù)上執(zhí)行一個(gè)命令。一旦檢索到相關(guān)數(shù)據(jù),就關(guān)閉連接。完成對(duì)數(shù)據(jù)的處理之后,就可以重新打開(kāi)連接,并繼續(xù)操縱相同的數(shù)據(jù)元。數(shù)據(jù)處理期間,數(shù)據(jù)庫(kù)的連接處于釋放狀態(tài),所以數(shù)據(jù)庫(kù)服務(wù)器的復(fù)合大大的減輕了。需要時(shí),我們?cè)谥匦陆⑦B接。雖然重新建立連接會(huì)產(chǎn)生一定的開(kāi)銷,但利用ADO.NET的連接池功能,就可以盡可能的減少這種開(kāi)銷。</p><p> 我們將數(shù)據(jù)庫(kù)連接字符串放在web.config文件中,便于運(yùn)
35、用連接池,提高系統(tǒng)的性能。</p><p> 第三章 需求分析與總體設(shè)計(jì)</p><p><b> 3.1 需求分析</b></p><p> 3.1.1 功能需求</p><p> · 能夠注冊(cè)用戶,管理用戶信息,獲取登錄用戶的IP;</p><p> · 聊天者把
36、語(yǔ)句寫入文本,輸出到屏幕上;</p><p> · 瀏覽器不斷的對(duì)屏幕輸出進(jìn)行刷新、讀??;</p><p> · 實(shí)時(shí)更新在線的客戶;</p><p> · 能夠公開(kāi)聊天、私下聊天等等;</p><p> · 管理員對(duì)聊天者進(jìn)行管理,能夠禁止某用戶或者IP登錄,把用戶踢出聊天室等等</p&
37、gt;<p> 3.1.2 性能需求</p><p> 在聊天室沒(méi)有滿員的情況下,普通用戶能夠登錄的聊天室進(jìn)行文本的聊天,能夠方便的實(shí)現(xiàn)公共交談、選擇顏色、添加表情、進(jìn)行私聊等,新用戶注冊(cè)時(shí)能夠保證用戶昵稱的唯一性。網(wǎng)絡(luò)管理員能夠方便的瀏覽所有用戶的信息,能夠禁止某用戶或者IP登錄,把用戶踢出聊天室等等。考慮到需要驗(yàn)證的內(nèi)容,聊天室能容納的用戶不能太多,在本聊天室中設(shè)置最多可以容納20個(gè)用戶。在
38、程序中使用Application(“usercount”)來(lái)標(biāo)記當(dāng)前的用戶數(shù),在進(jìn)入聊天室之前首先監(jiān)測(cè)聊天室是否已滿,如果已經(jīng)達(dá)到極限人數(shù),則不允許任何用戶登錄。在登錄時(shí)用Session["upower"]來(lái)判斷用戶的權(quán)限,如果是普通用戶通過(guò)驗(yàn)證后會(huì)進(jìn)入聊天室主頁(yè),如果是管理員則會(huì)進(jìn)入管理員管理管理頁(yè)面。</p><p><b> 3.2系統(tǒng)環(huán)境</b></p&g
39、t;<p> 由于本系統(tǒng)采用了Visual Studio.NET設(shè)計(jì),故可以運(yùn)行在所有支持.NET虛擬機(jī)的系統(tǒng)中。</p><p> 3.2.1系統(tǒng)運(yùn)行環(huán)境</p><p><b> 硬件配置:</b></p><p> CPU:400HZ Pentium處理器、或者AMD處理器 內(nèi)存:128M 硬盤:800M自由空間
40、. 顯示器分辨率:不低于800*600 4、所需軟件 IIS 5.0或者IIS 5.5 或者IIS 6.0 .NET Framework 1.1 或者 .net Framework 2.0 beta Microsoft Access、SQL Server 2000 </p><p><b> 軟件環(huán)境:</b></p><p> 所需要的操作系統(tǒng): Wi
41、ndows 2000 Server </p><p> 瀏覽要求 :不低于IE 5.5 </p><p> 3.2.2系統(tǒng)開(kāi)發(fā)環(huán)境</p><p><b> 硬件配置:</b></p><p> CPU:400HZ Pentium處理器、或者AMD處理器 內(nèi)存:128M 硬盤:800M自由空間. 顯示器分辨
42、率:不低于800*600 4、所需軟件 IIS 5.0或者IIS 5.5 或者IIS 6.0 .NET Framework 1.1 或者 .net Framework 2.0 beta Microsoft Access、SQL Server 2000 </p><p><b> 軟件環(huán)境:</b></p><p> 操作系統(tǒng):開(kāi)發(fā)環(huán)境所在的系統(tǒng)為Windo
43、ws2000 Server。 </p><p> 數(shù)據(jù)庫(kù):使用Microsoft SQL Server 2000 數(shù)據(jù)庫(kù)。</p><p> 開(kāi)發(fā)工具:使用Visual Studio.NET編程語(yǔ)言,版本為Microsoft Visual Studio.NET 2003。</p><p><b> 3.3 系統(tǒng)框架</b></p&g
44、t;<p> 3.3.1 系統(tǒng)流程分析</p><p><b> 流程圖:</b></p><p><b> 進(jìn)入</b></p><p><b> 圖1 系統(tǒng)流程圖</b></p><p> 3.3.2 系統(tǒng)功能模塊分析</p><
45、p> 在此聊天室的完成過(guò)程中我主要做用戶管理,如注冊(cè)、刪除、對(duì)用戶的聊天內(nèi)容限制、禁用某用戶或某IP,下面我主要對(duì)這幾部分的功能進(jìn)行分析:</p><p> 用戶登錄界面(Login.aspx):管理員和普通用戶我都用這一個(gè)界面,在數(shù)據(jù)庫(kù)的用戶表中我設(shè)置了一個(gè)用戶級(jí)別的字段,用于區(qū)分普通用戶和管理員,在程序中用Session(“UPower”)來(lái)保存用戶的權(quán)限,如果是0則為管理員通過(guò)驗(yàn)證后會(huì)進(jìn)入管理員管
46、理頁(yè)面,如果是1通過(guò)驗(yàn)證后會(huì)進(jìn)入聊天室主頁(yè)可以進(jìn)行聊天。</p><p> 用戶注冊(cè)頁(yè)面(register.aspx):此頁(yè)面用于新用戶注冊(cè),將新用戶信息保存數(shù)據(jù)庫(kù)中,此過(guò)程要保證用戶的昵稱不能有重復(fù),另外要取得登錄用戶的IP地址保存到數(shù)據(jù)庫(kù)中。</p><p> 管理員管理頁(yè)面(manage.aspx):管理員能夠?yàn)g覽用戶的信息,能夠根據(jù)用戶名或者用戶的IP地址剔除用戶。</p
47、><p> 取回密碼頁(yè)面(takepwd.aspx):如果用戶已經(jīng)注冊(cè)過(guò),但由于某種原因忘記密碼了,可以進(jìn)入此頁(yè)面取回用戶的密碼。密碼將被發(fā)送到用戶注冊(cè)的郵箱當(dāng)中。</p><p><b> 第四章 具體實(shí)現(xiàn)</b></p><p> 4.1 數(shù)據(jù)庫(kù)的實(shí)現(xiàn)</p><p> 管理數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象當(dāng)你使用SQL se
48、rver時(shí),面臨的第一個(gè)任務(wù)就是創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)。SQL server提供了三種不同的方式用于創(chuàng)建新數(shù)據(jù)庫(kù):</p><p> ·使用創(chuàng)建數(shù)據(jù)庫(kù)向?qū)?lt;/p><p> ·使用SQL server Enterprise Manager</p><p> ·使用Transact-SQL語(yǔ)言</p><p>
49、 創(chuàng)建數(shù)據(jù)庫(kù)向?qū)?huì)引導(dǎo)你完成整個(gè)的數(shù)據(jù)庫(kù)創(chuàng)建過(guò)程。使用向?qū)В合葐螕鬍nterprise Manager工具欄中的Run a wizard 按紐,然后選擇Database文件夾,雙擊相應(yīng)的向?qū)А?lt;/p><p> 使用Enterprise manager創(chuàng)建數(shù)據(jù)庫(kù):?jiǎn)螕艄ぞ邫贜EW DATABASE按紐(注意:無(wú)論是創(chuàng)建數(shù)據(jù)庫(kù)向?qū)н€是NEW DATABASE按紐,都只是在選擇了服務(wù)器或是選擇它的一個(gè)子實(shí)體后才會(huì)出
50、現(xiàn))。另一種辦法是:在DATABASE文件家上單擊右鍵(該文件家出現(xiàn)在服務(wù)器層次之下)并選擇NEW DATABASE。使用DATABASE PROPRETEES對(duì)話框可以顯示或設(shè)置新數(shù)據(jù)庫(kù)所有屬性。</p><p> 本系統(tǒng)中用到的數(shù)據(jù)庫(kù)使用SQL server Enterprise Manager來(lái)創(chuàng)建,程序中的用的sql命令多用存儲(chǔ)過(guò)程實(shí)現(xiàn)。</p><p><b> 4
51、.1.1 創(chuàng)建表</b></p><p> 下面為數(shù)據(jù)庫(kù)表USERS(表1)</p><p> 表1 users表結(jié)構(gòu)</p><p> 4.1.2 創(chuàng)建存儲(chǔ)過(guò)程</p><p> /*下面存儲(chǔ)過(guò)程為用戶注冊(cè)所用,用于向數(shù)據(jù)庫(kù)中添加新用戶*/</p><p> CREATE PROCEDURE p
52、rocAddUsers</p><p> ( @name varchar(50),@password varchar(50),</p><p> @tname varchar(50),@age int,</p><p> @school varchar(50),@Tel varchar(50),</p><p> @email var
53、char(50),@ip varchar(50)) </p><p> AS INSERT INTO users</p><p> (UName,UPassword,Tname,Age,School,Tel,Email,UPower,UIP)</p><p><b> VALUES</b></p><p> (@
54、name,@password,@tname,@age,@school,@Tel,@email,'1',@ip)</p><p><b> GO</b></p><p> /*下面存儲(chǔ)過(guò)程為根據(jù)用戶IP地址來(lái)刪除用戶*/</p><p> CREATE PROCEDURE procDelByIP</p><
55、;p> (@ip varchar(50))</p><p> AS delete users where UIP=@ip</p><p><b> GO</b></p><p> CREATE PROCEDURE procDelByName</p><p> (@uname varchar(50))
56、</p><p> AS delete users </p><p> where uname=@uname</p><p><b> GO</b></p><p> /*下面存儲(chǔ)過(guò)程為用戶登錄所用,用于檢索數(shù)據(jù)庫(kù)中是否存在登錄用戶的紀(jì)錄*/</p><p> CREATE PROCE
57、DURE procLogin</p><p> (@uname varchar(50),@password varchar(50))</p><p> AS select * from users</p><p> where UName=@uname and UPassword=@password</p><p><b>
58、 GO</b></p><p> /*此存儲(chǔ)過(guò)程用于檢索所有的注冊(cè)用戶*/</p><p> CREATE PROCEDURE procUsers</p><p> AS select * from users</p><p><b> GO</b></p><p> 4
59、.2 主要界面及相關(guān)代碼的實(shí)現(xiàn)</p><p> 4.2.1 用戶注冊(cè)頁(yè)面</p><p> 昵稱是用于代表聊天室用戶的身份,不能重復(fù)。用戶在注冊(cè)時(shí)為了避免用戶重名,必須驗(yàn)證用戶昵稱。如果在聊天室中已經(jīng)存在該用戶昵稱,則要求用戶更改昵稱之后才能進(jìn)入聊天室。設(shè)計(jì)此界面要注意的問(wèn)題:加入asp:RequiredFieldValidator驗(yàn)證控件保證必須填寫的字段不能為空;加入asp:Re
60、gularExpressionValidator驗(yàn)證控件保證輸入的郵箱必須是電子郵箱的正確格式;加入asp:CompareValidator驗(yàn)證控件保證輸入的密碼和驗(yàn)證密碼必須一致。</p><p><b> 圖2 用戶注冊(cè)</b></p><p> 如果是注冊(cè)成功,則會(huì)出現(xiàn)圖3所示的頁(yè)面,可以返回到登錄頁(yè)面登錄到聊天室主頁(yè)當(dāng)中,數(shù)據(jù)庫(kù)中就會(huì)添加上一條紀(jì)錄。注意的
61、問(wèn)題:由于必添項(xiàng)中都加了驗(yàn)證控件,不能為空,否則不能注冊(cè),郵箱必須是正確的格式,否則提示錯(cuò)誤。</p><p><b> 注冊(cè)成功后的頁(yè)面:</b></p><p> 圖3 用戶注冊(cè)成功提示頁(yè)面</p><p> 可以查看一下數(shù)據(jù)庫(kù)中的用戶信息,沒(méi)有注冊(cè)前為圖9所示,注冊(cè)后添加了一條紀(jì)錄,如圖4所示。</p><p&g
62、t; 圖4 顯示用戶信息頁(yè)面</p><p><b> 主要代碼:</b></p><p> //次過(guò)程用于響應(yīng)注冊(cè)按鈕</p><p> private void btnRegister_Click(object sender, System.EventArgs e)</p><p><b> {&
63、lt;/b></p><p><b> try</b></p><p> {//從文件web.config中讀取連接字符串</p><p> string strconn=ConfigurationSettings.AppSettings["chat"];</p><p> //連接本地
64、計(jì)算機(jī)的chat數(shù)據(jù)庫(kù)</p><p> SqlConnection conn=new SqlConnection(strconn);</p><p> conn.Open();</p><p> //判斷用戶想要注冊(cè)的用戶名是否已經(jīng)被注冊(cè)過(guò)</p><p> SqlCommand cm0=new SqlCommand("s
65、elect * from users where uname='"+this.txtName.Text.ToString()+"'",conn);</p><p> SqlDataReader dr0=cm0.ExecuteReader();</p><p> if(dr0.Read())</p><p><b
66、> {</b></p><p> this.lblMessage.Text="您要注冊(cè)的用戶名已經(jīng)存在,請(qǐng)重新選擇一個(gè)用戶名再注冊(cè)!";</p><p><b> }</b></p><p><b> else</b></p><p><b>
67、 {</b></p><p> dr0.Close();</p><p> //利用Command對(duì)象調(diào)用存儲(chǔ)過(guò)程</p><p> SqlCommand cm=new SqlCommand("procAddUsers",conn);</p><p> //將命令類型轉(zhuǎn)化為存儲(chǔ)類型</p>
68、<p> cm.CommandType=CommandType.StoredProcedure;</p><p> //往存儲(chǔ)過(guò)程中添加參數(shù)</p><p> cm.Parameters.Add("@name",SqlDbType.VarChar);</p><p> cm.Parameters.Add("@pas
69、sword",SqlDbType.VarChar);</p><p> cm.Parameters.Add("@tname",SqlDbType.VarChar);</p><p> cm.Parameters.Add("@age",SqlDbType.Int);</p><p> cm.Parameters.
70、Add("@school",SqlDbType.VarChar);</p><p> cm.Parameters.Add("@Tel",SqlDbType.VarChar);</p><p> cm.Parameters.Add("@email",SqlDbType.VarChar);</p><p>
71、 cm.Parameters.Add("@ip",SqlDbType.VarChar);</p><p> //給存儲(chǔ)過(guò)程的參數(shù)負(fù)值</p><p> cm.Parameters["@name"].Value=this.txtName.Text.ToString();</p><p> cm.Parameters[&q
72、uot;@password"].Value=this.txtPassword.Text.ToString();</p><p> cm.Parameters["@tname"].Value=this.txtTName.Text.ToString();</p><p> cm.Parameters["@age"].Value=Conver
73、t.ToInt32(this.txtAge.Text.ToString());</p><p> cm.Parameters["@school"].Value=this.txtSchool.Text.ToString();</p><p> cm.Parameters["@Tel"].Value=this.txtTel.Text.ToString
74、();</p><p> cm.Parameters["@email"].Value=this.txtEmail.Text.ToString();</p><p> //取得用戶的ip地址傳遞給存儲(chǔ)過(guò)程的參數(shù)</p><p> cm.Parameters["@ip"].Value=Request.UserHostAddr
75、ess.ToString();</p><p> cm.ExecuteNonQuery();</p><p><b> }</b></p><p> conn.Close();</p><p> this.txtAge.Text="";</p><p> this.t
76、xtName.Text="";</p><p> this.txtSchool.Text="";</p><p> this.txtTel.Text="";</p><p> this.txtEmail.Text="";</p><p> this.txt
77、TName.Text="";</p><p> this.lblMessage.Text="注冊(cè)成功!登錄聊天室請(qǐng)點(diǎn)";</p><p><b> }</b></p><p> catch(SqlException ex)</p><p><b> {</b
78、></p><p> Response.Write("發(fā)生數(shù)據(jù)庫(kù)錯(cuò)誤"+ex.Message);</p><p> this.lblMessage.Text="注冊(cè)失敗,請(qǐng)重試!";</p><p><b> }</b></p><p> //次過(guò)程用于響應(yīng)取消按鈕&
79、lt;/p><p> private void btnCancel_Click(object sender, System.EventArgs e)</p><p><b> {</b></p><p> this.txtAge.Text="";</p><p> this.txtName.Tex
80、t="";</p><p> this.txtSchool.Text="";</p><p> this.txtTel.Text="";</p><p> this.txtEmail.Text="";</p><p> this.txtTName.Text
81、="";</p><p> this.txtConfirmPwd.Text="";</p><p> this.txtPassword.Text="";</p><p><b> }</b></p><p><b> }</b>&l
82、t;/p><p> 4.2.2 用戶登錄頁(yè)面</p><p> 為使用聊天室勢(shì)必要使用Application對(duì)象和Session對(duì)象,所以必須使用Global.asax文件。考慮到需要驗(yàn)證的內(nèi)容,聊天室能容納的用戶不能太多,在本聊天室中設(shè)置最多可以容納20個(gè)用戶。在程序中使用Application[“usercount”]來(lái)標(biāo)記當(dāng)前的用戶數(shù),在進(jìn)入聊天室之前首先監(jiān)測(cè)聊天室是否已滿,如果已經(jīng)
83、達(dá)到極限人數(shù),則不允許任何用戶登錄。在登錄時(shí)用Session["upower"]來(lái)判斷用戶的權(quán)限,如果是普通用戶通過(guò)驗(yàn)證后會(huì)進(jìn)入聊天室主頁(yè),如果是管理員則會(huì)進(jìn)入管理員管理管理頁(yè)面。</p><p><b> 圖5 用戶登錄頁(yè)面</b></p><p><b> 主要代碼:</b></p><p>
84、 //此過(guò)程用于響應(yīng)登錄按鈕</p><p> private void btnLogin_Click(object sender, System.EventArgs e)</p><p> { //判斷聊天室是否已滿</p><p> if(Application["UserCount"]==20)</p><p>
85、; { this.lblMessage.Text="對(duì)不起!聊天室人員已滿,請(qǐng)稍后在登錄!"; }</p><p><b> else</b></p><p><b> {</b></p><p><b> try</b></p><p> {//
86、從web.config文件中讀取數(shù)據(jù)庫(kù)連接字符串</p><p> string strconn=ConfigurationSettings.AppSettings["chat"];</p><p> //建立到本地?cái)?shù)據(jù)庫(kù)chat的連接</p><p> SqlConnection cn=new SqlConnection(strconn)
87、;</p><p> cn.Open();</p><p> //利用Command對(duì)象調(diào)用存儲(chǔ)過(guò)程</p><p> SqlCommand cmd=new SqlCommand("procLogin",cn);</p><p> //將命令類型轉(zhuǎn)化為存儲(chǔ)類型 </p><p> cmd.
88、CommandType=CommandType.StoredProcedure;</p><p> //給存儲(chǔ)過(guò)程添加參數(shù)并負(fù)值</p><p> cmd.Parameters.Add("@uname",SqlDbType.VarChar);</p><p> cmd.Parameters.Add("@password"
89、,SqlDbType.VarChar);</p><p> cmd.Parameters["@uname"].Value=this.txtName.Text.ToString();</p><p> cmd.Parameters["@password"].Value=this.txtPassword.Text.ToString();</p&
90、gt;<p> SqlDataReader dr=cmd.ExecuteReader();</p><p> if(dr.Read())</p><p> { //保存當(dāng)前用戶名及用戶權(quán)限</p><p> Session["uname"]=dr["UName"].ToString();</p&
91、gt;<p> Session["UPower"]=dr["UPower"].ToString();</p><p> string strname=Session["uname"].ToString();</p><p> if(Session["upower"].ToString()==
92、"1")</p><p> { //普通用戶登錄Response.Redirect("chatexplain.aspx?uname="+strname);</p><p><b> }</b></p><p><b> else</b></p><p>
93、;<b> {//管理員登錄</b></p><p> Response.Redirect("manage.aspx");</p><p><b> }</b></p><p> dr.Close();</p><p><b> }</b><
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---多人聊天室設(shè)計(jì)
- 畢業(yè)論文 java聊天室的設(shè)計(jì)
- java聊天室畢業(yè)論文
- 畢業(yè)論文asp聊天室
- 聊天室(java)-畢業(yè)論文
- jsp在線聊天室-畢業(yè)論文
- 基于web的聊天室畢業(yè)論文
- 基于web的聊天室畢業(yè)論文
- 畢業(yè)論文——網(wǎng)上聊天室
- 基于web的聊天室構(gòu)建畢業(yè)論文
- 基于java的聊天室設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于java的聊天室設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文——網(wǎng)上聊天室 (3)
- 畢業(yè)論文——網(wǎng)上聊天室 (3)
- 畢業(yè)論文——網(wǎng)上聊天室 (2)
- 畢業(yè)論文——網(wǎng)上聊天室 (3)
- 畢業(yè)設(shè)計(jì)----網(wǎng)絡(luò)聊天室的設(shè)計(jì)與實(shí)現(xiàn)
- java局域網(wǎng)聊天室系統(tǒng)畢業(yè)論文
- 基于java網(wǎng)絡(luò)聊天室設(shè)計(jì)
- 基于asp的網(wǎng)絡(luò)聊天室的設(shè)計(jì)和實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論