版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、哈夫曼編碼/譯碼 一、【實(shí)驗(yàn)內(nèi)容】【問題描述】 利用哈夫曼編碼進(jìn)行住處通訊可以大大提高信道利用率,縮短住處傳輸時間,降低成本,但是,這要求在發(fā)送端通過一個編碼系統(tǒng)將傳輸?shù)臄?shù)據(jù)預(yù)先編碼,在接收端通過一個譯碼系統(tǒng)對傳來的數(shù)據(jù)進(jìn)行譯碼(復(fù)原),對于雙向傳輸信息的信道,每端都一個完整的編碼譯碼系統(tǒng),試為這樣的住處收發(fā)站寫一個哈夫曼友的編碼譯碼系統(tǒng).【基本要求】:一個完整的系統(tǒng)應(yīng)以下功能:(1) I. 初始化(Initialization)。從終端讀入字符集大小n,以及n個字符和n個權(quán)值,建立哈夫曼樹,并將它存放在文件hfmTree中.(2) E. 編碼(Encoding)。利用已建立好的哈夫曼樹(如不
2、在內(nèi)存,則從文件hfmTree中讀入),對文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果代碼存(傳輸)到文件CodeFile中.(3) D. 譯碼(Decoding)。利用已建好的哈夫曼樹,對傳輸?shù)竭_(dá)的CodeFile中的數(shù)據(jù)代碼進(jìn)行譯碼,將譯碼結(jié)果存入文件TextFile中. (4) P. 印文件代碼(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個代碼。同時將此字符形式的編碼文件寫入文件CodePrin中。 (5) T. 印哈夫曼樹(TreePrinting)。將已在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表的形式)顯示在終端上,同時將此字符形式的哈夫曼樹寫入文件Tr
3、eePrint中。測試數(shù)據(jù):(1)利用教科書例6-2中的數(shù)據(jù)調(diào)試程序。(2)用下表給出的字符集和頻度的計數(shù)據(jù)建立哈曼樹,并實(shí)現(xiàn)以下報文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”.。字符 A B C D E F G H I J K L M頻數(shù)186 64 13 22 32 103 21 15 47 57 1 5 32 20字符N O P Q R S T U V W X Y Z頻數(shù)57 63 15 1 48 51 80 23 8 18 1 16 1 二、實(shí)驗(yàn)?zāi)康臉湫徒Y(jié)構(gòu)是一種應(yīng)用極為廣泛的非線性數(shù)據(jù)結(jié)構(gòu),也是本課程的重點(diǎn)內(nèi)容,哈夫曼樹(最優(yōu)二叉樹)是樹型結(jié)構(gòu)的典型應(yīng)用
4、,本次實(shí)驗(yàn)突出了數(shù)據(jù)結(jié)構(gòu)加操作的程序設(shè)計觀點(diǎn),希望能根據(jù)樹型結(jié)構(gòu)的非線性特點(diǎn),熟悉各種存儲結(jié)構(gòu)的特性,達(dá)到如何應(yīng)用樹型結(jié)構(gòu)的非線性特點(diǎn),熟悉各種存儲結(jié)構(gòu)的特性,達(dá)到如何應(yīng)用樹型結(jié)構(gòu)解決具體問題的目的.三、實(shí)驗(yàn)文檔: 哈夫曼編碼/譯碼一、需求分析1、利用哈夫曼編碼進(jìn)行信息通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發(fā)送端通過一個編碼系統(tǒng)對待傳數(shù)據(jù)預(yù)先編碼,在接收端將傳來的數(shù)據(jù)進(jìn)行譯碼(復(fù)原)。對于雙工信道(既可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統(tǒng)。本次設(shè)計就是為這樣的信息收發(fā)站寫的一個哈夫曼的編/譯碼器。本實(shí)驗(yàn)要求:2、本演示程序中,用戶可以輸入
5、鍵盤中的任意字符,長度為任意長,字符輸入順序不限,且允許出現(xiàn)重碼3、演示程序以用戶與計算機(jī)的對話方式執(zhí)行,即在計算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中規(guī)定的運(yùn)算命令,相應(yīng)的輸入數(shù)據(jù)(可慮去輸入中的非法字符)和運(yùn)算結(jié)果顯示在其后。4、本演示程序中,當(dāng)用戶選擇的功能錯誤時,系統(tǒng)會輸出相應(yīng)的提示。5、在本系統(tǒng)中,用戶可以對任意長的字符串可進(jìn)行編碼/譯碼。6、程序執(zhí)行的命令包括:1) 初始化(I)2) 編碼(E)3) 譯碼(D) 4) 印代碼文件(P)5) 印哈夫曼樹(T)6) 退出(Q)、測試數(shù)據(jù):()利用教科書例6-2中的數(shù)據(jù)調(diào)試程序。()用下表給出的字符集和頻度的計數(shù)據(jù)建立
6、哈曼樹,并實(shí)現(xiàn)以下報文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”.。字符 A B C D E F G H I J K L M頻數(shù)186 64 13 22 32 103 21 15 47 57 1 5 32 20字符N O P Q R S T U V W X Y Z頻數(shù)57 63 15 1 48 51 80 23 8 18 1 16 1 二、概要設(shè)計為實(shí)現(xiàn)上述程序功能,應(yīng)以指針存儲結(jié)點(diǎn)。為此,需要定義一個抽象數(shù)據(jù)類型。1. 抽象數(shù)據(jù)類型定義為:ADT HuffmanTree數(shù)據(jù)對象:D=ai| aiCharSet,i=1,2,n, n0數(shù)據(jù)關(guān)系:R= ai-1, a
7、iD, ai-1ai ,i=2,3,n基本操作P:HuffmanTree(); 構(gòu)造函數(shù) HuffmanTree(); 析構(gòu)函數(shù)Initialization(int WeightNum);操作結(jié)果:構(gòu)造哈夫曼樹。Encoder()初始條件:哈夫曼樹已存在或者哈夫曼樹已存到文件中。操作結(jié)果:對字符串進(jìn)行編碼Decoder();初始條件:哈夫曼樹已存在且已編碼。操作結(jié)果:對二進(jìn)制串進(jìn)行譯碼Print()初始條件:編碼文件已存在。操作結(jié)果:把已保存好的編碼文件顯示在屏幕TreePrinting()初始條件:哈夫曼樹已存在。操作結(jié)果:將已在內(nèi)存中的哈夫曼樹以直觀的方式顯示在終端上2.本程序包含三個模塊
8、:1)主程序模塊:void main() 初始化;do 接受命令; 處理命令;while(“命令”=”退出”)2)、建樹模塊實(shí)現(xiàn)定義的抽象數(shù)據(jù)類型3)、編/譯碼模塊實(shí)現(xiàn)字符串的編/譯碼各模塊之間的調(diào)用關(guān)系如下: 主程序模塊 建樹模塊 編/譯碼模塊三、詳細(xì)設(shè)計程序代碼如下/ 程序名:HuffmanTree.h/ 程序功能:哈夫曼樹類的頭文件(并用其來實(shí)現(xiàn)編/譯碼)/ 作者:劉偉高/ 日期:2006.11.27/ 版本:1.0/對應(yīng)類實(shí)現(xiàn)文件: HuffmanTree.cpp/對應(yīng)主程序文件: main.cpp#include#include#includeusing namespace std;
9、struct HuffmanNode /定義哈夫曼樹各結(jié)點(diǎn)int weight; /存放結(jié)點(diǎn)的權(quán)值,假設(shè)只考慮處理權(quán)值為整數(shù)的情況int parent; /記錄結(jié)點(diǎn)父親位置,-1表示為根結(jié)點(diǎn),否則表示為非根結(jié)點(diǎn)int lchild,rchild; /分別存放該結(jié)點(diǎn)的左、右孩子的所在單元的編號;class HuffmanTree /建立哈夫曼樹類private:HuffmanNode *Node; /哈夫曼樹中結(jié)點(diǎn)的存儲結(jié)構(gòu)char *Info; /用來保存各字符信息int LeafNum; /樹中的葉子結(jié)點(diǎn)總數(shù)public:HuffmanTree(); /構(gòu)造函數(shù)HuffmanTree();
10、/析構(gòu)函數(shù)void Initialization(int WeightNum); /初始化函數(shù):根據(jù)WeightNum個權(quán)值建立一棵哈夫曼樹void Encoder(); /編碼函數(shù):利用構(gòu)造好的哈夫曼樹對字符進(jìn)行編碼void Decoder(); /譯碼函數(shù):對二進(jìn)制串進(jìn)行譯碼void Print(); /印文件函數(shù):把已保存好的編碼文件顯示在屏幕void TreePrinting(); /印哈夫曼樹函數(shù):將已在內(nèi)存中的哈夫曼樹以直觀的方式顯示在終端上;/ 程序名:HuffmanTree.cpp/ 程序功能:實(shí)現(xiàn)哈夫曼樹類的源文件(并用其來實(shí)現(xiàn)編/譯碼)/ 作者:劉偉高/ 日期:2006.1
11、1.27/ 版本:1.0#includeHuffmanTree.h#includeusing namespace std;/ 構(gòu)造函數(shù)/ 函數(shù)功能:將結(jié)點(diǎn)指針初始化為NULL/ 函數(shù)參數(shù):無/ 參數(shù)返回值:無HuffmanTree:HuffmanTree()Node=NULL; /將樹結(jié)點(diǎn)初始化為空 Info=NULL; /將字符數(shù)組初始化為空LeafNum=0; /將葉子數(shù)初始化為0/ 析構(gòu)函數(shù)/ 函數(shù)功能:將所有結(jié)點(diǎn)的空間釋放/ 函數(shù)參數(shù):無/ 參數(shù)返回值:無HuffmanTree:HuffmanTree()delete Node; /釋放結(jié)點(diǎn)空間delete Info; /釋放字符存儲空
12、間/ 初始化函數(shù)/ 函數(shù)功能:從終端讀入字符集大小n,以及n個字符和n個權(quán)值,/ 建立哈夫曼樹,并將它存放在文件hfmTree中./ 函數(shù)參數(shù):int WeightNum表示代碼個數(shù)/ 參數(shù)返回值:無 void HuffmanTree:Initialization(int WeightNum) /初始化int i,j,pos1,pos2,max1,max2; /Node=new HuffmanNode2*WeightNum-1; /WeightNum權(quán)值對應(yīng)的哈夫曼樹中的結(jié)點(diǎn)總數(shù)為2*WeightNum-1個Info=new char2*WeightNum-1;for(i=0;iWeightN
13、um;i+)cout請輸入第i+1個字符值;getchar(); /丟棄字符t與nInfoi=getchar(); /輸入一個字符,主要是考慮輸入空格而采用這種形式的getchar();coutNodei.weight; /輸入權(quán)值Nodei.parent=-1; /為根結(jié)點(diǎn)Nodei.lchild=-1; /無左孩子Nodei.rchild=-1; /無右孩子for(i=WeightNum;i2*WeightNum-1;i+) /表示需做WeightNum-1次合并pos1=-1;pos2=-1; /分別用來存放當(dāng)前最小值和次小值的所在單元編號 max1=32767; /32767為整型數(shù)的
14、最大值 max2=32767; /分別用來存放當(dāng)前找到的最小值和次小值 for(j=0;ji;j+) /在跟節(jié)點(diǎn)中選出權(quán)值最小的兩個if(Nodej.parent=-1) /是否為根結(jié)點(diǎn)if(Nodej.weightmax1) /是否比最小值要小 max2=max1; /原最小值變?yōu)榇涡≈祄ax1=Nodej.weight; /存放最小值pos2=pos1; /修改次小值所在單元編號pos1=j; /修改最小值所在單元編號elseif(Nodej.weightmax2) /比原最小值大但比原次小值要小max2=Nodej.weight; /存放次小值pos2=j; /修改次小值所在的單元編號
15、/forNodepos1.parent=i; /修改父親位置Nodepos2.parent=i;Nodei.lchild=pos1; /修改兒子位置Nodei.rchild=pos2;Nodei.parent=-1; /表示新結(jié)點(diǎn)應(yīng)該是根結(jié)點(diǎn)Nodei.weight=Nodepos1.weight+Nodepos2.weight; /forLeafNum=WeightNum;char ch;coutch;if(ch=y|ch=Y)ofstream fop; /以二進(jìn)制方式打開hfmTree.dat文件,并當(dāng)重新運(yùn)行時覆蓋原文件fop.open(hfmTree.dat,ios:out|ios:b
16、inary|ios:trunc);if(fop.fail() /文件打開失敗cout文件打開失?。;fop.write(char*)&WeightNum,sizeof(WeightNum); /寫入WeightNumfor(i=0;iWeightNum;i+) /把各字符信息寫入文件fop.write(char*)&Infoi,sizeof(Infoi);flush(cout);for(i=0;i2*WeightNum-1;i+) /把個節(jié)點(diǎn)內(nèi)容寫入文件fop.write(char*)&Nodei,sizeof(Nodei);flush(cout);fop.close(); /關(guān)閉文件cou
17、t哈夫曼樹已構(gòu)造完成。n;/Initialization/ 編碼函數(shù)/ 函數(shù)功能:利用已建立好的哈夫曼樹(如不在內(nèi)存,則從文件hfmTree中讀入),/ 對文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果代碼存(傳輸)到文件CodeFile中./ 函數(shù)參數(shù):無/ 參數(shù)返回值:無void HuffmanTree:Encoder()if(Node=NULL) /哈夫曼樹不在內(nèi)存,從文件hfmTree中讀入ifstream fip; /以二進(jìn)制方式打開hfmTree.dat文件fip.open(hfmTree.dat,ios:binary|ios:in);if(fip.fail() /文件打開失敗c
18、out文件打開失??!n;return; /結(jié)束本函數(shù)fip.read(char*)&LeafNum,sizeof(LeafNum); /讀取葉子數(shù)Info=new charLeafNum; Node=new HuffmanNode2*LeafNum-1;for(int i=0;iLeafNum;i+) /讀取字符信息fip.read(char*)&Infoi,sizeof(Infoi);for(i=0;i2*LeafNum-1;i+) /讀取結(jié)點(diǎn)信息fip.read(char*)&Nodei,sizeof(Nodei);char *Tree; /用于存儲需編碼內(nèi)容int i=0,num;cha
19、r Choose; /讓用戶選擇讀取文件或重新輸入需編碼內(nèi)容coutChoose;if(Choose=1) /讀取文件ToBeTran.txtifstream fip1(ToBeTran.txt);if(fip1.fail() /文件不存在cout文件打開失敗!n;return; /結(jié)束本函數(shù)char ch;int k=0;while(fip1.get(ch) k+; /計算CodeFile中代碼長度 fip1.close(); Tree=new chark+1;ifstream fip2(ToBeTran.txt);k=0; while(fip2.get(ch)Treek=ch; /讀取文件
20、內(nèi)容,并存到Tree中k+;fip2.close();Treek=0; /結(jié)束標(biāo)志cout需編碼內(nèi)容為:;coutTreeendl;/if(Choose=1)else /Choose!=1,重新輸入string tree; /用于輸入需編碼內(nèi)容,由于string類對象可以輸入任意長度, /所以先利用這個對象輸入,再轉(zhuǎn)存在Tree中 cin.ignore();cout請輸入需要編碼的內(nèi)容(可輸入任意長,結(jié)束時請按2下回車):n;getline(cin,tree,n); /輸入任意長字符串, /getline以回車(n)作為結(jié)束符,第一次按回車表示字符串結(jié)束,第二次按回車才開始輸出。while(t
21、reei!=0)i+;num=i; /計算tree長度i=0;Tree=new charnum+1;while(treei!=0) /將tree中的字符轉(zhuǎn)存到Tree中Treei=treei;i+; Treei=0; /結(jié)束標(biāo)志符ofstream fop(CodeFile.dat,ios:trunc); /存儲編碼后的代碼,并覆蓋原文件i=0;int k=0;char *code;code=new charLeafNum; /為所產(chǎn)生編碼分配容量為LeafNum的存儲空間 /因?yàn)椴坏乳L編碼中最長的編碼一定不會超過要求編碼的字符個數(shù)while(Treek!=0) /對每一個字符編碼int j,s
22、tart=0;for(i=0;iLeafNum;i+)if(Infoi=Treek) /求出該文字所在單元的編號break; j=i;while(Nodej.parent!=-1) /結(jié)點(diǎn)j非樹根j=Nodej.parent; /非結(jié)點(diǎn)j的雙親結(jié)點(diǎn)if(Nodej.lchild=i) /是左子樹,則生成代碼0codestart+=0;else /是右子樹,則生成代碼1codestart+=1;i=j;codestart=0; /置串結(jié)束符 for(i=0;istart/2;i+) /對二進(jìn)制序列進(jìn)行逆置j=codei;codei=codestart-i-1;codestart-i-1=j; i
23、=0;while(codei!=0) /存儲代碼fopcodei;i+;k+;fop.close();cout已編碼!且存到文件CodeFile.dat中!nn; /Encode/ 譯碼函數(shù)/ 函數(shù)功能:利用已建好的哈夫曼樹,對傳輸?shù)竭_(dá)的CodeFile中的數(shù)據(jù)代碼進(jìn)行譯碼,/ 將譯碼結(jié)果存入文件TextFile中./ 函數(shù)參數(shù):無/ 參數(shù)返回值:無void HuffmanTree:Decoder()int i=0,k=0;int j=LeafNum*2-1-1; /表示從根結(jié)點(diǎn)開始往下搜索char* BitStr;ifstream fip1(CodeFile.dat); /利用已建好的哈夫曼
24、樹將文件CodeFile中的代碼進(jìn)行譯碼if(fip1.fail() /文件打開失敗,還未編碼cout 請先編碼!n;return;cout經(jīng)譯碼,原內(nèi)容為:;char ch;while(fip1.get(ch) k+; /計算CodeFile中代碼長度fip1.close(); BitStr=new chark+1;ifstream fip2(CodeFile.dat);k=0;while(fip2.get(ch)BitStrk=ch; /讀取文件內(nèi)容k+;fip2.close(); BitStrk=0; /結(jié)束標(biāo)志符if(Node=NULL) /還未建哈夫曼樹 cout請先編碼!n; re
25、turn;ofstream fop(TextFile.dat); /將字符形式的編碼文件寫入文件CodePrin中while(BitStri!=0)if(BitStri=0)j=Nodej.lchild; /往左走elsej=Nodej.rchild; /往右走if(Nodej.rchild=-1) /到達(dá)葉子結(jié)點(diǎn)coutInfoj; /輸出葉子結(jié)點(diǎn)對應(yīng)的字符j=LeafNum*2-1-1; /表示重新從根結(jié)點(diǎn)開始往下搜索fopInfoj; /存入文件/if、i+;/whilefop.close();coutn譯碼成功且已存到文件TextFile.dat中!nn;/Decoder/ 印文件代碼
26、函數(shù)/ 函數(shù)功能:將文件CodeFile以緊湊格式顯示在終端上,/ 每行50個代碼。同時將此字符形式的編碼文件寫入文件CodePrin中。/ 函數(shù)參數(shù):無/ 參數(shù)返回值:無void HuffmanTree:Print()char ch;int i=1;ifstream fip(CodeFile.dat); /讀取文件ofstream fop(CodePrin.dat); /存儲文件if(fip.fail()cout沒有文件,請先編碼!n;return;while(fip.get(ch)coutch; /讀取文件內(nèi)容fopch; /存到文件中if(i=50) /每行輸出50個字符coutendl
27、;i=0;i+;coutendl;fip.close(); /關(guān)閉CodeFile.dat文件fop.close(); /關(guān)閉CodePrin.dat文件/ 印哈夫曼樹函數(shù)/ 函數(shù)功能:將已在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表的形式)顯示在終端上,/ 同時將此字符形式的哈夫曼樹寫入文件TreePrint中。/ 函數(shù)參數(shù):無/ 參數(shù)返回值:無void HuffmanTree:TreePrinting()if(Node=NULL) /未建立哈夫曼樹cout請先建立哈夫曼樹!n;return;ofstream fop(TreePrint.dat);cout結(jié)點(diǎn)位置(權(quán)值) 編碼 左孩子 編碼右
28、孩子(表示葉子)n;fop結(jié)點(diǎn)位置(權(quán)值) 編碼 左孩子 編碼LeafNum-1;i-) /輸出哈夫曼樹couti(Nodei.weight)-1-Nodei.lchild(NodeNodei.lchild.weight)-0-Nodei.rchild(NodeNodei.rchild.weight)endl;fopi(Nodei.weight)-1-Nodei.lchild(NodeNodei.lchild.weight)-0-Nodei.rchild(NodeNodei.rchild.weight)=0;i-)couti:Nodei.weight(Infoi)-n;fopi:Nodei.w
29、eight(Infoi)-n;/ 程序名:main.cpp/ 程序功能:主函數(shù)源文件/ 作者:劉偉高/ 日期:2006.11.27/ 版本:1.0#includeHuffmanTree.h#include#include/ 主函數(shù)/參數(shù)返回值:無int main()cout 歡迎使用哈夫曼碼的編/譯碼系統(tǒng)!n;cout 劉偉高n;cout 版權(quán)所有,盜版必究n; cout在此系統(tǒng)中可以進(jìn)行以下操作:n;cout(1) 初始化(I);n;cout(2) 編碼(E);n;cout(3) 譯碼(D);n;cout(4) 印代碼文件(P);n;cout(5) 印哈夫曼樹(T)n;cout(6) 退出(
30、Q)nn;HuffmanTree huftree; /定義哈夫曼樹對象int weight;char Choose;while(1)coutChoose;switch(Choose)case I:case i:coutweight;huftree.Initialization(weight); /初始化哈夫曼樹break;case E:case e:huftree.Encoder();break;case D:case d:huftree.Decoder();break;case P:case p:huftree.Print();break;case T:case t:huftree.TreePrinting();break;case Q:case q:coutn *感謝使用本系統(tǒng)!*nn; sys
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度獵聘人才委托合同(能源資源開發(fā))
- 2025年度消防安全風(fēng)險評估與整改服務(wù)合作協(xié)議
- 2025年度度假別墅購房定金協(xié)議
- 2025年度影視作品改編版權(quán)購買合同
- 2025年度足療養(yǎng)生中心全面資產(chǎn)轉(zhuǎn)讓合同
- 2025年度科技創(chuàng)新項(xiàng)目資金托管協(xié)議書
- 二零二五年度煤炭運(yùn)輸合同風(fēng)險管理及保險理賠服務(wù)協(xié)議
- 2025年度智能穿戴設(shè)備合伙人合作協(xié)議范本4篇
- 2025年度軌道交通車輛維修與改造合同范本3篇
- 2025年度智能物流配送服務(wù)合同規(guī)范范本4篇
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- 山東省青島市2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 墓地銷售計劃及方案設(shè)計書
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學(xué)案七年級上冊歷史
- 鋁箔行業(yè)海外分析
- 紀(jì)委辦案安全培訓(xùn)課件
- 超市連鎖行業(yè)招商策劃
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 【公司利潤質(zhì)量研究國內(nèi)外文獻(xiàn)綜述3400字】
- 工行全國地區(qū)碼
評論
0/150
提交評論