c语言 已知某系统在通信联络中,数据结构课程设计任务书.doc

数据结构课程设计任务书.doc

数据结构与算法课程设计数据结构与算法课程设计 2016/2017 学年第一学期分散进行)学年第一学期分散进行) 指导教师指导教师 班级班级 学号学号 姓名姓名 数据结构与算法课程设计数据结构与算法课程设计 任务书任务书 数据结构与算法是计算机科学与技术专业重要的核心课程之一,在计算机专业的 学习过程中占有非常重要的地位。数据结构与算法课程设计就是要运用本课程以及到 目前为止的有关课程中的知识和技术来解决实际问题。特别是面临非数值计算类型的应用 问题时,需要选择适当的数据结构,设计出满足一定时间和空间限制的有效算法。 本课程设计要求同学独立完成一个较为完整的应用需求分析。并在设计和编写具有一 定规模程序的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解; 训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使自己的程 序设计与调试水平有一个明显的提高。 一、赫夫曼编码一、赫夫曼编码/ /译码器译码器 1. 1. 问题描述问题描述 利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成 本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进 行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的 编/译码系统。试为这样的信息收发站编写一个赫夫曼码的编/译码系统。 2.2. 基本要求基本要求 一个完整的系统应具有以下功能 1 I初始化(Initialization) 。从终端读入字符集大小 n,以及 n 个字符和 n 个 权值,建立赫夫曼树,并将它存于文件 hfmTree 中。 2 E编码(Encoding) 。利用已建好的赫夫曼树(如不在内存,则从文件 hfmTree 中读入) ,对文件 ToBeTran 中的正文进行编码,然后将结果存入文件 CodeFile 中。 3 D译码(Decoding) 。利用已建好的赫夫曼树将文件 CodeFile 中的代码进行译 码,结果存入文件 Textfile 中。 以下为选做以下为选做 4 P打印代码文件(Print) 。将文件 CodeFile 以紧凑格式显示在终端上,每行 50 个代码。同时将此字符形式的编码文件写入文件 CodePrin 中。 5 T打印赫夫曼树(Tree printing) 。将已在内存中的赫夫曼树以直观的方式(比 如树)显示在终端上,同时将此字符形式的赫夫曼树写入文件 TreePrint 中。 3.3. 测试要求测试要求 (1) 已知某系统在通信联络中只可能出现八种字符, 其频率分别为 0.05、 0.29、 0.07、 0.08、0.14、0.23、0.03、0.11,试设计赫夫曼编码。 2 用下表给出的字符集和频度的实际统计数据建立赫夫曼树,并实现以下报文的编 码和译码 “THIS PROGRAME IS MY FAVORITE” 。 字符 A B C D E F G H I J K L M 频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1 4.4. 实现提示实现提示 1 编码结果以文本方式存储在文件 Codefile 中。 2 用户界面可以设计为“菜单”方式显示上述功能符号,再加上“Q” ,表示退出 运行 Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户 选择了“Q”为止。 3 在程序的一次执行过程中,第一次执行 I,D 或 C 命令之后,赫夫曼树已经在内 存了,不必再读入。每次执行中不一定执行 I 命令,因为文件 hfmTree 可能早已建好。 二、具体要求二、具体要求 课程设计成果的内容必须由以下四个部分组成,缺一不可。 1 1 上交源程序学生按上交源程序学生按照照实验题目实验题目的具体要求所开发的所有源程序(应该放到一个的具体要求所开发的所有源程序(应该放到一个 文件夹中) ;文件夹中) ; 2 2 上交程序的说明文件 (保存在上交程序的说明文件 (保存在.txt.txt 中)在说明文档中应该写明上交程序所在的中)在说明文档中应该写明上交程序所在的 目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明; (可以在报(可以在报 告中体现)告中体现) 3 3 设计报告 (保存在设计报告 (保存在 word word 文档中,文件名要求文档中,文件名要求 按照按照学号学号_ _姓名姓名_ _设计设计题目”题目” 起名,如文件名为起名,如文件名为XXXXXX_ _张三张三_ _赫夫曼编码赫夫曼编码 .doc.doc。打印稿用。打印稿用 A4A4 纸纸 其中包括 1) 题目; 2) 实验目的; 3) 需求分析在该部分中叙述实现的功能要求; 4) 概要设计 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的 存储结构设计说明(如果指定存储结构请写出该存储结构的定义); 5) 详细设计 各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功 能模块采用不同的函数实现)。源程序要按照写程序的规则来编写。要结构清晰,重点函 数的重点变量,重点功能部分要加上清晰的程序注释; 6) 调试分析 测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的 思考(问题是哪些问题如何解决),算法的改进设想; 7) 总结 总结可以包括 设计过程的收获、遇到问题及解决问题过程的思考、程序调试能力 的思考、对数据结构这门课程的思考、在设计过程中对数据结构课程的认识等内容。 三、工作内容及工作计划一周三、工作内容及工作计划一周 时间时间 地点地点 工作内容工作内容 指导教师指导教师 11 月 30 日 上午 10-414 实验要求,需求分析; 孙麒、霍戌文 下午 10-414 查找资料,总体结构设计; 孙麒、霍戌文 12 月 7 日 上午 10-414 算法设计、用户界面设计 孙麒、霍戌文 下午 10-414 算法设计、用户界面设计 孙麒、霍戌文 12 月 14 日 上午 10-414 详细设计 孙麒、霍戌文 下午 10-414 详细设计 孙麒、霍戌文 12 月 21 日 上午 10-414 测试分析与完善设计 孙麒、霍戌文 下午 10-414 测试分析与完善设计 孙麒、霍戌文 12 月 28 日 上午 10-414 上机检查、答辩 孙麒、霍戌文 下午 10-414 上机检查、答辩 孙麒、霍戌文 四、考核成绩评定标准四、考核成绩评定标准 本课程设计的评价由三部分组成,包括程序演示(50),课程设计报告(30),回 答教师提问(20)。 1程序演示 优 功能完善,全部测试正确,并且能够对局部进行完善。 良 功能完善,但测试欠缺。 中 功能基本完善,但程序尚有部分错误。 及格 完成内存中赫夫曼编码/译码,但不涉及文件操作。 不及格 功能不完善,且程序错误较多,无法运行。 2课程设计报告 优 包括设计内容,设计思想,已经完成的任务及达到的目标,设计思路清晰、 书写条理清楚,源程序结构合理、清晰,注释说明完整,有对本次课程设计的心 得体会。 良 包括设计内容,设计思想,已经完成的任务及达到的目标,设计思路基本 清晰、书写条理基本清楚,源程序结构合理、清晰,注释说明基本完整,有对本 次课程设计的心得体会。 中 课程设计报告内容基本完整,思路较清晰,书写基本清楚,源程序结构尚 可,有注释说明但不完整。 及格 课程设计报告内容基本完整,思路较差,书写尚清楚。 不及格 课程设计报告内容不完整,书写没有条理。 3回答教师提问 优 能回答教师提出的所有问题,并完全正确,思路清晰 良 基本能回答教师提出的所有问题,有些小错误 中 基本能回答教师提出的问题,少数问题回答错误或不清楚 及格 能回答教师提出的问题,但较多问题回答错误或不能回答 不及格 基本不能回答教师提出的问题 数据结构与算法课程设计数据结构与算法课程设计 目目 录录 一、 题目 二、 实验目的 三、 需求分析 四、 概要设计 五、 程序说明 六、 详细设计 七、 调试分析 八、 实验心得与体会(总结) 一、 题目 赫夫曼编译码器 二、 需求分析 给出一段由 ASCII 码范围内字符组成的字符串,将其通过哈夫曼编码的形式,建立 相应的赫夫曼树,获得一段编码;同时,能够能过输入一段编码,通过与赫夫曼编 码的比较,翻译成对应的原文。 三、 概要设计 该程序使用 c 语言, 但由于对 c 语言的某些部分理解不是很透彻, 所以其中加有 c 的语句 程序共分三个功能1、初始化。建立相应的赫夫曼树;2、编码。对输入的字符通 过赫夫曼编码对其进行相应的编码;3、译码。通过与赫夫曼编码的比较,输出其 对应的原码。 程序说明 include include include include include using namespace std; typedef struct 赫夫曼树的结构体 char ch; unsigned int weight; unsigned int parent, lchild, rchild; htnode, *hfmtree; typedef charhfmcode; void Selecthfmtree for j 1; j HTx.parent 再次找一个 parent 为 0 的节点,且非最小节点 y j; break; for i j 1; i y *p1 y; *p2 x; else *p1 x; *p2 y; void hfmcodinghfmtree int p1, p2; char *cd, z; if n z; printf“请输入第d 字符权值“, i; cinw; HTi.ch z; HTi.weight w; HTi.parent 0; HTi.lchild 0; HTi.rchild 0; for ; i choice; if choice I choice i 初始化赫夫曼树 cout n; hfmcodingHT, HC, n; for i 1; i code; cout h; _file.close; output_file.open“Txtfile.txt“; if output_file cout h; cout h endl; _file.close; cout “译码结束,字符已经存入 Textfile.txt 文件中“ endl; main; else if choice Q choice q exit0; else 如果选了选项之外就让用户重新选择 cout “请输入正确选项“ endl; system“pause“; return 0; 四、 详细设计 实验中建立赫夫曼树的程序为书上的原程序,添加了 select来选择输入字符 权值最小的两个字符,如果有两个字符的权值相等,则根据其输入的先后顺序优先 选择先输入的字符。 建立赫夫曼树时,采用左子树编码为 0,右子树编码为 1 的编码方式,对字符 进行赫夫曼编码。 编码过程,通过对输入的字符与赫夫曼编码的字符相比较,两字符相等则得出 其对应的赫夫曼编码,然后将其字符与对应的赫夫曼编码码值存入 hfmTree.txt 文 件中,并输出在终端。 译码过程,建立一个数组,将编码后的码值放入该数组,新建另一个数组,每 次读取编码码值的一个字符,使用 for 循环将其与赫夫曼编码进行比较,相等则得 出其对应的字符信息,直至字符串的结束0。 五、 调试分析 初始化结果; 建立赫夫曼树 存入 hfmTree.txt 编码结果 六、 实验心得与体会(总结) 经过这次试验,首先是对赫夫曼编码有了非常深刻的理解与体会,懂得了其在 传输方面的优越性。 考核成绩评定表考核成绩评定表 指 导 教 师 考 核 成 绩 答 辩 成 绩 总 成 绩 签字 年年 月月 日日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值