哈夫曼、课程设计ok

上传人:F****n 文档编号:98728348 上传时间:2019-09-13 格式:DOC 页数:38 大小:688KB
返回 下载 相关 举报
哈夫曼、课程设计ok_第1页
第1页 / 共38页
哈夫曼、课程设计ok_第2页
第2页 / 共38页
哈夫曼、课程设计ok_第3页
第3页 / 共38页
哈夫曼、课程设计ok_第4页
第4页 / 共38页
哈夫曼、课程设计ok_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《哈夫曼、课程设计ok》由会员分享,可在线阅读,更多相关《哈夫曼、课程设计ok(38页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告课程名称 数据结构 课题名称 1.huffman编码 2.班级成绩管理系统 专 业 网络工程 班 级 学 号 姓 名 指导教师 刘铁武 郭芳 邓作杰 2014年 6月15 日 湖南工程学院课 程 设 计 任 务 书课程设计旨在达到以下目标:强化学生编码、调试错误的能力。了解和掌握软件开发流程和项目管理控制。了解当前IT行业及职业人应具备的素质。完全模拟真实软件开发流程和管理,增强团队意识和团队合作精神一 设计内容:问题2:huffman编码对于确定的字符集的电文字符串编码,实现最高的通信效率。编程实现对于给定的输入串及各字符的已知频度,输出其编码方式(各字符的二进制编码)

2、及对应的输出流。测试数据: 字符ABCDEFGHIJKLM频度18664132232103211547571232字符NOPQRSTUVWXYZ频度20576315148518023818116问题3:成绩管理编制一应用软件实现对班级成绩管理。基本功能有学生信息的增删(转入或退学)、查找(从当前点向前或向后双向的)、录入、统计(如总分,及格率等)。建议用双链表实现。二 设计要求:a) 界面友好用户的一些操作前后做出一些必要的提示或确认。所有完成的功能都需要友好,例如:增加失败提示;删除失败和成功提示、删除前的确认;修改失败和成功提示、修改前/后的确认;查找失败提示、查找成功的确认;退出系统时,

3、如果有修改要提示是否保存;其它方面的界面问题;b) 结构清晰: 模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.c文件,用makefile; 封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行;避免重复、冗余代码; 代码块清晰。c)变量命名规范,变量名应该具有自明性: 常量,枚举和宏定义命名常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定; 函数的命名:使用动词或者动词名词(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开 变量的命名与定义应当使用名词或者形容词名词,由一个或多个单词组成且以小写字母开头,

4、以后每个单词之间用下划线隔开。d) 注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法等都需要清晰明了地说明;三其它要求:1选题:每位学生需完成两个课题,其中一个必选,另一个自选,必选题次为,学号/7+1。2课程设计报告内容说明1)需求分析 程序的功能;输入输出的要求。2)概要设计 程序的模块构成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3)详细设计 采用C语言定义相关的数据类型;写出各模块的类C码算法;画出各函数的调用关系图、主要函数的流程图。4)调试分析以及设计体

5、会 测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5)使用说明 用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。6)书写格式 见附带说明。7)附录 参考书目; 源程序清单(带注释)3成绩评定:指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: 平时出勤 (占10%) 系统需求分析、功能设计、数据结构设计及程序总

6、体结构合理与否(占10%) 程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) 设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 独立完成情况(占10%)。三进度安排第 17周星期一星期二星期三星期四星期五上午8:0012:00下午14:0017:00第 周星期一星期二星期三星期四星期五上午8:0012:00下午14:0017:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二

7、、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。目录1课题名称 1-1问题描述71-2概要设计71-3详细设计81-4调试分析91-5心得体会111-6附录122课题名称2-1问题描述182-2概要设计182-3详细设计192-4调试分析242-5心得体会272-6附录283参考文献1.1问题描述 huffman编码对于确定的字符集的电文字符串编码,实现最高的通信效率。编程实现对于给定的输入串及各字符的已知频度,输出其编

8、码方式(各字符的二进制编码)及对应的输出流。测试数据: 字符ABCDEFGHIJKLM频度18664132232103211547571232字符NOPQRSTUVWXYZ频度205763151485180238181161-2概要设计 1-2.1 程序模块及其关系主函数模块编码模块译码模块输入字符串生成哈夫曼编码输入代码串译码并输出程序由主函数模块,编码模块,译码模块组成,主函数模块可调用编码模块,译码模块,编码模块可对字符串进行编码,译码模块可对输入的代码串进行译码并输出。各模块之间的关系示意图如下:1-3详细设计各模块的C算法1. 编码模块:首先通过键盘输入需要键盘的字符串,调用void

9、 huffmantree()函数储存字符频度,再调用函数:void huffmantree() /构造哈弗曼树int i,j,k,lnode,rnode;double min1,min2; /分别存放lnode和rnode的两个结点位置 使所有结点的相关域置-1for(i=0;i60;i+) listi.parent=listi.lchild=listi.rchild=-1; for(i=0;i26;i+) listi.weight=fnumi; for(i=0;i26;i+) x1=x2=0; m1=m2=maxvalue; for(j=0;j26+i;j+) if(listj.weight

10、m1&listj.parent=-1) x2=x1; m2=m1; x1=j; m1=listj.weight; else if(listj.weightm2&listj.parent=-1) x2=j; m2=listj.weight; list26+i.lchild=x1; list26+i.rchild=x2; listx1.parent=listx2.parent=26+i; list26+i.weight=listx1.weight+listx2.weight; 2.译码模块先通过键盘输入哈夫曼编码代码串, for(i=0;ilen;i+) / 译码 for(j=0;j26;j+) flag=1; / 判断输入是否合法 for(k1=i,k2=0;k1=i+letterj.len-1&strk1!=0;k1+,k2+) 如果找到对应编码 if(strk1!=letterj.sk2) flag=0; break; if(flag) printf(%c,letterj.c); i+=(letterj.len-1); break; 3.界面设计 int i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号