即時(shí)通信工具畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩45頁(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、<p><b>  1 緒論</b></p><p>  1.1 研究現(xiàn)狀及設(shè)計(jì)目標(biāo)</p><p>  1.1.1 研究現(xiàn)狀</p><p>  即時(shí)通信(Instant Messenger,簡(jiǎn)稱IM)軟件是一種實(shí)現(xiàn)文字、音頻和視頻等信息的即時(shí)傳送, 以及點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)交換的網(wǎng)絡(luò)交流方式。自1996 年世界上第一個(gè)即時(shí)通信軟件 ICQ

2、 在四位以色列籍年輕人成立的一家名為 Mirabilis 的小公司誕生, IM便拉開(kāi)了神奇的序幕。當(dāng)初僅僅是為了使連接在同一個(gè)服務(wù)器上的用戶能相互交流而開(kāi)發(fā)的 ICQ,在后來(lái)的日子里風(fēng)光無(wú)限,各種即時(shí)通信軟件迅速席卷了全球網(wǎng)民。目前,即時(shí)通訊軟件可以說(shuō)是上網(wǎng)用戶使用率最高的軟件。不論是老牌的ICQ,還是國(guó)內(nèi)用戶量第一的騰訊QQ,乃至微軟的MSN Messenger、Goole Talker、雅虎的雅虎通、新浪UC、網(wǎng)易泡泡、搜Q、了了吧

3、等都有很多的用戶。甚至有專家預(yù)測(cè)即時(shí)通信軟件即將取代電子郵件成為主流的互聯(lián)網(wǎng)通信工具。</p><p>  Web IM 是網(wǎng)頁(yè)版的即時(shí)通信工具,它的作用是給那些用不了或者不方便使用soft客戶端的用戶使用,最大的價(jià)值就是提供便捷的交流渠道。另外,Web IM的應(yīng)用對(duì)于增強(qiáng)網(wǎng)站用戶的活躍度、網(wǎng)站的互動(dòng)性有著非常重大的意義,Web IM主要應(yīng)用于社區(qū)用戶的交流,在線客服,CRM。</p><p&

4、gt;  常見(jiàn)的即時(shí)通信工具的Web版本,如Web qq 、Web版百度HI,這類(lèi)在線IM主要的功能局限于即時(shí)的交流溝通,側(cè)重點(diǎn)在消息與文件傳輸?shù)壬贁?shù)功能。針對(duì)社區(qū)、論壇以及普通網(wǎng)頁(yè)開(kāi)發(fā)的即時(shí)聊天插件。在這當(dāng)中不得不提到Web qq,Web qq是騰訊推出的使用網(wǎng)頁(yè)方式上QQ的服務(wù),特點(diǎn)是無(wú)需下載和安裝QQ軟件,只要能打開(kāi)web qq的網(wǎng)站就可以登錄QQ與好友保持聯(lián)系。具有Web產(chǎn)品固有的便利性,同時(shí)在Web上最大限度的保持了客戶端軟件

5、的操作習(xí)慣。更豐富的好友動(dòng)態(tài)、更開(kāi)闊的聊天模式、更實(shí)時(shí)的資訊查看、還有休閑音樂(lè)伴隨,web qq將為我們提供一個(gè)愉快的網(wǎng)絡(luò)起點(diǎn)。</p><p>  1.1.2 設(shè)計(jì)目標(biāo)</p><p>  現(xiàn)在的國(guó)內(nèi)即時(shí)通信市場(chǎng)已經(jīng)被Webqq以及電信的Fetion牢牢占據(jù),各個(gè)網(wǎng)絡(luò)公司自己的即時(shí)通信軟件僅僅只能在局部的范圍內(nèi)起到作用,本次系統(tǒng)設(shè)計(jì)是本著學(xué)習(xí)的原則進(jìn)行的,其期望達(dá)到的目標(biāo):</p&

6、gt;<p> ?。?)使用VB.NET語(yǔ)言進(jìn)行數(shù)據(jù)交換及相關(guān)操作并且封裝成類(lèi);</p><p>  (2)能夠進(jìn)行異步數(shù)據(jù)的查詢、檢索;</p><p> ?。?)能夠?qū)崿F(xiàn)服務(wù)器端與客戶端的連接和即時(shí)通訊。</p><p>  1.2 研究目的及意義</p><p>  1.2.1 研究目的</p><p&

7、gt; ?。?)通過(guò)對(duì)具體應(yīng)用系統(tǒng)的設(shè)計(jì),使自己對(duì)vs開(kāi)發(fā)平臺(tái)以及sql數(shù)據(jù)庫(kù)能夠進(jìn)一步熟悉。</p><p> ?。?)在開(kāi)發(fā)過(guò)程中參考各個(gè)方面的文獻(xiàn),了解目前通訊系統(tǒng)開(kāi)發(fā)的走向及前景。</p><p>  (3)熟悉小型系統(tǒng)開(kāi)發(fā)的整體流程,為以后的學(xué)習(xí)或是工作作出鋪墊。</p><p>  1.2.2 研究意義</p><p> ?。?)

8、熟悉vs+sql開(kāi)發(fā)小型系統(tǒng)的意義</p><p>  對(duì)于.Net的開(kāi)發(fā),visual studio集成開(kāi)發(fā)環(huán)境無(wú)疑是最好的選擇。Visual studio2008是基于。Net 3.5一起推出的新一代開(kāi)發(fā)平臺(tái),它提供了一整套的開(kāi)發(fā)工具。在該開(kāi)發(fā)平臺(tái)上,可以開(kāi)發(fā)ASP.NET Web應(yīng)用程序、Web服務(wù)應(yīng)用程序、Windows應(yīng)用程序和移動(dòng)設(shè)備應(yīng)用程序。.net支持多種開(kāi)發(fā)語(yǔ)言,如Visual Basic.Ne

9、t、Visual C#、Visual C++等。利用此開(kāi)發(fā)工具可以創(chuàng)建混合語(yǔ)言解決方案,同時(shí)可以簡(jiǎn)化ASP.NET Web應(yīng)用程序的開(kāi)發(fā)難度。</p><p>  在我們的學(xué)習(xí)中大多采用vs+sql的黃金組合,一個(gè)用于界面設(shè)計(jì),一個(gè)用于組織后臺(tái)數(shù)據(jù),這也是商業(yè)開(kāi)發(fā)的傳統(tǒng)模式,熟悉這樣的開(kāi)發(fā)語(yǔ)言和數(shù)據(jù)庫(kù)對(duì)于我們以后從事軟件開(kāi)發(fā)具有引導(dǎo)性的作用,為以后更好發(fā)展打下基礎(chǔ)。</p><p> ?。?/p>

10、2)熟悉小型系統(tǒng)開(kāi)發(fā)的整體流程的意義</p><p>  通過(guò)每一次的具體系統(tǒng)開(kāi)發(fā),我們都會(huì)發(fā)現(xiàn)可以從中收獲匪淺,無(wú)論是技術(shù)層面的,還是非技術(shù)層面的,計(jì)算機(jī)專業(yè)。就像我們?cè)谝淮蜗到y(tǒng)開(kāi)發(fā)中,首先我們必須從大的方面著手,先通過(guò)與用戶的交流獲得對(duì)問(wèn)題的直接定義,即解決“我們要解決什么任務(wù),完成什么任務(wù)?”的問(wèn)題,如果不知道問(wèn)題是什么就開(kāi)始規(guī)劃模塊,顯然是盲目的,只會(huì)白白浪費(fèi)金錢(qián),最終得出的結(jié)果不可能令用戶滿意。在知道了

11、要解決什么問(wèn)題后,還要對(duì)問(wèn)題進(jìn)行可行性的分析,即確定“用戶所提出的問(wèn)題是否有一個(gè)可以解決的方案,方案行不行得通?!比缓蟛攀切枨蠓治?,這個(gè)階段仍然不是具體的解決問(wèn)題,而是準(zhǔn)確的確定“為了解決這個(gè)問(wèn)題,目標(biāo)系統(tǒng)必須做什么”,主要是確定系統(tǒng)必須具有哪些功能。</p><p>  在上述步驟都詳盡的完成后,我們才可以做總體設(shè)計(jì),即“應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng),”這時(shí)可以對(duì)整個(gè)系統(tǒng)進(jìn)行一定的模塊劃分,將系統(tǒng)劃分為適當(dāng)?shù)膶哟谓Y(jié)構(gòu)。

12、然后再進(jìn)行詳細(xì)設(shè)計(jì),即“怎樣具體實(shí)現(xiàn)各個(gè)模塊,”,進(jìn)行模塊的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、代碼編寫(xiě)。接著就是進(jìn)行單元測(cè)試和綜合測(cè)試,最后還要有對(duì)系統(tǒng)的后期維護(hù)。</p><p>  通過(guò)對(duì)小型系統(tǒng)的開(kāi)發(fā),我們可以熟練的掌握系統(tǒng)開(kāi)發(fā)流程,這樣在我們以后的工作中對(duì)每個(gè)階段要完成的任務(wù)才能有一個(gè)清醒的認(rèn)識(shí),對(duì)以后進(jìn)行團(tuán)隊(duì)合作才能有足夠的重視,才能更好的完成任務(wù)。</p><p>  2 系統(tǒng)開(kāi)發(fā)工具簡(jiǎn)介&

13、lt;/p><p>  2.1 ASP.NET AJAX開(kāi)發(fā)技術(shù)介紹</p><p>  ASP.NET 是一項(xiàng)功能強(qiáng)大的,非常靈活的服務(wù)器端技術(shù),用于創(chuàng)建動(dòng)態(tài)Web頁(yè)面。其次,ASP.NET是構(gòu)成.NET Framework的一系列技術(shù)中的一種,在此可以把.NET Framework看成是用于創(chuàng)建所有應(yīng)用程序的巨大工具箱[1]。</p><p>  AJAX的全稱是A

14、synchronous JavaScript And XML,即異步的JavaScript 和XML,確切的說(shuō),AJAX并不是一種技術(shù),它實(shí)際上是幾種技術(shù)的共同協(xié)作的結(jié)果,而其中每一種技術(shù)在AJAX提出之前都已經(jīng)被成熟應(yīng)用很多年了,它所使用的技術(shù)包括:</p><p><b>  XHTML和CSS</b></p><p>  使用文檔對(duì)象模型(Document Ob

15、ject Model)作動(dòng)態(tài)顯示和交互</p><p>  使用XML和XSLT做數(shù)據(jù)交互和操作</p><p>  使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)接收</p><p>  使用JavaScript將它們綁定在一起</p><p>  ASP.NET Ajax 開(kāi)發(fā)代號(hào)Atlas是一個(gè)新的Web技術(shù)開(kāi)發(fā)包,它集成了一套非常大的客

16、戶端腳本庫(kù)使得與功能豐富的、基于服務(wù)器開(kāi)發(fā)平臺(tái)的 ASP.NET2.0結(jié)合在一起,”Atlas”能讓你開(kāi)發(fā)的Web應(yīng)用能夠通過(guò)直接調(diào)用Web服務(wù)器來(lái)更新一個(gè)Web頁(yè)面的數(shù)據(jù)――不需要在頁(yè)面往返傳送(也就是不需要多次刷新頁(yè)面)。使用”Atlas”,你能最大地利用ASP.NET和服務(wù)器端代碼在瀏覽器中來(lái)做許多工作,使得有更加豐富的用戶體驗(yàn)。</p><p>  ASP.NET AJAX是一個(gè)完整的開(kāi)發(fā)框架,其服務(wù)器端

17、編程模型相對(duì)于客戶端編程模型較為簡(jiǎn)單,而且容易與現(xiàn)有的ASP.NET程序相結(jié)合,通常實(shí)現(xiàn)復(fù)雜的功能只需要在頁(yè)面中拖幾個(gè)控件,而不必了解深層次的工作原理,除此之外服務(wù)器端編程的ASP.NET AJAX Control Toolkit含有大量的獨(dú)立AJAX控件和對(duì)ASP.NET原有服務(wù)器控件的AJAX功能擴(kuò)展,實(shí)現(xiàn)起來(lái)也非常簡(jiǎn)單。但是魚(yú)與熊掌不可兼得,服務(wù)器端編程相對(duì)于客戶端編程在執(zhí)行效率和可控性上有較大差距。</p><

18、;p>  在傳統(tǒng)的Web交互方式中,對(duì)于每次用戶的請(qǐng)求,服務(wù)器總是響應(yīng)一個(gè)新的Web頁(yè)面給瀏覽器。在這種情況下,即使頁(yè)面中只有小部分的改動(dòng),也會(huì)將整個(gè)頁(yè)面發(fā)送回來(lái),大大影響了交互的速度,使用戶在大部分時(shí)間面對(duì)一個(gè)空白的瀏覽器,等待新頁(yè)面的到來(lái)。雖然有許多技術(shù)試圖改變這種每次請(qǐng)求都刷新整個(gè)頁(yè)面的狀況,比如Frame,IFrame等,但是這些技術(shù)并不能完美的解決這個(gè)問(wèn)題。</p><p>  在AJAX模式下,

19、用戶第一次發(fā)送請(qǐng)求,服務(wù)器返回一個(gè)完整的Web頁(yè)面,如果只需要改變部分?jǐn)?shù)據(jù),并不將整個(gè)頁(yè)面重新載入,而是通過(guò)AJAX技術(shù)向服務(wù)器發(fā)送請(qǐng)求,通過(guò)CSS和XHTML將響應(yīng)的內(nèi)容表示出來(lái)。可以看出,AJAX技術(shù)大大降低了服務(wù)器和客戶端之間的數(shù)據(jù)流量,很大程度地提高了響應(yīng)速度。同時(shí),由于不是每次都發(fā)回整個(gè)頁(yè)面,也能大大減少出現(xiàn)瀏覽器空白界面的情況,界面友好度有很大的提高[2]。</p><p>  ASP.NET AJA

20、X 主要的設(shè)計(jì)目標(biāo)有兩點(diǎn):</p><p>  對(duì)現(xiàn)有的ASP.NET服務(wù)器端模型進(jìn)行擴(kuò)展,讓其可以生成實(shí)現(xiàn)富客戶端的JavaScript代碼。</p><p>  為ASP.NET 增加客戶端編程模型,讓純粹的客戶端編程變得更加簡(jiǎn)單。</p><p>  這樣,ASP.NET AJAX的特性就可以相應(yīng)的分為服務(wù)器端和客戶端兩個(gè)部分,前者包括ASP.NET 2.0

21、AJAX Extensions以及ASP.NET AJAX Control Toolkit,后者包括Microsoft AJAX Library。</p><p>  ASP.NET AJAX框架的客戶端部分,即Microsoft AJAX Library,是一個(gè)跨瀏覽器,跨平臺(tái)的Ajax客戶端解決方案。它包括類(lèi)似ASP.NET服務(wù)器端控件一樣良好封裝的,可以運(yùn)用于各種主流瀏覽器之上的各種客戶端組件,例如表示簡(jiǎn)單

