已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2012 屆本科生畢業(yè)設(shè)計 數(shù)據(jù)挖掘技術(shù)在電信計費系統(tǒng)中的應(yīng)用 摘 要 隨著網(wǎng)絡(luò)的高速發(fā)展,一些大型廠商推出了服務(wù)器出租這項業(yè)務(wù)。為了使得出租商 快捷、方便以及高效的統(tǒng)計出用戶的登錄信息及應(yīng)繳費情況,本文開發(fā)了一個電信計費 系統(tǒng)。 本系統(tǒng)采用 c/s 架構(gòu),在 unix 環(huán)境下以 c+為主要的開發(fā)語言開發(fā)完成。客戶端的 功能包括定時從非結(jié)構(gòu)型服務(wù)器日志文件采集用戶數(shù)據(jù),匹配登入/登出信息,向服務(wù)器 發(fā)送數(shù)據(jù);服務(wù)端的功能包括接收客戶端發(fā)送過來的數(shù)據(jù),存儲數(shù)據(jù)和整合數(shù)據(jù)等。從 海量用戶數(shù)據(jù)中匹配登入/登出信息采用了數(shù)據(jù)挖掘技術(shù),所提取到的有效計費信息存儲 在 oracle 數(shù)據(jù)庫中。 關(guān)鍵詞:電信計費系統(tǒng);數(shù)據(jù)挖掘;數(shù)據(jù)匹配;數(shù)據(jù)整合 2012 屆本科生畢業(yè)設(shè)計 the application of data mining technology in the telecom toll system abstract with the rapid development of the network , some large companies such as china telecom launched the server rent business. in order to statistic user login information and charge more fastly, conveniently and efficiently, a telecom toll system is developed in this paper. this system is programmed by c+ language with c/s architecture in unix operater system.the functions in client port include reading user information from unstructural log file ,matching data and sending data to a server;the functions in sever port include receiving data from client, data storage and integrating data. data mining technology is used in the huge amount of data matching processing and all the resultful data are all stored in oracle database. keywords:the telecom toll system ; data mining ;data matching ;data integration 2012 屆本科生畢業(yè)設(shè)計 目 錄 1 引言1 1.1 課題來源及意義 1 1.2 國內(nèi)外發(fā)展?fàn)顩r 1 1.2.1 數(shù)據(jù)挖掘技術(shù)的基本知識1 1.2.2 數(shù)據(jù)挖掘技術(shù)的基本應(yīng)用 2 1.2.3 數(shù)據(jù)挖掘技術(shù)的發(fā)展 2 1.3 本文的主要工作 .2 1.3.1 設(shè)計思想和實現(xiàn)目標(biāo) 2 1.3.2 論文結(jié)構(gòu)安排 3 2 系統(tǒng)分析3 2.1 可行性研究4 2.1.1 技術(shù)可行性 4 2.1.2 經(jīng)濟(jì)可行性 4 2.2 需求分析 4 2.2.1 項目業(yè)務(wù)需求 4 2.2.2 功能模塊 5 2.2.3 用例描述 7 3 概要設(shè)計.13 3.1 業(yè)務(wù)流程.13 3.1.1 業(yè)務(wù)流程中幾個存儲文件的命名規(guī)則.13 2012 屆本科生畢業(yè)設(shè)計 3.1.2 業(yè)務(wù)規(guī)則說明.13 3.2 系統(tǒng)模塊.13 3.3 接口設(shè)計.15 3.3.1 用戶接口.15 3.3.2 外部接口.15 3.3.3 內(nèi)部接口.16 3.4 數(shù)據(jù)結(jié)構(gòu)設(shè)計.16 3.4.1 登入/登出記錄數(shù)據(jù)類17 3.4.2 匹配的用戶登錄記錄類 17 3.5 數(shù)據(jù)庫設(shè)計.18 4 詳細(xì)設(shè)計和實現(xiàn)20 4.1 客戶端模塊 20 4.1.1 數(shù)據(jù)讀取模塊設(shè)計 20 4.1.2 數(shù)據(jù)匹配模塊設(shè)計 23 4.1.3 數(shù)據(jù)發(fā)送模塊設(shè)計 27 4.2 服務(wù)端模塊 31 4.2.1 數(shù)據(jù)接收模塊設(shè)計 .33 4.2.2 數(shù)據(jù)存儲模塊設(shè)計 .36 4.2.3 數(shù)據(jù)緩沖池 .38 4.3 異常設(shè)計 .39 4.3.1 異常類結(jié)構(gòu)圖 .39 4.3.2 客戶端異常類說明 .39 2012 屆本科生畢業(yè)設(shè)計 4.4 數(shù)據(jù)庫具體實現(xiàn) .40 5 結(jié)論42 參考文獻(xiàn)43 致 謝44 2012 屆本科生畢業(yè)論文(設(shè)計) 1 1 引言 1.1 課題來源及意義 隨著計算機及互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,一些大的廠家例如電信,推出了服務(wù)器出租 這項業(yè)務(wù),選擇這項業(yè)務(wù)的用戶可以通過遠(yuǎn)程登錄服務(wù)器上進(jìn)行自己的工作。服務(wù)器出 租就是指用戶不需要自己購買服務(wù)器,只需要根據(jù)自己的業(yè)務(wù)要求,向運營商申請一個 帳號通過遠(yuǎn)程登錄,便可以輕松享用服務(wù)器。由于服務(wù)器的價格相當(dāng)昂貴,所以更多的 用戶更傾向于選擇租用,而不是購買。這樣服務(wù)器出租便得到了廣泛的發(fā)展。這時就需 要一款運行在服務(wù)器上的計時軟件,來統(tǒng)計用戶的使用情況來做出相應(yīng)的收費依據(jù)。在 此背景下,電信計費系統(tǒng)便應(yīng)運而生了,電信計費系統(tǒng)是專門為服務(wù)器租賃商開發(fā)研究 的,租賃商只需要在各地區(qū)出租的服務(wù)器上安裝本系統(tǒng),就會有相應(yīng)的數(shù)據(jù)從客戶端源 源不斷發(fā)送到服務(wù)端,這樣便可以輕松的了解各地服務(wù)器的運營狀況,以及盈虧情況, 同時也可以作為用戶繳納費用的依據(jù)。 電信計費系統(tǒng)是專門為電信制作的一款計費程序,可以非常方便、快捷、實時查詢 出用戶需要繳納的費用。方便運營商在后續(xù)階段進(jìn)行合理的計劃調(diào)整。通過對這一課題 的學(xué)習(xí)和研究,可以將電信計費系統(tǒng)的基本原理、實現(xiàn)流程等展現(xiàn)出來,并可作為新的 綜合電信計費系統(tǒng)來學(xué)習(xí)和研究,也可以順帶了解實際電信實時計費的工作流程,具有 一定的現(xiàn)實意義。 1.2 國內(nèi)外發(fā)展?fàn)顩r 由于用戶數(shù)量巨大,所有用戶信息交錯保存在非結(jié)構(gòu)型日志文件中。如何從海量數(shù) 據(jù)中找到某一用戶的計費信息,就需要數(shù)據(jù)挖掘技術(shù)的支持。 1.2.1 數(shù)據(jù)挖掘技術(shù)的基本知識 數(shù)據(jù)挖掘(data mining,簡稱 dm),又稱為數(shù)據(jù)庫中知識發(fā)現(xiàn)(knowledge discovery from database,簡稱 kdd),它是一個從大量數(shù)據(jù)中抽取挖掘出未知的、有 價值的模式或規(guī)律等知識的復(fù)雜過程1。 整個知識挖掘(kdd)過程是由若干挖掘步驟組成,而數(shù)據(jù)挖掘僅是其中的一個主要 步驟。盡管數(shù)據(jù)挖掘僅僅是整個知識挖掘過程中的一個重要步驟,但由于目前工業(yè)界、 媒體、數(shù)據(jù)庫研究領(lǐng)域中,“數(shù)據(jù)挖掘”一詞已被廣泛使用并被普遍接受,因此也可以 廣義地使用“數(shù)據(jù)挖掘”一詞來表示整個知識挖掘過程,即數(shù)據(jù)挖掘就是一個從數(shù)據(jù)庫、 數(shù)據(jù)倉庫或其它信息資源庫的大量數(shù)據(jù)中發(fā)掘出有趣的知識。 2012 屆本科生畢業(yè)論文(設(shè)計) 2 1.2.2 數(shù)據(jù)挖掘技術(shù)的基本應(yīng)用 實際上數(shù)據(jù)挖掘技術(shù)從一開始就是面向應(yīng)用的。目前,在很多重要的領(lǐng)域,數(shù)據(jù)挖 掘都可以發(fā)揮積極促進(jìn)的作用。尤其是在如銀行、電信、保險、交通、零售(如超級市 場)等商業(yè)應(yīng)用領(lǐng)域。數(shù)據(jù)挖掘能夠幫助解決許多典型的商業(yè)問題,其中包括:數(shù)據(jù)庫 營銷、客戶群體劃分、背景分析、交叉銷售等市場分析行為,以及客戶流失性分析、客 戶信用評分、欺詐發(fā)現(xiàn)等等。 1.2.3 數(shù)據(jù)挖掘技術(shù)的發(fā)展 數(shù)據(jù)挖掘的目的就是為企業(yè)決策提供的正確依據(jù),利用計算機及信息技術(shù)輔助完成 從分析數(shù)據(jù)、發(fā)現(xiàn)問題、作出決策到采取行動這一系列操作。因此人們將這種機構(gòu)行為 和手段稱這為“事務(wù)智能”(business intelligent,簡稱 bi),bi 能極大地改進(jìn)決策 的質(zhì)量和及時性,從而改進(jìn)機構(gòu)的生產(chǎn)率或發(fā)揮競爭優(yōu)勢。所以近年來,一些大公司將 數(shù)據(jù)分析和數(shù)據(jù)挖掘工具及其有關(guān)技術(shù)組合起來形成所謂 bis(business intelligent softwave)。其中 sas 公司的的 enterprise minter 就是將數(shù)據(jù)源、數(shù)據(jù)預(yù)處理、數(shù)據(jù)存 貯、數(shù)據(jù)分析與發(fā)掘、信息表示與應(yīng)用等方面技術(shù)有機形成一個復(fù)雜數(shù)據(jù)挖掘系統(tǒng)有機 整體。 1.3 本文的主要工作 1.3.1 設(shè)計思想和實現(xiàn)目標(biāo) 設(shè)計思想是:任何用戶登錄 unix 系統(tǒng),unix 系統(tǒng)都會記錄用戶的登錄信息,所有用 戶登入/登出的信息都保存在 unix 的系統(tǒng)日志文件中。數(shù)據(jù)采集系統(tǒng)就是通過讀取 unix 系統(tǒng)日志文件中用戶登入/登出信息,并找出成對的登入/登出記錄,得到用戶登錄服務(wù) 器的登入時刻、登出時刻、登錄時間長度等電信用戶收費需要使用的數(shù)據(jù)。 實現(xiàn)目標(biāo)是: 把匹配處理好的數(shù)據(jù)保存成電信工作人員可以閱讀的文本文件,做為 電信收費依據(jù)。 1.3.2 論文結(jié)構(gòu)安排 本文的結(jié)構(gòu)安排如下: 第一章 引言 介紹了課題的概況和相關(guān)技術(shù)的發(fā)展情況,以及課題的設(shè)計思想和實現(xiàn)目標(biāo)。 第二章 系統(tǒng)分析 介紹了項目中涉及到的各種數(shù)據(jù)信息,各個功能模塊的運行流程。 2012 屆本科生畢業(yè)論文(設(shè)計) 3 第三章 概要設(shè)計 概要設(shè)計文檔主要描述了數(shù)據(jù)挖掘系統(tǒng)的總體設(shè)計,從上述文檔中明確 dms 系統(tǒng)需 求的基礎(chǔ),從而劃分出 dms 系統(tǒng)的幾大功能,進(jìn)行系統(tǒng)開發(fā)分工,明確各模塊之間的接 口,為進(jìn)行后面的詳細(xì)設(shè)計和實現(xiàn)做好準(zhǔn)備。 第四章 詳細(xì)設(shè)計及實現(xiàn) 本章主要介紹了各個模塊的具體實現(xiàn)流程圖和具體實現(xiàn)代碼 第五章 結(jié)論 回顧并總結(jié)了課題的研究過程中所做的工作,也思考了研究過程中遇到的問題并列 出了實踐中的不足之處,最后根據(jù)自己的認(rèn)識對相關(guān)技術(shù)的發(fā)展前景進(jìn)行了展望。 2012 屆本科生畢業(yè)論文(設(shè)計) 4 2 系統(tǒng)分析 2.1 需求分析 電信公司現(xiàn)在具有哪些設(shè)備環(huán)境,能提供哪些原始數(shù)據(jù),需要的最終數(shù)據(jù)形式是什 么,數(shù)據(jù)是什么。 電信公司為客戶提供 unix 服務(wù)器出租的服務(wù),這樣就必須有一個程序通過從 unix 系統(tǒng)日志文件的海量數(shù)據(jù)中挖掘出用戶登錄、登出的時間來計算用戶登錄時長,并生成 數(shù)據(jù)報表存儲在公司另外的一個 oracle 數(shù)據(jù)庫中,以便電信公司計算費用。 2.2 功能模塊 根據(jù)用戶需求分析,電信計費系統(tǒng)主要功能模塊包括:數(shù)據(jù)讀取,數(shù)據(jù)匹配,數(shù)據(jù) 發(fā)送,數(shù)據(jù)接收,數(shù)據(jù)存儲,數(shù)據(jù)整合。 模塊具體活動流程如圖 2-1: 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 務(wù) 務(wù) 務(wù) 務(wù) 務(wù) 務(wù) 務(wù)務(wù) 務(wù) 務(wù) 務(wù) 務(wù) 務(wù) 務(wù) 圖 2-1 系統(tǒng)活動圖 2012 屆本科生畢業(yè)論文(設(shè)計) 5 數(shù)據(jù)讀取數(shù)據(jù)讀?。涸撃K的主要功能是讀取 unix 服務(wù)器上的的用戶登錄信息日志文件,備 份日志文件,讀取上一次未匹配成功的登錄記錄信息,讀取備份的日志文件。 數(shù)據(jù)匹配數(shù)據(jù)匹配:該模塊的主要功能是將數(shù)據(jù)讀取模塊讀取到的數(shù)據(jù)按照圖一定的關(guān)系匹 配成完整的數(shù)據(jù),未完成的匹配的數(shù)據(jù)保存在到文件中。方便下次讀取時進(jìn)行匹配。 數(shù)據(jù)發(fā)送數(shù)據(jù)發(fā)送:該模塊的主要功能是建立客戶端 socket 網(wǎng)絡(luò)連接,將匹配好的用戶登錄 記錄發(fā)送到服務(wù),未發(fā)送成功的記錄保存在文件中為下次發(fā)送時重新讀取。 數(shù)據(jù)接收數(shù)據(jù)接收:該模塊的主要功能是建立服務(wù)端的網(wǎng)絡(luò)連接,從客戶端讀取匹配好的用 戶登錄信息放入緩沖池中。 數(shù)據(jù)存儲數(shù)據(jù)存儲:該模塊的主要功能是將緩沖池中的數(shù)據(jù)保存到指定的數(shù)據(jù)庫表中。 數(shù)據(jù)整合數(shù)據(jù)整合:該模塊的主要功能是將數(shù)據(jù)庫中保存的用戶登錄記錄按照日、月、年整 合成詳細(xì)的報表。 2.3 用例描述 根據(jù)用戶需求和功能分析,生成系統(tǒng)用例圖。如圖 2-1 所示。 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 dms一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 圖 2-2 系統(tǒng)用例圖 電信計費系統(tǒng)各功能模塊的用例說明如下: 2012 屆本科生畢業(yè)論文(設(shè)計) 6 數(shù)據(jù)讀取數(shù)據(jù)讀取用例說明用例說明: 保存用戶登錄信息的 unix 系統(tǒng)日志文件在/var/adm 目錄下,文件名為 wtmpx,日志 文件以二進(jìn)制方式進(jìn)行存儲的,如果想在 unix 下查看 wtmpx,可以使用 last 命令: last -a -n number | -number -f filename name | tty wtmpx 文件中每條記錄都包含有 372 個字節(jié),所包含的每條記錄項格式如下表 2-1 所 示(其中灰色背景區(qū)域的數(shù)據(jù)為本系統(tǒng)需要采集的數(shù)據(jù)項): 表 2-1 用戶登錄記錄數(shù)據(jù)項格式 位置 范圍 字節(jié) 長度 含義 000- 031 32 用戶登錄名 032- 035 4 初始進(jìn)程 id 036- 067 32 設(shè)備名 068- 071 4 進(jìn)程 id 072- 073 2 登錄類型 7-登入,8-登出 074- 075 2 過程終止 076- 077 2 退出狀態(tài) 2 這是 c 數(shù)據(jù)類型補齊產(chǎn)生的 空位 080- 083 4 登錄時刻 /單位是秒 084- 087 4 和微秒 088- 091 4 會議編號,用于視窗 092- 111 20 預(yù)保留 112- 113 2 significant length of ut_host 114- 371 257 /* 登錄 ip*/ 日志文件登錄數(shù)據(jù)項總數(shù)可以使用公式:記錄項總數(shù)=日志文件大小/372。 2012 屆本科生畢業(yè)論文(設(shè)計) 7 數(shù)據(jù)采集基本流程如表 2-2 表 2-2 數(shù)據(jù)采集的基本流程 用例名稱數(shù)據(jù)采集 功能簡述dms 管理員運行數(shù)據(jù)挖掘系統(tǒng),完成數(shù)據(jù)采集的功能 前置條件數(shù)據(jù)挖掘系統(tǒng)在服務(wù)器上已正確安裝 基本流1.管理員啟動 dms 服務(wù)端系統(tǒng) 2.管理員啟動 dms 客戶端系統(tǒng) 3.客戶端程序定期將登錄數(shù)據(jù)文件備份,并清空源文件 4.客戶端系統(tǒng)讀取上次未匹配成功的登入信息 5.客戶端讀取備份的數(shù)據(jù)信息,剔除非法登錄的用戶 6.客戶端獲得用戶的登入/登出記錄表 7.客戶端將用戶登入/登出記錄匹配為完整的登錄記錄 客戶端程序?qū)⒉荒艹晒ζヅ涞牡侨胗涗泴懙轿募斜4?8.客戶端程序?qū)⑵ヅ浜玫牡卿浻涗洶l(fā)送到服務(wù)端 9.服務(wù)端程序接客戶端發(fā)送的數(shù)據(jù) 10. 服務(wù)端程序先將數(shù)據(jù)寫到服務(wù)端文件存入緩沖池中 11.服務(wù)端程序?qū)⒕彌_池的數(shù)據(jù)保存到數(shù)據(jù)庫中 分支與異 常 第 1 步,若服務(wù)端程序啟動失敗,則發(fā)送異常報告。 第 2 步,若客戶端程序啟動失敗,則發(fā)送異常報告。 第 3 步,若清空文件失敗,則發(fā)送異常報告。 第 4 步,若上次未匹配的登入記錄文件不存在,則跳過到第 5 步。 第 5 步,若讀取備份的用戶記錄數(shù)據(jù)文件失敗,則發(fā)送異常報 告。 第 7 步,若指定的保存文件不存在,則創(chuàng)建文件。 第 7 步,若創(chuàng)建目錄或?qū)懳募?,則發(fā)送異常報告。 第 8 步,若發(fā)送數(shù)據(jù)失敗,則定時重傳。 第 10 步,若寫入文件失敗,則發(fā)送異常報告。 后置條件啟動 contrab 命令,定時讀取、發(fā)送數(shù)據(jù) 備注無 2012 屆本科生畢業(yè)論文(設(shè)計) 8 數(shù)據(jù)讀取用例說明如表 2-3: 表 2-3 數(shù)據(jù)讀取的基本流程 用例名稱數(shù)據(jù)讀取 功能簡述客戶端程序讀取系統(tǒng)數(shù)據(jù)文件和上次未匹配的登入記錄,形 成用戶登錄記錄項。 前置條件dms 客戶端程序啟動 基本流1) 讀取上次未匹配的登入記錄。 2) 將存儲到記錄放入鏈表中。 3) 讀取備份的數(shù)據(jù)文件,清空源文件,將文件內(nèi)容解析成 可用的記錄。 4. 將解析得到的用戶登錄記錄放入對應(yīng)的鏈表中。 5. 返回用戶登錄記錄鏈表。 分支與異 常 第 1 步,若上次未匹配的登入記錄文件不存在,則跳過到第 3 步。 第 3 步,若用戶登錄數(shù)據(jù)文件不存在,則報告異常。 后置條件無 備注無 數(shù)據(jù)匹配用例說明如圖 2-4: 表 2-4 數(shù)據(jù)匹配的基本流程 用例名稱數(shù)據(jù)匹配 功能簡述dms 客戶端程序讀取用戶的登入/登出記錄鏈表,找到一條 匹配的數(shù)據(jù),包裝成匹配記錄,添加到匹配鏈表中,刪除登入/ 登出記錄,并將本次未匹配的登入記錄保存到指定文件中。 前置條件已經(jīng)獲得用戶登入/登出記錄鏈表 基本流1.訪問用戶登入/登出記錄鏈表,按照登入/登出的 對應(yīng)關(guān)系匹配數(shù)據(jù),包裝成匹配記錄。 2. 把匹配好的記錄添加到匹配鏈表中 3. 將未匹配的登入記錄寫到指定的文件中。 分支與異常 后置條件無 備注無 2012 屆本科生畢業(yè)論文(設(shè)計) 9 數(shù)據(jù)發(fā)送用例說明: 表 2-5 數(shù)據(jù)發(fā)送的基本流程 用例名稱數(shù)據(jù)發(fā)送 功能簡述客戶端將匹配好的數(shù)據(jù)通過網(wǎng)絡(luò) socket 發(fā)送給服務(wù)端。 前置條件用戶登錄記錄已經(jīng)匹配成功 基本流 1.讀取發(fā)送失敗的文件。 2.創(chuàng)建網(wǎng)絡(luò)連接,鏈接到服務(wù)端。 3.遍歷匹配的用戶登錄記錄集合,將匹配好的用戶登錄數(shù) 據(jù)按照指定格式發(fā)送。 4.刪除發(fā)送的信息 5.循環(huán)直到所有匹配的登錄記錄處理完成。 6.保存發(fā)送失敗的記錄到文件中。 7.關(guān)閉網(wǎng)絡(luò)連接。 分支與異常 第 2 步,若網(wǎng)絡(luò)連接失敗,則發(fā)送異常報告。 第 6 步,若寫文件失敗,則發(fā)送異常報告。 后置條件無 備注無 數(shù)據(jù)接收用例說明: 表 2-6 數(shù)據(jù)接收的基本流程 用例名稱數(shù)據(jù)接收 功能簡述dms 服務(wù)端接收從客戶端傳送過來的數(shù)據(jù)。 前置條件服務(wù)器程序啟動,客戶端完成匹配,連接到服務(wù)端,并 已發(fā)送數(shù)據(jù)。 基本流1.開啟服務(wù)程序。 2.創(chuàng)建 socket 網(wǎng)絡(luò)連接。 3.開啟新的線程為客戶端服務(wù)。 4.循環(huán)從客戶端中接受數(shù)據(jù),保存在數(shù)據(jù)池中。 5. 關(guān)閉流對象,關(guān)閉網(wǎng)絡(luò)連接,終止線程。 分支與異常 第 1 步,若開啟服務(wù)失敗,則發(fā)送異常報告。 第 2 步,若獲得網(wǎng)絡(luò)連接失敗,則發(fā)送異常報告。 第 4 步,若寫出數(shù)據(jù)失敗,則發(fā)送異常報告。 后置條件無 備注無 2012 屆本科生畢業(yè)論文(設(shè)計) 10 數(shù)據(jù)保存用例說明: 表 2-6 數(shù)據(jù)保存的基本流程 用例名稱數(shù)據(jù)保存 功能簡述采集系統(tǒng)服務(wù)器將存放在數(shù)據(jù)池中的的數(shù)據(jù)保存到數(shù)據(jù)庫。 前置條件服務(wù)器已經(jīng)接收到數(shù)據(jù)。 基本流1、 建立到數(shù)據(jù)庫的連接。 2、循環(huán)訪問數(shù)據(jù)池中的數(shù)據(jù)。 3、 將數(shù)據(jù)池中的記錄插入到數(shù)據(jù)庫相應(yīng)的表格中。 4、訪問完成后斷開與數(shù)據(jù)庫的鏈接。 分支與異常 第 1 步,若建立數(shù)據(jù)庫連接失敗,則發(fā)送異常報告。 第 2 步,若插入記錄失敗,則發(fā)送異常報告。 后置條件無 備注無 數(shù)據(jù)整合用例說明: 表 2-7 數(shù)據(jù)整合的基本流程 用例名稱數(shù)據(jù)整合 功能簡述服務(wù)端將接收到的用戶登錄的數(shù)據(jù)整合成日報表,月報表 和年報表。 前置條件數(shù)據(jù)庫中存放有用戶登錄信息 基本流1.執(zhí)行 sql 語句,將數(shù)據(jù)庫中存放的前一天的記錄 按照用戶名和實驗室 ip 地址為條件組合,統(tǒng)計出前一天, 用戶登錄某一實驗室機器的總時間,整理形成日報表。 2.執(zhí)行 sql 語句,根據(jù)日報表數(shù)據(jù)整合出用戶登錄 服務(wù)器記錄的月報表。 3.執(zhí)行 sql 語句,根據(jù)用月報表數(shù)據(jù)整合出用戶登 錄服務(wù)器記錄的年報表。 分支與異常 后置條件無 備注無 2012 屆本科生畢業(yè)論文(設(shè)計) 11 3 概要設(shè)計 3.1 業(yè)務(wù)流程 3.1.1 業(yè)務(wù)流程中幾個存儲文件的命名規(guī)則 (1)系統(tǒng)日志文件由外部傳遞給客戶端程序,客戶端需要判定該文件是否存在然后才 能采集, 采集的數(shù)據(jù)為該文件的備份文件,備份的文件由當(dāng)前的日期和源文件名共同命 名。 (2)未匹配成功的登入數(shù)據(jù)項集合保存在文件中,文件名為 faillog.dat。 (3)發(fā)送失敗的數(shù)據(jù)匹配集合保存在 failsend.dat 中。 3.1.2 業(yè)務(wù)規(guī)則說明 日志登入/登出數(shù)據(jù)項讀取規(guī)則:系統(tǒng)日志文件中的數(shù)據(jù)項有很多類,通過登錄名和 登錄類型可以獲知哪些信息需要采集,哪些信息可以舍棄,只有滿足如下條件的數(shù)據(jù)項 才是需要采集的: (1)登錄名若以(.)開頭,一般是登錄程序本身的日志數(shù)據(jù)項,為非法數(shù)據(jù),不 需要采集。 (2)登錄類型必須是 7(登入)或 8(登出),其他類型的可以舍棄。 3.2 系統(tǒng)模塊 數(shù)據(jù)讀取模 塊 數(shù)據(jù)匹配模 塊 數(shù)據(jù)發(fā)送模 塊 /var/ad m/wtm px 數(shù)據(jù)接收模 塊 數(shù)據(jù)存儲模 塊 數(shù)據(jù)采集客戶端數(shù)據(jù)采集服務(wù)器 數(shù)據(jù)庫 數(shù)據(jù)整合模 塊 圖 3-1 系統(tǒng)功能模塊圖 2012 屆本科生畢業(yè)論文(設(shè)計) 12 物理上 dms 系統(tǒng)分為客戶端和服務(wù)端兩部分,在客戶端包含數(shù)據(jù)采集模塊,數(shù)據(jù)匹 配分析模塊和數(shù)據(jù)發(fā)送模塊;在服務(wù)端端包含數(shù)據(jù)接收模塊,數(shù)據(jù)存儲模塊和數(shù)據(jù)整合 模塊,各模塊的主要功能如下所示: 數(shù)據(jù)采集模塊:該模塊的主要功能是讀取 unix 服務(wù)器上的用戶登錄記錄日志的備份 文件,提取有用的記錄信息,如表 3-1 所示,保存到鏈表集合中,并傳給數(shù)據(jù)匹配模塊 來進(jìn)行數(shù)據(jù)匹配。 表 3-1 要讀取的原始記錄數(shù)據(jù) 數(shù)據(jù)名數(shù)據(jù)含義是否需要采集備注說明 logname 用戶名是匹配同一次登錄會話的必需數(shù)據(jù)之一 pid 登錄進(jìn)程 id匹配同一次登錄會話的必需數(shù)據(jù)之二 type 登錄類型 7-登 入,8-登出 type 的值在 1-8 之間,但只對 7 與 8 兩種情 況進(jìn)行處 logtime 登錄時刻/單 位為秒 是要采集的數(shù)據(jù),logtime 是登入或登出的時間 登錄的 ip 地 址 是要采集的數(shù)據(jù) 數(shù)據(jù)匹配模塊:數(shù)據(jù)匹配模塊的主要功能是將采集到的用戶記錄信息按照登入、登 出關(guān)系匹配成一條完整的登入、登出記錄,并計算出用戶的在線時間,將這些信息推入 鏈表中,然后將這些信息發(fā)送給數(shù)據(jù)發(fā)送模塊。該模塊的輸入數(shù)據(jù)是從日志文件中采集 到的原始記錄,輸出的是匹配好的登入、登出記錄。 表 3-2 需要匹配登錄記錄數(shù)據(jù) 數(shù)據(jù)名數(shù)據(jù)含義 logname 用戶登錄名 logintime 登入時刻 logouttime 登出時刻 durations 登錄時間長度 logip 登錄終端的 ip 地址 2012 屆本科生畢業(yè)論文(設(shè)計) 13 數(shù)據(jù)發(fā)送模塊:該模塊的主要功能是建立連接到服務(wù)端,將匹配好的登錄、登出記 錄用通過網(wǎng)絡(luò) tcp/ip 協(xié)議發(fā)送到 dms 系統(tǒng)服務(wù)端。 數(shù)據(jù)接收模塊:該模塊在服務(wù)器端主要功能是從網(wǎng)絡(luò)中接收客戶端發(fā)送來的登錄/登 出數(shù)據(jù)。 數(shù)據(jù)存儲模塊:該模塊得主要功能是將從數(shù)據(jù)接收模塊接收到的數(shù)據(jù)按照一定的格 式添加到數(shù)據(jù)庫中,保存為用戶登入/登出記錄明細(xì)表。 數(shù)據(jù)整合模塊:將數(shù)據(jù)庫中保存的用戶登錄/登出記錄明細(xì)表的數(shù)據(jù)整理生成日報表, 根據(jù)日報表整合成月報表,根據(jù)月報表整合成年報表。 用戶登錄服務(wù)器的信息在客戶端匹配好后發(fā)送給服務(wù)端,服務(wù)端接收到這些數(shù)據(jù), 并保存在數(shù)據(jù)庫中形成用戶登錄記錄明細(xì)表。客戶端定期從 wtmpx 中提取數(shù)據(jù),定期向 服務(wù)端發(fā)送信息然后我們的程序需要用 plsql 定期的整理出日報表,月報表和年報表。 在數(shù)據(jù)庫中保存的用戶登錄記錄信息結(jié)構(gòu)如下表所示: 表 3-3 數(shù)據(jù)庫中保存的登錄記錄數(shù)據(jù) 數(shù)據(jù)名數(shù)據(jù)含義 logname 用戶名 logintime 登入時間 logouttime 退出時間 durations 在線時間長度 logip 登錄終端的 ip 地址 labip 用戶登錄的實驗室 ip 3.3 接口設(shè)計 3.3.1 用戶接口 用戶:執(zhí)行命令,啟動 dms 服務(wù)端程序。 系統(tǒng):服務(wù)端系統(tǒng)正常運行,等待接收數(shù)據(jù)。 用戶:執(zhí)行命令,啟動 dms 客戶端程序。 系統(tǒng):客戶端系統(tǒng)正常運行,采集并發(fā)送數(shù)據(jù)。 2012 屆本科生畢業(yè)論文(設(shè)計) 14 3.3.2 外部接口 客戶端系統(tǒng)讀取用戶登錄記錄文件,獲得用戶登錄、登出信息。 客戶端系統(tǒng)讀取上次未匹配成功的登入記錄文件,獲取未匹配的登入記錄數(shù)據(jù)。 服務(wù)端系統(tǒng)將匹配好的數(shù)據(jù)寫入數(shù)據(jù)庫表中。 服務(wù)端系統(tǒng)整合出日報表,月報表和年報表。 3.3.3 內(nèi)部接口 客戶端讀取模塊與匹配模塊間的接口: 輸入:讀取解析好的用戶登入/登出記錄鏈表 輸出:無 客戶端匹配模塊與發(fā)送模塊間的接口: 輸入:匹配成功的用戶登錄記錄鏈表 輸出:無 客戶端數(shù)據(jù)發(fā)送與服務(wù)端數(shù)據(jù)接收間的接口: 輸入:匹配成功的用戶登錄記錄項 輸出:接收成功與否的消息 服務(wù)端數(shù)據(jù)接收模塊與數(shù)據(jù)保存模塊間的接口: 輸入:發(fā)送成功的用戶登錄記錄列表 輸出:無 服務(wù)端數(shù)據(jù)保存模塊與數(shù)據(jù)庫間接口: 輸入:發(fā)送成功的用戶登錄記錄列表 輸出:無 服務(wù)端數(shù)據(jù)整合模塊與數(shù)據(jù)庫間接口: 輸入:用戶登錄記錄明細(xì)表 輸出:用戶登錄記錄的日報表,月報表和年報表 3.4 數(shù)據(jù)結(jié)構(gòu)設(shè)計 根據(jù)系統(tǒng)需求,設(shè)計出如下數(shù)據(jù)實體: 2012 屆本科生畢業(yè)論文(設(shè)計) 15 1、logrec:登入/登出記錄類,用來存放一條原始的用戶登入/登出記錄。 2、matchedlogrec:匹配成功的登錄記錄類,用來表示一條匹配成功的用戶 登錄記 錄。 3.4.1 登入/登出記錄數(shù)據(jù)類 (1)logrec 類圖: 圖 3-2 logrec 類圖 (2)logrec 類成員變量說明 表 3-4 lorec 類成員變量 成員變量定義成員變量說明備注 char logname32 用戶名 int pid 用戶的進(jìn)程 id short type 登錄類型7=登入;8=登出 int logtime 用戶登入/登出時刻(秒) char logip257 用戶登錄 ip 2012 屆本科生畢業(yè)論文(設(shè)計) 16 3.4.2 匹配的用戶登錄記錄類 matchedlogrec 類圖: 圖 3-3 matchedlogrec 類圖 matchedlogrec 類成員變量說明: 表 3-5 matchedlorec 類成員變量 成員變量定義成員變量說明備注 char logname32 用戶登錄名 char logip32 用戶登錄終端 ip int logintime 登入時刻(秒) int logouttime 登出時刻(秒) int durations 用戶在線總時間(秒) char labip257 實驗室 ip 2012 屆本科生畢業(yè)論文(設(shè)計) 17 3.5 數(shù)據(jù)庫設(shè)計 根據(jù)用戶需求,最后生成的數(shù)據(jù)庫表包括:用戶登錄記錄明細(xì)表、用戶登錄記錄日 報表、用戶登錄記錄月報表和用戶登錄記錄年報表。數(shù)據(jù)庫具體表結(jié)構(gòu)如下: 表 3-6 用戶登錄記錄明細(xì)表 字段類型長度約束備注 登錄記錄編號 number15pk 系統(tǒng)自動生成 用戶 id char32not null 實驗室 ip char20not null 用戶終端 ip char257not null 登入時間 number20not null 登出時間 number20not null 登錄時長 number12 由登出時間- 登入時間求得 表 3-7 用戶登錄記錄日報表 字段類型長度約束備注 用戶 id char32pk 實驗室 ip char20pk 日登錄時長 number12not null 登出時間 date 表 3-8 用戶登錄記錄月報表 字段類型長度約束備注 用戶 id char32pk 實驗室 ip char257pk 2012 屆本科生畢業(yè)論文(設(shè)計) 18 月登錄時長 number12not null 登出時間 date 表 3-9 用戶登錄記錄年報表 字段類型長度約束備注 用戶 id char32pk 實驗室 ip char20pk 年登錄時長 number12not null 登出時間 date 4 詳細(xì)設(shè)計和實現(xiàn) 4.1 客戶端模塊 client 類封裝數(shù)據(jù)挖掘系統(tǒng)客戶端的所有功能。 圖 4-1 client 類圖 sendlogs 方法定義: 表 4-1 sendlogs 方法 方法原型 public void sendlogs() 方法功能執(zhí)行數(shù)據(jù)挖掘系統(tǒng)客戶端的完整過程,其中 logreader 負(fù)責(zé)讀 取數(shù)據(jù),logsender 負(fù)責(zé)發(fā)送數(shù)據(jù) 2012 屆本科生畢業(yè)論文(設(shè)計) 19 參數(shù)說明無 返回類型 void 拋出異常調(diào)用類的異常 4.1.1 數(shù)據(jù)讀取模塊設(shè)計 logreader 類封裝了讀取日志數(shù)據(jù)的各項功能 圖 4-2 logreader 類圖 logreader 成員變量說明如表 4-2 所示: 表 4-2 logreader 成員變量 成員變量定義成員變量說明 char logfilename50 讀取用戶登錄數(shù)據(jù)的日志文件名 char backfilename50 備份的日志文件名 2012 屆本科生畢業(yè)論文(設(shè)計) 20 char failloginsfilename50 未匹配成功的登錄記錄保存文件名 logins list 保存登入的記錄鏈表 logouts list 保存退出的記錄鏈表 matches list 保存匹配成功的記錄鏈表 readlogs 方法如表 4-3 所示: 表 4-3 readlogs 定義方法 方法原型public : list readlogs() 方法功能讀取日志文件總調(diào)度函數(shù) 存儲匹配好的數(shù)據(jù)集合 參數(shù)說明無 返回類型 list 拋出異常調(diào)用函數(shù)中可能拋出的異常 readlogs 方法活動圖: 圖 4-3 readlogs 活動圖 數(shù)據(jù)讀取模塊具體代碼實現(xiàn): 2012 屆本科生畢業(yè)論文(設(shè)計) 21 int fd=open(backfilename,o_rdonly); struct stat filestate; fstat(fd, cout:iterator oit=logouts.begin(); list:iterator iit=logins.begin(); for(;oit!=logouts.end();) for(iit=logins.begin();iit!=logins.end() if(!strcmp(oit-logname,iit-logname) strcpy(mlog.logname,oit-logname); mlog.pid=oit-pid; mlog.logintime=iit-logtime; mlog.logouttime=oit-logtime; mlog.durations=oit-logtime-iit-logtime; strcpy(mlog.logip,oit-logip); matches.push_back(mlog); logins.erase(iit); break; else iit+; logouts.erase(oit); oit=logouts.begin(); 2012 屆本科生畢業(yè)論文(設(shè)計) 27 4.1.3 數(shù)據(jù)發(fā)送模塊設(shè)計 logsender 類定義 圖 4-8 logsender 圖 logsender 類成員變量說明如表 4-8 所示: 表 4-8 logsender 類成員定義 成員變量定義成員變量說明 char failsendfilename50 保存發(fā)送失敗記錄的文件名 int fd 采集系統(tǒng)服務(wù)器網(wǎng)絡(luò)描述符 unsigned short port 鏈接到的服務(wù)器端口 char serverip20 要連接的服務(wù)器 ip sendmatches 方法如表 4-9 所示: 表 4-9 sendmatches 定義方法 方法原型 public void sendmatches(list*matches) 方法功能發(fā)送匹配成功的日志集合到服務(wù)端 參數(shù)說明matches 為存儲發(fā)送數(shù)據(jù)的集合鏈表 返回類型 void 拋出異常建立連接失敗,拋出 senddataexception 異常 2012 屆本科生畢業(yè)論文(設(shè)計) 28 sendmatches 方法活動圖: 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 圖 4-9 sendmatches 活動圖 initsocket 方法如表 4-10 所示: 表 4-10 initsocket 定義方法 方法原型 public void initnetwork() 方法功能 根據(jù) ip 和 port 以及 serverip 連接到服務(wù)端,初始化網(wǎng) 絡(luò) 參數(shù)說明無 返回類型 void 拋出異常建立連接失敗,拋出 senddataexception 異常 2012 屆本科生畢業(yè)論文(設(shè)計) 29 readsendfailed 方法如表 4-11 所示: 表 4-11 readsendfailed 定義方法 方法原型 public: voidreadsendfailed(list*matches) 方法功能讀取未發(fā)送成功的數(shù)據(jù)文件 參數(shù)說明matches: 匹配好的用戶日志記錄鏈表指針 返回類型 void 拋出異常發(fā)送數(shù)據(jù)失敗,拋出 senddataexception 異常 savesendfailed 方法如表 4-12 所示: 表 4-12 savesendfailed 定義方法 方法原型 public void savesendfailed (list*matches) 方法功能存儲發(fā)送失敗的數(shù)據(jù) 以備下次重新讀取發(fā)送 參數(shù)說明 matches: 匹配好的用戶日志記錄鏈表指針 存儲時 把集合中剩余的數(shù)據(jù)存儲到文件 返回類型 void 拋出異常發(fā)送數(shù)據(jù)失敗,拋出 senddataexception 異常 數(shù)據(jù)發(fā)送模塊具體代碼實現(xiàn): 第一步:讀取上次匹配失敗的數(shù)據(jù) int fd=open(“filename“,o_rdonly|o_excl); if(fd=-1) return; while(1) matchedlogrec match; int re=read(fd, if(repush_back(match); 第二步驟:初始化網(wǎng)絡(luò),建立到服務(wù)器的連接 fd=socket(pf_inet,sock_stream,0); if(fd=-1) coutsize()0) list:iterator it=matches-begin(); matchedlogrec match=*it; int re=write(fd, matches-erase(it); if(re=-1) break; close(fd); 2012 屆本科生畢業(yè)論文(設(shè)計) 31 4.2 服務(wù)端模塊 server 類封裝了服務(wù)端的所有模塊功能 圖 4-10 server 類圖 server 成員變量說明如表 4-13 所示: 表 4-13 server 成員變量說明 成員變量定義成員變量說明 char labip20 實驗室 ip int fd socket 描述符 datarecivethread productor 接收數(shù)據(jù)的線程 datasavethread customer 存儲數(shù)據(jù)的線程 userdata datapool productor 和 customer 共享的數(shù)據(jù)緩沖池 server 類方法說明: initsocket 方法如表 4-14 所示: 表 4-14 initsocket 方法 方法原型 public void initsocket( ) 方法功能初始化網(wǎng)絡(luò),啟動 socket 的 bind,listen 和 accept 參數(shù)說明無 返回類型 void 拋出異常初始 serversocket 失敗,發(fā)出異常 dmsserverexception 2012 屆本科生畢業(yè)論文(設(shè)計) 32 startservice 方法 如表 4-15 所示: 表 4-15 startservice 方法 方法原型 public void startservice( ) 方法功能響應(yīng)客戶連接請求,開啟線程為接收客戶端數(shù)據(jù) 參數(shù)說明無 返回類型 void 拋出異常響應(yīng)客戶請求過程失敗,發(fā)出異常 dmsserverexception 4.2.1 數(shù)據(jù)接收模塊 圖 4-11 datareceivethread 類圖 datarecivethread 成員變量的說明如表 4-16 所示: 表 4-16 datarecivethread 成員變量說明 成員變量定義成員變量說明 pthread_t threadid 標(biāo)識一個線程對象 run()方法如表 4-17 所示: 表 4-17 run()定義方法 方法原型 public void run( ) 方法功能完成具體的數(shù)據(jù)接收工作 參數(shù)說明無 返回類型 void 拋出異常 2012 屆本科生畢業(yè)論文(設(shè)計) 33 start 方法如表 4-18 所示: 表 4-18 start 定義方法 方法原型 public void start( ) 方法功能完成線程的創(chuàng)建和啟動 參數(shù)說明無 返回類型 void 拋出異常 recivedata 方法如表 4-19 所示: 表 4-19 recivedata 定義方法 方法原型 public void* recivedata( ) 方法功能創(chuàng)建線程時調(diào)用的線程函數(shù) 參數(shù)說明無 返回類型 void* 拋出異常 數(shù)據(jù)接收模塊具體代碼實現(xiàn): 通過創(chuàng)建線程來實現(xiàn)對數(shù)據(jù)的接收,這樣可以接收來自多個客戶端的據(jù) 第一步:初始化網(wǎng)絡(luò) int fd=socket(pf_inet,sock_stream,0); if(fd=-1) coutrun(); void productthread:run() matchedlogrec mlog=0; int i=0; while(1) i+; sleep(1); int cfd=recv(afd, if(cfdafd=afd; void productthread: start() pthread_create( 4.2.2 數(shù)據(jù)存儲模塊 圖 4-12 datasavethread 類圖 datasavethread 成員變量的說明如表 4-20 所示: 表 4-20 datasavethread 成員變量說明 成員變量定義成員變量說明 pthread_t threadid 標(biāo)識一個線程對象 logdao logdao 向數(shù)據(jù)庫中存儲數(shù)據(jù)的對象 datasavethread 成員函數(shù)說明: 2012 屆本科生畢業(yè)論文(設(shè)計) 36 run 方法如表 4-21 所示: 表 4-21 run 定義方法 方法原型 public void run( ) 方法功能完成具體調(diào)用類 dmsdao 完成數(shù)據(jù)存儲的工作 參數(shù)說明無 返回類型 void 拋出異常 start 方法如表 4-22 所示: 表 4-22 start 定義方法 方法原型 public void start( ) 方法功能完成線程的創(chuàng)建和啟動 參數(shù)說明無 返回類型 void 拋出異常 savedata 方法如表 4-23 所示 表 4-23 savedata 定義方法 方法原型 public void* savedata( ) 方法功能創(chuàng)建線程時調(diào)用的線程函數(shù) 參數(shù)說明無 返回類型 void* 拋出異常 數(shù)據(jù)存儲模塊具體代碼實現(xiàn): 通過創(chuàng)建消費者線程把數(shù)據(jù)存入數(shù)據(jù)庫中 2012 屆本科生畢業(yè)論文(設(shè)計) 37 static void* customerthread:getdata(void *par) dmsdao dao; dao.connect(“openlab/open123“); while(1) savelogrec mlog=datapool.pop_data(); dao.savedata(mlog); mit(); dao.disconnect(); void customerthread:start() pthread_create( 4.2.3 數(shù)據(jù)緩沖池 圖 4-13 userdata 類圖 userdata 成員變量說明如表 2-24 所示: 表 4-24 userdata 成員變量 成員變量定義成員變量說明 deque data 緩沖客戶端的數(shù)據(jù)池的真正存儲容器 pthread_mutex_t mutex 控制線程安全的互斥量 pthread_cont_t con_p 控制是否生產(chǎn)的條件量 pthread_cont_t con_c 控制是否消費的條件量 userdata 類方法說明 2012 屆本科生畢業(yè)論文(設(shè)計) 38 push_data 方法如表 4-25 所示: 表 4-25 push data 定義方法 方法原型public:void push_data(logdata rec) 方法功能向緩沖池中加入數(shù)據(jù) 參數(shù)說明logdata rec 是要往數(shù)據(jù)庫表中存儲的數(shù)據(jù) 返回類型 void 拋出異常無 pop_data 方法如表 4-26 所示: 表 4-26 pop data 定義方法 方法原型public:logdata pop_data() 方法功能從緩沖池中取出數(shù)據(jù) 參數(shù)說明無 返回類型 logdata 2012 屆本科生畢業(yè)論文(設(shè)計) 39 4.3 異常設(shè)計 4.3.1 異常類結(jié)構(gòu)圖 圖 4-14 異常結(jié)構(gòu)類圖 4.3.2 客戶端異常類說明 異常類名異常類責(zé)任說明備注 dmsreadexception 讀取數(shù)據(jù)失敗異常。 backupexcept
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年銷售員工商業(yè)秘密保護(hù)合同版B版
- 二零二五年創(chuàng)業(yè)計劃眾籌資金籌集與管理協(xié)議2篇
- 2024技術(shù)咨詢合同標(biāo)的及詳細(xì)規(guī)定
- 二零二五年度辦公室裝修工程后期跟蹤服務(wù)合同樣本2篇
- 2024年育兒嫂工作詳細(xì)服務(wù)合同版
- 二零二五年度升級版方自卸車租賃合同2篇
- 2025年度水電工程節(jié)能改造合同3篇
- 2025年上海市二手房買賣合同中合同附件與補充協(xié)議范本2篇
- 2024版房屋建筑施工協(xié)議范本一
- 2025版抗老型化妝品原料供應(yīng)與產(chǎn)品研發(fā)合作合同3篇
- (已壓縮)礦產(chǎn)資源儲量技術(shù)標(biāo)準(zhǔn)解讀300問-1-90
- 《阿爾茨海默病康復(fù)》課件
- 2022-2023學(xué)年福建省泉州市惠安縣三年級(上)期末數(shù)學(xué)試卷
- 校企聯(lián)合實驗室的運營與維護(hù)
- 統(tǒng)編版語文2024-2025學(xué)年六年級上冊語文期末專題訓(xùn)練:字音字形(有答案)
- 機器人課件模板下載
- 江蘇省蘇州市2023-2024學(xué)年高二上學(xué)期期末學(xué)業(yè)質(zhì)量陽光指標(biāo)調(diào)研試題 物理 含答案
- 2024年安防監(jiān)控系統(tǒng)技術(shù)標(biāo)準(zhǔn)與規(guī)范
- 軟件正版化概念培訓(xùn)
- 工程結(jié)算業(yè)務(wù)咨詢服務(wù)協(xié)議書
- 運輸公司安全生產(chǎn)隱患排查制度
評論
0/150
提交評論