用C++编写的文件压缩解压程序.docx

上传人:b****4 文档编号:3071016 上传时间:2022-11-17 格式:DOCX 页数:25 大小:22.70KB
下载 相关 举报
用C++编写的文件压缩解压程序.docx_第1页
第1页 / 共25页
用C++编写的文件压缩解压程序.docx_第2页
第2页 / 共25页
用C++编写的文件压缩解压程序.docx_第3页
第3页 / 共25页
用C++编写的文件压缩解压程序.docx_第4页
第4页 / 共25页
用C++编写的文件压缩解压程序.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

用C++编写的文件压缩解压程序.docx

《用C++编写的文件压缩解压程序.docx》由会员分享,可在线阅读,更多相关《用C++编写的文件压缩解压程序.docx(25页珍藏版)》请在冰豆网上搜索。

用C++编写的文件压缩解压程序.docx

用C++编写的文件压缩解压程序

//-----------------------------------------------------------------------------

//huffmantreemain.cpp

//主界面

#include"huffmantree.h"

#include

#include

#include"compress1.h"

#include"Ceshi.h"

voidmenu()

{

   cout<

   cout<<"\t\t              ***操作菜单***\n\n";

   cout<<"\t\t\t1压缩文件\n";

   cout<<"\t\t\t2解压文件\n";

   cout<<"\t\t\t3测试\n";

   cout<<"\t\t\t0退出\n\n\n\n";

   return;

}

intmain() 

{

   charmeiyong;

   

   cout<<"\n\n\n\n\n\n\n\n\n"

      <<"\t       &***************      压缩软件  **************&\n"

      <<"\t         *                                           *\n"

      <<"\t         *                                           *\n"

      <<"\t        *                                             *\n\n\n"   

      <<"\t          * 运行本软件之前,请务必仔细阅读使用指南 *"

      <<"\n\n\n\n\n\n\n\n\n\n";

   cin.unsetf(ios:

:

skipws);

   cin>>meiyong;

   cin.setf(ios:

:

skipws);

   ifstreamfin("使用说明.txt",ios:

:

binary);

   fin.unsetf(ios:

:

skipws);

   while(fin>>meiyong)

   {

      cout<

   }

   cout<

   getch();

   fin.setf(ios:

:

skipws);

   fin.close();

   cout<<"\n\n\n\n\n\n";

   cout<<"\n";

   cout<<"\t\t*-------------------------------------------*\n";

   cout<<"\t\t*           实验六:

霍夫曼树的应用          *\n";

   cout<<"\t  *******                                        *******\n";

   cout<<"\t\t*   作者:

gdgzzch    学号:

15201314  *\n";

   cout<<"\t\t*-------------------------------------------*\n\n";

   cout<<"\t\t       2005.11.16\n\n";                            

   menu();

   intchoice;

   cout<<"请选择操作:

";

   cin>>choice;

   while

(1)

   {

      switch(choice)

      {

      case1:

         Compress();

         break;

      case2:

         Decompress();

         break;

      case3:

         Ceshi();

         break;

      case0:

         cout<<"\n\n\t\t********* 谢谢您使用本软件,再见!

 ***********\n\n\n\n";

         return1;

      default:

         cout<<"无此操作!

\n\n";   

      }

      cout<

";

      cin>>choice;

   }

   return1;

}

//----------------------------------------------------------

//compress1.h

//压缩

#ifndefCOMPRESS

#defineCOMPRESS

#include"huffmantree.h"

#include

#include

#include

#include

 

//压缩函数

voidCompress()

{

      unsignedcharch;

      inti,j,k;

      intCharnum[256];//

      unsignedcharChars[256];   //与下面共同使用,记录字符

      intCharnums[256];   //记录对应字符的个数

      intCharKinds;      //字符种数

      char[21];   //文件名不超过20个字符源文件名

      char[21];  //目标文件名

      int;//源文件大小

      int;//压缩文件大小

      HuffmanTreeht; 

      CharNameNodeNameNode[256];         //存储字符对应的霍夫曼编码

      BinTreeNode*btn=NULL;

      Code*first=NULL;

      Code*last=NULL;

      ifstreamfilein;

      ofstream;

         cout<<"请输入你要压缩的文件的名字:

";

         cin>>;

         ();    //open:

         if(!

filein)

         {

            cout<<<<"不存在!

\n";

            ();

            return;

         }

         cout<<"请输入你的压缩文件的名字(*.HFM):

"; //以后再用

         cin>>;

   char[5];

   intlen;

   len=strlen();

   if(len<=4)

   {

      cout<<<<"文件的扩展名必须为HFM\n";

      return;

   }

   for(i=len-1,j=3;i>=len-4;i--,j--)

      [j]=[i];

   [4]='\0';

   if(strcmp(,".HFM")!

=0)

   {

      cout<<<<"文件的扩展名必须为HFM\n";

      return;

   }

//         ******************************************************

   

         for(i=0;i<256;i++)

         {

            Charnum[i]=0;       //记录每一个字符的个数  

            Charnums[i]=0;     //记录字符Char[i]的个数

         }

         (ios:

:

skipws);

         ; //计算源文件大小

         while(filein>>ch)

         {

            Charnum[unsignedint(ch)]++;    //统计每种字符的频数

            ;

         }

         (ios:

:

skipws);

         ();                                      //close:

//         ******************************************************

         j=0;

         for(i=0;i<256;i++)

         {

            if(Charnum[i])

            {

               Chars[j]=unsignedchar(i);    //统计源文件中存在的字符的

               Charnums[j]=Charnum[i];

               j++;

            }

         }

         CharKinds=j;

//         ******************************************************

         

         ;//计算压缩文件大小

         ();

         <<'0'<<'';           //非法位数(之后修改)

         <<<<'';

         <

         ;

         for(i=0;i

         {

            <

            ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1