22、界面元素的TextBox , 表示復(fù)雜綁定列表的ListView, 驗(yàn)證用戶輸入的Validator,為HTML元素提供某些附加行為的Behavior,以及功能更加強(qiáng)大的用戶身份認(rèn)證,用戶個(gè)性化組件等。開(kāi)發(fā)者完全可以以一種面向?qū)ο蟮姆绞捷p松的用JavaScript編寫(xiě)自定義的組件,然后使用JavaScript以編程方式或一種ASP.NET AJAX特定的,基于XML的聲明式腳本語(yǔ)言,借助于ASP.NET AJAX客戶端框架中的綁定概念將

23、這些組件方便而又高效的連接起來(lái),以構(gòu)成功能強(qiáng)大的,純粹的客戶端Ajax應(yīng)用程序。</p><p>  ASP.NET 2.0 AJAX Eetensions,即ASP.NET AJAX的服務(wù)器端控件,包括與開(kāi)發(fā)者社區(qū)共同創(chuàng)建的ASP.NET AJAX Control Toolkit,則是上述ASP.NET AJAX 框架的客戶端部分JavaScript組件在服務(wù)器端的封裝。這些服務(wù)器端組件為基于ASP.NET的應(yīng)

24、用程序提供了另一種Ajax的實(shí)現(xiàn)方式-采用一種和ASP.NET 完全一樣的服務(wù)器端控件開(kāi)發(fā)模型。作為對(duì)現(xiàn)有ASP.NET服務(wù)器端組件的擴(kuò)展,ASP.NET 2.0 AJAX Extensions提供的服務(wù)器端組件可以讓開(kāi)發(fā)者充分使用他們現(xiàn)有的知識(shí),無(wú)需書(shū)寫(xiě)一行JavaScript代碼,甚至不用了解Ajax的任何實(shí)現(xiàn)原理,只通過(guò)在Visual Studio中拖放控件即可開(kāi)發(fā)出帶有強(qiáng)大Ajax功能以及豐富用戶體驗(yàn)的富客戶端應(yīng)用程序。這個(gè)特性

25、也非常適合為現(xiàn)在的ASP.NET程序添加少量的Ajax功能[3]。</p><p>  2.2 VB.NET 開(kāi)發(fā)語(yǔ)言介紹</p><p>  VB. net是微軟最新平臺(tái)技術(shù),是.netframeworkSDK的一種語(yǔ)言。VB. net和VC#.net在功能上沒(méi)有區(qū)別。編譯以后生成的可執(zhí)行文件被稱為Assembly,即程序集。 VB. net的版本號(hào)是VisualBasic7.0,它的運(yùn)

26、行是建立在CLR和MSIL虛擬器上的。其實(shí),它的機(jī)制和Java差不多。 </p><p>  vb. net是Visual Basic. net的簡(jiǎn)稱。提到vb. net,就不能不先提一下vb(Visual Basic)。 </p><p>  Visual Basic是Windows環(huán)境下的一種簡(jiǎn)單、易學(xué)的編程語(yǔ)言,由于其開(kāi)發(fā)程序的快速、高效,深受程序員的喜愛(ài)。嚴(yán)格地來(lái)說(shuō),Visual

27、Basic只是半面向?qū)ο蟮恼Z(yǔ)言,其面向?qū)ο蟮哪芰俺绦虻膱?zhí)行效率往往不能一些程序員的需要,因此,大的項(xiàng)目很少使用Visual Basic來(lái)開(kāi)發(fā)。Visual Basic的最后一個(gè)版本是Visual Basic 6.0。 </p><p>  隨著Internet技術(shù)的成熟和廣泛應(yīng)用,Internet逐漸成為編程領(lǐng)域的中心,為適應(yīng)這種新局面的變化,2000年Microsoft公司提出“任何人從任何地方,在任何時(shí)間,

28、使用任何設(shè)備存取互聯(lián)網(wǎng)上的服務(wù)”的戰(zhàn)略,并在Visual Basic 6.0之后,推出了全新的“.NEt構(gòu)架”,在其第一個(gè)版本-Visual Studio. NET 7.0中,集成了Visual Basic 7.0、Visual C++ 7.0及C#,其中的Visual Basic 7.0(vb 7.0),即是vb. net的第一個(gè)版本。 </p><p>  Visual Basic.NET是新一代的Visua

29、l Basic,在微軟公司投入很大力量開(kāi)發(fā)網(wǎng)絡(luò)新領(lǐng)域.NET平臺(tái)的同時(shí),也將VB運(yùn)用到了這一平臺(tái)上,同時(shí)大幅度提高VB的功能??梢哉f(shuō)Visual Basic.NET在功能上不輸給VC的升級(jí)版本語(yǔ)言C#,而且實(shí)現(xiàn)了真正的面向?qū)ο蠊δ?,同時(shí)微軟公司增強(qiáng)了該語(yǔ)言的網(wǎng)絡(luò)開(kāi)發(fā)功能和可移植性,Visual Basic.NET完全有實(shí)力趕上并超過(guò)java,這可以說(shuō)是VB程序員的福音[4]。</p><p>  2.3 SQL

30、Server 數(shù)據(jù)庫(kù)介紹</p><p>  SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同開(kāi)發(fā)的,于1988 年推出了第一個(gè)OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開(kāi)發(fā)上就分道揚(yáng)鑣了,Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上

31、,專注于開(kāi)發(fā)推廣SQL Server 的Windows NT 版本。Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。</p><p>  SQL Server 采用SQL(Structured Query Language)語(yǔ)言,即機(jī)構(gòu)化查詢語(yǔ)言,SQL語(yǔ)言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通。按照ANSI的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。SQL語(yǔ)句可以用來(lái)執(zhí)行

32、各種各樣的操作,例如更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)等。絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)都采用了SQL語(yǔ)言標(biāo)準(zhǔn)。雖然很多數(shù)據(jù)庫(kù)都對(duì)SQL語(yǔ)句進(jìn)行了再開(kāi)發(fā)和擴(kuò)展,但是包括Select, Insert, Update, Delete, Create,以及Drop在內(nèi)的標(biāo)準(zhǔn)的SQL命令仍然可以被用來(lái)完成幾乎所有的數(shù)據(jù)庫(kù)操作。</p><p>  本次設(shè)計(jì)使用SQL Server 2005作為后臺(tái)數(shù)據(jù)庫(kù),在這之前

33、有SQL Server 2000版本,SQL Server2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫(kù)管理系統(tǒng),該版本繼承了SQL Server 7.0 版本的優(yōu)點(diǎn),同時(shí)又比它增加了許多更先進(jìn)的功能。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行Microsoft Windows 98 的膝上型電腦到運(yùn)行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺(tái)使用。<

34、/p><p>  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)用程序。 </p><p>  SQL Server 2005 數(shù)據(jù)引擎是本企業(yè)數(shù)據(jù)管理解決方案的核心。此外 SQL S

35、erver 2005 結(jié)合了分析、報(bào)表、集成和通知功能。這使您的企業(yè)可以構(gòu)建和部署經(jīng)濟(jì)有效的 BI 解決方案,幫助您的團(tuán)隊(duì)通過(guò)記分卡、Dashboard、Web services 和移動(dòng)設(shè)備將數(shù)據(jù)應(yīng)用推向業(yè)務(wù)的各個(gè)領(lǐng)域。 </p><p>  與 Microsoft Visual Studio、Microsoft Office System 以及新的開(kāi)發(fā)工具包(包括 Business Intelligence D

36、evelopment Studio)的緊密集成使 SQL Server 2005 與眾不同。無(wú)論您是開(kāi)發(fā)人員、數(shù)據(jù)庫(kù)管理員、信息工作者還是決策者,SQL Server 2005 都可以為您提供創(chuàng)新的解決方案,幫助您從數(shù)據(jù)中更多地獲益。</p><p>  3 系統(tǒng)功能概述及系統(tǒng)模型的建立</p><p>  3.1 系統(tǒng)功能概述</p><p>  通過(guò)對(duì)客戶需求的

