欢迎来到天天文库
浏览记录
ID:857330
大小:331.03 KB
页数:17页
时间:2017-09-20
《数据结构课程设计报告-模板》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、黄淮学院信息工程学院课程设计报告设计题目:哈夫曼编码/译码系统姓名:学号:专业班级:计算机科学与技术0601(本)系(院):信息工程学院设计时间:2012~2013学年第一学期设计地点: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个代码。同时将此字符形式的编码写入文件CodePr
4、int中。(5)T:印哈夫曼树(TreePrinting)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。[测试数据]新建一个.txt文件,用来存放待处理的数据,这些数据为ASCII码值的集合,而且每种字符的数量并不能相同。本实验拟设其中的数据为abbcccdddd.[实现提示] (1)文件CodeFile的基类型可以设为子界型bit=0..1。(2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示运行Quit。请用户键入一个先把功能符,些功能执行完毕后再经菜单,直至某次用户先把了“E”为止。(3
5、)在程序的一次执行过程中,第一次执行I、D或C命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。一需求分析这是一个典型的哈夫曼树问题,也是它的一个很有实际应用的问题。在这里关键的问题便是要用清楚这些字符的种类以及它的相应的权值,还应该知道哈夫曼树的建立,以及文件的打开与创建和读写。二概要设计首先由于程序中要常用到字符的种类数以及他们的权值,故需用到两个全局变量intcharcount,int*w,int*wt对于输入的字符还应当有一个用来存放的缓冲区,因为这里的字符限定为ASCII码,故charbuff[256],用来存入Huffman
6、译码的HuffmanDecodeHDC设计实现主要功能的函数有:获得字符种类以及权值的子函数BOOLGetWeight();初始化哈夫曼树的子函数BOOLInitHuffmamTree(HuffmanTreeHT);创建哈夫曼树的子函数BOOLCreatHuffmanTree(HuffmanTreeHT);哈夫曼树保存的子函数BOOLHuffmanTreeWriteIntoFile(HuffmanTreeHT);哈夫曼树读取的子函数BOOLHuffmanTreeReadIntoMem(HuffmanTreeHT);利用哈夫曼树将字符编码的函数BOOLHuffmanTreeCoding(Huff
7、manTreeHT,HuffmanCodeHC);利用哈夫曼树将字符串译码的函数HuffmanTreeDecoding(HuffmanTreeHT,HuffmanCodeHC);将哈夫曼树编码打印的函数BOOLHCPrint(HuffmanTreeHT,HuffmanCodeHC);将哈夫曼树打印的函数BOOLHTPrint(HuffmanTreeHT);将哈夫曼树销毁的函数BOOLDestroy
此文档下载收益归作者所有