




免費預(yù)覽已結(jié)束,剩余25頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
大連理工大學(xué)網(wǎng)絡(luò)教育學(xué)院畢業(yè)論文(設(shè)計)模板 網(wǎng)絡(luò)教育學(xué)院本 科 生 畢 業(yè) 論 文(設(shè) 計) 題 目:網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計與實現(xiàn)學(xué)習(xí)中心: 層 次: ??破瘘c本科 專 業(yè): 年 級: 年 春/秋 季 學(xué) 號: 學(xué) 生: 指導(dǎo)教師: 完成日期: 年 月 日III網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計與實現(xiàn)內(nèi)容摘要隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們生活中不可缺少的一部分,通過網(wǎng)上聊天已經(jīng)成為人與人之間的網(wǎng)絡(luò)通信的聊天,交流和聯(lián)系的一種方式。因此,更多的網(wǎng)站開始提供在線聊天功能。與此同時,以其方便,快捷,成本低的優(yōu)勢,聊天室眾多企業(yè)的青睞,許多企業(yè)網(wǎng)站也加入了聊天室,從而促進消費者與消費者和消費者之間的通信模塊。本文是一個軟件工程的在線聊天系統(tǒng),專注于系統(tǒng)的開發(fā),使用系統(tǒng)的分析,設(shè)計和思維測試軟件工程知識來實現(xiàn)的描述,其中包括三個主要方面的軟件生命周期:軟件定義(問題定義,可行性研究,需求分析),軟件開發(fā)(總體設(shè)計,詳細設(shè)計,編碼,測試)和運行維護。通過運用軟件工程知識處理實際,加強的問題,清晰,可靠的標準化,使得程序易于維護。該軟件使用JAVA編寫,具有良好的兼容性,易于實現(xiàn)。操作簡單,使用方便結(jié)構(gòu)簡單,易于搜索,實用的聊天室。關(guān)鍵詞:網(wǎng)絡(luò);通信;套接字目 錄內(nèi)容摘要I引 言41 概述51.1 課題研究背景和意義51.2 本文的主要內(nèi)容及組織結(jié)構(gòu)52 網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)技術(shù)介紹72.1 TCP/IP協(xié)議概述72.2 客戶/服務(wù)器模型72.3 Socket網(wǎng)絡(luò)編程72.4 開發(fā)工具與運行環(huán)境82.5 其他技術(shù)83 網(wǎng)絡(luò)聊天系統(tǒng)的分析與設(shè)計103.1 可行性分析103.2 需求分析103.3 系統(tǒng)總體設(shè)計113.3.1 系統(tǒng)架構(gòu)模型123.3.2 功能模塊設(shè)計123.3.3 系統(tǒng)通信設(shè)計123.3.4 數(shù)據(jù)庫設(shè)計134 網(wǎng)絡(luò)聊天系統(tǒng)詳細設(shè)計及實現(xiàn)144.1 服務(wù)器端設(shè)計與實現(xiàn)144.1.1 服務(wù)器等待連接進程/線程設(shè)計154.1.2 服務(wù)器處理客戶端信息進程/線程設(shè)計164.2 客戶端設(shè)計與實現(xiàn)164.2.1 登陸模塊164.2.2 主界面模塊164.2.3 私聊模塊194.2.4 聊天記錄管理模塊215 測試235.1 軟件測試概述235.2 測試策略與結(jié)果分析23結(jié)論28參考文獻29引 言 隨著不斷投入的信息技術(shù),網(wǎng)絡(luò),作為一種新生事物,近年來現(xiàn)代技術(shù)的普及得到了前所未有的深入,網(wǎng)絡(luò)應(yīng)用不斷涌現(xiàn)層出不窮,所有的層級和所有年齡的用戶提供不同的個性化服務(wù)?,F(xiàn)代小型和中小型企業(yè)的領(lǐng)導(dǎo)人認識到,進一步提高企業(yè)信息化的必要性。為了使企業(yè)在瞬息萬變的信息時代生存,適應(yīng)激烈的市場競爭,現(xiàn)代企業(yè)的要求是能夠特別是領(lǐng)導(dǎo)具有能力的員工,實時通信系統(tǒng)是搭建在員工之間的溝通和交流,是必要的條件。系統(tǒng)開發(fā)是一個非常復(fù)雜的系統(tǒng)工程。這里,對基本的方法和系統(tǒng)發(fā)展的方法進行介紹,和有內(nèi)容是在論文里列出。 為了提高市場競爭力,我們必須全面調(diào)查和對市場的詳細研究,同時也有良好的客戶服務(wù)。企業(yè)應(yīng)該在復(fù)雜的環(huán)境對策。員工與員工和領(lǐng)導(dǎo)之間的交流立即x性就顯得尤為重要,對于企業(yè)網(wǎng)上聊天系統(tǒng)是一種交流和溝通的平臺,系統(tǒng)可以成為中小企業(yè)溝通的理想平臺。如果信息能及時反饋,及時處理并做出相應(yīng)的動作,將能進一步加強在現(xiàn)代經(jīng)濟市場的中小型企業(yè)的競爭力。 網(wǎng)絡(luò)通信是網(wǎng)絡(luò)應(yīng)用的一個重要體現(xiàn)。即時通訊是網(wǎng)絡(luò)應(yīng)用的一個重要方面。聊天系統(tǒng),主要用于小型企業(yè),學(xué)?;蛐⌒途钟蚓W(wǎng)。該應(yīng)用程序使得短距離通信更高效,更便捷,更高效,以反映現(xiàn)代IM的特點。 該系統(tǒng)可滿足中小型企業(yè),學(xué)校內(nèi)部網(wǎng)絡(luò)即時通訊需求的需要,內(nèi)部網(wǎng)絡(luò)業(yè)務(wù)的正常環(huán)境下,提供了即時通信的能力,本系統(tǒng)采用的JAVA開發(fā)。該系統(tǒng)可為中小型企業(yè)的共同努力,相互溝通提供了一個功能強大的工具,在局域網(wǎng)中使用這個系統(tǒng),可以為企業(yè)提供員工溝通的幫助,以提高工作效率。1 概述1.1 課題研究背景和意義 隨著現(xiàn)代技術(shù)的普及和信息技術(shù)的不斷普及,網(wǎng)絡(luò)作為一種新事物,近年來得到了前所未有的普及和深入,網(wǎng)絡(luò)應(yīng)用層出不窮,給用戶的各個階層和各個年齡段提供了不同的個性化服務(wù)。和現(xiàn)代中小企業(yè)的領(lǐng)導(dǎo)認識到進一步提高企業(yè)信息化的必要性。為使企業(yè)在瞬息萬變的信息時代生存下來,適應(yīng)激烈的市場競爭,現(xiàn)代企業(yè)的要求是能夠溝通,尤其是領(lǐng)導(dǎo)者和員工之間的共同能力和實時通信系統(tǒng)是在這樣的條件下誕生的。系統(tǒng)開發(fā)是一個非常復(fù)雜的系統(tǒng)工程。介紹了系統(tǒng)開發(fā)的基本過程和方法,并對相關(guān)文獻進行了介紹。 為了提高市場競爭力,我們必須充分調(diào)查和詳細研究市場,而且還有一個良好的客戶服務(wù)。企業(yè)在復(fù)雜環(huán)境中應(yīng)作出對策。員工與員工之間的即時交流和領(lǐng)導(dǎo)是特別重要的,網(wǎng)上聊天系統(tǒng)是企業(yè)的一種溝通和溝通的平臺,系統(tǒng)可以成為中小企業(yè)溝通的理想平臺。如果能夠及時反饋信息,及時處理并做出相應(yīng)的行動,將能夠進一步提高中小企業(yè)在現(xiàn)代經(jīng)濟市場中的競爭力。 網(wǎng)絡(luò)通信是網(wǎng)絡(luò)應(yīng)用的一個重要體現(xiàn)。即時消息是網(wǎng)絡(luò)應(yīng)用的一個重要方面。該聊天系統(tǒng)主要用于小企業(yè)、學(xué)校或小局域網(wǎng)。此應(yīng)用使短距離通信更高效、方便,更有效地體現(xiàn)了現(xiàn)代通信的特點。 該系統(tǒng)可以滿足中小企業(yè)的需求,學(xué)校內(nèi)部網(wǎng)絡(luò)即時通信的需求,內(nèi)部網(wǎng)絡(luò)的正常操作環(huán)境下,提供即時通信的能力,本系統(tǒng)采用JAVA開發(fā)。該系統(tǒng)可以為中小企業(yè)的協(xié)同工作,相互溝通提供一個強大的工具,利用該系統(tǒng)在局域網(wǎng)中,可以為企業(yè)員工溝通提供幫助,提高工作效率。1.2 本文的主要內(nèi)容及組織結(jié)構(gòu)本文研究的內(nèi)容為局域網(wǎng)聊天系統(tǒng)的設(shè)計與實現(xiàn)。本文的組織結(jié)構(gòu):全文共分五章。第一章,主要部分是概述。第二章,介紹網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)技術(shù)介紹。第三章,介紹網(wǎng)絡(luò)聊天系統(tǒng)的分析與設(shè)計。第四章,介紹網(wǎng)絡(luò)聊天系統(tǒng)詳細設(shè)計及實現(xiàn)。第五章,介紹相關(guān)測試部分的內(nèi)容。282 網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)技術(shù)介紹2.1 TCP/IP協(xié)議概述 TCP / IP是專為大型網(wǎng)絡(luò)協(xié)議的行業(yè)定制標準套件。在TCP / IP協(xié)議族包括IPv4和IPv6的套協(xié)議。對TCP / IP的標準是發(fā)表在一系列的文件名為RFC文檔。在一個基于TCP / IP的網(wǎng)絡(luò),路由器可以轉(zhuǎn)發(fā)給路由器,一個節(jié)點或者是主機或路由器。 在一個基于TCP / IP的網(wǎng)絡(luò),一個子網(wǎng)是被路由器使用相同的IP地址前綴的一個或多個LAN段,和一個網(wǎng)絡(luò)是通過路由器連接的兩個或更多個子網(wǎng)。2.2 客戶/服務(wù)器模型 客戶/服務(wù)架構(gòu)結(jié)構(gòu)簡稱C/S結(jié)構(gòu),是一種網(wǎng)絡(luò)架構(gòu),它把客戶端 (Client) (通常是一個采用圖形用戶界面的程序)與服務(wù)器 (Server) 區(qū)分開來。每一個客戶端軟件的實例都可以向一個服務(wù)器或應(yīng)用程序服務(wù)器發(fā)出請求。有很多不同類型的服務(wù)器,例如文件服務(wù)器、游戲服務(wù)器等。 C/S通過不同的途徑應(yīng)用于很多不同類型的應(yīng)用程序,最常見就是目前在因特網(wǎng)上用的網(wǎng)頁。例如,當你在維基百科閱讀文章時,你的電腦和網(wǎng)頁瀏覽器就被當做一個客戶端,同時,組成維基百科的電腦、數(shù)據(jù)庫和應(yīng)用程序就被當做服務(wù)器。當你的網(wǎng)頁瀏覽器向維基百科請求一個指定的文章時,維基百科服務(wù)器從維基百科的數(shù)據(jù)庫中找出所有該文章需要的信息,結(jié)合成一個網(wǎng)頁,再發(fā)送回你的瀏覽器。2.3 Socket網(wǎng)絡(luò)編程套接字是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的操作單元??梢詫⑻捉幼挚醋鞑煌鳈C間的進程進行雙向通信的端點,它構(gòu)成了單個主機內(nèi)及整個網(wǎng)絡(luò)間的編程界面。套接字存在于通信域中。通信域是為了處理一般的線程通過套接字通信而引進的一種抽象概念。套接字通過通常和同一個域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時一定要執(zhí)行某種解釋程序)。套接字可以根據(jù)通信性質(zhì)分類,這種性質(zhì)對于用戶時可見的.應(yīng)用程序一般僅在同一類的套接字間通信.不過只要底層的通信協(xié)議允許,不同類型的套接字間也照樣可以通信。進入九十年代后,隨著計算機和網(wǎng)絡(luò)技術(shù)的發(fā)展,很多數(shù)據(jù)處理系統(tǒng)都采用開放系統(tǒng)結(jié)構(gòu)的客戶機/服務(wù)器網(wǎng)絡(luò)模式,即客戶機提出任務(wù)請求,通過網(wǎng)絡(luò)發(fā)送給服務(wù)器,由服務(wù)器做相應(yīng)處理,執(zhí)行被請求的任務(wù),然后將結(jié)果返回給客戶機。例如:銀行ATM的前置機和數(shù)據(jù)處理的主機之間即構(gòu)成客戶機/服務(wù)器網(wǎng)絡(luò)模式;電話銀行的前置機和銀行數(shù)據(jù)處理機之間也構(gòu)成這種網(wǎng)絡(luò)模式結(jié)構(gòu)等。這樣,如何在前置機和數(shù)據(jù)主機之間進行信息交換,即進程網(wǎng)絡(luò)通信,就成為實現(xiàn)這種網(wǎng)絡(luò)模式的基礎(chǔ)。而TCP/IP的套接字技術(shù)是解這一問題的有力工具。它從提出時就一直發(fā)揮著愈來愈重要的作用,并已成為UNIX操作系統(tǒng)下TCP/IP網(wǎng)絡(luò)編程標準;甚至WINDOW、JAVA都配有它的通用接口。有了這個強有力的工具,我們可以實現(xiàn)異種機、異種操作系統(tǒng)應(yīng)用程序間的相互連接和通信。套接字是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。可以將套接字看作不同主機間的進程進行雙向通信的端點。它構(gòu)成了在單個主機內(nèi)及整個網(wǎng)際間的編程界面。一般來說,跨機應(yīng)用進程之間要在網(wǎng)絡(luò)環(huán)境下進行通信,必須要在網(wǎng)絡(luò)的每一端都要建立一個套接字,兩個套接字之間是可以建立連接的,也是可以無連接的,并通過對套接字的“讀”、“寫”操作實現(xiàn)網(wǎng)絡(luò)通信功能。類似于UNIX系統(tǒng)中的I/O概念,像文件那樣有打開、讀、寫、關(guān)閉的方式。2.4 開發(fā)工具與運行環(huán)境 本實驗的主要開發(fā)工具是Eclipse,Eclipse是開放源代碼的項目,可以在網(wǎng)上免費下載Eclipse的最新版本,一般Eclipse提供幾個下載版本:Release,Stable Build,Integration Build和Nightly Build。Eclipse本身是用Java語言編寫,但下載的壓縮包中并不包含Java運行環(huán)境,需要用戶自己另行安裝JRE,并且要在操作系統(tǒng)的環(huán)境變量中指明JRE中bin的路徑。2.5 其他技術(shù)諸如 Web 服務(wù)器、數(shù)據(jù)庫服務(wù)器、文件服務(wù)器或郵件服務(wù)器之類的許多服務(wù)器應(yīng)用程序都面向處理來自某些遠程來源的大量短小的任務(wù)。請求以某種方式到達服務(wù)器,這種方式可能是通過網(wǎng)絡(luò)協(xié)議(例如 HTTP、FTP 或 POP)、通過 JMS 隊列或者可能通過輪詢數(shù)據(jù)庫。不管請求如何到達,服務(wù)器應(yīng)用程序中經(jīng)常出現(xiàn)的情況是:單個任務(wù)處理的時間很短而請求的數(shù)目卻是巨大的。構(gòu)建服務(wù)器應(yīng)用程序的一個過于簡單的模型應(yīng)該是:每當一個請求到達就創(chuàng)建一個新線程,然后在新線程中為請求服務(wù)。實際上,對于原型開發(fā)這種方法工作得很好,但如果試圖部署以這種方式運行的服務(wù)器應(yīng)用程序,那么這種方法的嚴重不足就很明顯。每個請求對應(yīng)一個線程(thread-per-request)方法的不足之一是:為每個請求創(chuàng)建一個新線程的開銷很大;為每個請求創(chuàng)建新線程的服務(wù)器在創(chuàng)建和銷毀線程上花費的時間和消耗的系統(tǒng)資源要比花在處理實際的用戶請求的時間和資源更多。除了創(chuàng)建和銷毀線程的開銷之外,活動的線程也消耗系統(tǒng)資源。在一個 JVM 里創(chuàng)建太多的線程可能會導(dǎo)致系統(tǒng)由于過度消耗內(nèi)存而用完內(nèi)存或“切換過度”。為了防止資源不足,服務(wù)器應(yīng)用程序需要一些辦法來限制任何給定時刻處理的請求數(shù)目。線程池為線程生命周期開銷問題和資源不足問題提供了解決方案。通過對多個任務(wù)重用線程,線程創(chuàng)建的開銷被分攤到了多個任務(wù)上。其好處是,因為在請求到達時線程已經(jīng)存在,所以無意中也消除了線程創(chuàng)建所帶來的延遲。這樣,就可以立即為請求服務(wù),使應(yīng)用程序響應(yīng)更快。而且,通過適當?shù)卣{(diào)整線程池中的線程數(shù)目,也就是當請求的數(shù)目超過某個閾值時,就強制其它任何新到的請求一直等待,直到獲得一個線程來處理為止,從而可以防止資源不足。3 網(wǎng)絡(luò)聊天系統(tǒng)的分析與設(shè)計3.1 可行性分析計算機技術(shù)的快速發(fā)展,特別是計算機網(wǎng)絡(luò)的發(fā)展,越來越深刻的改變了人們生活的方方面面。使得人們能以更低廉的價格,開發(fā)出更方便、更實用的網(wǎng)絡(luò)工具。各種在線服務(wù)系統(tǒng),更是深刻的影響了人們的聯(lián)系和交流方式,使得人們可以自傲遠隔千里之遙隨時通訊。過去的種種陳舊的聯(lián)系方式,已經(jīng)不能滿足現(xiàn)代生活的需要。網(wǎng)上聊天系統(tǒng)作為一種方便人們之間聯(lián)系的使用系統(tǒng)便應(yīng)運而生。網(wǎng)上聊天系統(tǒng)是人們進行交流和聯(lián)系提供的一個平臺。通過提供完善的網(wǎng)上聊天系統(tǒng)的管理,可以達到增進人與人之間的交流和溝通。在Internet上,qq,MSN,飛信等網(wǎng)上軟件,極大程度方便了各地友人之間的聯(lián)系,也使世界一下子縮小了,不管你在哪里,只要你上了網(wǎng),打開這些軟件,就可以給你的朋友發(fā)信息?,F(xiàn)在,企業(yè),機關(guān),學(xué)校都紛紛建立起自己的局域網(wǎng)。在局域網(wǎng)里,雖然可以通過文件共享的方式進行通訊嗎,但單單使用這種方式,是不方便的。首先在局域網(wǎng)里的網(wǎng)上鄰居,只能看到機器名,不清楚對方是誰,也不知道對方機器有什么資源可以共享,而且當局域網(wǎng)機器很多時,這種方式更加麻煩。現(xiàn)在有很多局域網(wǎng)內(nèi)機器不使用服務(wù)器通訊軟件,這種軟件小巧而且輕便,也能解決一部分問題。但是有服務(wù)器通訊的軟件,有著不可比擬的優(yōu)勢;可以發(fā)送離線信息,不管用戶當時是否在線,下線上線時,就可以看到這條信息了;可以保存用戶的個人信息或介紹,供人查看。而且,不適用服務(wù)器的通訊軟件,是以機器為通訊單元的,而有服務(wù)器的通訊軟件是以人為通訊單元的??傊?,有服務(wù)器的通訊軟件在局域網(wǎng)上,還是有很大的用途的,喂局域網(wǎng)上通訊,帶來極大地方便。3.2 需求分析使用JAVA及數(shù)據(jù)庫技術(shù)相結(jié)合,編寫一個聊天系統(tǒng)軟件。這個系統(tǒng)提供多個用戶及時并發(fā)通信的平臺。未注冊用戶可以注冊成系統(tǒng)會員,已注冊用戶可以通過登錄進入聊天系統(tǒng)。在系統(tǒng)中用戶可以選擇進入某一個聊天分區(qū)去聊天,也可以與特定的用戶聊天。提供一個在線實時溝通平臺。進入系統(tǒng)的用戶可以選擇自己的聊天對象。用戶沒有專業(yè)的計算機知識,所以需要一個友好簡單的界面。用戶有娛樂需要,所以需要提供娛樂節(jié)點。用戶通過軟件進行溝通,應(yīng)提供多種方式,如網(wǎng)絡(luò)視頻,音頻聊天等。要求可靠性高,能在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應(yīng)處理,比如網(wǎng)絡(luò)初始化失敗、服務(wù)器不在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的錯誤以后,可以盡量安全的退出程序。在程序的設(shè)計過程中,要求能盡可能多的設(shè)想到用戶使用過程中可能發(fā)生的事件,并能在判斷事件后做出相應(yīng)的處理,使程序具有較高的容錯性能。具有宜操作性,程序簡單易懂,容易上手使用。設(shè)計界面是,簡化界面的復(fù)雜性,模擬QQ等現(xiàn)有即時通訊工具的界面,使用戶能很容易看懂并使用。模塊化設(shè)計此軟件的功能,不同的模塊實現(xiàn)不同的功能,使得軟件易于以后的維護與擴展,在以后可以更好的完善本軟件的功能,更方便于在工作中的應(yīng)用。3.3 系統(tǒng)總體設(shè)計 根據(jù)網(wǎng)絡(luò)應(yīng)用程序的特點,網(wǎng)絡(luò)在線聊天系統(tǒng)應(yīng)就有即時,快速的特點。服務(wù)器端和客戶端應(yīng)就有不同的功能特性。對于服務(wù)器端應(yīng)能夠正確地建立與客戶端的連接并能正確地斷開,能即時地接收、處理和發(fā)送接收到的數(shù)據(jù)。能及時地通知在線用戶當前好友在線狀況,能夠處理非正常數(shù)據(jù)的能力。對于客戶端應(yīng)能夠快速地檢查是否能夠連接到服務(wù)器端。能正確的獲得和反映當前好友在線情況。能夠正確的與特定好友交流。能及時地接收到服務(wù)器端地數(shù)據(jù),并能即時處理數(shù)據(jù),并能將處理結(jié)果反映給用戶。服務(wù)器端能夠正確地、無沖突地啟動服務(wù)器。監(jiān)聽指定的端口,等待用戶的連接。建立與客戶端的邏輯連接,并能通知其他好友。向新進入的好友發(fā)出已上線的好友名單。接收客戶端的消息請求,并能正確無誤地處理消息,并能發(fā)出消息到客戶端。反映當前在線人數(shù)和在線好友狀況。及時地反映發(fā)出地消息和聊天消息。當好友斷開與服務(wù)器端地連接時,服務(wù)器能夠正確地斷開連接,并通知其他用戶。當用戶違反聊天系統(tǒng)規(guī)定時,服務(wù)器系統(tǒng)管理員能夠斷開與此用戶的連接。當服務(wù)器關(guān)閉時,應(yīng)通知所有用戶??蛻舳四軌蛘_啟動應(yīng)用程序,并能向服務(wù)器發(fā)出連接請求。反映當前好友在線情況。能夠向群體或指定好友發(fā)出消息能夠及時接收好友發(fā)出消息,并通知用戶。能夠正確地斷開與服務(wù)器端地的連接。3.3.1 系統(tǒng)架構(gòu)模型 系統(tǒng)的整體結(jié)構(gòu)如圖所示,包含了主界面,注冊模塊,登陸模塊,私聊模塊,群聊模塊,首先要在注冊模塊完成注冊,然后進入登陸模塊登入才能進入主界面,主界面是一個選擇可以選擇進入私聊模塊還是群聊模塊。3.3.2 功能模塊設(shè)計登陸模塊,需要完成登陸界面,和登陸會話的維持。注冊模塊,需要完成向數(shù)據(jù)庫插入用戶數(shù)據(jù)然后進行重復(fù)性檢查。私聊模塊,構(gòu)建兩個套接字的連接方式,完成單獨的連接。群聊模塊,構(gòu)建一個廣播室,所有套接字的發(fā)送都回轉(zhuǎn)發(fā)到該廣播室內(nèi)的其他套接字當中。3.3.3 系統(tǒng)通信設(shè)計客戶端主要通過套接字請求發(fā)送對方的ID給服務(wù)器,服務(wù)器在數(shù)據(jù)庫當中確認該用戶在線就把對應(yīng)的用戶地址返回給客戶端,這個時候客戶端就可以主動去連接對應(yīng)的用戶,用戶在收到連接請求以后需要確認該請求來自服務(wù)器分發(fā)的任務(wù),經(jīng)過驗證以后就可以去和客戶端建立起套接字的連接。該過程的主體是客戶端到服務(wù)器的請求,需要遵循預(yù)先定義好的協(xié)議進行請求,比如發(fā)送指令“get userid a”給服務(wù)器,并且?guī)仙矸蒡炞C,也就是密碼的加密信息給服務(wù)器,服務(wù)器進行驗證以后就可以在數(shù)據(jù)庫當中查找到對應(yīng)的客戶信心并且把a的信息返回給客戶端,這個時候客戶端就能夠主動發(fā)起和a的連接,而不再需要經(jīng)過服務(wù)器的確認了,其中有一個問題就是如果中途因為網(wǎng)絡(luò)原因斷線的話,需要重新請求服務(wù)器獲取用戶的在線狀態(tài),這樣就能完成短線的重連。當然客戶端的直接連接并不是完全沒有防御的,必須對被動連接的源進行驗證以后才能允許對應(yīng)的套接字進行連接,比如運用私有協(xié)議,或者自定義的加密方式等等,這些手段在端到端上可以起到加密的作用。最后聊天的內(nèi)容按照自定義的格式,以0xEEFF開頭然后緊跟一個時間戳,表示消息發(fā)送的時間。3.3.4 數(shù)據(jù)庫設(shè)計表3.1user的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述id自動編號是自動編號password文本50否密碼profile文本256否簡介time日期/時間否活躍時間表3.2message的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述id文本是發(fā)送者dst文本是接受者time日期/時間是發(fā)表時間用戶表是一個用戶注冊表,每有一個用戶注冊,表中就會添加一項,修改密碼則對應(yīng)的是字段的更新。另外消息表是一個消息歷史記錄的表,每次發(fā)送消息的時候都會更新這個表,首先id是指發(fā)送著的id,而dst指的是接受者的id,時間以發(fā)送方發(fā)出消息的時間為準,消息目前只支持文字,不支持其他格式例如圖片的信息。4 網(wǎng)絡(luò)聊天系統(tǒng)詳細設(shè)計及實現(xiàn)4.1 服務(wù)器端設(shè)計與實現(xiàn)服務(wù)端主要實現(xiàn)的是TCP連接的管理,當有一個消息到的時候需要轉(zhuǎn)發(fā)給對應(yīng)的客戶端,這里定義了幾個事件,首先是連接,斷開,和發(fā)送,對于連接事件,確定對應(yīng)的用戶在線,對于斷開事件則是把對應(yīng)用戶從在線狀態(tài)的列表中去除,對于發(fā)送事件,確認發(fā)送方和接收方同時在線,則把消息發(fā)送到接收方。服務(wù)器會對邏輯進行處理。圖 4.1 消息的狀態(tài)轉(zhuǎn)換圖 4.2 服務(wù)器的主流程服務(wù)器首先會處理請求,然后用戶列表會進行更新,始終保持該列表和在線的用戶同步,對于需要轉(zhuǎn)發(fā)的請求,發(fā)送給對應(yīng)的接收方,目前的設(shè)計是一個單點設(shè)計,所有的請求都要經(jīng)過服務(wù)器的轉(zhuǎn)發(fā)才能到達接收方,最后達到聊天的目的。4.1.1 服務(wù)器等待連接進程/線程設(shè)計圖4.3 監(jiān)聽線程處理邏輯首先,服務(wù)器開啟監(jiān)聽線程,當有消息到達的時候就復(fù)制處理線程,然后重新進行監(jiān)聽,從而到達并發(fā)處理請求的目的。服務(wù)器端(Server)是指在網(wǎng)絡(luò)編程中被動等待連接的程序,服務(wù)器端一般實現(xiàn)程序的核心邏輯以及數(shù)據(jù)存儲等核心功能。服務(wù)器端的編程步驟和客戶端不同,是由四個步驟實現(xiàn), 服務(wù)器端屬于被動等待連接,所以服務(wù)器端啟動以后,不需要發(fā)起連接,而只需要監(jiān)聽本地計算機的某個固定端口即可。這個端口就是服務(wù)器端開放給客戶端的端口,服務(wù)器端程序運行的本地計算機的IP地址就是服務(wù)器端程序的IP地址。獲得連接,當客戶端連接到服務(wù)器端時,服務(wù)器端就可以獲得一個連接,這個連接包含客戶端的信息,例如客戶端IP地址等等,服務(wù)器端和客戶端也通過該連接進行數(shù)據(jù)交換。一般在服務(wù)器端編程中,當獲得連接時,需要開啟專門的線程處理該連接,每個連接都由獨立的線程實現(xiàn)。交換數(shù)據(jù),服務(wù)器端通過獲得的連接進行數(shù)據(jù)交換。服務(wù)器端的數(shù)據(jù)交換步驟是首先接收客戶端發(fā)送過來的數(shù)據(jù),然后進行邏輯處理,再把處理以后的結(jié)果數(shù)據(jù)發(fā)送給客戶端。簡單來說,就是先接收再發(fā)送,這個和客戶端的數(shù)據(jù)交換數(shù)序不同。其實,服務(wù)器端獲得的連接和客戶端連接是一樣的,只是數(shù)據(jù)交換的步驟不同。當然,服務(wù)器端的數(shù)據(jù)交換也是可以多次進行的。在數(shù)據(jù)交換完成以后,關(guān)閉和客戶端的連接。這就是服務(wù)器端編程的模型,只是TCP方式是需要建立連接的,對于服務(wù)器端的壓力比較大,而UDP是不需要建立連接的,對于服務(wù)器端的壓力比較小罷了。4.1.2 服務(wù)器處理客戶端信息進程/線程設(shè)計我們應(yīng)該充分利用多核的優(yōu)勢,這會是日后的發(fā)展方向。讓每個進程要么處理大流量小計算量的工作;要么處理小流量大計算量的工作。這樣多個進程放在一臺物理機器上可以更加充分的利用機器的資源。單線程多進程的設(shè)計,個人認為更能發(fā)揮多核的優(yōu)勢。這是因為沒有了鎖,每個線程都可以以最大吞吐量工作。增加的負擔(dān)只是進程間的數(shù)據(jù)復(fù)制,在網(wǎng)游這種復(fù)雜邏輯的系統(tǒng)中,一般不會比邏輯計算更早成為瓶頸。如果擔(dān)心,單線程沒有利用多核計算的優(yōu)勢,不妨考慮以下的例子:計算 a/b+c/d+e/f ,如果我們在一個進程中開三條線程利用三個核同時計算 a/b c/d e/f 固然不錯,但它增加了程序設(shè)計的復(fù)雜度。而換個思路,做成三個進程,第一個只算 a/b 把結(jié)果交給第二個進程去算 c/d 于之的和,再交個第三個進程算 e/f 。對于單次運算來算,雖然成本增加了。它需要做額外的進程間通訊復(fù)制中間結(jié)果。但,如果我們有大量連續(xù)的這樣的計算要做,整體的吞吐量卻增加了。因為在算某次的 a/b 的時候,前一次的 c/d 可能在另一個核中并行計算著。4.2 客戶端設(shè)計與實現(xiàn)4.2.1 登陸模塊登陸模塊的實現(xiàn)過程有下面幾個步驟:(1)獲取用戶名,用戶選擇的頭像,服務(wù)器的IP地址和端口號的信息;(2)確認登陸后初始化,創(chuàng)建套接字,連接服務(wù)器,向服務(wù)器發(fā)送用戶登陸信息,使其他在線用戶得到本用戶上線的消息;(3)初始化過程中顯示在線好友,并且對用戶的好友上、下線進行管理。4.2.2 主界面模塊整個程序是以服務(wù)器與客戶端之間的通信事件而驅(qū)動的,本程序劃分為三大模塊,但最基礎(chǔ)的都是得到服務(wù)器傳來的消息,對消息進行判別再分別交給不同模塊進行處理。本設(shè)計的接收消息過程很抽象,筆者在對設(shè)計詳述之前首先將客戶端接收消息的過程提純出來,其示意圖如圖4.1所示。事先已對套接字和端口進行過綁定,一旦端口有數(shù)據(jù)來到,就會觸發(fā)CMainSocket對象的CMainSocket:OnReceive()函數(shù)。OnReceive()函數(shù)中調(diào)用的Receive()函數(shù)就可以得到端口進來的以Message結(jié)構(gòu)體封裝的消息。再將Message的內(nèi)容作為WM_RECEIVEMESSAGE的WPARAM參數(shù)發(fā)送。WM_RECEIVEMESSAGE為自定義的消息,CMyQQClientDlg的OnReceiveMessage()為此消息對應(yīng)的消息處理函數(shù)。OnReceiveMessage()函數(shù)處理從wParam參數(shù)中傳送來的以Message結(jié)構(gòu)體封裝的消息內(nèi)容,針對不同的消息類型進行不同的處理。在以下的每個模塊中,會將OnReceiveMessage()函數(shù)進行分解,各模塊只針對自己的部分進行處理。圖4.4 接收消息過程管理模塊流程圖如圖4.5所示。管理模塊的功能實現(xiàn)最主要由CLoginLoad 、CMyQQClientDlg兩個類來實現(xiàn)。在下文介紹具體功能時,會對兩個對話框控件進行分析。圖4.5 管理模塊流程圖CLoginLoad :CLoginLoad是用戶登陸的對話框,基于CDialog類。CloginLoad的登錄對話框的界面如圖4-3所示。其主要功能是獲取用戶名、用戶選擇的頭像等信息,并且填寫服務(wù)器IP與端口號。此對話框主要有兩個按鈕,登陸按鈕和退出按鈕。用戶輸入昵稱和密碼后可按登陸按鈕,如不想登陸按退出按鈕退出程序。圖4.6 CLoginLoad用戶登陸界面CMyQQClientDlg:CMyQQClientDlg是用戶登陸后顯示好友列表的對話框,基于CDialog類,CMyQQClientDlg也是本程序最核心的對話框。此對話框只響應(yīng)用戶雙擊圖標的事件,雙擊后,創(chuàng)建聊天對話框,然后開始進行聊天。CMyQQClientDlg對話框的界面如圖4.7所示。圖4.7 CMyQQClientDlg好友列表對話框4.2.3 私聊模塊發(fā)送信息模塊聊天模塊中,發(fā)送信息模塊的實現(xiàn)過程有下面幾個步驟:(1)用戶選擇一個好友為聊天對象;(2)識別是否已經(jīng)與此好友處于聊天狀態(tài)(有對應(yīng)的聊天對話框打開),已處于聊天狀態(tài)的,將該對話框顯示到前臺,未處于聊天狀態(tài)的,創(chuàng)建一個新的對話框;(3)用戶按下發(fā)送按鈕后,將聊天內(nèi)容發(fā)送出去(服務(wù)器接收);(4)在本地即時聊天內(nèi)容顯示的編輯框中添加發(fā)送的內(nèi)容。2. 接收信息模塊聊天模塊中,接收信息模塊的實現(xiàn)過程有下面幾個步驟:(1)判斷接收到信息的類型,是否為好友發(fā)來信息;(2)若該好友第一次發(fā)送信息(沒有與此好友聊天的對話框),提示用戶有新的消息;(3)用戶按下查看消息的提示后,創(chuàng)建新的對話框,加到對話框鏈表中并顯示該對話框,如果已經(jīng)和此好友處于聊天狀態(tài),直接將對應(yīng)對話框調(diào)到前臺;(4)在對應(yīng)的對話框中顯示傳遞過來的消息。圖4.8 CchatDialog用戶聊天對話框聊天模塊主要由CChatDialog、CChatAction兩個類來實現(xiàn)。CChatDialog:CChatDialog是與好友進行聊天的對話框,基于CDialog類。CChatDialog共有兩個Button控件和兩個RichEdit控件。第一個RichEdit用于顯示聊天記錄,即雙方對話的內(nèi)容,第二個RichEdit用于用戶輸入消息。發(fā)送按鈕響應(yīng)用戶的發(fā)送請求,即用戶在輸入消息后按下按鈕,程序即將RichEdit的內(nèi)容發(fā)送給服務(wù)器。查看聊天記錄是用于響應(yīng)用戶查看聊天記錄的請求。此部分內(nèi)容在聊天記錄的管理模塊中詳述。CChatDialog的界面如圖4.8所示。CChatAction:CChatAction是用于提醒用戶有新消息的提示對話框,基于CDialog類。CChatAction有一個Static Text控件和一個Button按鈕。Static Text的靜態(tài)文本框用于顯示“您有一條新消息,請注意查收”的提示信息。Butoon用于響應(yīng)用戶查看新消息的事件。CChatAction的界面如圖4.9所示。圖4.9 CChatAction對話框基于CSocket類的CMainSocket類中,定義了類型為 CObArray 的m_ChatDlgs成員變量,m_ChatDlgs對所有創(chuàng)建好的聊天對話框進行了管理。是本論文設(shè)計的聊天程序中應(yīng)用到的核心的技術(shù)。聊天事件的產(chǎn)生有兩種可能性,一是用戶自身主動向好友發(fā)出聊天請求,二是好友向用戶發(fā)出聊天請求,用戶接受請求。兩種事件中,無論是哪種形式,只要聊天事件開始,程序就為用戶創(chuàng)建一個新的類型為CChatDialog的聊天對話框,對話框以m_ClientName和m_UserName為標識(因為聊天事件是兩方之間的對話,只要雙方都確定下來了,就能確定此聊天事件)。再將新建的聊天對話框加入到鏈表中。對于信息的傳送,聊天記錄的查看等過程中,都需要對m_ChatDlgs的鏈表進行操作。m_ChatDlgs與CChatDialog的關(guān)系如圖4.10所示。在CMainSocket類中,改寫了CSocket的OnReceive()函數(shù),一旦有消息進入端口,就會觸發(fā)OnReceive()函數(shù),在OnReceive()內(nèi)部調(diào)用Receive()函數(shù),就得到了信息的內(nèi)容。之后可以對消息進行一系列的處理。本設(shè)計中自定義了WM_RECEIVEMESSAGE的消息,作為端口得到消息的提示,用SendMessage()將WM_RECEIVEMESSAGE消息發(fā)送出,并在程序中添加對應(yīng)得消息響應(yīng)函數(shù),來處理端口得到的消息。消息隨著WM_RECEIVEMESSAGE的WPARAM流動。圖4.10 m_ChatDlgs與CChatDialog的關(guān)系發(fā)送信息的主要流程如圖4.11所示。圖4.11 發(fā)送信息流程圖4.2.4 聊天記錄管理模塊聊天記錄管理模塊的實現(xiàn)過程有下面幾個步驟:(1)用戶請求查看聊天記錄,向服務(wù)器發(fā)送請求;(2)服務(wù)器向用戶發(fā)送對應(yīng)的聊天記錄,客戶端接收信息,識別發(fā)送的信息為聊天記錄;(3)顯示聊天記錄;(4)如果用戶按下保存聊天記錄按鈕,則保存聊天記錄。用戶在進行聊天的過程中,可能會按下“查看聊天記錄”的按鈕,聊天只關(guān)系到用戶雙方,默認為用戶想查看的聊天記錄為自己和正在對話的另一方的內(nèi)容。所以服務(wù)器端在進行數(shù)據(jù)庫的查找時,也是以聊天雙方的姓名匹配為查找條件的。聊天記錄管理模塊流程圖如圖4.12所示。圖4.12 聊天記錄管理模塊聊天記錄管理模塊中最主要涉及到一個類CReadSession,該類是用于用戶請求查看聊天記錄后,用于顯示聊天記錄的對話框。該對話框基于CDialog類。主要有一個Button控件,用于保存聊天記錄。該對話框如圖4-12所示。圖4.13 聊天記錄對話框5 測試5.1 軟件測試概述 軟件測試是這樣的一個過程,它執(zhí)行一個程序或一個系統(tǒng),目的是發(fā)現(xiàn)錯誤?;蛘撸ㄟ@樣一些活動,只要這些活動是評價一個程序(或系統(tǒng))的屬性和能力、以決定程序或系統(tǒng)是否滿足了要求。軟件和物理加工不一樣,物理加工接受了輸入,就產(chǎn)生輸出。軟件不一樣的地方在于它的失效方式不同。絕大部分物理系統(tǒng)以固定(通常比較少)的方式失效。然而,軟件卻有多種奇異的失效方式。檢測所有的失效模式,通常是行不通的。和大多數(shù)物理系統(tǒng)不同,軟件中的大部分缺陷是設(shè)計的錯誤,不是制造上的缺陷。軟件不會用壞,也不會磨損一般地說,若不升級和退市,它就不會改變。所以,軟件一旦發(fā)布了,設(shè)計上的缺陷或者叫bug就會埋入到軟件之中并一直留在那里,直到有一天它會被觸發(fā)而發(fā)作。在一個中等大小的軟件模塊里,軟件的bugs幾乎總是存在的。這不是因為程序員的粗心和不負責(zé)任,而是因為軟件的復(fù)雜性通常是不可處理的,人管理復(fù)雜性的能力是有限的。還有一點,對應(yīng)復(fù)雜系統(tǒng),設(shè)計的缺陷是不可能根除的。同樣由于復(fù)雜性,發(fā)現(xiàn)軟件中設(shè)計的缺陷也是很困難的。因為軟件和任何數(shù)字系統(tǒng)不是連續(xù)的,測試邊界值對保證其正確性是不夠的。所有可能的值都需要測試和驗證,但是完全的測試是不可行的。對于一個簡單不過的小程序,兩個32位的整數(shù)相加,會有2的64次方個測試用例,即使每秒鐘測試幾千個用例,完全測試這個小程序也需要幾百年。很顯然,對于一個實際的軟件模塊,其復(fù)雜性遠遠超過剛才舉的那個例子。如果輸入來自真實世界,問題將變得更加糟糕,因為時間和不可預(yù)測的環(huán)境因素,以及人的交互,都有可能被考慮成為輸入?yún)?shù)。程序的動態(tài)性使問題更加復(fù)雜。如果在初步測試中發(fā)現(xiàn)了一個失效,給代碼做了修改,軟件可能現(xiàn)在通過了一個原來不能通過的測試用例。但是原來通過的測試用例現(xiàn)在不能再保證通過了??紤]到這種可能性,測試應(yīng)該重新開始??蓽y試的費用成本可是有限制的。 5.2 測試策略與結(jié)果分析針對本軟件項目制定測試計劃。1.登陸功能輸入條件編號有效等價類編號無效等價類輸入昵稱1楊穎or許野or王元杰4NULL輸入服務(wù)器IP2 or 服務(wù)器主機IP地址5NULL6非 and 非服務(wù)器主機IP地址點擊確定按鈕按鈕3單擊確定按鈕7未單擊確定按鈕8單機取消按鈕測試用例用例編號用例預(yù)期輸出覆蓋等價類輸入結(jié)果1昵稱:楊穎服務(wù)器IP:單擊確定按鈕登陸成功跳轉(zhuǎn)至主界面1,2,3輸入昵稱:楊穎輸入服務(wù)器IP:單擊確定按鈕正確2昵稱:服務(wù)器IP:單擊確定按鈕提示連接服務(wù)器失敗,再試一次?4輸入昵稱:輸入服務(wù)器IP:單擊確定按鈕不正確3昵稱:楊穎服務(wù)器IP:單擊確定按鈕提示連接服務(wù)器失敗,再試一次?5輸入昵稱:楊穎輸入服務(wù)器IP:單擊確定按鈕不正確4昵稱:楊穎服務(wù)器IP:單擊確定按鈕提示連接服務(wù)器失敗,再試一次?6輸入昵稱:楊穎輸入服務(wù)器IP:單擊確定按鈕不正確5昵稱:楊穎服務(wù)器IP:7輸入昵稱:楊穎輸入服務(wù)器IP:不正確6昵稱:服務(wù)器IP:單擊取消按鈕回到上一界面8輸入昵稱:楊穎輸入服務(wù)器IP:單擊取消按鈕不正確2.選擇聊天方式輸入條件編號有效等價類編號無效等價類選擇聊天方式1選擇私聊3無操作2選擇群聊測試用例用例編號用例預(yù)期輸出覆蓋等價類輸入結(jié)果1選擇私聊選擇成功跳轉(zhuǎn)至私聊界面1單擊私聊按鈕正確2選擇群聊選擇成功跳轉(zhuǎn)至群聊界面2單擊群聊按鈕正確3無操作依舊停留在主界面3無不正確3.選擇聊天對象輸入條件編號有效等價類編號無效等價類選擇聊天 對象1選擇用戶3無操作2直接在輸入框打字測試用例用例編號用例預(yù)期輸出覆蓋等價類輸入結(jié)果1選擇某一用戶用戶選擇成功跳轉(zhuǎn)至該用戶私聊界面1雙擊擊相應(yīng)用戶正確2在輸入框打字信息顯示在公屏上2雙擊相應(yīng)群正確3無操作依舊停留在上一界面3無不正確4.開始聊天輸入條件編號有效等價類編號無效等價類輸入信息1輸入相應(yīng)的信息或文字3未輸入任何東西發(fā)送按鈕2點擊發(fā)送按鈕4未按下發(fā)送按鈕測試用例用例編號用例預(yù)期輸出覆蓋等價類輸入結(jié)果1信息:123單擊按鈕信息123發(fā)送至對方1,2,輸入信息:123單擊按鈕正確2信息:123未單擊按鈕發(fā)送失敗4輸入信息:123未單擊按鈕不正確3信息:空單擊按鈕發(fā)送失敗3輸入信息:空單擊按鈕不正確4信息:空未單擊按鈕發(fā)送失敗3,4輸入信息:空未單擊按鈕不正確5.退出登錄輸入條件編號有效等價類編號無效等價類退出操作1直接點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊是4無操作2直接點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊否3直接點擊主界面的斷開連接5在點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊取消測試用例用例編號用例預(yù)期輸出覆蓋等價類輸入結(jié)果1點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊是出現(xiàn)保存聊天記錄的界面,并在點擊保存后退出服務(wù)器界面1直接點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊是正確2點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊否退出服務(wù)器界面2直接點擊客戶端-退出按鍵,并在出現(xiàn)的提示框,點擊否正確3點擊主界面的斷開連接回到客戶端初始界面3直接點擊主界面的斷開連接正確4無操作依舊停留在聊天界面4無操作不正確5點擊客戶端-退出按鍵,
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海綿城市建設(shè)-洞察及研究
- 桂林山水職業(yè)學(xué)院《科學(xué)社會主義專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 預(yù)防兒童超重肥胖實施方案
- 2025年液罐車項目申請報告模板
- 南通大學(xué)《化妝品微生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西水利職業(yè)技術(shù)學(xué)院《整合營銷傳播》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南中醫(yī)藥大學(xué)湘杏學(xué)院《數(shù)字媒體藝術(shù)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 南昌大學(xué)《基礎(chǔ)藥理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 靜脈炎護理課件
- 深淺變化美術(shù)活動教案
- (正式版)SHT 3225-2024 石油化工安全儀表系統(tǒng)安全完整性等級設(shè)計規(guī)范
- 高中語文《望海潮》《揚州慢》聯(lián)讀+課件+統(tǒng)編版高中語文選擇性必修下冊
- 中考教學(xué)工作總結(jié)7篇
- 貓咪洗護免責(zé)協(xié)議書
- 產(chǎn)后出血患者血液管理專家共識
- 中國流行音樂的發(fā)展史
- 2024年3月2日湖北遴選筆試真題及解析(地市級卷)
- 能源經(jīng)營產(chǎn)品技術(shù)規(guī)范-三輪兩輪電動車鋰電池組技術(shù)規(guī)范V1.0
- 大學(xué)專業(yè)選擇演講課件
- 茂名酒店行業(yè)報告
- 富士康大過管理制度
評論
0/150
提交評論