1、 课课 程程 设设 计计 报报 告告 题目题目: 题目三题目三 哈夫曼编码与文件压缩哈夫曼编码与文件压缩 课程名称:课程名称: 数据结构数据结构 专业专业班级:班级:计算机科学与技术计算机科学与技术 1003 班班 学学 号号: 姓姓 名名: 指导教师:指导教师: 报告日期报告日期: 计算机科学与技术学院计算机科学与技术学院 2 目目 录录 1 任务书. 3 2 绪言 4 2.1 课题背景. 4 2.2 课题研究的目的和意义. 4 2.3 国内外概况. 4 2.4 课题的主要研究工作. 4 3 系统设计方案的研究 5 3.1 系统的控制特点与性能要求. 5 3.2 系统实现的原理. 5 3.2
2、.1 Huffman算法 . 5 3.2.2 Huffman编码 . 5 3.2.3 压缩过程 5 3.2.4 解压过程 6 3.3 系统实现方案分析. 6 3.3.1 实现 Huffman编码及压缩所需的变量 . 6 3.3.2 文件名处理. 7 3.3.3 实现 Huffman编码及压缩过程所需要的函数 . 7 3.3.4 实现解压缩过程所需要的函数 8 3.3.5 输入输出 8 4 基于 Huffman编码的文件压缩程序的设计 . 9 4.1 主模块功能介绍. 9 5 系统的实现 10 5.1 目标程序运行截图. 10 5.2 测试及测试数据分析. 10 5.2.1 测试数据 10 5.
3、2.2 测试数据分析 11 6 总结与展望 12 参考文献 13 附录 英文缩写词 14 3 1 任务书任务书 题目三题目三 哈夫曼编码与文件压缩哈夫曼编码与文件压缩 设计目的设计目的:掌握二叉树、哈夫曼树的概念,性质与存储结构,能够利用哈夫 曼算法实现哈夫曼编码,并应用于文件压缩,从而提高学生综合运用知识的 技能与实践能力。 设计内容设计内容:分析与设计哈夫曼树的存储结构,实现哈夫曼算法以及编码与译 码基本功能,并对任意文本文件利用哈夫曼编码进行压缩得到压缩文件,然 后进行解压缩得到解压文件。有兴趣的同学可以查阅资料实现 Lempel-Ziv sliding window 压缩方法,并与之比
4、较。 设计设计要求:要求: (1)要求界面友好,输入文本文件可带路径(如:D:docoriginal.txt),哈 夫曼算法所得到的压缩文件名为*.cod,哈夫曼树也以文件形式保存,文 件名为*.hfm。 (2)显示压缩比、压缩时间、解压时间与对应的编码表。 设计提示设计提示:统计文本文件中各字符的频度并作为权值生成哈夫曼树,并利用 哈夫曼树进行二进制编码。 参考文献参考文献: 1 严蔚敏, 吴伟民. 数据结构(C 语言版). 北京: 清华大学出版社,1997 2 王晓东. 计算机算法设计与分析. 北京: 电子工业出版社, 2007 3 严蔚敏, 吴伟民, 米宁. 数据结构题集(C 语言版).
5、 北京: 清华大学出 版社,1999 4 2 绪言绪言 2.1 课题背景课题背景 在计算机软件应用领域,文件压缩是一项重要的技术。为了减少传输数据量 或者减少存储空间,都需要将大型文件压缩成较小的文件。 2.2 课题研究的目的和意义课题研究的目的和意义 Huffman编码具有速度快、简单等优点,是一种很好的压缩方法。 2.3 国内外概况国内外概况 1952 年,David A. Huffman 在麻省理工攻读博士时所发明的,并发表于一 种 构 建 极 小 多 余 编 码 的 方 法 ( A Method for the Construction of Minimum-Redundancy Co
6、des)一文。 2.4 课题的课题的主要研究工作主要研究工作 (1)通过查阅书籍并在网上查看相关论文,对 Huffman编码算法有一个清晰的 认识。 (2) 使用 Microsoft Visual Studio 2010 实现基于 Huffman编码的文件压缩程序。 (3)通过使用各种不同的测试文件对该程序进行测试,记录并分析压缩算法的 压缩比、压缩时间等数据。 (4)分析测试数据,并根据需要对代码进行优化。 5 3 系统设计方案的研究系统设计方案的研究 3.1 系统的控制特点与性能要求系统的控制特点与性能要求 本系统是使用 VS2010 开发的 MFC 应用程序,对话框是使用 MFC 生成的, 而对文件读写操作以及 Huffman编码的算法部分是用 C 语言实现的。 本系统的特点是图形界面,使用简单,便于操控。 本系统不要求使用者安装 Visual Studio 或者 MFC