《课程设计报告--哈夫曼编码译码系统》由会员分享,可在线阅读,更多相关《课程设计报告--哈夫曼编码译码系统(11页珍藏版)》请在毕设资料网上搜索。
1、 1 课程设计报告 课程名称课程名称 数据结构课程设计数据结构课程设计 设计题目设计题目 哈夫曼编码哈夫曼编码/ /译码系统译码系统 专业、专业、班级班级 软件工程软件工程 09010901 学学 号号 姓姓 名名 指导教师指导教师 设计时间设计时间 2012 年年 9 月月 10 日日2012 年年 9 月月 23 日日 2012 年 10 月 12 日 2 一、一、 引言(引言(简要说明设计题目的目的、意义、内容、主要任务等简要说明设计题目的目的、意义、内容、主要任务等) 随着计算机的普遍应用与日益发展, 其应用早已不局限于简单的数值运算, 而涉及到问 题的分析、 数据结构框架的设计以及设
2、计最短路线等复杂的非数值处理和操作。 算法与数据 结构的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理 论、方法和技术基础。 算法与数据结构旨在分析研究计算机加工的数据对象的特性, 以便选择适当的数据结构 和存储结构,从而使建立在其上的解决问题的算法达到最优。 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。 它用来反映一个数据的 内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻 辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关 系, 而物理上的数据结构反映成分数据在计算机内部的存储安排。 数据结构
3、是数据存在的形 式。 数据结构主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨 论其在计算机中的存储表示, 以及在其上进行各种运算时的实现算法, 并对算法的效率进行 简单的分析和讨论。 数据结构是介于数学、 计算机软件和计算机硬件之间的一门计算机专业 的核心课程, 它是计算机程序设计、 数据库、 操作系统、 编译原理及人工智能等的重要基础, 广泛的应用于信息学、系统工程等各种领域。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处 理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 学习数据结构是为了将实际问题中所涉及的对
4、象在计算机中表示出来并对它们进行处理。 通 过课程设计可以提高学生的思维能力, 促进学生的综合应用能力和专业素质的提高。 通过此 次课程设计主要达到以下目的: 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、 系统设计、 程序编码、 测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发, 培养软件工作者所应具备的 科学的工作方法和作风。 二、二、 正文(课程设计的主要内容,正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、包括实验与观测方法和结
5、果、仪器设备、计算方法、 编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论 等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、 结构严谨,符合各学科、专业的有关要求。结构严谨,符合各学科、专业的有关要求。) 问题分析:问题分析: 设计一个哈夫曼编码、译码系统。对一个 ASCII 编码的文本文件中的字符进行哈夫曼 编码,生成编码文件;反过来,可将编码文件译码还原为一个文本文件。 3 (1) 从文件中读入任意一篇英文短文(文件为 ASCII 编码,扩展名为 txt) ; (2) 统计并输出不同字符在文章中出现的频率(空格、换行、标点等也按字符处理) ; (3) 根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码; (4) 将文本文件利用哈夫曼树进行编码,存储成压缩文件(编码文件后缀名.huf) (5) 用哈夫曼编码来存储文件,并和输入文本文件大小进行比较,计算文件压缩率; (6) 进行译码,将 huf 文件译码为 ASCII 编码的 txt 文件,与原 txt 文件进行比较。 根据上述过程可以知道该编码译码器的关键在于字符统计和哈夫曼树的创建以及解 码。 哈夫曼树的