版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 (二二 一一 四四 年年 六六 月月 本科畢業(yè)設(shè)計說明書本科畢業(yè)設(shè)計說明書學(xué)校代碼:學(xué)校代碼: 學(xué)學(xué) 號:號: 題題 目目: 流媒體點播系統(tǒng)流媒體點播系統(tǒng)學(xué)學(xué)生生姓姓名名 :學(xué)學(xué) 院院 :系系 別別:專專 業(yè)業(yè):班班 級級: 指指導(dǎo)導(dǎo)教教師師 :內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書摘 要隨著生活水平的提高,互聯(lián)網(wǎng)越發(fā)成為人們生活的重要組成部分。上網(wǎng)看電影和玩游戲是主要的網(wǎng)絡(luò)娛樂的重要分支,數(shù)據(jù)表明該類需求比重在未來將長時間持續(xù)增長。在當今多媒體時代,以往電視機模式(運營商方主動播放,客戶被動接收)已經(jīng)不再能夠滿足用戶的需求,用戶希望能根據(jù)自身喜歡,選擇性對視頻內(nèi)容進行觀看。寬帶 VOD 視頻點播
2、技術(shù)因良好的人機交互性和流媒體傳輸技術(shù)倍受教育、娛樂等行業(yè)青睞。隨著互聯(lián)網(wǎng)的迅速崛起,C/S 結(jié)構(gòu)的系統(tǒng)可以在任何一臺的計算機上使用,系統(tǒng)的部署和維護只是在服務(wù)器上進行,這樣的模式既能減少管理的成本,更重要的是它能很方便的實現(xiàn)用戶與系統(tǒng)的交互,更快地響應(yīng)用戶信息交互請求。本文從視頻點播系統(tǒng)的基本概念和流媒體技術(shù),實時網(wǎng)絡(luò)傳輸協(xié)議等方面講述了視頻點播系統(tǒng)的設(shè)計原理、軟件結(jié)構(gòu)和設(shè)計實現(xiàn),采用 C/S 模式開發(fā)一個方便易用的視頻點播系統(tǒng)。本視頻點播系統(tǒng)基于 MFC 編程思想,在微軟 Visual C+6.0 的開發(fā)平臺上設(shè)計,實現(xiàn)了點播服務(wù)器端和客戶端的相關(guān)功能。在服務(wù)器端實現(xiàn)用戶視頻文件的添加、刪
3、除、修改、顯示等功能??蛻舳酥饕獙崿F(xiàn)服務(wù)器端視頻的查找、下載、播放等功能。采用基本的 Access 數(shù)據(jù)庫,易于實現(xiàn),方便對數(shù)據(jù)庫進行管理。關(guān)鍵字:流媒體;視頻點播;C/S模式內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書AbstractWith the improvement of living standards, the Internet increasingly become an important part of peoples life. Watching movies and playing online games is an important branch of the main on
4、line entertainment, data show that this kind of demand will be sustained growth for a long time in the future. In todays multimedia era, past the TV model (operator side play actively, passive receiving customer) are no longer able to meet the needs of users, users hope to be able to according to th
5、eir own likes, selectivity to watch the video content. With the rapid rise of the Internet, the C/S structure of the system can be used on any of the computer, deployment and maintenance of system was done on the server, this model can not only reduce the cost of management, more important is that i
6、t can be very convenient for user interaction with the system, faster response to a user interactive information request. This article from the basic concept of video on demand system and streaming media technology, real-time network transmission protocol aspects about the design of video on demand
7、system principle, software structure and design, using C/S mode to develop a convenient and easy to use video on demand system.This video on demand system mainly implements the client and server related functions. Client implementation main server video search, download, play, etc. Because this syst
8、em is a small system, we adopt the basic Access database, easy to implement, easy to manage database.Keywords:Streaming media; Video on demand. C/S mode內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書目錄目錄引言.1第一章 系統(tǒng)簡介.21.1 流媒體相關(guān)概念 .21.2 流媒體傳輸相關(guān)原理 .21.3 VOD 視頻點播概念.31.4 VOD 視頻點播系統(tǒng)構(gòu)成.3第二章 開發(fā)環(huán)境及工具介紹.52.1 Visual C+ 6.0 .
9、52.1.1 Visual C+ .2 MFC 編程框架介紹 .52.2 數(shù)據(jù)庫平臺 .52.3 系統(tǒng)運行環(huán)境.6第三章 系統(tǒng)分析與設(shè)計.73.1 系統(tǒng)核心角色與功能 .83.2 系統(tǒng)界面 .93.3 軟件的基本架構(gòu) .103.4 軟件的系統(tǒng)架構(gòu) .103.5 系統(tǒng)數(shù)據(jù)庫設(shè)計 .11第四章 系統(tǒng)實現(xiàn).134.1 服務(wù)端界面實現(xiàn) .134.1.1 DataGrid 控件 .174.1.2 DataGrid 控件的使用 .174.2 客戶端界面實現(xiàn) .184.3 數(shù)據(jù)庫的訪問和操作.194.4 網(wǎng)絡(luò)通信 .23第五章 系統(tǒng)測試.275.1 功能測試 .27結(jié)論.28參考文獻.29內(nèi)
10、蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書謝辭.30內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書1引 言隨著人們生活水平的普遍提高,互聯(lián)網(wǎng)在人們的生活中所占的地位也越來越高,所以人們利用網(wǎng)絡(luò)傳輸圖片、語音和視頻信息的需求也越來越大。音視頻文件存儲時所占的體積一般都很龐大。雖然網(wǎng)絡(luò)的傳輸速度在不斷的提高,但是鑒于巨大的需求,網(wǎng)絡(luò)帶寬還是十分有限的,花幾分鐘甚至更長的時間來下載一個音頻或者視頻文件,是一件很讓人痛苦的事。但隨著流媒體技術(shù)的出現(xiàn),在一定的程度上使得網(wǎng)絡(luò)傳輸音視頻信息比較緩慢的情況得到明顯的改善。傳統(tǒng)的音視頻文件的播放需要完全下載后才能播放,要下載一個文件需要花費少則幾分鐘多則數(shù)小時。當時如果采用流媒體傳輸技
11、術(shù),就可實現(xiàn)數(shù)據(jù)的流式傳輸。使用流媒體技術(shù),服務(wù)器端將聲音、影像或者動畫連續(xù)且不間斷的傳送給客戶端,因此用戶想要觀看就不必等到整個文件都下載完成,而只需經(jīng)過幾秒鐘或幾十秒鐘的啟動緩沖就可以進行觀看,文件的剩余部分還會繼續(xù)從服務(wù)器端繼續(xù)下載。因此,本文從流媒體點播系統(tǒng)的基本概念和流媒體技術(shù)特點、實時網(wǎng)絡(luò)傳輸協(xié)議等方面講述了該視頻點播系統(tǒng)的設(shè)計原理、軟件結(jié)構(gòu)和設(shè)計實現(xiàn)等過程,開發(fā)實現(xiàn)了一個基于方便易用服務(wù)端/客戶端模式的流媒體點播系統(tǒng)。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書2第一章 系統(tǒng)簡介本文中主要論述的是流媒體視頻點播系統(tǒng),所以在本章對VOD流媒體視頻點播相關(guān)概念簡單介紹以便于理解本文的后續(xù)內(nèi)容。1
12、.1 流媒體概念簡介流媒體(Streaming Media)指在數(shù)據(jù)網(wǎng)絡(luò)上按時間先后次序傳輸和播放的連續(xù)音/視頻數(shù)據(jù)流。流媒體技術(shù)是一種專門用于網(wǎng)絡(luò)多媒體信息傳播和處理的新技術(shù),該技術(shù)能夠在網(wǎng)絡(luò)上實現(xiàn)傳播和播放同時進行的實時工作模式,相對于其他的一些音、視頻網(wǎng)絡(luò)傳輸和處理技術(shù),流媒體比較成熟和使用,目前已經(jīng)成為網(wǎng)上音、視頻(特別是實時音視頻)傳輸?shù)闹饕鉀Q方案。流媒體與常規(guī)視頻媒體之間的不同在于,流媒體可以邊下載邊播放?!傲鳌钡闹匾饔皿w現(xiàn)在可以明顯的節(jié)省時間,由于常規(guī)視頻媒體文件比較大,并且只能下載下來后才能播放,因此下載需要很長的時間,妨礙了信息的流通。流媒體的應(yīng)用是近幾年來 Intern
13、et 發(fā)展的產(chǎn)物,廣泛應(yīng)用于:視頻廣播、視頻點播(VOD)、視頻監(jiān)視、遠程教學(xué)、交互式游戲、視頻會議等??傊?,目前基于流媒體的應(yīng)用形式很多,并且發(fā)展也非??臁?.2 流媒體傳輸相關(guān)原理如果將音視頻文件的傳輸看作是一次接水的過程,那么過去的傳輸方式必須要等到一桶水接滿了才能使用它,但是這個等待的時間受到水流量的大小和桶的大小的影響。然而流式傳輸則是,把水頭龍打開,等待一小會,水就會源源不斷地流出來,并且可以做到隨接隨用。從這個意義上看,用流媒體這個詞是還是非常形象的。順序流式傳輸和實時流式傳輸是流媒體技術(shù)的主要特征。順序流式傳輸是順序下載,在下載文件的同時用戶可觀看再線媒體,在給定時刻,用戶只能
14、觀看已下載的那部分,而不能跳到還未下載的前頭部分,順序流式傳輸不象實時流式傳輸在傳輸期間根據(jù)用戶連接的速度做調(diào)整。這就意味著用戶在觀看媒體文件前,必須經(jīng)過延遲,對較慢的連接更是如此。它也不支持現(xiàn)場廣播,從某種意義上說,它是一種點播技術(shù)。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書3實時流式傳輸指保證媒體信號帶寬與網(wǎng)絡(luò)連接配匹,使媒體可被實時觀看到。實時流需要專用的流媒體服務(wù)器與傳輸協(xié)議與 HTTP 流式傳輸不同。實時流式傳輸總是實時傳送,特別適合現(xiàn)場事件,也支持隨機訪問,用戶可快進或后退以觀看前面或后面的內(nèi)容。1.3視頻點播概念VOD(Video On Demand)即視頻點播的意思,它是一種可以按用戶需
15、要點播節(jié)目的交互式視頻系統(tǒng)。視頻點播是一個用戶控制的視頻分配業(yè)務(wù),它允許每個用戶可以交互地訪問存儲在遠程服務(wù)器上的媒體信息。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,交互電視技術(shù)(ITV) 、網(wǎng)絡(luò)視頻點播技術(shù)(VOD)等多媒體技術(shù)在網(wǎng)絡(luò)系統(tǒng)中或 Internet/Intranet 中的應(yīng)用進入了一個新的里程。網(wǎng)絡(luò)多媒體技術(shù)的核心概念就是流(streaming) 。1.4 VOD視頻點播系統(tǒng)構(gòu)成VOD 視頻點播系統(tǒng)一般是由視頻服務(wù)器和客戶端和瀏覽器端組成的。它們之間通過網(wǎng)絡(luò)通信系統(tǒng)建立連接。結(jié)構(gòu)圖如下: 服務(wù)端客戶端網(wǎng)絡(luò)通信圖 1-1 VOD 視頻點播系統(tǒng)結(jié)構(gòu)圖該視頻點播系統(tǒng)的工作流程為:用戶用客戶端通過互聯(lián)網(wǎng)
16、,向服務(wù)器發(fā)出需求連接請求。如果客戶端的請求能夠到服務(wù)器并被服務(wù)器接收。一旦通過請求驗證后,服務(wù)器會把服務(wù)器數(shù)據(jù)庫上的節(jié)目單返回給客戶端。用戶客戶端播放器上會顯示可點播節(jié)目,用戶選擇需要的節(jié)目后,服務(wù)器就從媒體數(shù)據(jù)庫服務(wù)器中取出相應(yīng)的媒體內(nèi)容數(shù)據(jù)流。最后通過網(wǎng)絡(luò)把數(shù)據(jù)流傳送給客戶端,客戶端用播放器播放。1、視頻點播服務(wù)器(Server) 視頻點播服務(wù)器是為視頻需求客戶提供持續(xù)且穩(wěn)定的音視頻數(shù)據(jù)流的設(shè)備。音視頻文件存儲在視頻服務(wù)器的存儲空間中,服務(wù)器端配置的硬盤大小決定了存儲的節(jié)目的量,例如以 MPEG-2(1.5Mbps)格式存放 150 個小時的節(jié)目,需內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書4要
17、80G 左右的硬盤空間。 2、客戶端系統(tǒng)(Player) 客戶端是用戶與服務(wù)器之間建立連接并能夠進行交互操作的平臺??蛻舨シ牌魑挥诳蛻舳?,是用戶根據(jù)自己需求點播節(jié)目的系統(tǒng)。它負責(zé)向服務(wù)器發(fā)送通信請求,獲得節(jié)目的相關(guān)信息,服務(wù)器能夠?qū)⒐?jié)目單顯示給客戶,由客戶來選擇和播放、所點播的節(jié)目。當有很多客戶端同時收看同一節(jié)目卻不引起網(wǎng)絡(luò)擁塞,也不會降低音、視頻傳輸質(zhì)量。播放器的優(yōu)點有:便于操作,界面友好。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書5第二章 開發(fā)工具及系統(tǒng)運行環(huán)境介紹軟件開發(fā)的語言有很多,但程序的開發(fā)只有找一個功能強大,易于掌握易用且適合自己的就可以了。本系統(tǒng)通過多種語言優(yōu)缺點的對比,我采用了Visu
18、al C+6.0的MFC應(yīng)用程序框架作為本系統(tǒng)開發(fā)語言,以Access數(shù)據(jù)庫作后臺數(shù)據(jù)支持。本章將中主要論述的是開發(fā)VOD流媒體視頻點播系統(tǒng)所使用的開發(fā)環(huán)境及開發(fā)工具,通過對開發(fā)環(huán)境及工具的介紹便于讀者深入了解本系統(tǒng)。2.1Visual C+6.0簡介 2.1.1 Visula C+6.0本系統(tǒng)采用 Visual C+6.0 作為后臺開發(fā)工具。Visual C+6.0 是由美國的微軟公司推出的一個極其強大的 Windows 應(yīng)用程序開發(fā)平臺。Visual C+6.0不僅是一個 C+的編譯器,而且是一個基于 Windows 操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated developmen
19、t environment,IDE) 。Visual C+6.0 是由許多組件組成的,其中包括編輯器、調(diào)試器以及程序向?qū)?AppWizard、類向?qū)lass Wizard 等開發(fā)工具。 這些組件通過一個名為 Developer Studio 的組件集成為一個優(yōu)秀的開發(fā)環(huán)境。2.1.2 MFC 編程框架本系統(tǒng)的編寫使用了在 Visual C+6.0 平臺下的 MFC 編程框架。MFC 全稱是 Microso Foundation Classs Library 我們稱之為微軟基礎(chǔ)類庫,程序框架,封裝了絕大多數(shù) Win32 API 函數(shù),另外還分裝 C+語法中的數(shù)據(jù)結(jié)構(gòu)。它是一種 Applicat
20、ion Framework,隨著微軟 Visual C+開發(fā)工具發(fā)布。基于框架編程,能夠提高工作效率,減少開發(fā)周期,節(jié)約開發(fā)成本,減少了軟件開發(fā)人員開發(fā)的工作量。該類庫提供了一組通用的并且可以重用的類庫供開發(fā)人員使用。大部分類均從 CObject 類直接或間接的派生,只有少部分類例外。MFC 應(yīng)用程序的總體結(jié)構(gòu)通常由開發(fā)人員從 MFC 類派生的幾個類和一個 CWinApp 類對象(應(yīng)用程序?qū)ο螅┙M成。MFC 提供了 MFC AppWizard 它能自動的生成框架。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書62.2數(shù)據(jù)庫平臺MFC 程序能支持的數(shù)據(jù)庫有很多,因此我們得根據(jù)實際需求使用比較合理的數(shù)據(jù)庫。Mi
21、crosoft Office Access 是由微軟發(fā)布的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門。Access 有強大的統(tǒng)計分析能力、數(shù)據(jù)處理,可以方便的進行各類統(tǒng)計。并可以靈活設(shè)置統(tǒng)計的條件。Access 用來開發(fā)軟件,其最大的優(yōu)點是:易學(xué)!非計算機專業(yè)的人員,也能夠很容易的學(xué)會。管理低成本滿足了那些從事企業(yè)管理工作的人員的對數(shù)據(jù)管理需要,通過軟件來規(guī)范同事、下屬的行為,推行其管理思想。 本系統(tǒng)的數(shù)據(jù)庫方面,選用的是 Access,原因是 Access 數(shù)據(jù)庫的學(xué)習(xí)極其簡單,而且作為一個流媒體的視頻點播系統(tǒng),它不會像其它系統(tǒng)一樣需要很多表聯(lián)查的環(huán)境和條件那么
22、多,大多數(shù)情況下都只是單表查詢,本系統(tǒng)將采用Access 數(shù)據(jù)庫為系統(tǒng)提供數(shù)據(jù)管理。2.3系統(tǒng)運行環(huán)境系統(tǒng)的運行環(huán)境要求為:1硬件環(huán)境硬件環(huán)境 目前,我們所開發(fā)的系統(tǒng)主要是一個演示系統(tǒng),因此,配置一般的計算機硬件就可以滿足系統(tǒng)需求。如果考慮到現(xiàn)實生活中的應(yīng)用和硬件價格的普遍降低,可以為本系統(tǒng)配置在較優(yōu)秀的服務(wù)器硬件,就能夠充分發(fā)揮本系統(tǒng)性能。 處理器: Intel CORE i3 或更高 內(nèi)存: 4G(推薦) 硬盤空間:50GB 顯卡: SVGA 顯示適配器 2軟件環(huán)境軟件環(huán)境 系統(tǒng)體系:C/S(客戶端/服務(wù)器) 操作系統(tǒng):Windows 2000/XP、Win7、Win8開發(fā)軟件:Micro
23、soft Visual C+ 6.0編程框架:MFC數(shù)據(jù)庫: MS Access 數(shù)據(jù)庫內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書7第三章系統(tǒng)分析為了能夠?qū)崿F(xiàn)本系統(tǒng)的各種功能,我們必須對整個系統(tǒng)的所有功能進行詳細的分析。一個好的系統(tǒng)必須要有好的分析,因此本章我們將對本 VOD 流媒體視頻點播系統(tǒng)做出具體的分析。3.1系統(tǒng)核心角色與功能流媒體點播系統(tǒng)是一個電影等流媒體的網(wǎng)上下載和播放的系統(tǒng)。VOD 流媒體視頻點播系統(tǒng)的服務(wù)器端需要實現(xiàn)的功能包括管理員登陸、處理客戶端請求以及音視頻媒體信息的管理等功能。具體來說,它包含系統(tǒng)管理中常見的登錄操作,視頻信息的顯示、插入、刪除,更新操作等。查看用戶信息Admin增
24、加媒體修改媒體信息刪除媒體瀏覽媒體信息重置用戶密碼用戶資費調(diào)整圖 3-1 服務(wù)端功能圖內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書8Custom客戶登陸客戶自助服務(wù)下載播放查找流媒體圖 3-2 客戶端功能圖3.2系統(tǒng)界面登陸界面對話框包括:用戶名稱標簽、密碼標簽、用戶名稱輸入框、密碼輸入框、登陸按鈕、取消按鈕。圖 3-3 登陸界面圖服務(wù)器端界面:自定義的工具欄按鈕(類型導(dǎo)航、視頻編輯、服務(wù)啟動、服務(wù)停止) 、樹控件,DataGrid 控件、DlgVideo 對話框(新建按鈕、插入按鈕、刪除按鈕、所屬類型組合框、視頻名稱輸入框、視頻描述輸入框等) 。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書9圖 3-4 服務(wù)器端界面
25、圖客戶端界面包括:Windows Media Player 控件、樹控件。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書10圖 3-5 客戶端端界面圖3.3軟件的基本架構(gòu)1. 媒體服務(wù)器 存放媒體 Media 數(shù)據(jù)。現(xiàn)實生活中每個音視頻媒體數(shù)據(jù)所占的內(nèi)存都很大,所以必須要有專門的媒體服務(wù)器來存放這些信息。媒體服務(wù)器必須有很大的內(nèi)存空間,其中全部存放按類型劃分的媒體數(shù)據(jù)。 2. 數(shù)據(jù)庫服務(wù)器 存放媒體清單、用戶數(shù)據(jù)。要管理媒體服務(wù)其中的大量數(shù)據(jù),我們需要數(shù)據(jù)庫服務(wù)器來幫助我們管理這些數(shù)據(jù)。數(shù)據(jù)庫中存放媒體的詳細信息和用戶的信息,方便用戶和管理員操作和查詢。 3. VOD 服務(wù)器管理 后臺管理功能、包括媒體管理
26、、用戶管理等。本系統(tǒng)采用的是 C/S 架構(gòu),我們的服務(wù)器軟件。服務(wù)器對 CPU 的要求配置將比較高,因為我們的一臺服務(wù)器,要對應(yīng)成千上萬的客戶端訪問。 4.VOD 客戶端 登陸媒體服務(wù)器,可以下載數(shù)據(jù)和信息,也可以對媒體數(shù)據(jù)進行播放。內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書113.4 軟件的系統(tǒng)架構(gòu)VOD 服務(wù)器就是 Server 端,它是在本地維護各種媒體信息,也提供客戶端訪問處理客戶端的各種請求。它可以訪問 VOD 數(shù)據(jù)庫服務(wù)器,為了確保數(shù)據(jù)庫安全,通產(chǎn)客戶端不可以訪問 VOD 數(shù)據(jù)庫服務(wù)器。涉及到訪問數(shù)據(jù)庫的操作,客戶端都需要向服務(wù)器端發(fā)送請求,這樣數(shù)據(jù)庫安全就得到了一定保證??蛻舳瞬シ牌骺梢詮?/p>
27、網(wǎng)站上下載安裝,用戶安裝后供給用戶根據(jù)進行視頻點播。VOD 服務(wù)器VOD 數(shù)據(jù)庫服務(wù)器客戶端 1客戶端 2客戶端 3播放器 1播放器 2播放器 3圖 3-6 系統(tǒng)架構(gòu)圖3.5系統(tǒng)數(shù)據(jù)庫設(shè)計本系統(tǒng)數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計是在完成了系統(tǒng)描述各種數(shù)據(jù)之間的相互依賴關(guān)系和信息已經(jīng)分類的情況下,然后將各種信息轉(zhuǎn)換成對應(yīng)的數(shù)據(jù)項定義表。數(shù)據(jù)項定義表的作用就是定義每個表的表名、表中字段的名稱、數(shù)據(jù)類型的長度和是否允許空,但是在不同的數(shù)據(jù)庫中,數(shù)據(jù)類型的表示符號和長度是有所差別。本系統(tǒng)的數(shù)據(jù)庫中需要建的表詳見如下:1、在數(shù)據(jù)庫中建立用戶表,用戶表包括了用戶的編號、角色類別編號、用戶名、性別、密碼、郵件地址等信息,詳見
28、表 3-1 用戶表。表 3-1用戶信息表 列 名 數(shù)據(jù)類型 可否為空說 明IdintNot null自動編號內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書12UserNamenvarchar(16)Null用戶名Pwdnvarchar(64)Not null 密碼 2、在數(shù)據(jù)庫里建立一個媒體類型表,其中包括類型 ID、類型名稱、類型描述。媒體類型表詳見表 3-2 評論表。表 3-2評論表 列 名 數(shù)據(jù)類型可否為空說 明IdintNOT NULL自動編號typeNamenvarchar(128)NULL媒體類型typedespnvarchar(128)NULL媒體類型描述3、在數(shù)據(jù)庫里建立一個媒體信息表,其中
29、字段包括編號、媒體信息名、媒體信息描述、媒體路徑、類型 ID 等基本信息,詳見表 4-3 視頻信息表。表 3-3視頻信息表 列 名 數(shù)據(jù)類型 可否為空說 明IdintNOT NULL自動編號VideoNamenvarchar(64)NULL媒體名稱VideoDespnvarchar(128)NOT NULL媒體描述VideoPathnvarchar(64)NULL媒體類型TypeIdnvarchar(50)NULL類型 ID第四章系統(tǒng)實現(xiàn)內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書13系統(tǒng)實現(xiàn)是在系統(tǒng)分析、系統(tǒng)設(shè)計的基礎(chǔ)上,將系統(tǒng)設(shè)計的每一個細節(jié),用計算機語言(或開發(fā)工具)完整地表達出來,以便在計算機上實
30、現(xiàn)該系統(tǒng)。新系統(tǒng)是建設(shè)的最終目標,是能在計算機上運行的程序。本章主要介紹系統(tǒng)功能的實現(xiàn)。4.1 服務(wù)器端界面實現(xiàn)服務(wù)器端界面主要實現(xiàn)內(nèi)容:自定義的工具欄按鈕(類型導(dǎo)航、視頻編輯、服務(wù)啟動、服務(wù)停止) 、樹控件,DataGrid 控件、DlgVideo 對話框(新建按鈕、插入按鈕、刪除按鈕、所屬類型組合框、視頻名稱輸入框、視頻描述輸入框等)服務(wù)器端的實現(xiàn)具體步驟如下:1服務(wù)器端的創(chuàng)建使用 MFC 單文檔應(yīng)用程序,文檔視架構(gòu)的支持,其中View 繼承自 CFormView。 2.在工程中,添加類 vc 界面的工具條。將 sizecbar.h sizecbar.cpp scbarg.h、scbarg
31、.cpp 四個文件復(fù)制到工程 thirdpart 目錄下。在菜單Project-Add to project-Files 將四個文件加入工程中,此時在 ClassView中將出現(xiàn)了一個稱為 CCoolBar 的類。在 stdafx.h 文件中加上浮動時候替換原來 TOOL WINDOWS 的框架 #define _SCB_REPLACE_MINIFRAME #include thirdpartsizecbar.h #include thirdpartscbarg.h為 CMainFrame 增加成員變量: CCoolBar m_LeftCtrBar; /左面的控制窗口 CCoolBar m_B
32、ottomCtrBar; /最下面的控制窗口創(chuàng)建和??抗ぞ邫冢篿f(!m_LeftCtrBar.Create(_T(導(dǎo)航),this, CSize(230,260),TRUE,123)if(!m_BottomCtrBar.Create(_T 編輯),this,CSize(200,170),TRUE,124)m_LeftCtrBar.EnableDocking(CBRS_ALIGN_ANY); /左面工具條能夠停靠m_BottomCtrBar.EnableDocking(CBRS_ALIGN_ANY); /底部工具條能夠???DockControlBar(&m_BottomCtrBar,
33、 AFX_IDW_DOCKBAR_BOTTOM);內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書14/停靠在底部 DockControlBar(&m_LeftCtrBar, AFX_IDW_DOCKBAR_LEFT); /??吭谧筮?.該 ControlBar 在浮動的時候頂部的把手會消失,變成了普通的ToolWindow 類型的標題欄。為了避免這種情況,我們需要在CMainFrame:OnCreate()中,在 EnableDocking()后加入:#ifdef _SCB_REPLACE_MINIFRAME m_pFloatingFrameClass= RUNTIME_CLASS(CSCBMini
34、DockFrameWnd); #endif /_SCB_REPLACE_MINIFRAME并在 stdafx.h 中加上#define _SCB_REPLACE_MINIFRAME,在兩個頭文件前面 4設(shè)置工具欄上按鈕的功能和狀態(tài),分別添加兩種消息:void CMainFrame:OnToolbarNavigate() ShowControlBar(&m_LeftCtrBar,!m_LeftCtrBar.IsVisible(),FALSE);void CMainFrame:OnToolbarEdit() ShowControlBar(&m_BottomCtrBar,!m_Bot
35、tomCtrBar.IsVisible(),FALSE);5設(shè)置皮膚(使用動態(tài)庫)拷貝 skin 目錄到當前的工程中(皮膚文件、h 文件、dll 文件、lib 文件),在項目的頭文件 stdafx.h 中包含頭文件,引入 lib 文件#include ./skin/SkinMagicLib.h /包含頭文件#pragma comment(lib, ./skin/SkinMagicTrial.lib) /引入皮膚庫/加載皮膚VERIFY(1=InitSkinMagicLib(AfxGetInstanceHandle(),NULL,NULL);/初始化皮膚庫VERIFY(1=LoadSkinFil
36、e(_T(./skin/xpsteel.smf);/加載皮膚VERIFY(1=SetWindowSkin(m_pMainWnd-m_hWnd , _T(MainFrame);內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書15/將皮膚設(shè)置到窗口上VERIFY(1=SetDialogSkin(_T(Dialog);/將皮膚設(shè)置到對話框上6.在左邊的控制窗口中添加樹控件:在 CMainFrame 中添加成員變量m_wndTree,在 CMainFrame 的 OnCreate()中動態(tài)創(chuàng)建樹控件。具體代碼如下:m_wndTree.Create(WS_CHILD,CRect(0, 0, 0, 0),&m_L
37、eftCtrBar, 100)/樹控件的創(chuàng)建m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);/初始化樹控件InitTypeTreeCtrl();樹控件的初始化,訪問數(shù)據(jù)庫,從數(shù)據(jù)庫中得到控件類型代碼如下:void CMainFrame:InitTypeTreeCtrl()CMainFrame *pWnd=(CMainFrame*)AfxGetMainWnd(); /定義訪問視頻類型類的對象CTypeManager typeMgr(&pWnd-m_adoConnection);CList lstTypes;/獲取視頻類型的信息保存到鏈表 list
38、Types 中typeMgr.GetAllType(&lstTypes);CType type;/插入樹控件的根節(jié)點HTREEITEM hRoot = m_wndTree.InsertItem(_T(所有類型);for (int i=0;iMoveWindow(0,0,rcClient.Width(),rcClient.Height(); if (m_wndGrid.GetSafeHwnd()/去掉控件的滾動條 m_wndGrid.SetScrollBars(0);4.1.1 DataGrid 控件簡介內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書17 DataGrid 控件是一個多二維的數(shù)據(jù)網(wǎng)格,
39、用來以表格形式顯示數(shù)據(jù)源數(shù)據(jù)和以列為單位,設(shè)定各列的操作類型。網(wǎng)格中的每一行表示數(shù)據(jù)源中的一個記錄,每一列表示數(shù)據(jù)源中的 個字段(列) 。從顯示格式和操作控制能力看,DataGrid 控件支持選擇、編輯、刪除、分頁顯示和排序等功能。 可在設(shè)計時使用“屬性生成器”對話框進行大量的自定義設(shè)置,生成顯示和編輯數(shù)據(jù)的列(包含“編輯” 、 “更新” 、 “取消”和“選擇”按鈕的列、自定義按鈕的列以及模板列) 。4.1.2 DataGrid 控件的使用(1)首先通過 DataSource 屬性指定數(shù)據(jù)源; (2)指定要操作的數(shù)據(jù)表及關(guān)鍵字段; (3)DataGrid 控件的外觀顯示布局設(shè)置(包括顏色、字體
40、、字號、邊框、分頁、排序、不同列的顯示與操作類型等) ; (4)用 BindDataGrid()方法綁定數(shù)據(jù);4.2 客戶端界面實現(xiàn)客戶端界面主要實現(xiàn)的內(nèi)容:Windows Media Player 控件、樹控件。當用戶通過登錄界面進入客戶端界面時,客戶端會向服務(wù)器端發(fā)送請求,服務(wù)器端查詢數(shù)據(jù)庫,返回給數(shù)據(jù)庫所有類型下的媒體名稱??蛻舳嗽侔堰@些數(shù)據(jù)添加到樹控件上,讓用戶通過點擊獲取媒體信息。服務(wù)端給客戶端傳回數(shù)據(jù)流,客戶端就可以使用自帶的 Windows Media Play 播放器播放。樹控件創(chuàng)建和添加:樹控件創(chuàng)建代碼如下:if(!m_wndTree.Create(WS_CHILD|WS_V
41、ISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,CRect(0, 0, 0, 0), &m_LeftCtrBar, 100) m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE) /樹控件風(fēng)格Windows Media Player ActiveX 控件介紹:何為 MediaPlaye 控件?說白了就是一個精簡版的 Windows MediaPlayer,只不過是不能自行播放而已,它是 Windows MediaPlayer 的核心。Windows MediaPlayer 是一個功能強大的多媒體播
42、放器,采用它的核心所制作出來的播放器可以播放除死敵 REAL 格式外的幾乎所有格式的多媒體文件。使用 Windows Media Player 軟件開發(fā)工具包 (SDK),您可以擴展獨立 Player 的功能,并將播放功能嵌入到自己的應(yīng)用程序中。您可以使用其播放功能,并可決定在應(yīng)用內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書18程序中是使用 Player 的現(xiàn)有用戶界面,還是創(chuàng)建自己的用戶界面。本客戶端 Media Player 控件的使用過程: 添加 Windows Media Player控件并為其綁定變量:CWMPPlayer4 m_wndPlayer。讓 Media Player 隨著客戶端大小的
43、改變而改變代碼如下:void CVODClientView:OnSize(UINT nType, int cx, int cy) CFormView:OnSize(nType, cx, cy);CRect rcClient;GetClientRect(&rcClient); / 獲得客戶端矩形的大小if (m_wndPlayer.GetSafeHwnd() m_wndPlayer.MoveWindow(0,0,rcClient.Width(),rcClient.Height(); /讓 Media Player 隨著客戶端改變大小 Media Player 播放器效果圖如下:內(nèi)蒙古工業(yè)
44、大學(xué)本科畢業(yè)設(shè)計說明書19 圖 4-1 Media Player 播放器效果圖4.3 登陸界面實現(xiàn)登陸界面主要處理的是當用戶輸入用戶名和密碼之后點擊登陸按鈕所要做處理。當用戶點擊登陸后,客戶端將會被用戶名和密碼發(fā)送給服務(wù)器端,服務(wù)端查詢數(shù)據(jù)庫,返回結(jié)果給客戶端,如果驗證成功,進入客戶端主界面,否則會提示用戶名稱或密碼錯誤,請重新登錄。登陸驗證的代碼如下:void CDlgLogin:OnOK() UpdateData(TRUE);/ 刷新控件的值到對應(yīng)的變量if(!m_clientSock.Login(m_strUserName,m_strPwd) MessageBox(用戶名稱或密碼錯誤,請
45、重新登錄!); return;CDialog:OnOK();客戶端處理登陸的函數(shù),它向服務(wù)端發(fā)送登陸請求,服務(wù)端驗證用戶名和密碼如果驗證成功,就返回成功,客戶端進入主界面。BOOL CClientSocket:Login(LPCSTR pszName,LPCSTR pszPwd) VODLOGIN login = 0; /登陸數(shù)據(jù)結(jié)構(gòu)體 strcpy(login.szUserName,pszName); strcpy(login.szPassword,pszPwd); SendData(VODNETCMD_LOGIN,&login,sizeof(login);/給服務(wù)器發(fā)送要登陸的用戶
46、的用戶名和密碼 VODHEADER header = 0; RecvData(&header,sizeof(header); VODLOGINRET loginret = 0; RecvData(&loginret,sizeof(loginret);/接受到服務(wù)器端返回的數(shù)據(jù):登陸驗證是否成功 return loginret.dwSuccess;內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書204.3數(shù)據(jù)庫的訪問和操作 數(shù)據(jù)庫的訪問主要用在 VODServer 端,基本上它的每一項操作都會涉及到數(shù)據(jù)庫的訪問和操作。在服務(wù)端打開時樹控件初始化、DataGrid 控件的初始化、媒體信息的添加刪除
47、更新都會用到數(shù)據(jù)庫的訪問和操作。如果客戶端需要訪問都是通過向服務(wù)器端發(fā)送相應(yīng)的命令,服務(wù)器再訪問,最后返回給客戶端結(jié)果。VODServer 對數(shù)據(jù)庫的訪問和操作如下:1. 視頻數(shù)據(jù)的顯示,使用 DataGrid 組件顯示,在 CMainFrame 類中,添加成員變量 CAdoConnection m_adoConnection。并且在構(gòu)造函數(shù)中,連接數(shù)據(jù)庫m_adoConnection.ConnectAccess(././DB/VODDB.mdb)。在視圖類 View 中,添加成員變量 CAdoRecordSet m_adoRecordSet。在視圖類的 OnInitialUpdate函數(shù)中,
48、添加用于綁定記錄集與 datagrid 代碼。在視圖類中添加BindDataGrid 函數(shù)并實現(xiàn)代碼如下:void CVODServerView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();/數(shù)據(jù)綁定CMainFrame *pWnd=(CMainFrame*)AfxGetMainWnd(); m_adoRecordSet.SetAdoConnection(&pWnd-m_adoConnection);m_adoRecordSet.SetC
49、ursorLocation();CString strSql=select videoInfo.id as 編號,videoName as 視頻名稱,videoDesp as 視頻描述,videoPath as 視頻路徑,typeName as 所屬類型 from videoInfo,TypeInfo where videoInfo.typeid=TypeInfo.id;m_adoRecordSet.Open(strSql, adCmdText); /執(zhí)行 sql 語句BindDataGrid(&m_adoRecordSet); /綁定 DataGrid 控件void CVODServ
50、erView:BindDataGrid(CAdoRecordSet *pSet) /綁定 DataGrid 控件內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書21m_wndGrid.SetRefDataSource(LPUNKNOWN)m_adoRecordSet.GetRecordset();/設(shè)置數(shù)據(jù)源m_wndGrid.Refresh(); /刷新2. 在不同的控件中顯示視頻類型信息(樹控件、組合框控件)。樹控件初始化代碼:void CMainFrame:InitTypeTreeCtrl()CMainFrame *pWnd=(CMainFrame*)AfxGetMainWnd(); /定義訪問視頻類型
51、類的對象CTypeManager typeMgr(&pWnd-m_adoConnection);CList lstTypes;/獲取視頻類型的信息保存到鏈表 listTypes 中typeMgr.GetAllType(&lstTypes);CType type;/插入樹控件的根節(jié)點HTREEITEM hRoot = m_wndTree.InsertItem(_T(所有類型);for (int i=0;im_adoConnection); /創(chuàng)建 CVideoManager 類的對象 UpdateData(TRUE); /更新控件上的值if (m_strVideoType=)Me
52、ssageBox(請選擇視頻類型!);return;CVideo v;v.strVideoName=m_strVideoName;v.strVideoDesp=m_strVideoDesp;v.strVideoPath=m_strVideoPath;int nCurSel=m_cboType.GetCurSel();v.nTypeid=m_cboType.GetItemData(nCurSel);/獲取當前的文本if (m_strVideoID=)內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書23/執(zhí)行插入操作 videoMgr.InsertVideo(v);/清空原有數(shù)據(jù) ClearCtrlData();
53、elsev.nVideoID=atoi(m_strVideoID);/執(zhí)行更新數(shù)據(jù)操作 videoMgr.UpdateVideo(v,v.nVideoID); BindDataGrid();UpdateData(FALSE); C. 刪除的實現(xiàn):獲取要刪除視頻數(shù)據(jù)的 ID,執(zhí)行刪除操作,操作完成后調(diào)用 BindDataGrid 重新顯示數(shù)據(jù),清空控件中的數(shù)據(jù)。void CDlgVideo:OnDel() / TODO: Add your control notification handler code hereCMainFrame *pWnd=(CMainFrame*)AfxGetMainW
54、nd(); CVideoManager videoMgr(&pWnd-m_adoConnection); int nVideoID=atoi(m_strVideoID);videoMgr.DeleteVideo(nVideoID);/清空原有數(shù)據(jù) ClearCtrlData();/重新綁定顯示 BindDataGrid();m_wndOK.SetWindowText(插入);內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書244.5 系統(tǒng)網(wǎng)絡(luò)通信本系服務(wù)端和客戶端之間的通信是基于有連接的 TCP 通信。TCP 通信是一種面向連接的、可靠的、基于字節(jié)流的在傳輸層(Transport layer)通信協(xié)議
55、。TCP 網(wǎng)絡(luò)編程主要用套接字來實現(xiàn)網(wǎng)絡(luò)服務(wù)器與客戶端通信,一個標準的套接字是由協(xié)議族,IP 地址與端口號組成,它是 TCP 服務(wù)器與客戶端通信的基礎(chǔ)。編寫網(wǎng)絡(luò)通信基本的步驟:定義用于傳輸?shù)臄?shù)據(jù)包結(jié)構(gòu)(傳輸協(xié)議),定義和實現(xiàn)網(wǎng)絡(luò)通信的封裝類,界面對封裝類的調(diào)用。VODServer 關(guān)于網(wǎng)絡(luò)通信的實現(xiàn)步驟:1. socket 庫的初始化:在 App 的 InitInstance 函數(shù)中:AfxSocketInit()AfxMessageBox(Failed to Initialize Sockets,MB_OK| MB_ICONSTOP)。 2服務(wù)端需要添加兩個相關(guān)類,CNetServer 和
56、CNetClient。CNetClient類定義的前面要添加數(shù)據(jù)包結(jié)構(gòu)的定義。CNetServer 主要負責(zé)創(chuàng)建服務(wù)端socket,并且啟動服務(wù)端線程等待客戶端連接。CNetClient 類主要負責(zé)客戶端socket 的創(chuàng)建,網(wǎng)絡(luò)通信的操作都在 CNetClient 類中實現(xiàn)。CNetClient 主要實現(xiàn)的功能有:處理登陸的 OnLogin 函數(shù)、返回指定類型 ID 的所有視頻信息OnVideosByTypeID()函數(shù)、處理客戶端請求的視頻文件 OnMediaData()函數(shù)、原始的數(shù)據(jù)收發(fā)函數(shù) RecvData()和 SendData()函數(shù)。CNetServer 和 CNetClien
57、t 的類視圖如下: 圖 4-2 Media Player 播放器效果圖CNetServer 相關(guān)代碼:DWORD CNetServer:ServerThread(LPVOID pParam)內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書25 CNetServer * pThis = (CNetServer *)pParam;/創(chuàng)建 socket pThis-m_hSockServer = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); sockaddr_in addr = 0; addr.sin_family = AF_INET;/綁定通信地址 addr.sin_port
58、 = htons(6789);/通信端口 addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); bind(pThis-m_hSockServer,(sockaddr *)&addr,sizeof(addr); /綁定 socket 和通信地址listen(pThis-m_hSockServer,0); /設(shè)置監(jiān)聽 while(1) sockaddr addrclient = 0; int nLen = sizeof(addrclient);/接收客戶端連接 SOCKET sock = accept(pThis-m_hSockServer,&
59、;addrclient,&nLen); CNetClient netClient; /創(chuàng)建 CNETClient 類的 netClient 對象 netClient.m_hClientSocket=sock;/數(shù)據(jù)的交互交給 CNetClient 類 netClient.Initialize(); return 0;CNetClient 相關(guān)代碼:BOOL CNetClient:Initialize( ) DWORD dwThreadID = 0; HANDLEhThread=CreateThread(NULL,0,ClientThread,this,0,&dwThreadID
60、);/創(chuàng)建服務(wù)線程,來一個客戶端創(chuàng)建一個線程,同步處理客戶端請求 CloseHandle(hThread); /關(guān)閉線程句柄 return TRUE;內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計說明書26線程處理函數(shù)代碼如下:DWORD CNetClient:ClientThread(LPVOID pParam) CNetClient * pThis = (CNetClient *)pParam; BOOL bRet = TRUE; while (bRet) VODHEADER header = 0 ; bRet = pThis-RecvData( &header,sizeof(header);/服務(wù)端收到的客戶端請求命令數(shù)據(jù) switch (header.dwCmd) /根據(jù)不同請求做出不同的操作 case VODNETCMD_LOGIN: bRet = p
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年生物基材料生產(chǎn)與銷售合同
- 2024旅游景區(qū)導(dǎo)游勞動合同書含旅游行業(yè)創(chuàng)新發(fā)展研究2篇
- 7-2 《一名物理學(xué)家的教育歷程》說課稿 2023-2024學(xué)年統(tǒng)編版高中語文必修下冊
- 2024柚子果品質(zhì)量檢測與認證服務(wù)合同3篇
- 2024年財務(wù)報表保密合同3篇
- 個人住宅租賃簡明合同樣本(2024版)版B版
- 2024年水產(chǎn)養(yǎng)殖聯(lián)盟協(xié)議3篇
- 福建省南平市武夷山第三中學(xué)高三地理月考試題含解析
- 個人融資擔(dān)保借款標準化協(xié)議樣本版
- 6 影子第二課時 說課稿-2024-2025學(xué)年語文一年級上冊統(tǒng)編版
- 智能機器人技術(shù)導(dǎo)論PPT完整全套教學(xué)課件
- 危險性較大的分部分項工程清單 及安全管理措施
- 中職英語語文版(2023)基礎(chǔ)模塊1 Unit 1 The Joys of Vocational School 單元測試題(含答案)
- 最全-房屋市政工程安全生產(chǎn)標準化指導(dǎo)圖冊
- 算法向善與個性化推薦發(fā)展研究報告
- 聚合物的流變性詳解演示文稿
- 電氣設(shè)備預(yù)防性試驗安全技術(shù)措施
- 壓力彈簧力度計算器及計算公式
- 內(nèi)科學(xué)教學(xué)課件:免疫性血小板減少癥(ITP)
- 聚焦項目化學(xué)習(xí),讓核心素養(yǎng)在教學(xué)中落實 教學(xué)設(shè)計
- 路立得4.1roadleaderv3.0說明書Roadleader是鴻業(yè)研制的BIM系列軟件之一旨在
評論
0/150
提交評論