1、 课 程 设 计 说 明 书课 程 设 计 说 明 书 题目:题目: 哈夫曼编译码器 院院 系:系: 计算机科学系 专业班级:专业班级: 10 软件工程 学学 号:号: 学生姓名:学生姓名: 指导教师:指导教师: 2011年年 12 月月 30 日日 课 程 设 计 需 求 分 析 报 告课 程 设 计 需 求 分 析 报 告 一 、一 、 分析问题分析问题和和确定解决方案确定解决方案 1 1. . 分析问题分析问题 利用哈夫曼编码进行通信可以大大提高信道利用率, 缩短信息传输时间, 降低传输成本。 但是, 这要求在发送端通过一个编码系统对待传数据预先编码, 在接收端将传来的数据进行 译码(复
2、原) 。对于双工信道(即可以双向传输信息的信道) ,每端都需要一个完整的编/译 码系统,为这样的信息收发站写一个哈夫曼的编/译码系统。 2.2.确定解决方案确定解决方案 设计建立带权的哈夫曼树, 确定哈夫曼树的类与成员函数, 以及各函数之间的调用关系, 采用动态数组的存储结构存储所需要的数据, 通过不同的函数来实现编码, 译码以及打印二 进制编码、哈夫曼树,把不同的数据存入不同的 txt 文件中,通过主函数调用来实现功能检 测。 3.3.输入的形式和输入值的范围输入的形式和输入值的范围 手动或者从文本中读入数据的形式初始化哈夫曼树, 从键盘中或者文件中读入数据, 以字 母 A-Z 代表结点,以
3、自然数代表权值,字符串提示使用者所要执行的操作。 4.4.输出的形式输出的形式 在显示器界面上或者以文本的形式来实现程序调试的输出。 5.5.程序所能达到的功能程序所能达到的功能 (1)初始化。手动输入字符集大小 n,以及 n 个字符和 n 个权值,建立哈夫曼树,并将它存 于文件 WritehfmTree 中,输出哈夫曼树及各字符对应的编码存于 WritehfmCode;从文本中读 入字符,建立哈夫曼树存于 ReadhfmTree, 输出哈夫曼树及各字符对应的编码存于 ReadhfmCode. (2)编码。手动输入一串大写英文字符,该字符存于 WriteToBeTron 中,对字符进行编码并
4、将它存于 WriteCodeFile 中;从文件中读取字符编码并存于 ReadCodeFile 中。 (3)译码。先初始化默认哈夫曼树,手动输入二进制代码进行译码存于 WriteTextFile 中; 从文件中读取二进制代码进行译码存于 ReadTextFile 中。 (4)印代码文件。将文件 ReadCodeFile 以紧凑格式显示在终端上,每行 50 个代码。同时将 此字符形式的代码码写入文件 CodePrint 中。 (5)印哈夫曼树。将初始化的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈 夫曼树写入文件 TreePrint 中。 各个功能数据输出存储位置(各个功能数据输出存储位置(如表如表 1 1 所示所示) 表 1:各个功能数据输出存储位置表 功能 字母 二进制码 初始化 WritehfmTree(手动) WritehfmCode(手动) ReadhfmTree(文本读入) ReadhfmCode(文本读入) hfmTree(默认文本读入) hfmCode(默认文本读入) 编码 WriteToBe