1 / 20
文档名称:

哈弗曼编码课程设计实验报告.docx

格式:docx   大小:148KB   页数:20页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哈弗曼编码课程设计实验报告.docx

上传人:suijiazhuang2 2020/11/17 文件大小:148 KB

下载得到文件列表

哈弗曼编码课程设计实验报告.docx

相关文档

文档介绍

文档介绍:目录
一、 实训要求 .2
二、 课题分析和设计 ..2
1、 基本需求分析 2,3
2、 对应的类 3,4,5
三、 主要功能界面 ...5
1、 主界面 5
2、 读取文章并对字符编码 5
3、 哈弗曼编码信息 .6
4、 文章编码 .6
5、 文章译码 .6
6、 错误处理 .7
四、 总结(课设心得体会) 7
五、 附录(主要函数代码) 7~14
、实训要求
1、输入为:一段中文或英文的文章的文件名。
2、读取文章的字符信息。
3、对字符进行权值的计算。
4、根据权值构造哈弗曼树。
5、生成对应的编码。
6、输出为:原文章的编译(译文)。
7、根据已经生成的编码表,输入任意的译文可以得到原文。
、课题分析和设计

(1)在通信过程中,为了提高信道利用率,缩短信息传输时间降低传输成本,需要一 编译码器。
(2)此哈弗曼编码译码器应具有编码译码的双向功能,即在发送端通过编码系统对传 入的数据进行编码。
(3)在接收端将数据译码,将具有两项功能的编码译码器用于双工信道就可满足,双 工信道的双向编译功能。
(4)输入某段报文是,系统将自己完成编译输出。
( 5)、程序设计流程 :
<1>文字表述:
开始进入功能选择界面,包含五种操作
(1)读取文章并对字符编码。
(2)哈夫曼编码信息。
( 3)文章编码。
(4)文章译码。
( 5)退出程序。
<2>操作:
(1)给定一篇文章,统计字符出现的概率,并根据概率建立哈弗曼树,并利用哈弗曼 树对字符进哈夫曼编码。
(2)显示哈弗曼编码信息,包括字符和其哈弗曼编码。
(3)对文章进行译码,显示译码信息,并保存。
(4)对文章进行译码,显示并保存。
<3>流程图 :
程序开始
显示编码
显示译码
保存编码
保存译码
返回主界 面
2、对应的类:
<1>定义类:
class Eleme nt // 结点类
{
public:
char n ame;//字符名
int weight;//字符权值 int lchild;// 左孩子 int rchild;// 右孩子 int pare nt;〃 父结点 Eleme nt()
{
weight = 0; lchild = -1;
rchild = -1;
parent =-1;
}
~Element(){}
};
<2>定义字符和出现的次数:
class Name //字符类
{
public:
char pn ame;〃 字符名
int num;//字符出现的次数
double lweight;// 字符的权值
Name()
{
num = 0; lweight = 0;
}
~Name(){}
};
<3>定义字符总类总数和存储信息:
class GetName //关于字符类
{
public:
char file_name[max2];// 文件名 int n; //字符的种类 int sum; //字符的总数
Name letter[max1]; // 存储字符信息的类的数组
GetName()
{
sum = 0; n = 0;
}
};
<4>定义编码类:
class CodeNode//编码类
{
public:
char ch; //存储字符
char save_code[max1]; //存储编码 };
<5>主要功能实现类:
class Fun cti on
{
public:
GetName L;
int fn; //定义哈夫曼数组大小
Element HuffmanT[max3]; // 哈夫曼数组
CodeNode Code[max1]; // 字符编码数组 Fun cti on()
{
fn = 0;
}
};
三、主要功能界面:
1、主界面:
直驚抚倜齊4 *
. m■盖哦埼事供恫 竞 #at ■■嘏 寸开强眸世世呂 助乂宰护吃宇祀諮
HtrirjciinEaiitiricBrhi
H^NM-K#f4 MrtNjvri kWNMzKkW
芹户 M-4XMKM4 MMXM-IM ^MMM-K^M
2、读取文章并对字符编码:
警>0
flw