37、深入理解,確定了本系統(tǒng)將采用B/S模式進(jìn)行設(shè)計(jì),即所謂瘦客戶端方式,運(yùn)用瀏覽器進(jìn)行客戶端的基本操作,所以其服務(wù)器端功能必須足夠強(qiáng)大,下面從客戶端以及服務(wù)器端給出初步的功能要求:</p><p><b> ?。?) 客戶端功能</b></p><p>  * 未注冊(cè)用戶可以通過(guò)注冊(cè)成為新用戶</p><p>  * 已注冊(cè)用戶可以登錄系統(tǒng)<

38、/p><p>  * 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、忙碌等</p><p>  * 登錄系統(tǒng)后可以查看好友在線狀態(tài)</p><p>  * 登錄系統(tǒng)后可以查看好友發(fā)送的信息以及服務(wù)器信息等</p><p>  * 登錄系統(tǒng)后可以給好友發(fā)送信息</p><p>  * 登錄系統(tǒng)后可以對(duì)好友進(jìn)行管理:添加、刪除等&l

39、t;/p><p><b>  (2)服務(wù)器端功能</b></p><p>  * 服務(wù)器端可以進(jìn)行開(kāi)啟、暫停、關(guān)閉服務(wù)等</p><p>  * 服務(wù)器端可以接受客戶端的信息并進(jìn)行處理</p><p>  * 服務(wù)器端可以將處理后的信息發(fā)送給目標(biāo)客戶端</p><p>  3.2 系統(tǒng)模型的建立<

40、;/p><p><b>  3.2.1 用例圖</b></p><p> ?。?)用戶注冊(cè)模塊用例圖</p><p>  圖3-1 用戶注冊(cè)模塊用例圖</p><p><b>  用例描述:</b></p><p> ?。?)用戶登錄模塊用例圖</p><p&

41、gt;  圖3-2 用戶登錄模塊用例圖</p><p><b>  用例描述:</b></p><p>  (3)好友管理模塊用例圖</p><p>  圖3-3 添加好友模塊用例圖 圖3-4 刪除好友模塊用例圖</p><p><b>  用例描述</b></p><

42、;p>  (4)發(fā)送消息模塊用例圖</p><p>  圖3-5 發(fā)送消息模塊用例圖</p><p><b>  用例描述:</b></p><p> ?。?)保存信息模塊用例圖</p><p>  圖3-6 保存消息模塊用例圖</p><p><b>  用例描述:</b&

43、gt;</p><p><b>  3.2.2 序列圖</b></p><p><b>  用戶注冊(cè)模塊序列圖</b></p><p>  圖3-7 用戶注冊(cè)模塊序列圖</p><p> ?。?)用戶登錄模塊序列圖</p><p>  圖3-8 用戶登錄模塊序列圖</p

44、><p><b>  添加好友模塊序列圖</b></p><p>  圖3-9 添加好友模塊序列圖</p><p>  (4)發(fā)送消息模塊序列圖</p><p>  圖3-10 發(fā)送消息模塊序列圖</p><p><b>  3.2.3 類(lèi)圖</b></p><

45、;p>  類(lèi)圖(Class diagram)由許多(靜態(tài))說(shuō)明性的模型元素(例如類(lèi)、包和它們之間的關(guān)系,這些元素和它們的內(nèi)容互相連接)組成。類(lèi)圖可以組織在(并且屬于)包中,僅顯示特定包中的相關(guān)內(nèi)容。類(lèi)圖(Class diagram)是最常用的UML圖,顯示出類(lèi)、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)。類(lèi)圖(Class diagram)最基本的元素是類(lèi)或者接口。</p><p>  類(lèi)一

46、般包含類(lèi)名,屬性,方法三大部分,類(lèi)名書(shū)寫(xiě)規(guī)范:正體字說(shuō)明類(lèi)是可被實(shí)例化的,斜體字說(shuō)明類(lèi)為抽象類(lèi)。 </p><p>  屬性和方法書(shū)寫(xiě)規(guī)范:修飾符 [描述信息] 屬性、方法名稱 [參數(shù)] [:返回類(lèi)型|類(lèi)型] </p><p>  屬性和方法之前可附加的可見(jiàn)性修飾符: 加號(hào)(+)表示public;減號(hào)(-)表示private;#號(hào)表示protected;省略這些修飾符表示具有package

47、(包)級(jí)別的可見(jiàn)性。 </p><p>  類(lèi)之間可以建立五種關(guān)系:關(guān)聯(lián)、依賴性、累積、實(shí)現(xiàn)關(guān)系和泛化。</p><p>  關(guān)聯(lián)是類(lèi)之間的詞法連接,在類(lèi)圖中用單線表示。</p><p>  依賴性關(guān)系在類(lèi)的操作中需要參數(shù)或返回值的類(lèi)中也需要。依賴性用虛線箭頭表示。</p><p>  累積關(guān)系是強(qiáng)關(guān)聯(lián)。累積關(guān)系是整體與個(gè)體間的關(guān)系。累積關(guān)系

48、在總體類(lèi)旁邊畫(huà)一個(gè)菱形。</p><p>  實(shí)現(xiàn)關(guān)系顯示類(lèi)與接口、包與接口、組件與接口和用例與用例實(shí)現(xiàn)之間的關(guān)系。實(shí)現(xiàn)關(guān)系將公共接口(接口類(lèi)或用例)與接口的詳細(xì)實(shí)現(xiàn)(類(lèi)、包或用例實(shí)現(xiàn))相連接。換句話說(shuō),實(shí)現(xiàn)關(guān)系把接口與實(shí)現(xiàn)分開(kāi)。圖3-28展示了實(shí)現(xiàn)關(guān)系的表示方法。</p><p>  泛化關(guān)系顯示兩個(gè)模型元素(如角色、用例、類(lèi)或包)之間的繼承關(guān)系。大多數(shù)面向?qū)ο笳Z(yǔ)言直接支持繼承的概念。繼

49、承就是讓一個(gè)類(lèi)繼承另一個(gè)模型元素的所有屬性、操作、關(guān)系和詞法。在UML中,繼承關(guān)系稱為泛化,顯示為子類(lèi)指向父類(lèi)的箭頭, </p><p>  由于本系統(tǒng)是一個(gè)即時(shí)通訊系統(tǒng),其中系統(tǒng)中的類(lèi)比較少,各個(gè)類(lèi)之間的關(guān)系也比較簡(jiǎn)單,主要有這么幾個(gè)類(lèi),具體布局如下圖所示:</p><p>  圖3-11 整個(gè)系統(tǒng)類(lèi)圖</p><p><b>  4 數(shù)據(jù)庫(kù)設(shè)計(jì)<

50、/b></p><p>  數(shù)據(jù)庫(kù)技術(shù)是現(xiàn)代系統(tǒng)設(shè)計(jì)中最有效的數(shù)據(jù)管理手段。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),有效存儲(chǔ)數(shù)據(jù),滿足用戶信息要求和處理要求。數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞直接對(duì)應(yīng)用系統(tǒng)的效率及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致性。</p><p>  數(shù)據(jù)庫(kù)設(shè)計(jì)是指針對(duì)一個(gè)給定的應(yīng)用

51、環(huán)境,構(gòu)造(設(shè)計(jì))優(yōu)化的數(shù)據(jù)庫(kù)邏輯模型和物理模型結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效的存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求[5]。</p><p>  設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)時(shí)應(yīng)該充分了解用戶各個(gè)方面的需求,包括現(xiàn)有的及將來(lái)可能增加的需求。數(shù)據(jù)庫(kù)設(shè)計(jì)一般包括如下幾個(gè)步驟。</p><p><b>  數(shù)據(jù)庫(kù)需求分析。</b><

