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

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

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈弗曼编码课程设计实验报告 目录 一、 求 ?????????????????? ??????????? ..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]; // 存储编码 }; 5主要功能实现类: class Function { public: GetName L; int fn; // 定义哈夫曼数组大小 Element HuffmanT[max3]; // 哈夫曼数组 CodeNode Code[max1]; // 字符编码数组 Function() { fn = 0; } }; 三、主要功能界面: 1、主界面: 2、

您可能关注的文档

文档评论(0)

156****6866 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档