课程设计--哈夫曼编码与译码

课程设计--哈夫曼编码与译码

ID:2743354

大小:885.95 KB

页数:34页

时间:2017-11-17

课程设计--哈夫曼编码与译码_第1页
课程设计--哈夫曼编码与译码_第2页
课程设计--哈夫曼编码与译码_第3页
课程设计--哈夫曼编码与译码_第4页
课程设计--哈夫曼编码与译码_第5页
资源描述:

《课程设计--哈夫曼编码与译码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《哈夫曼编码与译码》第24页共34页哈夫曼编码与译码学生姓名:指导老师:摘要本课程设计主要解决的是利用哈夫曼树生成的哈夫曼编码进行字符串的加密和解密,并将加密的编码写入文件。在此课程设计中,系统开发平台为WindowsXP,程序设计语言采用面向过程的高级语言C和面向对象的高级语言C++,程序运行平台为VisualC++6.0。在程序设计中,采用了结构化与面向过程两种解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。关键词哈夫曼树,编码,译码,文件操作,C,C++

2、;1引言1.1课题背景随着信息时代的到来,各种信息日益丰富,信息迅速膨胀,对信息管理的工作量也日益增大。在信息化未到来之前,信息的存储编码也变得尤为重要,公司之间的信息需要编码,用户个人数据需要编码,都需要占用很大的空间,所以一个好的、高效的编码译码算法是十分重要的。好的加密算法不仅可以降低管理方的工作量和存储量,还可以对用户的信息进行高效的管理,同时使在用中可以避免不必要的麻烦。数据结构是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。数据的逻辑结构(logicalstruc

3、ture)是指数据元素之间逻辑关系的整体。所谓逻辑关系是指数据元素之间的关联方式或邻接关系。根据数据元素之间逻辑关系的不同,数据结构分为四类:集合、线性结构、树结构、图结构。数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式。为了区别于数据的存储结构,常常将数据的逻辑结构称为数据结构。数据的存储结构(storagestructure)《哈夫曼编码与译码》第24页共34页又称为物理结构,是数据及其逻辑结构在计算机中的表示,换言之,存储结构除了数据元素之外,必须隐式或显示地存储数据元素之间的逻辑关系。通常

4、有两种存储结构:顺序存储结构和链接存储结构。树是一种在实际应用中被广泛使用的数据结构。它是由同一类型的记录构成的集合。哈夫曼树是树的一种子类型,又称最优树,是一类带权路径最短的树,利用哈夫曼树可以得到合适的字符编码,这样我们既可以对数据加密,也可以实现高效的存储信息。因此哈夫曼编码是一种常用的编码方式。1.2课程设计目的哈夫曼编码与译码系统是为了实现信息的高效存储与管理、加密、解密而设计的。通过建立一个有效,低存储量,易于管理的编码译码系统,使得企业对信息管理更加高效、准确,更加科学化和正规化,降低企业对信息管理的难

5、度。本课程设计主要是用数据结构和文件实现的,通过程序的编写、调试和运行可以进一步掌握数据结构及算法的程序实现的基本方法。理解对数据结构的基本知识及应用,同时加深对哈夫曼树的运用及理解。本课程设计是利用哈夫曼编码实现对字符串的加密、解密和低存储量存储,程序实现哈夫曼树的建立和哈夫曼编码的生成,实现字符串的快速编码、解密和保存。掌握哈夫曼编码的工作原理,熟悉建立哈夫曼树、利用哈夫曼编码进行实际编码、解码等功能的实现,同时加深对文件的操作原理。1.3课程设计内容本课程设计主要是采用哈夫曼编码对字符串的编码、解码,同时实现地

6、存储量要求。在设计的过程中,共用到两种数据元素,第一种是哈夫曼树建立是用到树的结构,树节点信息包括父节点、左子树节点、右子树节点以及该节点的权值其信息如图1-1所示,第二种是在存储个字符对应编码时用到的结构,其中包括字符、字符密文以及其长度,如图1-2所示:《哈夫曼编码与译码》第24页共34页树节点信息父节点左子树节点右子树节点权值图1-1树节点数据元素编码信息字符编码编码长度图1-2每个字符密文数据元素程序功能是实现对用户输入信息的编码与解码,并存入文件中,具体如图1-3所示:《哈夫曼编码与译码》第24页共34页对

7、用户输入字符串编码解码将编码存入文件保存得到哈夫曼编码利用字符和权值建立哈夫曼树输入字符串或字符及权值信息哈夫曼编码与译码图1-3功能模块图《哈夫曼编码与译码》第24页共34页2设计思路与方案2.1设计思路C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的程序时,程序员用C语言还比较得心应手。C++是由C语言发展而来的,与C语言兼容。用C语言编写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可以用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混

8、合型的程序设计语言。C++对C的“增强”,表现在两个方面:(1)在原来面向过程的机制基础上,对C语言的功能做了不少扩充。(2)增加了面向对象的机制。作为一种编程约定,C++程序员倾向于只有当所有的成员均为公共时才使用结构。结构(struct)是一种特殊的类,它的特殊之处在于其成员都是公共的(除非另作声明)。C++程序员只有在所有成员都是公共的时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。