52、;/p><p>  數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)。</p><p>  數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)。</p><p>  4.1數(shù)據(jù)庫(kù)需求分析</p><p>  本系統(tǒng)主要設(shè)計(jì)兩個(gè)方面,客戶端和服務(wù)器端,所以數(shù)據(jù)庫(kù)中要充分考慮這兩個(gè)方面的因素。</p><p>  對(duì)客戶端來(lái)說(shuō),他們所關(guān)心的就是如何可以利用該系統(tǒng)和自己的好友進(jìn)行交流,同時(shí)

53、要能夠?qū)糜堰M(jìn)行管理,通過(guò)總結(jié)可以得出如下的需求信息:</p><p>  * 未注冊(cè)用戶可以通過(guò)注冊(cè)成為新用戶</p><p>  * 已注冊(cè)用戶可以登錄系統(tǒng)</p><p>  * 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、離線等</p><p>  * 登錄系統(tǒng)后可以查看好友在線狀態(tài)</p><p>  * 登錄系

54、統(tǒng)后可以查看好友發(fā)送的信息等</p><p>  * 登錄系統(tǒng)后可以給好友發(fā)送信息</p><p>  * 登錄系統(tǒng)后可以對(duì)好友進(jìn)行管理:添加、刪除等</p><p>  * 登錄系統(tǒng)后可以給好友發(fā)送文件以及接收文件等(未實(shí)現(xiàn))</p><p>  對(duì)于服務(wù)器端來(lái)說(shuō),他們關(guān)心的就是如何更好的為客戶提供服務(wù),使他們能夠更好的和自己的好友進(jìn)行交流

55、,他們主要完成后臺(tái)的工作,通過(guò)分析可以得出,服務(wù)器端的需求信息如下:</p><p>  * 服務(wù)器端可以進(jìn)行開(kāi)啟、暫停、關(guān)閉服務(wù)等</p><p>  * 服務(wù)器端可以接受客戶端的信息并進(jìn)行處理</p><p>  * 服務(wù)器端可以將處理后的信息發(fā)送給目標(biāo)客戶端</p><p>  經(jīng)過(guò)上述系統(tǒng)功能的分析和需求總結(jié),考慮到之后功能的擴(kuò)展,設(shè)

56、計(jì)如下的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)。其中uid為自動(dòng)編號(hào)的標(biāo)識(shí)。</p><p>  會(huì)員基本信息,包括數(shù)據(jù)項(xiàng):uid,,昵稱,帳號(hào),密碼,目前狀態(tài),最后登錄時(shí)間。</p><p>  好友列表,包括數(shù)據(jù)項(xiàng):uid,本人帳號(hào),好友帳號(hào)。</p><p>  對(duì)話信息,包括數(shù)據(jù)項(xiàng):uid,發(fā)送者帳號(hào),接受者帳號(hào),內(nèi)容等。</p><p>  對(duì)話邀請(qǐng),包

57、括數(shù)據(jù)項(xiàng):uid,邀請(qǐng)者帳號(hào),接受邀請(qǐng)者帳號(hào)等。</p><p>  聊天室,包括數(shù)據(jù)項(xiàng):編號(hào),名稱,密碼,創(chuàng)建者等。</p><p>  聊天室用戶,包括數(shù)據(jù)項(xiàng):編號(hào),用戶帳號(hào),聊天室簡(jiǎn)介等。</p><p>  聊天室聊天記錄,包括數(shù)據(jù)項(xiàng):編號(hào),聊天室名稱,用戶帳號(hào),聊天內(nèi)容,記錄該聊天內(nèi)容的時(shí)間等。</p><p>  4.2數(shù)據(jù)庫(kù)概念

58、結(jié)構(gòu)設(shè)計(jì)</p><p>  得到上面的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及他們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。這些實(shí)體包含各種具體信息,通過(guò)相互之間的作用形成數(shù)據(jù)的流動(dòng)。</p><p>  本實(shí)例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:會(huì)員基本信息實(shí)體、好友列表實(shí)體、對(duì)話信息實(shí)體、對(duì)話邀請(qǐng)實(shí)體。</p><p>  實(shí)體之間關(guān)系的E

59、-R圖如下圖所示:</p><p>  圖4-1 實(shí)體之間的E-R圖</p><p>  (1)用戶信息表(userinfo)的E-R圖如下:</p><p>  圖4-2 用戶信息表E-R圖</p><p> ?。?)好友信息列表(friendinfo)的E-R圖如下:</p><p>  圖4-3 好友信息列表E-

60、R圖</p><p> ?。?)對(duì)話信息(message)的E-R圖如下:</p><p>  圖4-4 對(duì)話信息E-R圖</p><p> ?。?)對(duì)話邀請(qǐng)(calling)的E-R圖:</p><p>  圖4-5 對(duì)話邀請(qǐng)E-R圖</p><p> ?。?)聊天室(chatroom)的E-R圖</p>

61、<p>  圖4-6 聊天室E-R圖</p><p>  聊天室用戶(chatroomuser)的E-R圖</p><p>  圖4-7 聊天室用戶E-R圖</p><p>  聊天室聊天記錄(userchatrecord)的E-R圖</p><p>  圖4-8 聊天室聊天記錄E-R圖</p><p>

62、  4.3數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>  數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)完成后,現(xiàn)在可以將上面的數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)轉(zhuǎn)換為某種數(shù)據(jù)庫(kù)系統(tǒng)支持的實(shí)際數(shù)據(jù)模型,也就是數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。根據(jù)數(shù)據(jù)量的大小,系統(tǒng)可以使用不同的數(shù)據(jù)庫(kù),本次系統(tǒng)設(shè)計(jì)主要使用SQL Server數(shù)據(jù)庫(kù)。</p><p>  本次系統(tǒng)設(shè)計(jì)主要使用SQL Server數(shù)據(jù)庫(kù)。</p><p>  表4-

63、1 UserInfo(會(huì)員信息數(shù)據(jù))</p><p>  表4-2 FriendInfo(好友列表)</p><p>  表4-3 Message(對(duì)話信息表)</p><p>  表4-4 Calling(對(duì)話邀請(qǐng)表)</p><p>  表4-5 Chatroom(聊天室信息表)</p><p>  表4-6 Ch

64、atroomuser(聊天室用戶表)</p><p>  表4-7 Userchatrecord(聊天室聊天記錄表)</p><p><b>  5 功能設(shè)計(jì)</b></p><p>  5.1 共用模塊的設(shè)計(jì)</p><p>  5.1.1 母版頁(yè)的設(shè)計(jì)與引用</p><p>  整體系統(tǒng)的每一

65、個(gè)界面都無(wú)一例外的用到了母版頁(yè),母板頁(yè)的引用能很好的解決各個(gè)界面之間的布局一致性問(wèn)題,使得界面設(shè)計(jì)簡(jiǎn)潔,優(yōu)美,母版頁(yè)的擴(kuò)展名是.master??梢园涯赴骓?yè)理解為多個(gè)內(nèi)容頁(yè)共同的部分。所以可以先建一個(gè)母版頁(yè),把共同的東西都建好,通過(guò)添加ContentPlaceHolder控件預(yù)留可變化的區(qū)域。然后在各個(gè)內(nèi)容頁(yè)里使用母版頁(yè)(通過(guò)在聲明里引用母版頁(yè)),原來(lái)的ContentPlaceHolder控件會(huì)被Content控件替換,然后你可以在Con

66、tent控件里添加每個(gè)內(nèi)容頁(yè)個(gè)性化的東西。這樣可以減少很多重復(fù)代碼的勞動(dòng),快速的開(kāi)發(fā),也便于以后的維護(hù)。</p><p>  本次系統(tǒng)開(kāi)發(fā)就用到了母板頁(yè)設(shè)置了頁(yè)面頭部和尾部,這樣在其他的內(nèi)容頁(yè)中便可以直接引用了,其頁(yè)面效果如下:</p><p>  在其他內(nèi)容頁(yè)中引用時(shí)只要給出MasterPageFile就可以了。</p><p>  <%@ Page Tit

