




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、哈夫曼編碼譯碼器實(shí)驗(yàn)報(bào)告(免問(wèn)題解析與解題方法問(wèn)題分析: 設(shè)計(jì)一個(gè)哈夫曼編碼、譯碼系統(tǒng)。對(duì)一個(gè)ASCII 編碼的文本文件中的字符進(jìn)行哈夫曼編 碼,生成編碼文件;反過(guò)來(lái),可將編碼文件譯碼 還原為一個(gè)文本文件。( 1) 從文件中讀入任意一篇英文短文 (文件為 ASCII 編碼,擴(kuò)展名為 txt );( 2) 統(tǒng)計(jì)并輸出不同字符在文章中出現(xiàn)的頻 率(空格、換行、標(biāo)點(diǎn)等也按字符處理) ;( 3) 根據(jù)字符頻率構(gòu)造哈夫曼樹(shù), 并給出每個(gè) 字符的哈夫曼編碼;( 4) 將文本文件利用哈夫曼樹(shù)進(jìn)行編碼, 存儲(chǔ) 成壓縮文件(編碼文件后綴名 .huf )( 5) 用哈夫曼編碼來(lái)存儲(chǔ)文件, 并和輸入文本 文件大小進(jìn)
2、行比較,計(jì)算文件壓縮率;( 6) 進(jìn)行譯碼,將 huf 文件譯碼為 ASCII 編 碼的 txt 文件,與原 txt 文件進(jìn)行比較。 根據(jù)上述過(guò)程可以知道該編碼譯碼器的關(guān)鍵 在于字符統(tǒng)計(jì)和哈夫曼樹(shù)的創(chuàng)建以及解碼。哈夫曼樹(shù)的理論創(chuàng)建過(guò)程如下:一、構(gòu)成初始集合 對(duì)給定的 n 個(gè)權(quán)值 W1,W2,W3,.,Wi,.,Wn 構(gòu)成 n 棵二 叉樹(shù)的初始集合F=T1,T2,T3,.,Ti,.,Tn ,其中每棵二 叉樹(shù) Ti 中只有一個(gè)權(quán)值為 Wi 的根結(jié) 點(diǎn),它的左右子樹(shù)均為空。二、選取左右子樹(shù)在 F 中選取兩棵根結(jié)點(diǎn)權(quán)值最小的樹(shù) 作為新構(gòu)造的二叉樹(shù)的左右子樹(shù),新 二叉樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左右子樹(shù) 的根結(jié)
3、點(diǎn)的權(quán)值之和。三、刪除左右子樹(shù)從 F 中刪除這兩棵樹(shù),并把這棵新的二 叉樹(shù)同樣以升序排列加入到集合 F 中。四、重復(fù)二和三兩步,重復(fù)二和三兩步,直到集合 F 中只有一 棵二叉樹(shù)為止。因此,有如下分析:1. 我們需要一個(gè)功能函數(shù)對(duì) ASCII 碼的初始 化并需要一個(gè)數(shù)組來(lái)保存它們;2. 定義代表森林的數(shù)組,在創(chuàng)建哈夫曼樹(shù)的 過(guò)程當(dāng)中保存被選中的字符,即給定報(bào)文 中出現(xiàn)的字符 ,模擬哈夫曼樹(shù)選取和刪除左 右子樹(shù)的過(guò)程;3. 自底而上地創(chuàng)建哈夫曼樹(shù),保存根的地址 和每個(gè)葉節(jié)點(diǎn)的地址,即字符的地址,然 后自底而上檢索,首尾對(duì)換調(diào)整為哈夫曼 樹(shù)實(shí)現(xiàn)哈弗曼編碼;4. 從哈弗曼編碼文件當(dāng)中讀入字符,根據(jù)當(dāng)
4、前字符為 0 或者 1 的狀況訪問(wèn)左子樹(shù)或者 右孩子,實(shí)現(xiàn)解碼;5. 使用文件讀寫(xiě)操作哈夫曼編碼和解碼結(jié)果 的寫(xiě)入;解題方法:結(jié)構(gòu)體、數(shù)組、類(lèi)的定義:1. 定義結(jié)構(gòu)體類(lèi)型的 signode 作為哈夫曼樹(shù) 的節(jié)點(diǎn),定義結(jié)構(gòu)體類(lèi)型的 hufnode 作為 哈夫曼編碼對(duì)照表的節(jié)點(diǎn), 定義 HFM 類(lèi)實(shí) 現(xiàn)對(duì)哈夫曼樹(shù)的創(chuàng)建,利用其成員函數(shù)完 成哈夫曼編碼譯碼的工作。2. 定義 signode 類(lèi)型的全局?jǐn)?shù)組 SN256(為 方便調(diào)用,之后的 forest256 ,hufNode256 均為全局?jǐn)?shù)組) , 保存 ASCII 編碼的字符, 是否在文章中出現(xiàn)( bool 類(lèi)型)以及出現(xiàn) 次數(shù)(int 類(lèi)型,
5、權(quán)重),左右孩子節(jié)點(diǎn)位置, 父節(jié)點(diǎn)位置信息;3. 為節(jié)省存儲(chǔ)空間, 定義 signode * 類(lèi)型的全 局?jǐn)?shù)組 forest256, 模擬森林, 在創(chuàng)建哈夫 曼樹(shù)的過(guò)程中保存出現(xiàn)字符的指針,模擬 哈夫曼樹(shù)選取和刪除左右子樹(shù)的過(guò)程;4. 定 義 hufnode 類(lèi) 型 的 全 局 數(shù) 組 hufNode256 ,在編碼時(shí)最為哈夫曼編碼對(duì) 照 表 的 節(jié) 點(diǎn) , char 型 c 保 存 字 符 ,int code100保存其哈夫曼編碼;5. 定義 HFM 類(lèi),主要保存哈夫曼樹(shù)的根節(jié)點(diǎn) 指針,但其豐富的功能函數(shù)將實(shí)現(xiàn)哈夫曼 編碼譯碼的工作及其他功能;函數(shù)介紹:1. void init(signod
6、e * sig) 初始化數(shù)組 SN;2. void compress() 輸出壓縮對(duì)比情況 的信息;3. void exchange() 用兩層 for 循環(huán)實(shí)現(xiàn) hufNodei 節(jié)點(diǎn) 的成 員哈 夫曼編 碼 數(shù)組 code 前后元素的對(duì)換, 因?yàn)樵谥暗木幋a 過(guò)程中由于是從葉節(jié)點(diǎn)追溯至根節(jié)點(diǎn),存 入 code 數(shù)組的哈夫曼編碼與哈夫曼編碼的 概念反向,故而要調(diào)整;4. signode * getroot() 返回哈夫曼樹(shù)的 根節(jié)點(diǎn)指針;5. signode * HFM:creat() 創(chuàng)建哈夫曼 樹(shù),首先用三個(gè) for 循環(huán)查看 forest 數(shù)組, 找到權(quán)值最小的兩個(gè)字符,以 int 型
7、的 min1,min2 記錄其下標(biāo),定義 signode * 類(lèi) 型指針 pp 指向新生成 signode 節(jié)點(diǎn),用指 針 操 作 使 pp 指 向 的 節(jié) 點(diǎn) 的 權(quán) 值 為 min1,min2 權(quán) 值 之 和 , pp 做 孩 子 指 向 forestmin1, 右 孩 子 指 向 forestmin2 , min1,min2 的父指針指向 pp,然后將 pp 存 入 min1 的位置, min2 之后的每一個(gè)節(jié)點(diǎn) 依次往前移一個(gè)位置, 實(shí)現(xiàn)從 forest 數(shù)組中 清除 min1,min2 并加入 pp 的操作;6. void HFM:hufcode() 哈夫曼編碼,用 for 循環(huán)控制
8、查看 hufNode 數(shù)組,其初始化 已在 creat ()的開(kāi)始完成,對(duì)每一個(gè)字符 實(shí)現(xiàn)編碼, 用 while 循環(huán)從葉節(jié)點(diǎn)開(kāi)始, 如 果該節(jié)點(diǎn)是其父節(jié)點(diǎn)的左孩子就將 codehufNodei.size+ 賦值 0,否則賦為 1, 直至當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)為空, while 循環(huán)結(jié) 束;7. void HFM:savewithhufcode(FILE * inf,FILE * outf) 將讀入的文章以哈 夫曼編碼的形式存儲(chǔ), 其中 inf 為讀入文件 的指針, outf 為寫(xiě)入文件的指針 ,首先調(diào)用 rewind(inf) 函數(shù)將光標(biāo)放置在文章開(kāi)頭, 防 止文件未關(guān)閉導(dǎo)致的錯(cuò)誤,每讀一個(gè)字符
9、就用 for 循環(huán)在 hufNode 數(shù)組中查找,因 為 hufNode 數(shù)組就是保存出現(xiàn)的字符的, 故一定可以找到,然后再用 fputc 函數(shù)將 code數(shù)組的內(nèi)容寫(xiě)入文件, 直至讀入文件 結(jié)束;8. void HFM:inorder(signode * sig) 迭 代法遍歷樹(shù),遍歷到葉節(jié)點(diǎn)時(shí)執(zhí)行 hufNodecount+.sig=sig 語(yǔ) 句 實(shí) 現(xiàn) hufNode 數(shù)組指向文章中出現(xiàn)的字符; 9.int HFM:maxc() 計(jì)數(shù)變量,記錄哈夫曼編碼最大位數(shù);10. void HFM:hufdecode(FILE* ipf,FILE* opf) 解碼,從哈夫曼編碼到字符,輸 出到屏
10、幕和指定的文件中;11. void input(FILE * f) 初始讀入文 章,保存出現(xiàn)的字符記錄修改其權(quán)重;數(shù)據(jù)結(jié)構(gòu)選擇與算法設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)選擇:signode:structsignode /signode 節(jié)點(diǎn),哈夫曼樹(shù)節(jié)點(diǎn) /charc;/字符 /intweight;/權(quán)重 /boolb;/文章中是否出現(xiàn) / signode * parent; signode * left;signode * right;signode() 化/c=NULL;b=false;weight=0; parent=left=right=NULL; ;Cweightbhufnode:struct hufnod
11、e/哈夫曼編碼對(duì)照表節(jié)點(diǎn) / signode * sig; int/保存哈夫曼編碼 /初始code100;int size;bool b;hufnode()sig=NULL;size=0;b=true;SigHFM:classHFM/哈夫曼類(lèi) /private:root;pt;signode * /哈夫曼樹(shù)根 /signode * /編碼時(shí)做哨兵指針 /int alleaf;public:HFM(int all)root=pt=NULL;alleaf=all; /all 是森林中樹(shù)的個(gè)數(shù) /HFM()signode * getroot()return root;signode/創(chuàng)建哈夫曼樹(shù) /
12、voidcreat();hufcode();/編碼 /voidinf,FILE * outf); 件/savewithhufcode(FILE/用哈弗曼編碼存儲(chǔ)文hufdecode(FILE* ipf,FILE*/解碼 / void inorder(signode * sig); int maxc();/求取哈弗曼編碼最大長(zhǎng)度 /;opf);Rootalleafvoidpt算法設(shè)計(jì):Doc 窗口:Minininire:TT0T0:IDT:TATATTT0;venw: DIT: KI110W: IHIHRTH:養(yǎng)丿-lm-3了訂 44r Jr 亍工4一. j Hr 42 丄I:護(hù)-亠r:ii務(wù)
13、s 4IB一4r-4l up- A o iHcrHdLlsIwdM 館.吩3;匹佚第蠱応wsM;3J3isu; .二 1 二 一 - 二二匚.二 yyy *辛4.$耳* *=*w書(shū)雯*s#s管*wN#=*lr yvg型鄒爭(zhēng),幕型鄒歩竽驢審型$卵爭(zhēng)騎型I八yq6nq心皿q叫十冊(cè)zpxg !汕.力扎文件讀寫(xiě)(部分):總結(jié)程序分析: 本次哈夫曼編碼譯碼器的課程實(shí)驗(yàn)做得還 算成功, 不僅僅在于程序能夠正常運(yùn)行, 實(shí)現(xiàn)應(yīng) 有的功能, 關(guān)鍵在于過(guò)程, 在于小組成員的分工 合作和一起糾錯(cuò)排錯(cuò)的過(guò)程, 在完成程序的過(guò)程 中才能真正理解面向?qū)ο蠛湍K化設(shè)計(jì)的思想, 我們不僅僅是說(shuō)要每人分幾個(gè)函數(shù), 關(guān)鍵在于這
14、些函數(shù)代表的是一個(gè)個(gè)功能模塊, 任何一個(gè)模塊 出現(xiàn)問(wèn)題或者模塊之間的銜接出現(xiàn)問(wèn)題都將導(dǎo) 致程序運(yùn)行的失敗哈夫曼編碼譯碼器課程實(shí)驗(yàn)我主要負(fù)責(zé) 完成編碼譯碼器數(shù)據(jù)結(jié)構(gòu)和功能模塊框架的設(shè) 計(jì),結(jié)構(gòu)體和類(lèi)的定義, 以及 creat 函數(shù),hufcode 函數(shù), savewithhufcode 函數(shù)的實(shí)現(xiàn)。在初始設(shè) 計(jì)的時(shí)候, 我體會(huì)到書(shū)寫(xiě)流程圖的重要性, 只有 又一個(gè)清晰的設(shè)計(jì)思路才能事半功倍,分工明 確,避免無(wú)效勞動(dòng)或者在錯(cuò)誤的編程方向上走彎 路,也讓大家明白自己在程序設(shè)計(jì)中的位置和職 責(zé)。初始的創(chuàng)建是哈夫曼編碼譯碼系統(tǒng)成功 的關(guān)鍵,我在創(chuàng)建的過(guò)程當(dāng)中多次使用樹(shù)的先 根,配合中根遍歷操作, 輸出接點(diǎn)
15、字符或者權(quán)重 信息,作為檢驗(yàn), 對(duì)驗(yàn)證和糾錯(cuò)起到了非常大的 作用。在適當(dāng)?shù)牡胤秸{(diào)用它們, 運(yùn)行時(shí)可以看到 驗(yàn)證編寫(xiě)程序的正確性; 通過(guò)本次實(shí)驗(yàn),提高了自已調(diào)試程序的能 力。充分體會(huì)到了在程序執(zhí)行時(shí)的提示性輸出的 重要性。編寫(xiě)大一點(diǎn)的程序,應(yīng)先寫(xiě)出算法,再 寫(xiě)程序, 一段一段調(diào)試; 對(duì)于沒(méi)有實(shí)現(xiàn)的操作用 空操作代替, 這樣容易找出錯(cuò)誤所在。 最忌諱將 所有代碼寫(xiě)完后再調(diào)試, 這樣若程序有錯(cuò)誤, 太難找需要特別強(qiáng)調(diào)的是:1 感覺(jué)文件操作自己并不是很熟練, 盡管在 向顯示器輸出的時(shí)候并沒(méi)有什么錯(cuò)誤但是 讀寫(xiě)文件的時(shí)候就沒(méi)那么順利了,比如說(shuō) 當(dāng)編寫(xiě) savewithhufcode 函數(shù)時(shí)讀文件,卻 總
16、不執(zhí)行,后來(lái)通過(guò)斷點(diǎn)測(cè)試發(fā)現(xiàn)每次 fgetc() 返回值總為 -1 ,于是我考慮是否是 文件沒(méi)有打開(kāi)或者文件結(jié)束的緣故,后來(lái) 想通了是之前打開(kāi)的文件光標(biāo)讀操作結(jié)束 后仍在結(jié)尾故每次總返回 -1 ,故調(diào)用 rewind 函數(shù)將光標(biāo)位置移動(dòng)到文章開(kāi)始。 2. 用哈夫曼編碼存儲(chǔ)文件的時(shí)候還應(yīng)注 意數(shù)字 0,1 與字符 0,1的不同,不應(yīng)直接 在fputc() 函數(shù)中直接寫(xiě)入 0,1 那么將 會(huì)是寫(xiě)入的文章中什么都沒(méi)有,因?yàn)?0 在ASCII碼中代表 NULL。3. 該程序函數(shù)清晰功能明確, 程序具有通 用性,對(duì)于不同的輸入文章都可進(jìn)行處 理,由于采用哈夫曼編碼對(duì)照表, 使得 查看哈夫曼編碼是效率較高
17、無(wú)需每次 遍歷哈夫曼樹(shù)。程序清單.cpp #include#include#include#include#includeHh1.husing namespace std;FILE * f1=fopen(d:pra1.txt,r);FILE * f2=fopen(d:pra2.txt,w);FILE * f3=fopen(d:pra4.huf,w);int main()init(SN); / 初始化字符數(shù)據(jù)庫(kù) / input(f1);/ 讀入初始文件的字符 /for(int i=0;foresti!=NULL;i+)coutc:weightendl; / 輸出字符及出現(xiàn)次數(shù) / cout 出現(xiàn)
18、字符種類(lèi)countendl;/輸出字符種類(lèi) / 創(chuàng) 建 哈 夫 曼 樹(shù) 實(shí) 例 / huffman.creat();/哈夫曼編碼,此時(shí)為逆向 / 調(diào) 整 首 尾 對(duì) 調(diào) 哈 夫 曼 編 碼 / 用哈夫曼編碼存儲(chǔ)原文件 /HFM huffman(count);/ 創(chuàng)建哈夫曼樹(shù) / count=0;huffman.hufcode();exchange(); huffman.savewithhufcode(f1,f2);coutendl;cout1. 查看哈夫曼編碼 endl;cout2. 哈夫曼解碼 endl;cout3. 查看壓縮率 choice;while(choice=1&choice=3)
19、switch(choice)case 1:for(i=0;hufNodei.sig!=NULL;i+)cout 字符 c 的哈夫曼編碼 :for(int j=0;jhufNodei.size;j+)couthufNodei.codej; coutendl;cout 最大列數(shù) :huffman.maxc()endl;break;case 2:fclose(f2);f2=fopen(d:pra2.txt,r);huffman.hufdecode(f2,f3);coutendl;break;case 3:compress();coutendl;cout1. 查看哈夫曼編碼 endl;cout2. 哈
20、夫曼解碼 endl;cout3. 查看壓縮率 choice;cout* 謝謝使用 *endl;return 0;/輸出哈夫曼編碼 / 哈夫曼解碼 / 查看壓縮情況 / 退出操作 /.h#include using namespace std;struct signode/signode 節(jié)點(diǎn),哈夫曼樹(shù)節(jié)點(diǎn)char c;/字符 /int weight;/權(quán)重 /bool b;/文章中是否出現(xiàn) /signode * parent;signode * left;signode * right;signode()/初始化 /c=NULL; b=false; weight=0;parent=left=r
21、ight=NULL; signode SN256;signode * forest256;/ 森林?jǐn)?shù)組保存出現(xiàn)的字符 /int count=0;/出現(xiàn)字符計(jì)數(shù) /float memo1=0,memo2=0;/全局變量記錄讀入字符數(shù)和編碼的0 1 數(shù)/void init(signode * sig)/SN 數(shù)組初始化,輸入常見(jiàn)字符 /sig0.c=a;sig1.c=b;sig2.c=c; sig3.c=d;sig4.c=e; sig5.c=f;sig6.c=g;sig7.c=h;sig8.c=i;sig9.c=j; sig10.c=k;sig11.c=l;sig12.c=m;sig13.c=n;
22、sig14.c=o; sig15.c=p;sig16.c=q;sig17.c=r;sig18.c=s;sig19.c=t; sig20.c=u;sig21.c=v;sig22.c=w;sig23.c=x;sig24.c=y; sig25.c=z;sig26.c=A;sig27.c=B;sig28.c=C;sig29.c=D;sig30.c=E; sig31.c=F;sig32.c=G;sig33.c=H;sig34.c=I;sig35.c=J; sig36.c=K;sig37.c=L;sig38.c=M;sig39.c=N;sig40.c=O; sig41.c=P;sig42.c=Q;sig4
23、3.c=R;sig44.c=S;sig45.c=T; sig46.c=U;sig47.c=V;sig48.c=W;sig49.c=X;sig50.c=Y; sig51.c=Z;sig52.c=0;sig53.c=1;sig54.c=2;sig55.c=3;sig56.c=4; sig57.c=5;sig58.c=6;sig59.c=7;sig60.c=8;sig61.c=9;sig62.c=+;sig63.c=-;sig64.c=*;sig65.c=/;sig66.c=,; sig67.c=.;sig68.c=; sig69.c=;sig70.c=:;sig71.c=;sig72.c=;sig
24、74.c=;sig75.c=?;sig76.c= ; sig77.c=(;sig78.c=);sig79.c=;sig80.c=;sig81.c=; sig82.c=;sig83.c=!;sig84.c=;sig85.c=#;sig86.c=$; sig87.c=%;sig88.c=;sig89.c=&;sig90.c=;sig91.c=10;void compress()/壓縮情況對(duì)比 /cout 壓縮前 :memo1*8bit 壓縮后 :memo2bitendl;cout 壓縮率 :memo2/(memo1*8)endl;struct hufnode/ 哈夫曼編碼對(duì)照表節(jié)點(diǎn) /signod
25、e * sig;int code100;/保存哈夫曼編碼 / int size;bool b;hufnode()sig=NULL;size=0;b=true; ;/ 調(diào)換首尾交換哈夫曼編碼 /hufnode hufNode256; void exchange()int temp;for(int i=0;hufNodei.sig!=NULL;i+)for(int s=0,b=hufNodei.size-1;s=b;s+,b-)temp=hufNodei.codes;hufNodei.codes=hufNodei.codeb;hufNodei.codeb=tempclass HFM/哈夫曼類(lèi) /p
26、rivate:signode * root;/哈夫曼樹(shù)根 /signode * pt;/編碼時(shí)做哨兵指針 /int alleaf;public:HFM(int all)root=pt=NULL;alleaf=all;/all是森林中樹(shù)的個(gè)數(shù) /HFM()signode * getroot()return root;signode * creat();void hufcode();void savewithhufcode(FILE * inf,FILE * outf);void hufdecode(FILE* ipf,FILE* opf);void inorder(signode * sig);
27、int maxc();signode * HFM:creat()signode * pp=NULL;/ 創(chuàng)建哈夫曼樹(shù) /編碼 / 用哈弗曼編碼存儲(chǔ)文件 /解碼 /求取哈夫碼曼最大長(zhǎng)度 /for(int i=0;ib=false;/為 hufcode 函數(shù)作準(zhǔn)備,與此函數(shù)無(wú)關(guān) / while(count1)int min=10000;int min1,min2;for(int i=0;foresti!=NULL;i+)/ 以 下 三 個(gè) for 循 環(huán) 選出當(dāng)前森林中的最小兩個(gè)節(jié)點(diǎn)/if(foresti-weightweight;min1=i;/min=10000;/for(i=0;forest
28、i!=NULL&i!=min1;i+)/if(foresti-weightweight;min2=i;/for(i=min1+1;foresti!=NULL;i+) / if(foresti-weightweight;min2=i; / 至此找到 min1 min2pp=new signode();/ 新生成節(jié)點(diǎn),權(quán)值為兩最小節(jié)點(diǎn)權(quán)值之和/pp-left=forestmin1;pp-right=forestmin2;forestmin2-b=true;/ 為 hufcode 函數(shù)作準(zhǔn)備,與此函數(shù)無(wú)關(guān) /pp-weight=forestmin1-weight+forestmin2-weight;
29、forestmin1-parent=pp;forestmin2-parent=pp;forestmin1=pp; / 新 生 成 節(jié) 點(diǎn) 加 入 森 林 for(i=min2;foresti!=NULL;i+)foresti=foresti+1; /min2 后的節(jié)點(diǎn)依次前移 /count-;root=pp;return pp;void HFM:hufcode()/哈夫曼編碼,保存在 hufNode 節(jié)點(diǎn)的數(shù)組當(dāng)中 /inorder(root);for(int i=0;hufNodei.sig!=NULL;i+)signode * gud=hufNodei.sig;while(gud-parent!=NULL) if(gud-parent-left=gud)hufNodei.codehufNodei.size+=0;else if(gud-parent-right=gud)hufNodei.codehufNodei.size+=1;gud=gud-parent;void HFM:savewithhufcode(FILE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)企業(yè)代理記賬與資金籌措合同范本
- 車(chē)輛抵押擔(dān)保與汽車(chē)保險(xiǎn)理賠服務(wù)合同
- 垃圾處理場(chǎng)地租賃合同安全操作與環(huán)保要求
- 活動(dòng)票務(wù)銷(xiāo)售與現(xiàn)場(chǎng)管理合同
- 建筑工程承包合同書(shū)(15篇)
- 墓區(qū)及穴墓位使用權(quán)轉(zhuǎn)讓合同書(shū)(16篇)
- 2025上海車(chē)展智能汽車(chē)洞察分析報(bào)告
- 金銀島閱讀心得600字(4篇)
- 商品房買(mǎi)賣(mài)合同模板(16篇)2
- 計(jì)算機(jī)嵌入式開(kāi)發(fā)技巧試題及答案
- 人工智能課件213產(chǎn)生式表示法
- 醫(yī)務(wù)人員違規(guī)行為與年度考核掛鉤制度
- 空調(diào)維保質(zhì)量保障體系及措施方案
- 建筑樁基技術(shù)規(guī)范2018
- 論戰(zhàn)術(shù)思想與戰(zhàn)斗作風(fēng)
- 信息隱藏與數(shù)字水印課件(全)全書(shū)教學(xué)教程完整版電子教案最全幻燈片
- c型鋼理論重量表規(guī)格表
- 幼兒園室內(nèi)裝飾裝修技術(shù)規(guī)程TCBDA25-2018
- 公文收發(fā)處理單
- photoshop實(shí)訓(xùn)指導(dǎo)書(shū)
- 短波電臺(tái)方案
評(píng)論
0/150
提交評(píng)論