版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 緒論1.1 研究現(xiàn)狀及設計目標1.1.1 研究現(xiàn)狀即時通信(instant messenger,簡稱im)軟件是一種實現(xiàn)文字、音頻和視頻等信息的即時傳送, 以及點對點的數(shù)據(jù)交換的網(wǎng)絡交流方式。自1996 年世界上第一個即時通信軟件 icq 在四位以色列籍年輕人成立的一家名為 mirabilis 的小公司誕生, im便拉開了神奇的序幕。當初僅僅是為了使連接在同一個服務器上的用戶能相互交流而開發(fā)的 icq,在后來的日子里風光無限,各種即時通信軟件迅速席卷了全球網(wǎng)民。目前,即時通訊軟件可以說是上網(wǎng)用戶使用率最高的軟件。不論是老牌的icq,還是國內用戶量第一的騰訊qq,乃至微軟的msn messe
2、nger、goole talker、雅虎的雅虎通、新浪uc、網(wǎng)易泡泡、搜q、了了吧等都有很多的用戶。甚至有專家預測即時通信軟件即將取代電子郵件成為主流的互聯(lián)網(wǎng)通信工具。web im 是網(wǎng)頁版的即時通信工具,它的作用是給那些用不了或者不方便使用soft客戶端的用戶使用,最大的價值就是提供便捷的交流渠道。另外,web im的應用對于增強網(wǎng)站用戶的活躍度、網(wǎng)站的互動性有著非常重大的意義,web im主要應用于社區(qū)用戶的交流,在線客服,crm。常見的即時通信工具的web版本,如web qq 、web版百度hi,這類在線im主要的功能局限于即時的交流溝通,側重點在消息與文件傳輸?shù)壬贁?shù)功能。針對社區(qū)、論壇
3、以及普通網(wǎng)頁開發(fā)的即時聊天插件。在這當中不得不提到web qq,web qq是騰訊推出的使用網(wǎng)頁方式上qq的服務,特點是無需下載和安裝qq軟件,只要能打開web qq的網(wǎng)站就可以登錄qq與好友保持聯(lián)系。具有web產(chǎn)品固有的便利性,同時在web上最大限度的保持了客戶端軟件的操作習慣。更豐富的好友動態(tài)、更開闊的聊天模式、更實時的資訊查看、還有休閑音樂伴隨,web qq將為我們提供一個愉快的網(wǎng)絡起點。1.1.2 設計目標現(xiàn)在的國內即時通信市場已經(jīng)被webqq以及電信的fetion牢牢占據(jù),各個網(wǎng)絡公司自己的即時通信軟件僅僅只能在局部的范圍內起到作用,本次系統(tǒng)設計是本著學習的原則進行的,其期望達到的目
4、標:(1)使用vb.net語言進行數(shù)據(jù)交換及相關操作并且封裝成類;(2)能夠進行異步數(shù)據(jù)的查詢、檢索;(3)能夠實現(xiàn)服務器端與客戶端的連接和即時通訊。1.2 研究目的及意義1.2.1 研究目的(1)通過對具體應用系統(tǒng)的設計,使自己對vs開發(fā)平臺以及sql數(shù)據(jù)庫能夠進一步熟悉。(2)在開發(fā)過程中參考各個方面的文獻,了解目前通訊系統(tǒng)開發(fā)的走向及前景。(3)熟悉小型系統(tǒng)開發(fā)的整體流程,為以后的學習或是工作作出鋪墊。1.2.2 研究意義(1)熟悉vs+sql開發(fā)小型系統(tǒng)的意義 對于.net的開發(fā),visual studio集成開發(fā)環(huán)境無疑是最好的選擇。visual studio2008是基于。net
5、3.5一起推出的新一代開發(fā)平臺,它提供了一整套的開發(fā)工具。在該開發(fā)平臺上,可以開發(fā)asp.net web應用程序、web服務應用程序、windows應用程序和移動設備應用程序。.net支持多種開發(fā)語言,如visual basic.net、visual c#、visual c+等。利用此開發(fā)工具可以創(chuàng)建混合語言解決方案,同時可以簡化asp.net web應用程序的開發(fā)難度。在我們的學習中大多采用vs+sql的黃金組合,一個用于界面設計,一個用于組織后臺數(shù)據(jù),這也是商業(yè)開發(fā)的傳統(tǒng)模式,熟悉這樣的開發(fā)語言和數(shù)據(jù)庫對于我們以后從事軟件開發(fā)具有引導性的作用,為以后更好發(fā)展打下基礎。(2)熟悉小型系統(tǒng)開發(fā)
6、的整體流程的意義通過每一次的具體系統(tǒng)開發(fā),我們都會發(fā)現(xiàn)可以從中收獲匪淺,無論是技術層面的,還是非技術層面的,計算機專業(yè)。就像我們在一次系統(tǒng)開發(fā)中,首先我們必須從大的方面著手,先通過與用戶的交流獲得對問題的直接定義,即解決“我們要解決什么任務,完成什么任務?”的問題,如果不知道問題是什么就開始規(guī)劃模塊,顯然是盲目的,只會白白浪費金錢,最終得出的結果不可能令用戶滿意。在知道了要解決什么問題后,還要對問題進行可行性的分析,即確定“用戶所提出的問題是否有一個可以解決的方案,方案行不行得通?!比缓蟛攀切枨蠓治?,這個階段仍然不是具體的解決問題,而是準確的確定“為了解決這個問題,目標系統(tǒng)必須做什么”,主要是
7、確定系統(tǒng)必須具有哪些功能。在上述步驟都詳盡的完成后,我們才可以做總體設計,即“應該怎樣實現(xiàn)目標系統(tǒng),”這時可以對整個系統(tǒng)進行一定的模塊劃分,將系統(tǒng)劃分為適當?shù)膶哟谓Y構。然后再進行詳細設計,即“怎樣具體實現(xiàn)各個模塊,”,進行模塊的算法和數(shù)據(jù)結構設計、代碼編寫。接著就是進行單元測試和綜合測試,最后還要有對系統(tǒng)的后期維護。通過對小型系統(tǒng)的開發(fā),我們可以熟練的掌握系統(tǒng)開發(fā)流程,這樣在我們以后的工作中對每個階段要完成的任務才能有一個清醒的認識,對以后進行團隊合作才能有足夠的重視,才能更好的完成任務。2 系統(tǒng)開發(fā)工具簡介2.1 asp.net ajax開發(fā)技術介紹 asp.net 是一項功能強大的,非常靈
8、活的服務器端技術,用于創(chuàng)建動態(tài)web頁面。其次,asp.net是構成.net framework的一系列技術中的一種,在此可以把.net framework看成是用于創(chuàng)建所有應用程序的巨大工具箱1。ajax的全稱是asynchronous javascript and xml,即異步的javascript 和xml,確切的說,ajax并不是一種技術,它實際上是幾種技術的共同協(xié)作的結果,而其中每一種技術在ajax提出之前都已經(jīng)被成熟應用很多年了,它所使用的技術包括:(1) xhtml和css(2) 使用文檔對象模型(document object model)作動態(tài)顯示和交互(3) 使用xml和
9、xslt做數(shù)據(jù)交互和操作(4) 使用xmlhttprequest進行異步數(shù)據(jù)接收(5) 使用javascript將它們綁定在一起asp.net ajax 開發(fā)代號atlas是一個新的web技術開發(fā)包,它集成了一套非常大的客戶端腳本庫使得與功能豐富的、基于服務器開發(fā)平臺的 asp.net2.0結合在一起,”atlas”能讓你開發(fā)的web應用能夠通過直接調用web服務器來更新一個web頁面的數(shù)據(jù)不需要在頁面往返傳送(也就是不需要多次刷新頁面)。使用”atlas”,你能最大地利用asp.net和服務器端代碼在瀏覽器中來做許多工作,使得有更加豐富的用戶體驗。asp.net ajax是一個完整的開發(fā)框架
10、,其服務器端編程模型相對于客戶端編程模型較為簡單,而且容易與現(xiàn)有的asp.net程序相結合,通常實現(xiàn)復雜的功能只需要在頁面中拖幾個控件,而不必了解深層次的工作原理,除此之外服務器端編程的asp.net ajax control toolkit含有大量的獨立ajax控件和對asp.net原有服務器控件的ajax功能擴展,實現(xiàn)起來也非常簡單。但是魚與熊掌不可兼得,服務器端編程相對于客戶端編程在執(zhí)行效率和可控性上有較大差距。在傳統(tǒng)的web交互方式中,對于每次用戶的請求,服務器總是響應一個新的web頁面給瀏覽器。在這種情況下,即使頁面中只有小部分的改動,也會將整個頁面發(fā)送回來,大大影響了交互的速度,使
11、用戶在大部分時間面對一個空白的瀏覽器,等待新頁面的到來。雖然有許多技術試圖改變這種每次請求都刷新整個頁面的狀況,比如frame,iframe等,但是這些技術并不能完美的解決這個問題。在ajax模式下,用戶第一次發(fā)送請求,服務器返回一個完整的web頁面,如果只需要改變部分數(shù)據(jù),并不將整個頁面重新載入,而是通過ajax技術向服務器發(fā)送請求,通過css和xhtml將響應的內容表示出來。可以看出,ajax技術大大降低了服務器和客戶端之間的數(shù)據(jù)流量,很大程度地提高了響應速度。同時,由于不是每次都發(fā)回整個頁面,也能大大減少出現(xiàn)瀏覽器空白界面的情況,界面友好度有很大的提高2。asp.net ajax 主要的
12、設計目標有兩點:第一, 對現(xiàn)有的asp.net服務器端模型進行擴展,讓其可以生成實現(xiàn)富客戶端的javascript代碼。第二, 為asp.net 增加客戶端編程模型,讓純粹的客戶端編程變得更加簡單。這樣,asp.net ajax的特性就可以相應的分為服務器端和客戶端兩個部分,前者包括asp.net 2.0 ajax extensions以及asp.net ajax control toolkit,后者包括microsoft ajax library。asp.net ajax框架的客戶端部分,即microsoft ajax library,是一個跨瀏覽器,跨平臺的ajax客戶端解決方案。它包括類
13、似asp.net服務器端控件一樣良好封裝的,可以運用于各種主流瀏覽器之上的各種客戶端組件,例如表示簡單界面元素的textbox , 表示復雜綁定列表的listview, 驗證用戶輸入的validator,為html元素提供某些附加行為的behavior,以及功能更加強大的用戶身份認證,用戶個性化組件等。開發(fā)者完全可以以一種面向對象的方式輕松的用javascript編寫自定義的組件,然后使用javascript以編程方式或一種asp.net ajax特定的,基于xml的聲明式腳本語言,借助于asp.net ajax客戶端框架中的綁定概念將這些組件方便而又高效的連接起來,以構成功能強大的,純粹的客
14、戶端ajax應用程序。asp.net 2.0 ajax eetensions,即asp.net ajax的服務器端控件,包括與開發(fā)者社區(qū)共同創(chuàng)建的asp.net ajax control toolkit,則是上述asp.net ajax 框架的客戶端部分javascript組件在服務器端的封裝。這些服務器端組件為基于asp.net的應用程序提供了另一種ajax的實現(xiàn)方式-采用一種和asp.net 完全一樣的服務器端控件開發(fā)模型。作為對現(xiàn)有asp.net服務器端組件的擴展,asp.net 2.0 ajax extensions提供的服務器端組件可以讓開發(fā)者充分使用他們現(xiàn)有的知識,無需書寫一行ja
15、vascript代碼,甚至不用了解ajax的任何實現(xiàn)原理,只通過在visual studio中拖放控件即可開發(fā)出帶有強大ajax功能以及豐富用戶體驗的富客戶端應用程序。這個特性也非常適合為現(xiàn)在的asp.net程序添加少量的ajax功能3。2.2 vb.net 開發(fā)語言介紹vb. net是微軟最新平臺技術,是.netframeworksdk的一種語言。vb. net和vc#.net在功能上沒有區(qū)別。編譯以后生成的可執(zhí)行文件被稱為assembly,即程序集。 vb. net的版本號是visualbasic7.0,它的運行是建立在clr和msil虛擬器上的。其實,它的機制和java差不多。 vb.
16、net是visual basic. net的簡稱。提到vb. net,就不能不先提一下vb(visual basic)。 visual basic是windows環(huán)境下的一種簡單、易學的編程語言,由于其開發(fā)程序的快速、高效,深受程序員的喜愛。嚴格地來說,visual basic只是半面向對象的語言,其面向對象的能力及程序的執(zhí)行效率往往不能一些程序員的需要,因此,大的項目很少使用visual basic來開發(fā)。visual basic的最后一個版本是visual basic 6.0。 隨著internet技術的成熟和廣泛應用,internet逐漸成為編程領域的中心,為適應這種新局面的變化,200
17、0年microsoft公司提出“任何人從任何地方,在任何時間,使用任何設備存取互聯(lián)網(wǎng)上的服務”的戰(zhàn)略,并在visual basic 6.0之后,推出了全新的“.net構架”,在其第一個版本-visual studio. net 7.0中,集成了visual basic 7.0、visual c+ 7.0及c#,其中的visual basic 7.0(vb 7.0),即是vb. net的第一個版本。 visual basic.net是新一代的visual basic,在微軟公司投入很大力量開發(fā)網(wǎng)絡新領域.net平臺的同時,也將vb運用到了這一平臺上,同時大幅度提高vb的功能。可以說visual
18、basic.net在功能上不輸給vc的升級版本語言c#,而且實現(xiàn)了真正的面向對象功能,同時微軟公司增強了該語言的網(wǎng)絡開發(fā)功能和可移植性,visual basic.net完全有實力趕上并超過java,這可以說是vb程序員的福音4。2.3 sql server 數(shù)據(jù)庫介紹 sql server 是一個關系數(shù)據(jù)庫管理系統(tǒng)。它最初是由microsoft、 sybase 和ashton-tate三家公司共同開發(fā)的,于1988 年推出了第一個os/2 版本。在windows nt 推出后,microsoft與sybase 在sql server 的開發(fā)上就分道揚鑣了,microsoft 將sql serv
19、er 移植到windows nt系統(tǒng)上,專注于開發(fā)推廣sql server 的windows nt 版本。sybase 則較專注于sql server在unix 操作系統(tǒng)上的應用。sql server 采用sql(structured query language)語言,即機構化查詢語言,sql語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。按照ansi的規(guī)定,sql被作為關系型數(shù)據(jù)庫管理系統(tǒng)的標準語言。sql語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。絕大多數(shù)流行的關系型數(shù)據(jù)庫管理系統(tǒng)都采用了sql語言標準。雖然很多數(shù)據(jù)庫都對sql語句進行了再開發(fā)和擴展,
20、但是包括select, insert, update, delete, create,以及drop在內的標準的sql命令仍然可以被用來完成幾乎所有的數(shù)據(jù)庫操作。本次設計使用sql server 2005作為后臺數(shù)據(jù)庫,在這之前有sql server 2000版本,sql server2000 是microsoft 公司推出的sql server 數(shù)據(jù)庫管理系統(tǒng),該版本繼承了sql server 7.0 版本的優(yōu)點,同時又比它增加了許多更先進的功能。具有使用方便可伸縮性好與相關軟件集成程度高等優(yōu)點,可跨越從運行microsoft windows 98 的膝上型電腦到運行microsoft win
21、dows 2000 的大型多處理器的服務器等多種平臺使用。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 解決方案,幫助您的團隊通過記分卡、dashboard、web services 和移動
22、設備將數(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ù)中更多地獲益。3 系統(tǒng)功能概述及系統(tǒng)模型的建立3.1 系統(tǒng)功能概述通過對客戶需求的深入理解,確定了本系統(tǒng)將采用b/s模式進行設計,即所謂瘦客戶端方式,運用瀏覽器進行客戶端的
23、基本操作,所以其服務器端功能必須足夠強大,下面從客戶端以及服務器端給出初步的功能要求:(1) 客戶端功能* 未注冊用戶可以通過注冊成為新用戶* 已注冊用戶可以登錄系統(tǒng)* 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、忙碌等* 登錄系統(tǒng)后可以查看好友在線狀態(tài)* 登錄系統(tǒng)后可以查看好友發(fā)送的信息以及服務器信息等* 登錄系統(tǒng)后可以給好友發(fā)送信息* 登錄系統(tǒng)后可以對好友進行管理:添加、刪除等(2)服務器端功能* 服務器端可以進行開啟、暫停、關閉服務等* 服務器端可以接受客戶端的信息并進行處理* 服務器端可以將處理后的信息發(fā)送給目標客戶端3.2 系統(tǒng)模型的建立3.2.1 用例圖(1)用戶注冊模塊用例圖圖3-1
24、 用戶注冊模塊用例圖用例描述:用例:用戶注冊參與者:用戶、服務器內含:外延:前置條件:事件流:1 用戶填寫注冊表。2 將注冊表提交給服務器。3 服務器返回注冊信息提示。后置條件:備注:如果用戶名已存在則會返回錯誤信息,用戶將要重新注冊。(2)用戶登錄模塊用例圖圖3-2 用戶登錄模塊用例圖用例描述:用例:用戶登錄參與者:用戶、服務器內含:外延:前置條件:用戶名存在事件流:1. 用戶填寫登錄信息。2. 將登錄新體提交給服務器。3服務器處理用戶信息并返回登錄是否成功的提示。后置條件:備注:如果要成功登錄,用戶信息必須正確。(3)好友管理模塊用例圖 圖3-3 添加好友模塊用例圖 圖3-4 刪除好友模塊
25、用例圖用例描述 用例:好友管理參與者:用戶、服務器內含:外延:前置條件:用戶已經(jīng)登錄事件流:1. 用戶查找要進行管理的好友。2. 給出好友管理信息:添加、刪除、移動等。3將信息發(fā)送至服務器。4服務器處理用戶提交的信息并返回處理結果。后置條件:備注: (4)發(fā)送消息模塊用例圖圖3-5 發(fā)送消息模塊用例圖用例描述:用例:發(fā)送消息參與者:用戶、服務器內含:外延:前置條件:用戶已經(jīng)登錄事件流:1. 用戶選擇好友并發(fā)送信息。2. 服務器處理用戶發(fā)送的信息。3服務器將處理后的信息發(fā)送給目標用戶并返回發(fā)送提示。后置條件:備注:(5)保存信息模塊用例圖圖3-6 保存消息模塊用例圖 用例描述:用例:保存信息參與
26、者:用戶、服務器內含:外延:前置條件:用戶已經(jīng)登錄事件流:1. 用戶選擇接受路徑2. 服務器將消息發(fā)送給用戶。后置條件:備注:用戶也可以選擇拒絕接受。 3.2.2 序列圖(1) 用戶注冊模塊序列圖客戶端數(shù)據(jù)庫服務器web服務器發(fā)連接服務器請求信息、1連接成功,服務器響應客戶端請求、2發(fā)注冊請求信號和注冊信息、3連接數(shù)據(jù)庫請求建立連接、4連接成功,返回連接、5向數(shù)據(jù)庫注冊用戶信息、6返回注冊結果、7告訴客戶注冊成功的帳號,并返回結果、8圖3-7 用戶注冊模塊序列圖(2)用戶登錄模塊序列圖客戶端web服務器數(shù)據(jù)庫服務器1、發(fā)送用戶登錄請求:包括用戶名和密碼2、向數(shù)據(jù)庫服務器驗證合法性3、返回驗證結
27、果4、返回登陸結果 圖3-8 用戶登錄模塊序列圖(3) 添加好友模塊序列圖客戶端web服務器數(shù)據(jù)庫服務器1、建立連接,發(fā)送查找好友請求2、查找在線用戶數(shù)據(jù)3、返回在線用戶數(shù)據(jù)4、返回在線用戶數(shù)據(jù)列表5、用戶選擇要添加為好友的用戶發(fā)加添加好友請求8、添加到好友表中6、驗證是否已經(jīng)是好友7、返回驗證結果 9、返回添加結果10、向用戶返回添加結果圖3-9 添加好友模塊序列圖(4)發(fā)送消息模塊序列圖客戶26、向服務器發(fā)送“發(fā)送信息”請求8、發(fā)送信息7、若用戶已經(jīng)登錄則允許發(fā)送信息.9,根據(jù)已經(jīng)保存的session值確定發(fā)送者和接受者1、向服務器發(fā)登錄請求3、利用session保存用戶1和2的帳號2、向
28、服務器發(fā)送登陸請求4、返回登錄成功信息5、返回登錄成功信息10,服務器將消息以及發(fā)送者信息發(fā)送給接受者客戶1web服務器和數(shù)據(jù)庫服務器11、返回發(fā)送信息提示圖3-10 發(fā)送消息模塊序列圖3.2.3 類圖類圖(class diagram)由許多(靜態(tài))說明性的模型元素(例如類、包和它們之間的關系,這些元素和它們的內容互相連接)組成。類圖可以組織在(并且屬于)包中,僅顯示特定包中的相關內容。類圖(class diagram)是最常用的uml圖,顯示出類、接口以及它們之間的靜態(tài)結構和關系;它用于描述系統(tǒng)的結構化設計。類圖(class diagram)最基本的元素是類或者接口。類一般包含類名,屬性,方
29、法三大部分,類名書寫規(guī)范:正體字說明類是可被實例化的,斜體字說明類為抽象類。 屬性和方法書寫規(guī)范:修飾符 描述信息 屬性、方法名稱 參數(shù) :返回類型|類型 屬性和方法之前可附加的可見性修飾符: 加號(+)表示public;減號(-)表示private;#號表示protected;省略這些修飾符表示具有package(包)級別的可見性。 類之間可以建立五種關系:關聯(lián)、依賴性、累積、實現(xiàn)關系和泛化。關聯(lián)是類之間的詞法連接,在類圖中用單線表示。依賴性關系在類的操作中需要參數(shù)或返回值的類中也需要。依賴性用虛線箭頭表示。累積關系是強關聯(lián)。累積關系是整體與個體間的關系。累積關系在總體類旁邊畫一個菱形。實現(xiàn)
30、關系顯示類與接口、包與接口、組件與接口和用例與用例實現(xiàn)之間的關系。實現(xiàn)關系將公共接口(接口類或用例)與接口的詳細實現(xiàn)(類、包或用例實現(xiàn))相連接。換句話說,實現(xiàn)關系把接口與實現(xiàn)分開。圖3-28展示了實現(xiàn)關系的表示方法。泛化關系顯示兩個模型元素(如角色、用例、類或包)之間的繼承關系。大多數(shù)面向對象語言直接支持繼承的概念。繼承就是讓一個類繼承另一個模型元素的所有屬性、操作、關系和詞法。在uml中,繼承關系稱為泛化,顯示為子類指向父類的箭頭, 由于本系統(tǒng)是一個即時通訊系統(tǒng),其中系統(tǒng)中的類比較少,各個類之間的關系也比較簡單,主要有這么幾個類,具體布局如下圖所示:圖3-11 整個系統(tǒng)類圖4 數(shù)據(jù)庫設計數(shù)據(jù)
31、庫技術是現(xiàn)代系統(tǒng)設計中最有效的數(shù)據(jù)管理手段。數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),有效存儲數(shù)據(jù),滿足用戶信息要求和處理要求。數(shù)據(jù)庫結構設計的好壞直接對應用系統(tǒng)的效率及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結構設計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致性。數(shù)據(jù)庫設計是指針對一個給定的應用環(huán)境,構造(設計)優(yōu)化的數(shù)據(jù)庫邏輯模型和物理模型結構,并據(jù)此建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效的存儲和管理數(shù)據(jù),滿足各種用戶的應用需求,包括信息管理要求和數(shù)據(jù)操作要求5。設計數(shù)據(jù)庫系統(tǒng)時應該充分了解用戶各個方面的需求,包括現(xiàn)有的及將來可能增加的需求。數(shù)據(jù)庫設計一般包
32、括如下幾個步驟。(1) 數(shù)據(jù)庫需求分析。(2) 數(shù)據(jù)庫概念結構設計。(3) 數(shù)據(jù)庫邏輯結構設計。4.1數(shù)據(jù)庫需求分析本系統(tǒng)主要設計兩個方面,客戶端和服務器端,所以數(shù)據(jù)庫中要充分考慮這兩個方面的因素。對客戶端來說,他們所關心的就是如何可以利用該系統(tǒng)和自己的好友進行交流,同時要能夠對好友進行管理,通過總結可以得出如下的需求信息:* 未注冊用戶可以通過注冊成為新用戶* 已注冊用戶可以登錄系統(tǒng)* 登錄系統(tǒng)后可以選擇登錄模式:隱身、在線、離線等* 登錄系統(tǒng)后可以查看好友在線狀態(tài)* 登錄系統(tǒng)后可以查看好友發(fā)送的信息等* 登錄系統(tǒng)后可以給好友發(fā)送信息* 登錄系統(tǒng)后可以對好友進行管理:添加、刪除等* 登錄系統(tǒng)
33、后可以給好友發(fā)送文件以及接收文件等(未實現(xiàn))對于服務器端來說,他們關心的就是如何更好的為客戶提供服務,使他們能夠更好的和自己的好友進行交流,他們主要完成后臺的工作,通過分析可以得出,服務器端的需求信息如下:* 服務器端可以進行開啟、暫停、關閉服務等* 服務器端可以接受客戶端的信息并進行處理* 服務器端可以將處理后的信息發(fā)送給目標客戶端經(jīng)過上述系統(tǒng)功能的分析和需求總結,考慮到之后功能的擴展,設計如下的數(shù)據(jù)項和數(shù)據(jù)結構。其中uid為自動編號的標識。(1) 會員基本信息,包括數(shù)據(jù)項:uid,昵稱,帳號,密碼,目前狀態(tài),最后登錄時間。(2) 好友列表,包括數(shù)據(jù)項:uid,本人帳號,好友帳號。(3) 對
34、話信息,包括數(shù)據(jù)項:uid,發(fā)送者帳號,接受者帳號,內容等。(4) 對話邀請,包括數(shù)據(jù)項:uid,邀請者帳號,接受邀請者帳號等。(5) 聊天室,包括數(shù)據(jù)項:編號,名稱,密碼,創(chuàng)建者等。(6) 聊天室用戶,包括數(shù)據(jù)項:編號,用戶帳號,聊天室簡介等。(7) 聊天室聊天記錄,包括數(shù)據(jù)項:編號,聊天室名稱,用戶帳號,聊天內容,記錄該聊天內容的時間等。4.2數(shù)據(jù)庫概念結構設計得到上面的數(shù)據(jù)項和數(shù)據(jù)結構以后,就可以設計出能夠滿足用戶需求的各種實體,以及他們之間的關系,為后面的邏輯結構設計打下基礎。這些實體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動。本實例根據(jù)上面的設計規(guī)劃出的實體有:會員基本信息實
35、體、好友列表實體、對話信息實體、對話邀請實體。實體之間關系的e-r圖如下圖所示:擁有好友圖書對話信息圖書擁有對話邀請圖書接受用戶nnm1n1加入聊天室聊天室用戶聊天記錄加入記錄mnmn11圖4-1 實體之間的e-r圖(1)用戶信息表(userinfo)的e-r圖如下:userinfouiduseraccountstatusnicknamepwdlastlogin圖4-2 用戶信息表e-r圖(2)好友信息列表(friendinfo)的e-r圖如下:friendinfouiduseraccountfriendaccount圖4-3 好友信息列表e-r圖(3)對話信息(message)的e-r圖如下
36、:messageuidmsgfrommsgtomsgmsgsendtime圖4-4 對話信息e-r圖(4)對話邀請(calling)的e-r圖:callinguidcallingfromcallingto圖4-5 對話邀請e-r圖(5)聊天室(chatroom)的e-r圖chatroomchatroomnumchatroomnamechatroompasswordchatroomcreater圖4-6 聊天室e-r圖(6) 聊天室用戶(chatroomuser)的e-r圖chatroomuserchatroomnumuseraccountchatroomusertips圖4-7 聊天室用戶e-
37、r圖(7) 聊天室聊天記錄(userchatrecord)的e-r圖userchatrecordchatnumchatroomnameuseraccountchatrecordchattime圖4-8 聊天室聊天記錄e-r圖4.3數(shù)據(jù)庫的邏輯結構設計數(shù)據(jù)庫的概念結構設計完成后,現(xiàn)在可以將上面的數(shù)據(jù)庫概念結構設計轉換為某種數(shù)據(jù)庫系統(tǒng)支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結構。根據(jù)數(shù)據(jù)量的大小,系統(tǒng)可以使用不同的數(shù)據(jù)庫,本次系統(tǒng)設計主要使用sql server數(shù)據(jù)庫。本次系統(tǒng)設計主要使用sql server數(shù)據(jù)庫。表4-1 userinfo(會員信息數(shù)據(jù))字段名稱類型用途uid自動編號識別作用us
38、eraccount文字用戶帳號status文字用戶在線狀態(tài)(在線,離線,離開,忙碌)lastlogin文字用戶最后登錄時間nickname文字昵稱pwd文字登錄密碼表4-2 friendinfo(好友列表)字段名稱類型用途uid自動編號識別useraccount文字帳號friendinfo文字好友帳號表4-3 message(對話信息表)字段名稱類型用途uid自動編號識別msgfrom文字消息發(fā)送者msgto文字消息接收者msg文字消息內容msgsendtime文字消息發(fā)送時間表4-4 calling(對話邀請表)字段名稱類型用途uid自動編號識別callingfrom文字對話申請者calli
39、ngto文字對話被邀請者表4-5 chatroom(聊天室信息表)字段名稱類型用途chatroomnum自動編號識別chatroomname文字聊天室名稱chatroompassword文字聊天室密碼chatroomcreater文字聊天室創(chuàng)建者表4-6 chatroomuser(聊天室用戶表)字段名稱類型用途chatroomnum自動編號識別useraccount文字聊天室用戶帳號chatroomusertips文字聊天室簡介表4-7 userchatrecord(聊天室聊天記錄表)字段名稱類型用途chatnum自動編號識別chatroomname文字聊天室名稱useraccount文字聊天
40、室用戶帳號chatrecord文字聊天記錄chattime日期聊天記錄時間5 功能設計5.1 共用模塊的設計5.1.1 母版頁的設計與引用整體系統(tǒng)的每一個界面都無一例外的用到了母版頁,母板頁的引用能很好的解決各個界面之間的布局一致性問題,使得界面設計簡潔,優(yōu)美,母版頁的擴展名是.master??梢园涯赴骓摾斫鉃槎鄠€內容頁共同的部分。所以可以先建一個母版頁,把共同的東西都建好,通過添加contentplaceholder控件預留可變化的區(qū)域。然后在各個內容頁里使用母版頁(通過在聲明里引用母版頁),原來的contentplaceholder控件會被content控件替換,然后你可以在content
41、控件里添加每個內容頁個性化的東西。這樣可以減少很多重復代碼的勞動,快速的開發(fā),也便于以后的維護。本次系統(tǒng)開發(fā)就用到了母板頁設置了頁面頭部和尾部,這樣在其他的內容頁中便可以直接引用了,其頁面效果如下:在其他內容頁中引用時只要給出masterpagefile就可以了。5.1.2 公共類的設計與引用 visual basic。net不像其以前的版本,在創(chuàng)建類時,每個類都有自己的文件,從而產(chǎn)生一個非常龐大的面向對象工程,visual basic.net 允許把多個類放在一個源文件里。這樣可以減少工程文件數(shù)量,使工程更易于維護和管理6。本次系統(tǒng)設計中對許多公共部分進行了集成,將數(shù)據(jù)庫連接與操作語句都放在
42、了類databaseclass中;將與本系統(tǒng)有關的數(shù)據(jù)庫操作語句放在了imclass(一對一聊天功能)和chatroom1(群聊功能)兩個類中,這樣的話在設計前臺時可以直接調用位于這些類中的方法,很大程度上避免了程序的冗余,簡化了設計流程,當然以后如果做系統(tǒng)移植,這些類可以直接拷貝過去,不用修改或經(jīng)過稍許修改就能使用。(1) databaseclass類該類中包含了數(shù)據(jù)庫訪問的幾個重要方法,這些方法都是以過程的方式實現(xiàn)的,自定義過程主要有兩種:一種是以“sub”保留字開始的為子過程,完成一定的操作功能,子過程名無返回值;另一種以“function”保留字開始的為函數(shù)過程,用戶自定義的函數(shù),函數(shù)
43、名有返回值7?,F(xiàn)在列舉如下:dim db as sqlconnection首先定義一個數(shù)據(jù)庫連接字符串的全局變量sub new(byval mdbname as string)功能說明:構建數(shù)據(jù)庫連接。參數(shù): mdbname:sql數(shù)據(jù)庫名稱(liu)function readdatatable(byval sql as string) as system.data.datatable功能說明:對數(shù)據(jù)庫執(zhí)行sql語句,返回datatable參數(shù):sql:sql語句返回值: datatablesub execute(byval sql as string)功能說明:執(zhí)行sql(傳入sql字符串,
44、用于update,insert,delete)參數(shù): sql:sql語句(2) mclass類imclass類中包含了一對一聊天各個模塊所涉及的訪問以及修改數(shù)據(jù)庫的各種方法,包括添加,修改,刪除好友信息,獲取好友列表,獲取聊天內容,獲取聊天記錄等,其中的幾個重要的方法列舉如下:shared function antisqlinjection(byval s as string) as string功能說明:去掉s字符串中的不合法字符參數(shù):s:要執(zhí)行的sql語句返回值: s:去掉不合法字符后的sql語句private shared function getnow()功能說明:獲取當前服務器時間參
45、數(shù):無返回值: 當前服務器的時間shared function checkpassword(byval useraccount as string, byval pwd as string) as boolean功能說明:檢查輸入的帳號密碼是否正確參數(shù):useraccount:用戶輸入的帳號,pwd:用戶輸入的密碼返回值: true:驗證成功;false:驗證失敗shared function createuseraccount(byval useraccount as string, byval pwd as string, byval nickname as string) as bool
46、ean功能說明:建立新帳戶參數(shù):useraccount:注冊帳號pwd:注冊密碼nickname:注冊昵稱返回值:true:注冊成功false:注冊失敗shared sub updatestatus(byval useraccount as string, byval status as string)功能說明:登錄用戶登錄后改變自己狀態(tài)參數(shù):useraccount:用戶帳號status:用戶狀態(tài)返回值: 無 shared sub updatelastlogin(byval useraccount as string)功能說明:登記用戶最后在線時間參數(shù):useraccount:用戶帳號返回值:
47、 無 shared function getfriendslist(byval useraccount as string) as string()功能說明:取得當前用戶好友列表參數(shù):useraccount:用戶帳號返回值: 返回一個好友數(shù)組 shared function getusernickname(byval useraccount as string) as string功能說明:獲取當前用戶昵稱參數(shù):useraccount:用戶帳號返回值: 無shared function getuserstatus(byval useraccount as string) as string功能
48、說明:獲取當前用戶狀態(tài)參數(shù):useraccount:用戶帳號返回值: 用戶狀態(tài)值shared sub sendchatingcalling(byval callingfrom as string, byval chattingwith as string)功能說明: 發(fā)送聊天邀請參數(shù):callingfrom:邀請者chattingwith:被邀請者shared sub sendtalkingmsg(byval username as string, byval talkingto as string, byval msg as string)功能說明:發(fā)送聊天信息參數(shù):username:信息發(fā)
49、送方帳號talkingto:信息接收者帳號msg:信息內容shared function gettalkingmsg(byval username as string, byval talkingto as string, byval lines as integer) as string()功能說明:獲取最近的lines條聊天信息參數(shù):username:信息發(fā)送者帳號talkingto:信息接收者帳號lines:聊天信息條數(shù)返回值: lines條聊天信息shared function checkchatingcalling(byval username as string) as strin
50、g功能說明:檢查是否有對自己的聊天請求參數(shù):username:用戶帳號返回值: 邀請者帳號shared function deletechatingcalling(byval username as string) as string功能說明:檢查對自己的聊天請求并刪除參數(shù):username:用戶帳號shared function addnewfriend(byval useraccount as string, byval friendaccount as string) as boolean功能說明:添加好友參數(shù):useraccount:用戶帳號friendaccount:要添加的好友帳號
51、返回值:true:添加成功false:添加好友失敗shared function deletefriend(byval useraccount as string, byval friendaccount as string) as boolean功能說明:刪除好友參數(shù):useraccount:用戶帳號friendaccount:要刪除的好友帳號返回值:true:刪除好友成功false:刪除好友失?。?) chatroom1類 chatroom1類中主要包含了群聊功能中用到的各個方法,現(xiàn)在列舉如下:shared function antisqlinjection(byval s as stri
52、ng) as string功能說明:去掉s字符串中的不合法字符參數(shù):s:要執(zhí)行的sql語句返回值: s:去掉不合法字符后的sql語句private shared function getnow()功能說明:獲取當前服務器時間參數(shù):無返回值: 當前服務器的時間 shared function getchatroomlist(byval useraccount as string) as integer()功能說明:獲取當前用戶所在的聊天室列表參數(shù):useraccount:當前用戶帳號返回值: 返回聊天室編號shared function getchatroomlist() as string()
53、功能說明:獲取所有聊天室列表參數(shù):無返回值: 所有聊天室的名稱shared function getchatroomuserlist(byval chatroomnum as integer) as string()功能說明:獲取在當前聊天室的用戶列表參數(shù):chatroomnum:聊天室編號返回值: 用戶列表數(shù)組shared sub sendtalkingmsg(byval chatroom as string, byval useraccount as string, byval msg as string)功能說明:發(fā)送聊天信息參數(shù):chatroom:聊天室useraccount:用戶帳號shared function gettalkingmsg(byval useraccount as string, byval chatroom as string
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑基礎工程樁基礎
- 2024至2030年中國工作母機專用聯(lián)軸器數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國實驗室電導率/電阻率計數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國雙面雙花毯數(shù)據(jù)監(jiān)測研究報告
- 經(jīng)管營銷企業(yè)資產(chǎn)損失所得稅稅前扣除管理辦法講解
- 探究函數(shù)與方程-深入理解代數(shù)與解題技巧
- 2024年中國高強度鋼結構樓承板市場調查研究報告
- 2024年中國蒙娜麗莎工藝品市場調查研究報告
- 2024年中國立式剝皮機市場調查研究報告
- 急診病歷書寫標準化研究計劃
- 2018年公安機關人民警察高級執(zhí)法資格試題
- 值長口試試題
- 《橡皮障的應用方法》課件
- 鐵路新職人員培訓計劃
- 國開電大績效與薪酬實務(河北)形考任務三參考答案
- (完整文本版)小學英語音標測試100題
- 課件培訓小鐘琴
- 亨特綜合征學習課件
- 心理咨詢技能的職業(yè)倫理與道德規(guī)范
- 2023年黑龍江事業(yè)單位公共基礎知識真題及答案
- 化學高二-2022-2023學年北京市海淀區(qū)高二(上)期末化學試卷
評論
0/150
提交評論