1、 - 1 -课程设计(论文) 任务书学院 专业 班 一、课程设计(论文)题目 哈夫曼编码压缩解压缩软件 二、课程设计(论文)工作自 2007 年 1 月 8 日起至 2007 年 1 月 12 日止。三、课程设计(论文) 地点: 15 栋软件学院计算机室 四、课程设计(论文)内容要求:1本课程设计的目的1、 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。2、使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。 2课程设计的
2、任务及要求1)基本要求:1. 分析题目,查阅相关资料;2. 算法设计、数据结构设计; 3. 编写代码并调试;4. 完成课程设计报告。 2)创新要求: 在基本要求达到后,可进行创新设计,如对。3)课程设计论文编写要求(1)要按照书稿的规格打印誊写毕业论文(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等(3)毕业论文装订按学校的统一要求完成4)答辩与评分标准: (1)完成问题的解决方法分析:20 分; (2)算法思想(流程):20 分; - 2 -(3)数据结构:20 分;(4)测试数据:20 分(5)回答问题:20 分。5)参考文献:6)课程设计进度安排内容 天数 地点学生签名: 年
3、 月 日课程设计(论文)评审意见(1)完成问题分析(20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (2)算法思想 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (3)数据结构 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(4)测试数据 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(5)回答问题 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(6)格式规范性及考勤是否降等级:是( ) 、否( )评阅人: 赵海霞 职称: 讲师 年 月 日- 3
4、 -目 录目 录 .- 3 -正 文 .- 4 -一、问题描述 .- 4 -二、基本要求 .- 5 -三、测试数据 .- 6 -四、算法思想 .- 7 -五、模块划分 .- 9 -六、数据结构 .- 10 -七、源程序 .- 13 -八、测试情况 .- 37 - 4 -正 文一、问题描述描述要求编程解决的问题。拿到题目的时候,便选择了利用哈夫曼编码实现压缩解压缩这个项目,最初的感觉是比较“好玩” 。就现实生活中的 WinZip、WinRAR 等压缩软件的功能来看,最起码要实现压缩与解压缩任务,在此基础之上,可以在压缩率上有一定的改进,可以尝试加入一些优化算法,减小文件体积,而且也可以在界面以及
5、操作上,有所改进。- 5 -二、基本要求给出程序要达到的具体的要求。要求:1. 界面友好,具有良好的可操作性,设计人性化;2. 具有压缩功能,而且对于压缩的对象不限制,可以用于所有的文档、图片等,同时,也要求有一定的实用性,可以压缩文件,减小文件体积;3. 具有解压缩功能,在有了压缩功能之后,肯定要有解压缩功能,一方面,方便编程中的错误定位和检验压缩的正确与否,同时,也提高了软件的实用性,扩大了适用范围。- 6 -三、测试数据设计测试数据,或具体给出测试数据。要求测试数据能全面地测试所设计程序的功能。因为是对所有的计算机数据都是有用的,目前并未发现不可编码的数据流,但为了测试方便,一般使用小于
6、 1M 的文件进行测试,同时,对于不同文件格式,因为有些格式已经压缩过,所以,压缩率有较大的差距,所以建议使用文本文档进行测试。- 8 -四、算法思想- 9 - 10 -五、模块划分描述所设计程序的各个模块(即函数)功能。bool CCoding:UnZipFile() 解压缩文件bool CCoding:ZipFile() 压缩指定的文件,并将压缩文件写到硬盘bool CCoding:GetStringWeight() 得到文件中各种“字符”的长度void CCoding:Select(CCodingNode *ht,DWORD num,DWORD Head-next=NULL;length
7、=0;virtual CInfList();InfNode *GetListHead()return Head;DWORD GetListLength()return length;bool ListFindItem(BYTE data,InfNode */查找指定的点bool AppendData(WeightNode data);/尾部添加bool InserFirstData(WeightNode data);/头添加bool DestroyInfList();/销毁链表bool GetPosItem(DWORD Pos,WeightNode /得到指定元素的位置private:InfNode *Head;/头节点指针 InfNode *Last;/尾指针DWORD length;/长度用以保存在哈夫曼编码中生成的二叉树节点:class CCodingNode