




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
_目錄一、實(shí)訓(xùn)要求……………..2謝謝閱讀二、課題分析和設(shè)計(jì)……………………..2謝謝閱讀1、基本需求分析……………………2,3精品文檔放心下載2、對(duì)應(yīng)的類………………................3,4,5謝謝閱讀三、主要功能界面………………………...5感謝閱讀1、主界面……………5謝謝閱讀2、讀取文章并對(duì)字符編碼…………5感謝閱讀3、哈弗曼編碼信息………………….6感謝閱讀4、文章編碼………….6精品文檔放心下載5、文章譯碼………….6感謝閱讀6、錯(cuò)誤處理………….7感謝閱讀四、總結(jié)(課設(shè)心得體會(huì))………………7謝謝閱讀五、附錄(主要函數(shù)代碼)………………7~14精品文檔放心下載__一、實(shí)訓(xùn)要求1、輸入為:一段中文或英文的文章的文件名。2、讀取文章的字符信息。3、對(duì)字符進(jìn)行權(quán)值的計(jì)算。4、根據(jù)權(quán)值構(gòu)造哈弗曼樹。5、生成對(duì)應(yīng)的編碼。6、輸出為:原文章的編譯(譯文)。7、根據(jù)已經(jīng)生成的編碼表,輸入任意的譯文可以得到原文。精品文檔放心下載二、課題分析和設(shè)計(jì)1.基本需求分析:(1)在通信過(guò)程中,為了提高信道利用率,縮短信息傳輸時(shí)間降低傳輸成本,需要一謝謝閱讀編譯碼器。(2)此哈弗曼編碼譯碼器應(yīng)具有編碼譯碼的雙向功能,即在發(fā)送端通過(guò)編碼系統(tǒng)對(duì)傳謝謝閱讀入的數(shù)據(jù)進(jìn)行編碼。(3)在接收端將數(shù)據(jù)譯碼,將具有兩項(xiàng)功能的編碼譯碼器用于雙工信道就可滿足,雙謝謝閱讀工信道的雙向編譯功能。(4)輸入某段報(bào)文是,系統(tǒng)將自己完成編譯輸出。(5)、程序設(shè)計(jì)流程:<1>文字表述:_開始進(jìn)入功能選擇界面,包含五種操作(1)讀取文章并對(duì)字符編碼。(2)哈夫曼編碼信息。(3)文章編碼。(4)文章譯碼。(5)退出程序。<2>操作:(1)給定一篇文章,統(tǒng)計(jì)字符出現(xiàn)的概率,并根據(jù)概率建立哈弗曼樹,并利用哈弗曼精品文檔放心下載樹對(duì)字符進(jìn)哈夫曼編碼。(2)顯示哈弗曼編碼信息,包括字符和其哈弗曼編碼。(3)對(duì)文章進(jìn)行譯碼,顯示譯碼信息,并保存。(4)對(duì)文章進(jìn)行譯碼,顯示并保存。<3>流程圖:程序開始_程序主界面讀取文章并對(duì)哈夫曼編碼信文章編碼文章譯碼退出程序文章進(jìn)行編碼息顯示編碼
保存編碼
返回主界面
顯示譯碼
保存譯碼
返回主界面_2、對(duì)應(yīng)的類:<1>定義類:classElement //結(jié)點(diǎn)類{public:charname;//字符名intweight;//字符權(quán)值intlchild;//左孩子intrchild;//右孩子intparent;//父結(jié)點(diǎn)Element(){weight=0;lchild=-1;rchild=-1;parent=-1;}~Element(){}};_<2>定義字符和出現(xiàn)的次數(shù):className //字符類{public:charpname;//字符名intnum;//字符出現(xiàn)的次數(shù)doublelweight;//字符的權(quán)值Name(){num=0;lweight=0;}~Name(){}};<3>定義字符總類總數(shù)和存儲(chǔ)信息:classGetName//關(guān)于字符類{public:charfile_name[max2];//文件名精品文檔放心下載intn;//字符的種類_intsum;//字符的總數(shù)Nameletter[max1];//存儲(chǔ)字符信息的類的數(shù)組謝謝閱讀GetName(){sum=0;n=0;}};<4>定義編碼類:classCodeNode//編碼類{public:charch;//存儲(chǔ)字符charsave_code[max1];//存儲(chǔ)編碼感謝閱讀};<5>主要功能實(shí)現(xiàn)類:classFunction{public:_GetNameL;intfn;//定義哈夫曼數(shù)組大小ElementHuffmanT[max3];//哈夫曼數(shù)組感謝閱讀CodeNodeCode[max1];//字符編碼數(shù)組精品文檔放心下載Function(){fn=0;}};三、主要功能界面:1、主界面:2、讀取文章并對(duì)字符編碼:_3、哈弗曼編碼信息:4、文章編碼:_5、文章譯碼:6、錯(cuò)誤處理:四、總結(jié)(課設(shè)心得體會(huì)):三周的課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何精品文檔放心下載_去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,與同學(xué)分工設(shè)感謝閱讀計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,謝謝閱讀學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,精品文檔放心下載著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程.”千里之行始于足下”,通過(guò)這次精品文檔放心下載課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏謝謝閱讀實(shí)地邁開這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ).通過(guò)這次課程設(shè)感謝閱讀計(jì),本人在多方面都有所提高。在這次設(shè)計(jì)過(guò)程中,體現(xiàn)出自己?jiǎn)为?dú)設(shè)計(jì)模具的能力以及綜精品文檔放心下載合運(yùn)用知識(shí)的能力,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中發(fā)現(xiàn)自己平時(shí)學(xué)謝謝閱讀習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。六、附錄(源代碼):#include<iostream>#include<fstream>#include<string.h>#include<windows.h>#definemax1150#definemax250#definemax3256usingnamespacestd;_classElement //結(jié)點(diǎn)類{public:charname;//字符名intweight;//字符權(quán)值intlchild;//左孩子intrchild;//右孩子intparent;//父結(jié)點(diǎn)Element(){weight=0;lchild=-1;rchild=-1;parent=-1;}~Element(){}};classCodeNode//編碼類{public:_charch;//存儲(chǔ)字符charsave_code[max1];//存儲(chǔ)編碼謝謝閱讀};className //字符類{public:charpname;//字符名intnum;//字符出現(xiàn)的次數(shù)doublelweight;//字符的權(quán)值Name(){num=0;lweight=0;}~Name(){}};classGetName//關(guān)于字符類{public:charfile_name[max2];//文件名感謝閱讀_intn;//字符的種類intsum;//字符的總數(shù)Nameletter[max1];//存儲(chǔ)字符信息的類的數(shù)組謝謝閱讀GetName(){sum=0;n=0;}voidGetWeight()//得到字符的權(quán)值{for(inti=0;i<n;i++)精品文檔放心下載{letter[i].lweight=(double)letter[i].num/sum;//出現(xiàn)的次數(shù)除總數(shù)得到謝謝閱讀權(quán)值}}intReadLetter(){ifstreaminput;cout<<"請(qǐng)輸入文件名:"<<endl;精品文檔放心下載_cin>>file_name;input.open(file_name);//打開文件精品文檔放心下載if(input.fail()){cout<<"該文件不存在!"<<endl;精品文檔放心下載return0;}charch;ch=input.get();letter[0].pname=ch;letter[0].num++;sum++;while(!input.eof())//讀取文件中的所有字符精品文檔放心下載{inttag=0;ch=input.get();for(inti=0;i<n+1;i++)謝謝閱讀{if(letter[i].pname==ch)精品文檔放心下載{letter[i].num++;sum++;_tag=1;}}if(tag==0){n++;letter[n].pname=ch;letter[n].num++;sum++;}}sum--;input.close();GetWeight();//得到字符權(quán)值}};classFunction{public:GetNameL;intfn;//定義哈夫曼數(shù)組大小_ElementHuffmanT[max3];//哈夫曼數(shù)組謝謝閱讀CodeNodeCode[max1];//字符編碼數(shù)組感謝閱讀Function(){fn=0;}voidCharHuffmanTCoding()//編碼功能實(shí)現(xiàn)感謝閱讀{inti,f,c;char*cd=newchar[L.n+1];//暫時(shí)存儲(chǔ)編碼的數(shù)組謝謝閱讀intstart;//編碼讀取起始位置cd[L.n]='\0';for(i=0;i<L.n;i++){Code[i].ch=HuffmanT[i].name;//字符信息精品文檔放心下載start=L.n;//起始位置c=i;while((f=HuffmanT[c].parent)>=0)精品文檔放心下載{if(HuffmanT[f].lchild==c)//如果為左孩子,為‘0’精品文檔放心下載{cd[--start]='0';_}else//如果為右孩子,為‘1’{cd[--start]='1';}c=f;}strcpy(Code[i].save_code,&cd[start]);//將結(jié)果存入對(duì)應(yīng)的編碼數(shù)組中謝謝閱讀}}voidOutputHuffmanTCode(){cout<<"哈夫曼編碼:"<<endl;cout<<"——————————————————————"<<endl;精品文檔放心下載cout<<"字符\t\t哈夫曼編碼"<<endl;感謝閱讀for(inti=0;i<L.n;i++)//輸出字符,哈夫曼編碼感謝閱讀{cout<<"——————————————————————"<<endl;謝謝閱讀cout<<HuffmanT[i].name<<"\t"<<"\t";感謝閱讀cout<<Code[i].save_code;感謝閱讀cout<<endl;}_cout<<"——————————————————————"<<endl;謝謝閱讀}voidInitHT()//哈夫曼初始化{L.ReadLetter();fn=(L.n)*2-1;for(inti=0;i<fn;i++)精品文檔放心下載{if(i<L.n){HuffmanT[i].name=L.letter[i].pname;感謝閱讀HuffmanT[i].weight=L.letter[i].lweight;精品文檔放心下載}}}voidSelect_2Min(intm,int&p1,int&p2)//選擇最小的兩個(gè)節(jié)點(diǎn)感謝閱讀{inti;doublem1,m2;m1=m2=1;p1=p2=-1;for(i=0;i<m;i++)_{if(HuffmanT[i].parent==-1&&HuffmanT[i].weight<m1)//找出未訪感謝閱讀問(wèn)過(guò)的權(quán)值最小節(jié)點(diǎn){m2=m1;p2=p1;m1=HuffmanT[i].weight;p1=i;}elseif(HuffmanT[i].parent==-1&&HuffmanT[i].weight<m2)//找出精品文檔放心下載未訪問(wèn)過(guò)的權(quán)值第二小結(jié)點(diǎn){m2=HuffmanT[i].weight;p2=i;}}}voidCreatHT()//建立哈夫曼樹//核心謝謝閱讀{inti,p1,p2;InitHT();for(i=L.n;i<fn;i++)精品文檔放心下載_{Select_2Min(i,p1,p2);HuffmanT[p1].parent=HuffmanT[p2].parent=i;精品文檔放心下載HuffmanT[i].weight=HuffmanT[p1].weight+HuffmanT[p2].weight;謝謝閱讀HuffmanT[i].lchild=p1;HuffmanT[i].rchild=p2;}}intOutArticleCode()//顯示文章編碼謝謝閱讀{ifstreaminput;input.open(L.file_name);if(input.fail()){cout<<"文件不存在!"<<endl;return0;}charch;cout<<"文章編碼如下:"<<endl;精品文檔放心下載while(!input.eof()){ch=input.get();_for(inti=0;i<L.n;i++)謝謝閱讀{if(Code[i].ch==ch)cout<<Code[i].save_code;謝謝閱讀}}cout<<endl;input.close();}intSaveArticleCode()//保存文章編碼謝謝閱讀{ofstreamoutput;ifstreaminput;charnamef1[max2];input.open(L.file_name);if(input.fail()){cout<<"該文件不存在!"<<endl;感謝閱讀return0;}cout<<"請(qǐng)輸入保存文章編碼的文件名:"<<endl;感謝閱讀cin>>namef1;_output.open(namef1);charch;while(!input.eof()){ch=input.get();for(inti=0;i<L.n;i++)感謝閱讀{if(Code[i].ch==ch){for(intj=0;j<strlen(Code[i].save_code);j++)謝謝閱讀{output.put(Code[i].save_code[j]);謝謝閱讀}}}}input.close();output.close();cout<<"保存完畢!"<<endl;}intOutTransCode()//文章譯碼操作謝謝閱讀{_ifstreaminput;charnamef[max2];cout<<"請(qǐng)輸入保存文章編碼的文件名:"<<endl;感謝閱讀cin>>namef;input.open(namef);if(input.fail()){cout<<"該文件不存在!"<<endl;感謝閱讀return0;}charch;ch=input.get();intc=2*L.n-2;while(!input.eof()){if(ch=='0')//遇0搜索左子樹{if(HuffmanT[c].lchild>=0){謝謝閱讀c=HuffmanT[c].lchild;}if(HuffmanT[c].lchild==-1)//判斷是否到葉子感謝閱讀{_cout<<HuffmanT[c].name;//輸出字符精品文檔放心下載c=2*L.n-2;//返回根節(jié)點(diǎn)}}if(ch=='1')//遇1搜索右子樹{if(HuffmanT[c].rchild>=0)謝謝閱讀{c=HuffmanT[c].rchild;}if(HuffmanT[c].rchild==-1)//判斷是否到葉子感謝閱讀{cout<<HuffmanT[c].name;//輸出字符精品文檔放心下載c=2*L.n-2;//返回根節(jié)點(diǎn)}}ch=input.get();}cout<<endl;input.close();}intSaveTransCode()//保存文章譯碼精品文檔放心下載_{ofstreamoutput;ifstreaminput;charnamef[max2];charnamef1[max2];cout<<"請(qǐng)輸入文章編碼所在的文件名:"<<endl;精品文檔放心下載cin>>namef;input.open(namef);if(input.fail()){cout<<"該文件不存在!"<<endl;謝謝閱讀return0;}cout<<"請(qǐng)輸入保存文章譯碼的文件名:"<<endl;謝謝閱讀cin>>namef1;output.open(namef1);charch;ch=input.get();intc=2*L.n-2;while(!input.eof()){if(ch=='0')_{if(HuffmanT[c].lchild>=0)精品文檔放心下載{c=HuffmanT[c].lchild;}if(HuffmanT[c].lchild==-1)精品文檔放心下載{output.put(HuffmanT[c].name);感謝閱讀c=2*L.n-2;}}if(ch=='1'){if(HuffmanT[c].rchild>=0)精品文檔放心下載{c=HuffmanT[c].rchild;}if(HuffmanT[c].rchild==-1){精品文檔放心下載output.put(HuffmanT[c].name);精品文檔放心下載c=2*L.n-2;}}_ch=input.get();}input.close();output.close();cout<<"保存完畢!"<<endl;}};intmain(){Function*a=newFunction;謝謝閱讀while(1)//主界面顯示{cout<<"************************************"<<endl;精品文檔放心下載cout<<"
*******歡迎進(jìn)入編/譯碼系統(tǒng)**********"<<endl;cout<<"************************************"<<endl;感謝閱讀cout<<endl;cout<<"
*******功能如下:*******************"<<endl;感謝閱讀_cout<<"*******"<<endl;cout<<"*************"<<endl;cout<<"*******************"<<endl;精品文檔放心下載cout<<"*******************"<<endl;精品文檔放心下載cout<<"*******************"<<endl;感謝閱讀cout<<endl;charch;cout<<"====>>請(qǐng)選擇功能:";cin>>ch;switch(ch){case'1'://讀取文章并對(duì)字符編碼{
*******1.讀取文章并對(duì)字符編碼*******2.哈夫曼編碼信息*******3.文章編碼*******4.文章譯碼*******5.退出程序謝謝閱讀deletea;a=newFunction;system("cls");a->CreatHT();_a->CharHuffmanTCoding();cout<<"操作完畢!"<<endl;system("pause");system("cls");break;}case'2'://哈夫曼編碼信息{system("cls");a->OutputHuffmanTCode();system("pause");system("cls");break;}case'3'://文章編碼{system("cls");while(1){cout<<endl;cout<<"========>>1.顯示文章編碼"<<endl;謝謝閱讀cout<<"========>>2.保存文章編碼"<<endl;精品文檔放心下載_cout<<"========>>3.返回上一界面"<<endl;謝謝閱讀charch1;cout<<endl<<"===>>請(qǐng)選擇功能:";謝謝閱讀cin>>c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年面板檢測(cè)系統(tǒng)項(xiàng)目建議書
- 辦公新環(huán)境啟用儀式講話稿
- 酒店投資開發(fā)建設(shè)合同
- 2025年硅粉系列項(xiàng)目合作計(jì)劃書
- 商鋪轉(zhuǎn)讓合同協(xié)議
- 關(guān)于辦公室日常行政工作的推進(jìn)情況
- 國(guó)際運(yùn)輸服務(wù)提供商合作框架協(xié)議
- 紅星照耀中國(guó)的革命情懷解讀
- L-Tyrosinamide-生命科學(xué)試劑-MCE
- 辦公事務(wù)處理規(guī)范與流程文書
- (高清版)JTGT 3360-01-2018 公路橋梁抗風(fēng)設(shè)計(jì)規(guī)范
- JBT 2231.3-2011 往復(fù)活塞壓縮機(jī)零部件 第3部分:薄壁軸瓦
- 旅游學(xué)概論(郭勝 第五版) 課件 第1、2章 旅游學(xué)概述、旅游的產(chǎn)生與發(fā)展
- 高一文理分科分班后第一次家長(zhǎng)會(huì)市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)
- (幻燈片)刑法之違法阻卻事由
- 2024年江西生物科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試試題庫(kù)(典優(yōu))
- 13.2《致大海》課件高中語(yǔ)文選擇性必修中冊(cè)
- 2024年長(zhǎng)沙電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 傳播學(xué)研究方法
- 商場(chǎng)收銀主管個(gè)人工作總結(jié)
評(píng)論
0/150
提交評(píng)論