67、le="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %></p

68、><p>  5.1.2 公共類(lèi)的設(shè)計(jì)與引用</p><p>  Visual Basic。NET不像其以前的版本,在創(chuàng)建類(lèi)時(shí),每個(gè)類(lèi)都有自己的文件,從而產(chǎn)生一個(gè)非常龐大的面向?qū)ο蠊こ?,Visual Basic.NET 允許把多個(gè)類(lèi)放在一個(gè)源文件里。這樣可以減少工程文件數(shù)量,使工程更易于維護(hù)和管理[6]。</p><p>  本次系統(tǒng)設(shè)計(jì)中對(duì)許多公共部分進(jìn)行了集成,將數(shù)

69、據(jù)庫(kù)連接與操作語(yǔ)句都放在了類(lèi)dataBaseClass中;將與本系統(tǒng)有關(guān)的數(shù)據(jù)庫(kù)操作語(yǔ)句放在了IMClass(一對(duì)一聊天功能)和ChatRoom1(群聊功能)兩個(gè)類(lèi)中,這樣的話在設(shè)計(jì)前臺(tái)時(shí)可以直接調(diào)用位于這些類(lèi)中的方法,很大程度上避免了程序的冗余,簡(jiǎn)化了設(shè)計(jì)流程,當(dāng)然以后如果做系統(tǒng)移植,這些類(lèi)可以直接拷貝過(guò)去,不用修改或經(jīng)過(guò)稍許修改就能使用。</p><p>  DataBaseClass類(lèi)</p>

70、<p>  該類(lèi)中包含了數(shù)據(jù)庫(kù)訪問(wèn)的幾個(gè)重要方法,這些方法都是以過(guò)程的方式實(shí)現(xiàn)的,自定義過(guò)程主要有兩種:一種是以“Sub”保留字開(kāi)始的為子過(guò)程,完成一定的操作功能,子過(guò)程名無(wú)返回值;另一種以“Function”保留字開(kāi)始的為函數(shù)過(guò)程,用戶自定義的函數(shù),函數(shù)名有返回值[7]?,F(xiàn)在列舉如下:</p><p><b>  MClass類(lèi)</b></p><p>

71、  IMClass類(lèi)中包含了一對(duì)一聊天各個(gè)模塊所涉及的訪問(wèn)以及修改數(shù)據(jù)庫(kù)的各種方法,包括添加,修改,刪除好友信息,獲取好友列表,獲取聊天內(nèi)容,獲取聊天記錄等,其中的幾個(gè)重要的方法列舉如下:</p><p>  ChatRoom1類(lèi)</p><p>  ChatRoom1類(lèi)中主要包含了群聊功能中用到的各個(gè)方法,現(xiàn)在列舉如下:</p><p>  5.2 一對(duì)一聊天設(shè)計(jì)

72、</p><p>  5.2.1 界面規(guī)劃</p><p>  一對(duì)一聊天在開(kāi)發(fā)階段的界面主要包括四個(gè)大的部分:用戶狀態(tài)及好友列表模塊、對(duì)話框模塊、支持拖動(dòng)的HiddenField模塊、保證刷新的各個(gè)updatepanel和timer模塊。</p><p>  現(xiàn)在給出整體界面布置,如下圖所示:</p><p>  在界面的最右邊是用戶狀態(tài)及

73、好友列表模塊,中間是對(duì)話框模塊,左邊是用于控制拖動(dòng)的HiddenField模塊,左上角上是timer控件,用于控制整個(gè)界面的刷新。使用一個(gè)Timer控件對(duì)多個(gè)UpdatePanel進(jìn)行定時(shí)刷新,需要將timer控件設(shè)置為相應(yīng)的updatepanel控件的觸發(fā)器。這樣,處于外部的timer控件,就可以同時(shí)對(duì)幾個(gè)updatepanel進(jìn)行異步刷新了[8]。</p><p>  在整個(gè)界面中共用到了四個(gè)updatepa

74、nel控件,其功能分別如下:</p><p> ?。?)Up_timer:位于界面的左上角,內(nèi)含一個(gè)timer控件。</p><p>  (2)Updatepanel1:內(nèi)含了用戶狀態(tài)及好友列表模塊,用以呈現(xiàn)出好友列表及當(dāng)前用戶狀態(tài),最上面的部分支持拖拽。</p><p> ?。?)Up_talking:內(nèi)含對(duì)話框,默認(rèn)的狀態(tài)是隱藏,在兩種狀況下會(huì)顯示:用戶單擊了好

75、友名、好友有信息發(fā)送給自己。</p><p> ?。?)up_talking_message:主要是為了刷新聊天信息,其中放置了一個(gè)timer控件。</p><p>  5.2.2 用戶狀態(tài)及好友列表模塊設(shè)計(jì)</p><p>  這一模塊的設(shè)計(jì)主要包括四個(gè)方面:首先是用戶狀態(tài)的顯示以及選擇,其次是好友列表中好友的顯示,再次是界面的關(guān)閉與打開(kāi),最后是整個(gè)界面的拖拽。下

76、面分別對(duì)這四個(gè)方面的設(shè)計(jì)進(jìn)行概述</p><p>  用戶狀態(tài)的顯示以及選擇</p><p>  在系統(tǒng)運(yùn)行后,用戶登錄后,在狀態(tài)欄中用戶可以自由設(shè)置自己的狀態(tài),這當(dāng)中主要用到了IMClass中的updatestatus函數(shù):IMClass.updatestatus(session(“username”),status),其中的session(”username”)是用戶登錄后記錄下的用戶

77、帳號(hào)。</p><p><b>  好友列表的顯示</b></p><p>  好友列表的顯示,首先是在整個(gè)界面第一次加載時(shí)確定界面位置,然后調(diào)用showfriends()函數(shù)來(lái)顯示好友。該函數(shù)首先是清空列表,然后通過(guò)調(diào)用IMClass類(lèi)中的getfriendslist方法來(lái)獲取自己的好友,然后將獲取的好友數(shù)組以linkbutton的方式呈現(xiàn),LinkButton控件

78、類(lèi)似超鏈接的文字借口,在功能上與Button控件類(lèi)似,但在呈現(xiàn)樣式上不同,LinkButton控件以超級(jí)鏈接的形式顯示,此控件屬于服務(wù)器端標(biāo)準(zhǔn)控件[9]。呈現(xiàn)時(shí)再通過(guò)調(diào)用getusernickname來(lái)顯示好友的昵稱(并不顯示好友的帳號(hào))。</p><p>  由于好友列表以linkbutton呈現(xiàn),在單擊好友名稱時(shí),會(huì)打開(kāi)聊天對(duì)話框:showchatwindows(linkbutton.tooltip)函數(shù)調(diào)用

79、,該函數(shù)調(diào)用中首先是將對(duì)話框呈現(xiàn)出來(lái),然后刷新其中的聊天信息:up_talking.update()函數(shù)調(diào)用。</p><p><b>  界面的關(guān)閉與打開(kāi)</b></p><p>  界面的打開(kāi)與關(guān)閉比較簡(jiǎn)單,通過(guò)設(shè)置pnl_msnform(主面板)的visible屬性為true或false便可以了,當(dāng)然這些設(shè)置要放入關(guān)閉按鈕和顯示按鈕的click方法中。</

