📄 main.cpp
字号:
# include <iostream>
# include "minheap.h"
# include "huffmantree.h"
# include "coding.h"
# include "fstream"
using namespace std;
int main(){
cout<<"**********************************************************************\n"
<<"姓名:XXX 学号:?????? 实验五:huffman编码&文件压缩解压\n"
<<"**********************************************************************\n\n"
<<"欢迎进入本压缩测试系统\n"<<endl;
int flag,flag0;
do{
cout<<"\n输入1:键盘输入报文文本,进行Huffman编码&解码\n"
<<"输入2:压缩文件\n"
<<"输入3:解压HJM文件\n"
<<"输入0:离开系统\n"<<endl;
cin>>flag;
system("cls");
switch(flag)
{
case 1:{Coding one;
loop: cout<<"\n键盘输入报文文本,进行Huffman编码&解码\n"<<endl;
cout<<"请输入报文文本(长度不超过500字符)"<<endl;
char text[501];
cin.ignore(1);
cin.getline(text,500);
one.setstrkey(text);
cout<<"报文编码为:";
one.printcode(text);
do{cout<<endl<<"请选择下列操作:\n"
<<"输入1:利用现有的Huffman编码对新报文进行编码\n"
<<"输入2:利用现有的Huffman编码对报文码进行解码\n"
<<"输入3:重新设置Huffman编码\n"
<<"输入0:离开"<<endl;
cin>>flag0;
system("cls");
switch(flag0){
case 1:cout<<"请输入新报文文本(长度不超过500字符)"<<endl;
cin.ignore(1);
cin.getline(text,500);
cout<<"报文编码为:";
one.printcode(text);
break;
case 2:{cout<<"请输入huffman编码(长度不超过500字符)(只含0或1)"<<endl;
cin.ignore(1);
cin.getline(text,500);
cout<<"报文原码为:";
one.decode(text,cout);
if(strlen(text)) cout<<"最后多出的"<<text<<"码没找到相应的原码,输入有误~"<<endl;
break;}
case 3:goto loop;break;
case 0:break;
default:cout<<"error!"<<endl;break;
}
cin.clear();
}while(flag0);
break;
}
case 2:{cout<<"\n欢迎使用本系统压缩文件\n"<<endl
<<"请输入需要压缩的文件名(包括路径)(格式:E:\\1.txt)"<<endl;
char fi0[15],fi1[6],fi[20];
cin.ignore(1);
cin.get(fi0,15,'.');
cin>>fi1;
char fo[20] ;
fo[0]='\0';fi[0]='\0';
strcat(fi,fi0);
strcat(fi,fi1);
strcat(fo,fi0);
strcat(fo,".HJM");
cout<<"使用默认压缩文件名(包括路径)"<<fo<<"?(Y or N)"<<endl;
char c;
cin.ignore(1);
cin.get(c);
if(c=='N' || c== 'n'){
cout<<"请输入压缩文件名(包括路径):";
cin>>fo;
}
Coding two;
int fisize = two.setfilekey(fi);
int hsize;
if(!(hsize = two.compress(fi,fo)))
cout<<"压缩失败"<<endl;
break;
}
case 3:{
Coding three;
cout<<"\n欢迎使用本系统解压HJM文件"<<endl
<<"请输入需要解压的文件名(包括路径)(格式:E:\\1.HJM)"<<endl;
char fi[20];
cin>>fi;
if(!three.decompress(fi )) cout<<"解压失败"<<endl;
break;
}
case 0:cout<<"-----------------------------------------------------\n"
<<"\n离开本系统...\n欢迎再次使用~\n"<<endl;break;
default:cout<<"\n输入有误,请重新输入\n";break;
}
cin.clear();
}while(flag);
system( "pause" );
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -