《数据结构与算法》课程设计

(2019/2020学年第一学期) 指导教师:孙麒、霍戌文

《数据结构与算法》课程设计

任务书

《数据结构与算法》是计算机科学与技术专业重要的核心课程之一,在计算机专业的学习过程中占有非常重要的地位。《数据结构与算法课程设计》就是要运用本课程以及到目前为止的有关课程中的知识和技术来解决实际问题。特别是面临非数值计算类型的应用问题时,需要选择适当的数据结构,设计出满足一定时间和空间限制的有效算法。

本课程设计要求同学独立完成一个较为完整的应用需求分析。并在设计和编写具有一定规模程序的过程中,深化对《数据结构与算法》课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使自己的程序设计与调试水平有一个明显的提高。
一、赫夫曼编码/译码器

  1. 问题描述
    利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个赫夫曼码的编/译码系统。

  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. 测试要求
    (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. 实现提示
    (1) 编码结果以文本方式存储在文件Codefile中。
    (2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。
    (3) 在程序的一次执行过程中,第一次执行I,D或C命令之后,赫夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。
    二、具体要求:
    课程设计成果的内容必须由以下四个部分组成,缺一不可。
    (1) 上交源程序:学生按照实验题目的具体要求所开发的所有源程序(应该放到一个文件夹中),然后打包压缩后上交;
    (2) 上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装第三方软件才能运行,要有第三方程序的安装使用说明;(可以在报告中体现)
    (3) 设计报告:(电子版本,保存在word 文档中,文件名要求: 按照“学号_姓名_设计题目”起名,如文件名为“XXX_张三_赫夫曼编码 ”.doc或.docx)。
    其中包括:
    1) 题目;
    2) 实验目的;
    3) 需求分析:在该部分中叙述实现的功能要求;
    4) 概要设计:
    在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义);
    5) 详细设计
    各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)。源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释;
    6) 调试分析
    测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想;
    7) 总结:
    总结可以包括 : 设计过程的收获、遇到问题及解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在设计过程中对《数据结构》课程的认识等内容。
    (4)单独上交电子版本的“课程设计答辩记录表”,命名方法同上;

三、工作内容及工作计划:一周
时间 地点 工作内容 指导教师
11.13/11 上午 10-414/413/409 实验要求,需求分析 孙麒、霍戌文
下午 10-414/413/409 查找资料,总体结构设计 孙麒、霍戌文
11.20/12 上午 10-414/413/409 算法设计,用户界面设计 孙麒、霍戌文
下午 10-414/413/409 算法设计,用户界面设计 孙麒、霍戌文
11.27/13 上午 10-414/413/409 详细设计 孙麒、霍戌文
下午 10-414/413/409 详细设计 孙麒、霍戌文
12.04/14 上午 10-414/413/409 测试分析与完善设计 孙麒、霍戌文
下午 10-414/413/409 测试分析与完善设计 孙麒、霍戌文
12.11/15 上午 10-414/413/409 上机检查,答辩 孙麒、霍戌文
下午 10-414/413/409 上机检查、答辩 孙麒、霍戌文

四、考核成绩评定标准:
本课程在理论课完成后进行,最终成绩按五级评分:优、良、中、及格、不及格。
五个级别对应的百分之关系为:
A: 成绩>=90;
B: 90>成绩>=80;
C: 80>成绩>=70;
D: 70>成绩>=60;
E: 60<成绩。
本课程设计的评价由四部分部分组成,包括面试成绩(40%),课程设计报告(40%),实践操作表现(10%),考勤与课堂表现(10%)。其中,课程设计报告40%,根据学生提交的报告完成情况及质量,进行考评;面试成绩占40%,学生提交实验程序,教师提出相关问题,根据学生回答问题的清晰度、准确性、敏捷性,进行考评;实践操作成绩占10%,根据学生在课程设计中分析解决问题的能力、完成任务的速度和质量、提问的质量等进行评分;到课率占10%,以课堂出勤率和课内讨论参与度为评分依据。

具体考核与评估标准如下表所示:
考核方式
或途径 考核要求 考核权重 评估级别
课程设计报告 内容设计合理、完整,格式规范 40% 格式规范、内容完整最高得10分;方案及类的设计最优得10分;代码实现及风格最高10分;遇到问题解决、改正优化心得最高10分。
面试成绩 程序功能设计合理、完整,能够正常运行,类的设计合理,能够准确得回答老师提出的问题 40% 能够根据要求正确完成演示最高得10分;能够对方案进行清晰完整的进行阐述最高10分;对老师提出的问题回答及时、准确,最高得10分;综合表现最高10分。
实践操作表现 具备一定的解决问题的能力,能在规定的时间内顺利完成任务 10% 课程设计项目本身的问题,在课程设计考核前完成,得8分;2分为答辩或者争取优秀的,老师随机给出小的程序修改问题,完成得2分。
考勤与课堂表现 课堂出勤率和课内讨论参与度 10% 8分为出勤,2分为课内参与度,出勤才有扣分制,签到和随机点名,未被点到1次扣1分,本项最低0分;课内参与采用加分支,参与一次加1分,最高2分。

《数据结构与算法》课程设计任务书——赫夫曼编码/译码器相关推荐

  1. 数据结构c语言程序设计报告,数据结构与算法课程设计报告模版.doc

    数据结构与算法课程设计报告模版.doc 数据结构与算法课程设计报告题 目本科生导师制问题与家族关系查询系统院 (系) 信息科学与工程 专业班级 计算机应用技术1301班 学生姓名 顾 泉 学 号 20 ...

  2. 数据结构与算法课程设计大作业

    考   核   要  求 课程编号:400802010    课程名称:数据结构与算法课程设计考试形式:大作业 大作业1-9见我的下载 里面包含多个版本的设计 文件有cpp文件设计文档总结等 一.设计 ...

  3. 数据结构与算法课程设计之五子棋(人机)

    数据结构与算法课程设计之五子棋(人机) 五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏.通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜. 这是 ...

  4. 数据结构与算法课程设计——C语言《职员薪资查询系统》

    数据结构与算法课程设计--C语言<职员薪资查询系统> 温馨提示:课设要自己去操作,自己写代码,可以借鉴他人代码,学习思路和一些操作,切不可完全抄袭!!! 总体说明:设计一个职员薪资查询系统 ...

  5. 数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...

    数据结构与算法课程设计报告--教学计划编制 数据结构与算法课程设计报告题目教学计划编制目录一.需求分析311系统概述3111研究背景3112研究意义及目的312具体分析4121功能需求分析4122运行 ...

  6. Datawhale组队学习:数据结构与算法课程任务

    背景 Datawhale 是国内很有名的一个开源学习组织.这个组织将渴望改变的学习者以及一群有能力有想法的青年人集结在一起,营造出一种互促高效的学习环境,一起为开源学习付出努力. Datawhale ...

  7. 数据结构及算法课程感悟

    上学期学习程序设计基础之后,便对数据结构的知识有了了解,同时产生了好奇心,上完两节课后,对课程有了基本的了解,数据结构的定义是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储.组织数据的方 ...

  8. 数据结构与算法课程设计

     基于c语言的数据结构课程设计 选题:二手车信息管理系统 课程设计要求如下: 1.每人选择一个题目,独立完成(可以自拟,题目不得重复) 2.课程设计要求必须用到数据结构,即线性存储或非线性存储.必须用 ...

  9. 【无标题】数据结构与算法课程设计公园导游图

    目    录                          1 需求分析........................................................ 1 1.1 ...

最新文章

  1. Ironic 裸金属管理服务的底层技术支撑
  2. javascript设计模式_Javascript 前端设计模式
  3. 【Mybatis】 mapper XML 文件中使用 collection实现一对多关联
  4. 盘一盘2021全球流量最高的网站~
  5. 用云闪付乘坐公交地铁,能否享受到优惠,取决于这一点
  6. .NET项目版本号的小随笔
  7. C/C++知识分享:C++标准库之 string 类型,各种运算全部掌握
  8. ubuntu server执行sudo出现no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory...
  9. JAVA中的按值传递
  10. BZOJ 1066[SCOI2007]蜥蜴
  11. 新闻发布系统,我学会了什么?
  12. java垃圾收集算法、标记-清除算法、复制算法、标记-整理清除、分代收集算法
  13. 2018第三方支付牌照公司
  14. wordpress提示“Error establishing a database connection“的解决办法
  15. Unity3D手机斗地主游戏开发实战(04)_出牌判断大小
  16. 【转】Java线程系列:Callable和Future
  17. 华南x79主板u盘装系统教程_华南主板win10改win7系统及BIOS设置教程
  18. 学画画软件app推荐_可以学画画的APP有哪些?
  19. html判定会员,会员详情查询.html
  20. js实现图片裁剪效果

热门文章

  1. 漏洞挖掘 符号执行_简述符号执行
  2. 大白话系列之java_大白话系列之——Java的面向对象思想
  3. linux lpte_linux常用命令
  4. mysql 查询每人每天_PHP+MySQL实现对一段时间内每天数据统计优化操作实例
  5. php需要什么技能,成为一个好的PHP工程师需要掌握什么技能
  6. 三十二、Java集合中的ArrayList
  7. jieba分词小案例
  8. 上海内推 | 极氪智能科技百万年薪「氪学家」项目招聘规控/感知算法工程师
  9. 从最小二乘法到卡尔曼滤波
  10. 从PageRank到反欺诈与TextRank