80、p><p>  整個(gè)界面的拖拽[10]</p><p>  界面的拖拽是本次設(shè)計(jì)中遇到的一個(gè)很棘手的問(wèn)題,在以前的windows窗體管理系統(tǒng)中不涉及前臺(tái)與后臺(tái)關(guān)于控件位置的變更問(wèn)題,然而在有刷新的交互中,雖然我們可以用dragpanelextender來(lái)設(shè)計(jì)面板的拖拽功能,而且用戶也可以自由的拖拽到任意位置,然而,這些位置的變更只是通過(guò)前端javascript來(lái)改變的,而這個(gè)改變,本質(zhì)上后端A

81、SP.NET代碼并不知道。</p><p>  這樣的話,在updatepanel每次刷新后,面板又會(huì)回到原來(lái)的位置,所以要想保持拖動(dòng)位置不變,就必須在postback過(guò)程當(dāng)中,記錄用戶究竟把面板拖動(dòng)到了什么位置,在這里HiddenField就起到了作用,在每次拖動(dòng)中給鼠標(biāo)的mouseleave事件觸發(fā)一個(gè)函數(shù),這段函數(shù)用javascript代碼實(shí)現(xiàn): </p><p>  funct

82、ion register() {</p><p>  document.getElementById('<%=HF_MsnForm_x.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.left;</p><p>  docu

83、ment.getElementById('<%=HF_MsnForm_y.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.top;</p><p><b>  }</b></p><p>  這樣每次當(dāng)

84、拖動(dòng)面板鼠標(biāo)離開(kāi)后,都會(huì)記錄下面板所在的位置,下次加載時(shí)自動(dòng)更新位置。</p><p>  5.2.3 對(duì)話框模塊設(shè)計(jì)</p><p>  前面已經(jīng)提到,當(dāng)單擊好友名稱后,會(huì)通過(guò)showchatingwindows調(diào)出對(duì)話框,將其放到指定的位置,并通過(guò)up_talking.update()來(lái)強(qiáng)制刷新聊天信息顯示框,顯示聊天信息,如下圖所示:</p><p>  可以

85、在下面輸入要發(fā)送的內(nèi)容,完成之后點(diǎn)擊發(fā)送即可,單擊聊天記錄會(huì)給出你和聊天者最近的聊天信息。看似簡(jiǎn)單,其實(shí)這里設(shè)計(jì)了幾個(gè)該系統(tǒng)的關(guān)鍵問(wèn)題,當(dāng)?shù)谝淮吸c(diǎn)擊發(fā)送按鈕后,會(huì)執(zhí)行以下幾個(gè)方法,首先直接獲取聊天對(duì)象的帳號(hào),這個(gè)比較簡(jiǎn)單,然后判斷是否是第一次發(fā)送信息,如果是則調(diào)用IMClass.Sendchatingcalling(session(“username”),talkingto),如果不是第一次發(fā)送信息則調(diào)用IMClass.SendTalk

86、ingmsg(session(“username”),talkingto,txb_talking_sendmsg.text),然后調(diào)用showtalkingmsg(session(“username”),talkingto)在自己的對(duì)話框上顯示聊天信息。這里區(qū)分是否是第一次發(fā)送信息的目的是為了提醒好友接受信息,如果是第一次發(fā)送信息的話,則首先給出的是一個(gè)對(duì)話邀請(qǐng),而自己的好友則可以通過(guò)IMClass.checkchatingcallin

87、g()來(lái)檢查是否有發(fā)送給自己的聊天信息,如果有的話則調(diào)用showchatingwindows()顯示出來(lái)。</p><p>  5.2.4 支持拖動(dòng)的HiddenField模塊設(shè)計(jì)</p><p>  對(duì)話框以及用戶好友列表框的拖動(dòng)主要是靠hiddenfield隱藏字段來(lái)實(shí)現(xiàn)的,在界面設(shè)計(jì)階段我們可以設(shè)置如下圖所示的該類(lèi)控件:</p><p>  對(duì)話框以及好友列表

88、框都是放在updatepanel1中的,updatepanel1的load事件中有如上圖的記錄:</p><p>  這樣每次updatepanel1刷新時(shí),都會(huì)根據(jù)hiddenfield的值來(lái)確定對(duì)話框和好友列表框的位置,而在每個(gè)框體上設(shè)置有支持拖拽的label控件,將panel的dragpanelextender的draghandle設(shè)置為這些label,并且為label添加onmouseleave=”reg

89、ister()”或”registerposition()”事件,這樣的話每次鼠標(biāo)拖動(dòng)對(duì)話框或好友列表框時(shí)便可以自動(dòng)記錄框體位置了,我們也就不需要擔(dān)心前端拖動(dòng)后的位置后臺(tái)ASP.NET代碼不知道的問(wèn)題了。相應(yīng)的事件如下:</p><p>  <script language ="javascript" type ="text/javascript" ></p

90、><p>  function register() {</p><p>  document.getElementById('<%=HF_MsnForm_x.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.left;</

91、p><p>  document.getElementById('<%=HF_MsnForm_y.ClientID%>').value = document.getElementById('<%=Pnl_MsnForm.ClientID%>').style.top;</p><p><b>  }</b></p

92、><p>  function registerPanelTalking() {</p><p>  document.getElementById('<%=HF_Panel_Talking_x.ClientID%>').value = document.getElementById('<%=Panel_Talking.ClientID%>

93、9;).style.left;</p><p>  document.getElementById('<%=HF_Panel_Talking_y.ClientID%>').value = document.getElementById('<%=Panel_Talking.ClientID%>').style.top;</p><p>

94、<b>  }</b></p><p><b>  </script></b></p><p>  注意把該段代碼放ContentPlaceHolderID="HeadContent"段中即可。</p><p>  5.2.5 保證刷新的各個(gè)updatepanel和timer模塊設(shè)計(jì)<

95、/p><p>  在整個(gè)界面中共用到了四個(gè)updatepanel控件,其功能分別如下:</p><p> ?。?)Up_timer:位于界面的左上角,內(nèi)含一個(gè)timer控件。</p><p> ?。?)Updatepanel1:內(nèi)含了用戶狀態(tài)及好友列表模塊,用以呈現(xiàn)出好友列表及當(dāng)前用戶狀態(tài),最上面的部分支持拖拽。</p><p>  (3)Up_

96、talking:內(nèi)含對(duì)話框,默認(rèn)的狀態(tài)是隱藏,在兩種狀況下會(huì)顯示:用戶單擊了好友名、好友有信息發(fā)送給自己。</p><p> ?。?)up_talking_message:主要是為了刷新聊天信息,其中放置了一個(gè)timer控件。</p><p>  其中第一個(gè)up_timer中放置了一個(gè)timer控件,設(shè)置其interval為3000,然后編寫(xiě)其tick事件:一方面每隔30定時(shí)刷新updat

97、epanel1,另一方面通過(guò)IMClass.checkchatingcalling(session(”username”))來(lái)檢查是否有對(duì)話邀請(qǐng),如果有則強(qiáng)制刷新對(duì)話框。</p><p>  Updatepanel1主要由up_timer觸發(fā)。</p><p>  Up_talking中又放置了了一個(gè)updatepanel(up_talking_message),其中放置了timer2,這

98、樣當(dāng)對(duì)方窗口中的信息更新時(shí),不會(huì)影響到下面的信息輸入窗口。</p><p>  5.3 聊天室(群聊)設(shè)計(jì)</p><p><b>  5.3.1界面規(guī)劃</b></p><p>  聊天室功能借鑒了一對(duì)一聊天,一對(duì)一聊天的許多函數(shù)和方法稍加修改便可以用在聊天室中,聊天室的主要設(shè)計(jì)界面如下:</p><p>  聊天室主

