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