logo资料库

数据结构课程设计哈夫曼树编译码器报告.doc

第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
资料共30页,剩余部分请下载后查看
第一章 需求分析
1.1设计名称
1.2设计内容、目的与要求
1.2.1设计内容
1.2.2目的与要求
1.2.3主要功能
1.3解决的问题
第二章 总体设计
2.1 系统框图
2.2 总流程图
第三章 详细设计
3.1 数据结构
3.1.1函数列表
3.1.2 文件存放内容列表
3.2 主要函数介绍
3.2.1 main()主函数
3.2.2 初始化Init()函数
3.2.3 编码Encoding()函数
3.2.4 译码Decoding()函数
3.2.5. 打印编码CodePrint()函数
3.2.6. 打印哈夫曼树表HuffmanTreePrint()函数
第四章 调试与测试
4.1 调试
4.1.1开始进入菜单界面
4.1.2初始化
(1)先初始化输入i
(2)未初始化输入e
1)重新输入;
2)返回主菜单;
3)退出程序;
(3)未初始化输入d
(4)未初始化输入p
(5)未初始化输入t
4.1.3编码
4.1.3译码
4.1.3打印编码
4.1.3打印哈夫曼树表
4.1.3退出程序
4.2.测试
第五章 心得体会
附 录:源程序
指导教师评语及成绩
华 北 科 技 学 院 课程设计说明书 学号: 201807014120 姓名: 哈夫曼编译码器 在线教学设计 班级: 设计题目: 设计地点: 设计时间: 至 2020.6.12 总评成绩:___________________________ 指导教师: 盛建瓴 鞠宏军 邵铁君 2020.6.1 1
目 录 第一章 需求分析................................................................................................................................1 1.1 设计名称......................................................................................................................................1 1.2 设计内容、目的与要求..............................................................................................................1 1.2.1 设计内容....................................................................................................................1 1.2.2 目的与要求................................................................................................................ 1 1.2.3 主要功能....................................................................................................................1 1.3 解决的问题..................................................................................................................................2 第二章 总体设计................................................................................................................................2 2.1 系统框图.....................................................................................................................................2 2.2 总流程图.....................................................................................................................................3 第三章 详细设计................................................................................................................................4 3.1 数据结构.....................................................................................................................................4 3.1.1 函数列表....................................................................................................................4 3.1.2 文件存放内容列表.................................................................................................... 4 3.2 主要函数介绍...........................................................................................................................5 3.2.1 main()主函数......................................................................................................5 3.2.2 初始化 Init()函数 ..................................................................................................6 3.2.3 编码 Encoding()函数 .............................................................................................7 3.2.4 译码 Decoding()函数 ............................................................................................ 8 3.2.5. 打印编码 CodePrint()函数................................................................................... 8 3.2.6. 打印哈夫曼树表 HuffmanTreePrint()函数 ............................................................9 第四章 调试与测试..........................................................................................................................10 4.1 调试...........................................................................................................................................10 4.1.1 开始进入菜单界面................................................................................................... 10 4.1.2 初始化......................................................................................................................10 4.1.3 编码......................................................................................................................... 13 4.1.3 译码......................................................................................................................... 14 4.1.3 打印编码..................................................................................................................14 2
4.1.3 打印哈夫曼树表.......................................................................................................15 4.1.3 退出程序..................................................................................................................15 4.2.测试............................................................................................................................................16 第五章 心得体会..............................................................................................................................17 附 录:源程序................................................................................................................................18 指导教师评语及成绩..........................................................................................................................26 3
第一章 需求分析 1.1 设计名称 1.2 设计内容、目的与要求 1.2.1 设计内容 项目二、哈夫曼树编译码器 哈夫曼树的构造采用的是链式存储结构,方便修改替换,每个节点都有以下 5 个域:ch,weight, parent,lchild,rchild,分别存储了哈夫曼树的字符,权值,双亲,左孩子,右孩子等内容。其他数 组形式的数据采用的都是顺序存储结构,方便查找。 1) 初始化和打印哈夫曼编译码表,初始化赫夫曼树,并将哈夫曼编译码表打印到 D:\HuffmanTree.txt 中; 源字符串存入 D:\ToBeTran.txt 中; 2) 编码,对文件 D:\Code.txt 中的正文进行编码,然后将结果存入文件 D:\Code.txt 中, 3) 译码,利用已经建立好的哈夫曼树将文件 codefile 中的代码进行译码,结果存入 D:\Decode.txt 中; 4) 打印编码,每行 50 个代码将 D:\Code.txt 中加密好的编码打印到 D:\CodePrint.txt 中; 5) 打印哈夫曼树,将文件 D:\Code.txt 以紧凑格式显示在终端上,每行 50 个代码,同时 将此字符形式的编码写入文件 D:\CodePrint.txt 中; 6) 退出,退出程序。 1.2.2 目的与要求 (1) I:初始化(Initialization)。从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈 夫曼树,并将它存于文件 D:\HuffmanTree.txt 中。 (2)E:编码(Encoding)。利用已经建好的哈夫曼树(如不在内存,则从文件 D:\HuffmanTree.txt 中读入),对文件 D:\Code.txt 中的正文进行编码,然后将结果存入文件 D:\Code.txt 中,源字符串 放入 D:\ToBeTran.txt 文件中。 (3) D:译码(Decoding)。利用已经建好的哈夫曼树将文件 CodeFile 中的代码进行译码,结 果存入文件 TextFile 中。 (4) P:打印代码文件(Print)。将文件 D:\Code.txt 以紧凑格式显示在终端上,每行 50 个代码, 同时将此字符形式的编码写入文件 D:\CodePrint.txt 中。 (5)T:打印哈夫曼树(HuffmanTreePrint)。在终端上显示哈夫曼树表,并打印到 D:\HuffmanTree.txt 文件中; (6)Q:退出程序(Exit)。 1.2.3 主要功能 本设计是通过读取文件中的字符及其使用频度构造哈夫曼树,再根据哈夫曼树进行 哈夫曼编码,然后再根据构建的哈夫曼树对加密后的编码进行编译,还原成字符串形 1
式。1.3 解决的问题 哈夫曼编译码器采用变长编码表示,给频率高的字符较短的编码;频率低的字符 较长的编码,达到整体编码减少的目的,大幅度减少储存空间。 第二章 总体设计 2.1 系统框图 图 2-1 哈夫曼树编译码器系统框图 2
2.2 总流程图 图 2-2 哈夫曼编译码器系统流程图 3
第三章 详细设计 3.1 数据结构 3.1.1 函数列表 函数名 函数类型 对应功能 表 3-1 函数列表 Select() void 选出 HT 树到 a 为止,权值最小且 parent 为 0 的 2 个节点 HuffmanCoding() void 构建赫夫曼树 HT,并求出 n 个字符的赫夫曼编码 HC Vision() Init() Encoding() Decoding() void void void void CodePrint() void HuffmanTreePrint () main() void void 3.1.2 文件存放内容列表 打印界面菜单 初始化,构造编译码表 编码 译码 将 D:\Code.txt 中加密好的编码打印到 D:\CodePrint.txt 中 以表的形式打印哈夫曼树 构造一个选择功能的菜单 文件地址 文件内容 表 3-2 文件存放内容列表 D:\Code.txt 字符串加密后的编码 D:\Decode.txt 翻译编码之后得到的译码 D:\ToBeTran.txt 输入的要加密的字符串 D:\HuffmanTree.txt 编译码表和哈夫曼树表 D:\CodePrint.txt 从 Code.txt 中复制过来的加密后的编码 4
3.2 主要函数介绍 3.2.1 main()主函数 这个函数是本程序的主体部分,用 while 使调用每个功能之后都能循环回到菜单,通过 if 语句 来实现菜单选择功能,工作流程如下: 图 3-1 main()主函数流程图 5
分享到:
收藏