数据结构课程设计报告-模板.doc
《数据结构课程设计报告-模板.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-模板.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 黄淮学院信息工程学院课程设计报告设计题目: 哈夫曼编码/译码系统 姓 名: 学 号: 专业班级: 计算机科学与技术0601(本) 系 (院): 信息工程学院 设计时间: 20122013学年第一学期 设计地点: 1#615机房 成绩:指导教师签名: 年 月 日 课程设计目的1、能够更灵活地应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程
2、水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。5.由于现在市场上的加密很为重要,故应当做一个相关的程序,用来解决日常文章的加密与解密工作 课程设计任务与要求:问题描述打开一篇英文文章,统计该文章中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼编/译码系统。基
3、本要求一个完整的系统应具有以下功能:(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。(3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。(4)P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形
4、式的编码写入文件CodePrint中。(5)T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。测试数据 新建一个.txt文件,用来存放待处理的数据,这些数据为ASCII码值的集合,而且每种字符的数量并不能相同。本实验拟设其中的数据为abbcccdddd.实现提示(1)文件CodeFile的基类型可以设为子界型bit = 0.1。(2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示运行Quit。请用户键入一个先把功能符,些功能执行完毕后再经菜单,直至某次用户
5、先把了“E”为止。(3)在程序的一次执行过程中,第一次执行I、D或C命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。一 需求分析 这是一个典型的哈夫曼树问题,也是它的一个很有实际应用的问题。在这里关键的问题便是要用清楚这些字符的种类以及它的相应的权值,还应该知道哈夫曼树的建立,以及文件的打开与创建和读写。二 概要设计 首先由于程序中要常用到字符的种类数以及他们的权值,故需用到两个全局变量int charcount,int *w,int *wt对于输入的字符还应当有一个用来存放的缓冲区,因为这里的字符限定为ASCII码,故char bu
6、ff256,用来存入Huffman译码的HuffmanDecode HDC 设计实现主要功能的函数有:获得字符种类以及权值的子函数BOOL GetWeight();初始化哈夫曼树的子函数BOOL InitHuffmamTree(HuffmanTree HT);创建哈夫曼树的子函数BOOL CreatHuffmanTree(HuffmanTree HT);哈夫曼树保存的子函数BOOL HuffmanTreeWriteIntoFile(HuffmanTree HT);哈夫曼树读取的子函数BOOL HuffmanTreeReadIntoMem(HuffmanTree HT);利用哈夫曼树将字符编码的
7、函数BOOL HuffmanTreeCoding(HuffmanTree HT,HuffmanCode HC); 利用哈夫曼树将字符串译码的函数HuffmanTreeDecoding(HuffmanTree HT,HuffmanCode HC);将哈夫曼树编码打印的函数BOOL HCPrint(HuffmanTree HT,HuffmanCode HC); 将哈夫曼树打印的函数BOOL HTPrint(HuffmanTree HT);将哈夫曼树销毁的函数BOOL DestroyHuffmanTree(HuffmanTree HT,HuffmanCode HC);main()函数中使用一个swi
8、tch()语句实现菜单作用,用来对各个子函数的调用。程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。抽象数据类型线性表的定义如下:ADT HuffmanTree 数据对象:D=ai| ai ElemSet,i=1,2,3,n,n0数据关系:基本操作:BOOL GetWeight()操作结果:获得字符种类以及权值的。 BOOL InitHuffmamTree(HuffmanTree HT)初始条件:字符的种类数已知操作结果:初始化哈夫曼树BOOL CreatHuffmanTree(HuffmanTree HT)初始条件:哈夫曼树已存在,以及相应的权值。操作结果:创建哈夫曼树BOOL
9、 HuffmanTreeWriteIntoFile(HuffmanTree HT)初始条件:哈夫曼树已存在。操作结果:哈夫曼树保存。HuffmanTreeReadIntoMem(HuffmanTree HT)初始条件:哈夫曼树已存在且已知道存储的文件名操作结果:哈夫曼树读取BOOL HuffmanTreeCoding(HuffmanTree HT,HuffmanCode HC)初始条件:哈夫曼树已存在操作结果:利用哈夫曼树将字符编码并显示在屏幕上HuffmanTreeDecoding(HuffmanTree HT,HuffmanCode HC)初始条件:哈夫曼树已存在且已知道其编码操作结果:利
10、用哈夫曼树将字符译码并显示在屏幕上BOOL HCPrint(HuffmanTree HT,HuffmanCode HC)初始条件:已知道其编码操作结果:将字符译码显示在屏幕上并存入文件BOOL HTPrint(HuffmanTree HT)初始条件:哈夫曼树已存在操作结果:将哈夫曼树以直观方式显示在屏幕上并存入文件BOOL DestroyHuffmanTree(HuffmanTree HT,HuffmanCode HC)初始条件:程序中所有的堆操作结果:将程序所占的所有内存释放。三 详细设计1)定义全局变量、结构体:/*声明哈夫曼树结点类型,及树类型*/typedef struct char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 模板
限制150内