当前位置:首页 > 哈弗曼编码课程设计实验报告
目录
一、实训要求……………………………………………………………………………..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.基本需求分析:
(1)在通信过程中,为了提高信道利用率,缩短信息传输时间降低传输成本,需要一编译码器。
(2)此哈弗曼编码译码器应具有编码译码的双向功能,即在发送端通过编码系统对传入的数据进行编码。
(3)在接收端将数据译码,将具有两项功能的编码译码器用于双工信道就可满足,双工信道的双向编译功能。
(4)输入某段报文是,系统将自己完成编译输出。
(5)、程序设计流程: <1>文字表述:
开始进入功能选择界面,包含五种操作 (1)读取文章并对字符编码。 (2)哈夫曼编码信息。 (3)文章编码。 (4)文章译码。 (5)退出程序。 <2>操作:
(1)给定一篇文章,统计字符出现的概率,并根据概率建立哈弗曼树,并利用哈弗曼 树对字符进哈夫曼编码。
(2)显示哈弗曼编码信息,包括字符和其哈弗曼编码。 (3)对文章进行译码,显示译码信息,并保存。 (4)对文章进行译码,显示并保存。 <3>流程图:
读取文章并对文章进行编码 显示编码 哈夫曼编码信 文章编码 息 保存编码 显示译码 返回主界 面
程序开始 程序主界面 文章译码 退出程序 保存译码 返回主界面
2、对应的类:
<1>定义类:
class Element //结点类 {
public: char name;//字符名 int weight;//字符权值 int lchild;//左孩子 int rchild;//右孩子 int parent;//父结点 Element() { weight = 0; lchild = -1;
rchild = -1; parent =-1; } ~Element(){} };
<2>定义字符和出现的次数: class Name //字符类 {
public: char pname;//字符名 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]; //存储编码 };
共分享92篇相关文档