文件压缩与解压实验报告.doc

文件压缩与解压实验报告.doc

ID:55146122

大小:414.01 KB

页数:28页

时间:2020-04-28

文件压缩与解压实验报告.doc_第1页
文件压缩与解压实验报告.doc_第2页
文件压缩与解压实验报告.doc_第3页
文件压缩与解压实验报告.doc_第4页
文件压缩与解压实验报告.doc_第5页
资源描述:

《文件压缩与解压实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、学生姓名学号专业年级、班级课程名称实验3实验项目文本解压与压缩实验时间年月日实验指导老师实验评分院系:计算机学院实验课程:实验3实验项目:文本压缩与解压指导老师:开课时间:2010~2011年度第1学期专业:班级:学生:学号:27学生姓名学号专业年级、班级课程名称实验3实验项目文本解压与压缩实验时间年月日实验指导老师实验评分一、需求分析1.本程序能够实现将一段由大写字母组成的内容转为哈弗曼编码的编码功能以及将哈弗曼编码翻译为字符的译码功能。2.友好的图形用户界面,直观明了,每一个操作都有相应的提

2、示,用户只需按着提示去做,便能轻松实现编码以及译码的效果,编码及译码结果都被保存成txt文档格式,方便用户查看。3.本程序拥有极大的提升空间,虽然现在只能实现对大写字母的译码以及编码,但通过改进鉴别的算法,即能够实现小写字母乃至其他特殊符号等的编码。4.本程序可用于加密、解密,压缩后文本的大小将被减小,更方便传输5.程序的执行命令包括:1)初始化2)编码3)译码4)印代码文件5)印哈弗曼树6)退出6.测试数据(1)THISPROGRAMISMYFAVOURITE(2)THISISMYFAVOUR

3、ITEPROGRAMBUTTHEREPORTISNOT二、概要设计为实现上述功能,应有哈弗曼结点,故需要一个抽象数据类型。1.哈弗曼结点抽象数据类型定义为:ADTHaffTree{数据对象:HaffNode*ht,HaffCode*hc基本操作:Haffman(intw[],intn)操作结果:构造哈弗曼树及哈弗曼编码,字符集权值存在数组w,大小为nsetdep()setdep(intp,intl)操作结果:利用递归,p为哈弗曼节点序号,l为哈弗曼节点深度setloc()操作结果:设置哈弗曼节点

4、坐标,用以输出到界面setloc2()操作结果:设置哈弗曼节点坐标,用以输出到文本,默认状态下不启用}ADTHaffTree2.本程序包含4个模块1)主程序模块:接受用户要求,分别选择执行①初始化②编码③译码④印代码文件⑤印哈弗曼树27学生姓名学号专业年级、班级课程名称实验3实验项目文本解压与压缩实验时间年月日实验指导老师实验评分⑥退出2)哈弗曼树单元模块——建立哈弗曼树3)哈弗曼编码单元模块——进行哈弗曼编码、译码4)响应用户操作,输出内容到界面或文本各模块之间的关系如下:主程序控制模块建立哈

5、弗曼树进行哈弗曼编码、译码输出内容到界面或文件三、详细设计1.全局变量、结点intm_gcharnum;//记录字符集大小全局变量intt;//用于输入框弹出次数的计数int*w;//用于存储各个字符权值的数组intx;//用于计算各个哈弗曼结点x坐标的全局变量intinitswitch;//用于判断是否已经进行了初始化操作intprinttree;//用于判断哈弗曼树是否已经生成的操作HaffTreeHF;//哈弗曼树类structHaffNode{intweight;//记录结点权值intp

6、arent;//记录结点双亲序号intlchild;//记录结点左孩子序号intrchild;//记录结点右孩子序号intx;//记录x坐标inty;//记录y坐标intdep;//记录深度27学生姓名学号专业年级、班级课程名称实验3实验项目文本解压与压缩实验时间年月日实验指导老师实验评分intsn;//记录空格个数intk;//0为左孩子,1为右孩子,-1为根strings;};structHaffCode{intbit[28];//记录各结点的哈弗曼编码intstart;//记录遍历哈弗曼树

7、的起始位置intweight;//记录结点权值};2.哈弗曼树的实现//函数名:Haffman//功能:生成哈弗曼树,为每一个哈弗曼结点生成哈弗曼编码//函数参数:intw[]引入各个字符的权值//intn字符集大小voidHaffTree::Haffman(intw[],intn){inti,j,m1,m2,x1,x2;//m1,m2表示最小、次小x1,x2表示左右孩子for(i=0;i<2*n-1;i++)//进行初始化操作,记录权值{if(i

8、eht[i].weight=0;//赋权值ht[i].parent=0;//清空父母序号ht[i].lchild=-1;//清空左孩子序号ht[i].rchild=-1;//清空右孩子序号}for(i=0;i

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

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

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