99、要分成三個(gè)大的模塊:最左邊的用戶已經(jīng)加入的聊天室模塊,中間是聊天室的聊天模塊,最右邊是相應(yīng)聊天室的聊天用戶列表,下面將從這幾個(gè)模塊給出具體設(shè)計(jì)過(guò)程。</p><p>  5.3.2 加入的聊天室模塊設(shè)計(jì)</p><p>  和一對(duì)一聊天中的好友列表加載類(lèi)似,這個(gè)模塊中主要是在頁(yè)面刷新時(shí)自動(dòng)加載用戶已經(jīng)加入的聊天室列表,調(diào)用函數(shù):chatroom1.getchatroomlist(……),p

100、anel是放在一個(gè)updatepanel(up_chatroomlist)中的,up_chatroomlist的updatemodel屬性設(shè)置為conditional,這樣可以通過(guò)左上角的timer1控件定時(shí)刷新聊天室列表。</p><p>  下面的創(chuàng)建按鈕與查看按鈕可以幫助用戶創(chuàng)建新的聊天室并加入新的聊天室,這兩部分分別在chatroomcreat.aspx和chatroomcheck.aspx界面中實(shí)現(xiàn)。&

101、lt;/p><p>  5.3.3 聊天室聊天模塊設(shè)計(jì)</p><p>  這一部分和一對(duì)一聊天的對(duì)話框模塊比較類(lèi)似,也是通過(guò)將panel控件放置在updatepanel(up_chatmessage)中的,其中放置了一個(gè)timer控件,這樣每隔一段時(shí)間便可以自動(dòng)刷新聊天信息。在下面的textbox框中用戶可以輸入信息,點(diǎn)擊發(fā)送按鈕便可以發(fā)送信息。</p><p>  

102、5.3.4 聊天室用戶列表模塊設(shè)計(jì)</p><p>  這一部分也用到了updatepanel(up_userlist),并且updatemodel屬性為conditional,同時(shí)在聊天室更新時(shí)自動(dòng)觸發(fā)up_userlist的load事件,這樣可以保證信息的實(shí)時(shí)性。</p><p><b>  6 運(yùn)行與測(cè)試</b></p><p>  軟件

103、測(cè)試就是利用測(cè)試工具按照測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫(xiě)不同的測(cè)試工具,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問(wèn)題進(jìn)行分析和評(píng)估。軟件測(cè)試的目的是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程,好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案,成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試[11]。所以要本著以下原則</p><p> ?。?)軟件開(kāi)發(fā)人員即程序員應(yīng)當(dāng)避免測(cè)試自己的程序 不

104、管是程序員還是開(kāi)發(fā)小組都應(yīng)當(dāng)避免測(cè)試自己的程序或者本組開(kāi)發(fā)的功能模塊。</p><p>  (2)應(yīng)盡早地和不斷地進(jìn)行軟件測(cè)試。</p><p> ?。?)對(duì)測(cè)試用例要有正確的態(tài)度:第一,測(cè)試用例應(yīng)當(dāng)由測(cè)試輸入數(shù)據(jù)和預(yù)期輸出結(jié)果這兩部分組成;第二,在設(shè)計(jì)測(cè)試用例時(shí),不僅要考慮合理的輸入條件,更要注意不合理的輸入條件。</p><p> ?。?)妥善保存測(cè)試用例、測(cè)試

105、計(jì)劃、測(cè)試報(bào)告和最終分析報(bào)告,以備回歸測(cè)試及維護(hù)之用。</p><p>  一般的軟件測(cè)試包括單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試幾個(gè)階段,</p><p>  開(kāi)始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。 接著是集成測(cè)試,集成測(cè)試把已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。 在接著是確認(rèn)測(cè)試,確認(rèn)測(cè)

106、試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說(shuō)明中確定了的各種需求,以及軟件配置是否完全、正確。 最后是系統(tǒng)測(cè)試,系統(tǒng)測(cè)試把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。由于條件限制及自身水平的不足,現(xiàn)在僅進(jìn)行單元測(cè)試,集成測(cè)試和確認(rèn)測(cè)試,系統(tǒng)測(cè)試則沒(méi)有進(jìn)行。具體測(cè)試如下:</p><p>  6.1 建立新帳號(hào)測(cè)試</p><p>  6.2 用戶登錄測(cè)試

107、 </p><p><b>  登錄 </b></p><p>  (2)登錄成功,轉(zhuǎn)到主界面</p><p>  6.3 一對(duì)一聊天測(cè)試</p><p>  用戶登錄成功后,進(jìn)入一對(duì)一聊天主界面,接著測(cè)試一對(duì)一聊天,現(xiàn)在帳號(hào)為A:“劉鵬”和帳號(hào)為B:“嚴(yán)利鑫”的兩個(gè)用戶登錄成功,注意以左上角的當(dāng)前用戶來(lái)

108、區(qū)分用戶,測(cè)試步驟如下:</p><p><b>  A向B發(fā)送聊天信息</b></p><p><b>  B接收到聊天信息</b></p><p>  B接著向A發(fā)送聊天信息</p><p><b>  A接收到聊天信息</b></p><p>&l

109、t;b>  6.4 聊天室測(cè)試</b></p><p><b>  (1)創(chuàng)建聊天室</b></p><p> ?。?)搜索并加入聊天</p><p>  (3)用戶A在聊天室中聊天測(cè)試</p><p> ?。?)用戶B在聊天室中聊天測(cè)試</p><p><b>  6

110、.5 測(cè)試小結(jié)</b></p><p>  在本次設(shè)計(jì)中許多單元測(cè)試都在具體的模塊設(shè)計(jì)中進(jìn)行了,其中發(fā)現(xiàn)了不少錯(cuò)誤,通過(guò)不斷更正,最終將各個(gè)模塊集成到一起,很粗糙的完成了系統(tǒng),然后進(jìn)行集成測(cè)試,發(fā)現(xiàn)了許多連接上的錯(cuò)誤,也一一更正了,這里的測(cè)試只是一個(gè)很簡(jiǎn)單的程序運(yùn)行過(guò)程,算不上嚴(yán)格意義上的測(cè)試,不過(guò)作為學(xué)生,許多錯(cuò)誤就是在一遍又一遍的運(yùn)行中不斷發(fā)現(xiàn)與更正的。</p><p>&

111、lt;b>  7 總結(jié)</b></p><p>  7.1 典型問(wèn)題歸納</p><p>  在本次設(shè)計(jì)中,確實(shí)遇到了許多問(wèn)題,許多問(wèn)題是由于自己的粗心大意造成的,這種問(wèn)題很容易發(fā)現(xiàn)和改正,但是有幾個(gè)問(wèn)題,由于之前自己沒(méi)有遇到過(guò),所以著實(shí)困擾了我很久,歸納起來(lái)主要有:關(guān)于保持panel面板拖拽后位置在刷新后不變的問(wèn)題;關(guān)于js文件調(diào)用的問(wèn)題;關(guān)于iis服務(wù)器配置的問(wèn)題。這

112、幾個(gè)問(wèn)題中的前兩個(gè)自己已經(jīng)很好的找到解決或者替代方法了,但是第三個(gè)雖然解決了部分,但是還沒(méi)有完全解決。</p><p>  關(guān)于iis服務(wù)器配置問(wèn)題,剛開(kāi)始的時(shí)候是提醒說(shuō)數(shù)據(jù)庫(kù)連接不上,后來(lái)添加了提示沒(méi)有的用戶,問(wèn)題得到解決,但是登錄到一對(duì)一聊天界面后會(huì)發(fā)現(xiàn)許多界面控件無(wú)法使用,還提醒:網(wǎng)頁(yè)上有錯(cuò)誤,在網(wǎng)上查了很久,有些人說(shuō)是iis服務(wù)的連接數(shù)限制引起的,暫時(shí)還正在搜尋答案,希望能夠解決。</p>

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論