当前位置:首页 >> 数学 >>

《数据结构与算法》课程设计教学大纲

《数据结构与算法》课程设计教学大纲
学分:1 周数:3 性质:必修 形式:分散 建议执行学期:4
一、课程设计教学的意义和目的
(一)意义: 课程设计是培养和锻炼学生综合运用所学知识解决实际问题的能力,是实践性教学的重要环
节,它具有动手,动脑,理论联系实际的特点,是培养在校大学生理论联系实际,敢于动手,善 于动脑,独立自主解决各种问题的一种较好的方法。《数据结构与算法》是一门应用性、实践性较 强的课程,忽视了实践性教学的环节,学生就会对该门课程的掌握不扎实。
(二)本教学环节的实施目的: 通过课程设计,使学生学会系统地运用所学的《数据结构与算法》等课程的知识和技能解决
实际问题的本领。通过设计实验,培养学生查阅专业资料,工具书或参考书,掌握现代设计手段 和软件工具,并掌握以图纸和说明书的方式表达设计思想和计算结果的能力。通过数学建模与软 件开发,不但要培养和提高学生解决具体问题,而且应建立正确的设计和科研思想,牢固树立事 实求实和严肃认真的科学工作态度。
二、课程设计教学的基本要求
学生必须仔细阅读《数据结构与算法》课程设计方案,认真主动完成课程设计的要求。有问 题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好 课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时的向教师汇报。
课程设计按照教学要求需要三周时间完成,三周中每天(按每周 5 天)至少要上 3-4 小时的 机来调试 C 语言设计的程序,总共至少要上机调试程序 45 小时。为保证质量,需要每个学生将 每天的上机调试程序的时间记录下来作为核定成绩的参考。
数据结构是一门涉及多门课程的课程,难度较大,需要较好的 C 语言的程序设计和调试能力, 如果学生能够按照要求,从时间和精力上保证完全的投入,相信能够有很大的收获。
三、课程设计的内容及安排

(一)主要内容: 本次课程设计完成如下模块(共 12 个模块,学生可以在其中至少挑选4个功能块完成,但有
**号的模块是必须要选择的,多做可以加分) 1、运动会分数统计** 任务:参加运动会有 n 个学校,学校编号为 1……n。比赛分成 m 个男子项目,和 w 个女子项目。 项目编号为男子 1……m,女子 m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分 分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设 定。(m<=20,n<=20) 功能要求: 1).可以输入各个项目的前三名或前五名的成绩; 2).能统计各学校总分; 3).可以按学校编号、学校总分、男女团体总分排序输出; 4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20 以内的整数(如果做得更好可以输入学校的名称,运动项目的名 称) 输出形式:有中文提示,各学校分数为整型 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件 中。(数据文件的数据读写方法等相关内容在 c 语言程序设计的书上,请自学解决)请在最后的上 交资料中指明你用到的存储结构; 测试数据:要求使用 1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试, 以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2、 一元多项式计算** 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加、相减,并将结果输入; 在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图) 、源程 序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法; 3、 订票系统 任务:通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价, 票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班;

退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息: 当航班信息改变可以修改航班数据文件 要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; 4、 迷宫求解 任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径 输出; 要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和 结果、算法的时间复杂度、另外可以提出算法的改进方法; 5、 文章编辑** 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过 80 个字符,共 N 行;要求(1)分别统计出其中英文字母数 和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删 除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分 4 行输出"全部字母数"、"数字个数"、" 空格个数"、"文章总字数"(3)输出删除某一字符串后的文章; 6、 joseph 环 任务:编号是 1,2,……,n 的 n 个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。 一开始任选一个正整数作为报数上限值 m,从第一个人开始顺时针方向自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向的下一个人开始重新 从 1 报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。 要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。 测试数据:m 的初值为 20,n=7 ,7 个人的密码依次为 3,1,7,2,4,7,4,首先 m=6,则正确的 输出是什么? 要求:输入数据:建立输入处理输入数据,输入 m 的初值,n ,输入每个人的密码,建立单循环 链表。 输出形式:建立一个输出函数,将正确的输出序列 7、 猴子选大王 任务:一堆猴子都有编号,编号是 1,2,3 ...m ,这群猴子(m 个)按照 1-m 的顺序围坐一圈, 从第 1 开始数,每数到第 N 个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只 猴子,则该猴子为大王。 要求:输入数据:输入 m,n m,n 为整数,n<m

输出形式:中文提示按照 m 个猴子,数 n 个数的方法,输出为大王的猴子是几号 ,建立一个函 数来实现此功能 8、 建立二叉树,后序、先序遍历( 用递归或非递归的方法都可以) 任务:要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立二叉树存 储结构的输入函数、输出后序遍历序列的函数、输出先序遍历序列的函数; 9、 赫夫曼树的建立 任务 :建立建立最优二叉树函数 要求:可以建立函数输入二叉树,并输出其赫夫曼树 在上交资料中请写明:存储结构、 基本算法(可以使用程序流程图) 、输入输出、源程序、测 试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法; 10、纸牌游戏 任务:编号为 1-52 张牌,正面向上,从第 2 张开始,以 2 为基数,是 2 的倍数的牌翻一次,直到 最后一张牌;然后,从第 3 张开始,以 3 为基数,是 3 的倍数的牌翻一次,直到最后一张牌;然 后…从第 4 张开始,以 4 为基数,是 4 的倍数的牌翻一次, 直到最后一张牌;...再依次 5 的倍 数的牌翻一次,6 的,7 的,直到以 52 为基数的牌翻过,输出:这时正面向上的牌有哪些? 11、图的建立及输出 任务:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两 种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。 12、各种排序 任务:用程序实现插入法排序、起泡法算法排序; 利用插入排序和冒泡法的算法,将用户随机输入的一列数按递增的顺序排好。 输入的数据形式为任何一个正整数,大小不限。 输出的形式:数字大小逐个递增的数列?

(二)、工作进度安排 1、熟悉设计题目。查阅相关资料 2、TurboC编程软件工具的熟悉应用 3、编写程序及软件方针调试 4、编写设计说明书 5、设计答辩及成绩评定

2天 1天 3天 2天 1天

四、学生应提交的设计成果

上交的设计成果的内容必须由以下四个部分组成,缺一不可。 1、上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);

2、上交程序的说明文件:(保存在.txt 中)在说明文档中应该写明上交程序所在的目录,上交程序 的主程序文件名,如果需要安装,要有程序的安装使用说明; 3、课程设计报告:(保存在 word 文档中,文件名要求 按照"姓名-学号-课程设计报告"起名,如 文件名为"张三-001-课程设计报告".doc )按照课程设计的具体要求建立的功能模块,每个模块要 求按照如下几个内容认真完成;其中包括: 1)需求分析:
在该部分中叙述每个模块的功能要求 2)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构 设计说明(如果指定存储结构请写出该存储结构的定义。 3)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块 采用不同的函数实现)源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量, 重点功能部分要加上清晰的程序注释。 4)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问 题是哪些?问题如何解决?),算法的改进设想。 4、课程设计总结:(保存在 word 文档中)总结可以包括:课程设计过程中的收获、遇到的问题、 遇到问题后解决问题的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过 程中对《数据结构》课程的认识等内容;
五、课程设计考核方法及成绩评定
设计成绩根据平时考勤,阶段性进度检查,质疑,设计说明书,最终设计答辩综合评定。学 生不得无故请假或缺勤,累计达到三分之一定位设计成绩不合格。 《数据结构》课程设计的最后成绩有以下几个方面组成:程序运行情况(20 分),程序的结构合 理与否(10 分),算法说明的清晰程度(10 分),上交磁盘中程序存放的规范程度(10 分),课程 设计总结情况(10 分),课程设计过程中的课程设计进展情况(10 分),独立完成情况(学生间不 相互雷同)(20 分),以及加分因素(10 分);共 100 分;

制定人: 审核人: 批准人:

年月日 年月日 年月日

这样看起来,反而是朝生暮死的蝴蝶为可羡了。它们在短短的一春里尽情地酣足地在花间飞舞,一旦春尽花残,便爽爽快快地殉着春光化去,好像它们一生只是为了酣舞与享乐而来的,倒要痛快些。像 人类呢,青春如流水一般的长逝之后,数十载风雨绵绵的灰色生活又将怎样度过?

是 违 法 问 题 热 也 让 同 样 5 我 也 投 入 与 他 人 啊 读 后 感 124204531582114624452001156420153 地 方 发 的 供 货 商 啥 好 烦 的 人 个 人 太 炎 热 和 谁











000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000

因为我们就这么一辈子,几十年的光景,无法重来,开心也好,不开心也罢,怎么都是活着,那么何不让自己开开心心的过好每一天呢! 生活虽辛苦,但我们一定要笑着过,以积极乐观的心态让日子过得有滋有味,这样才不白来人世走一遭,才会无怨无悔。 因为生活没有真正的完美,只有不完美才是最真实的美。 不要总是悲观地认为自己很不幸,其实比我们更不幸的人还有很多;要学会适应,学会调整自己的心态,学会宽容和理解,许多的苦、许多的累,都要坦然面对。 只有经历了,体验过了,才能明白了生活的不易。因为“经历就是收获”. 要知道世上没有什么不能割舍,人生没有过不去的坡,当你调整好了心态,一切都会风清云谈。 人活着,活的就是一种心情。 谁都有不如意的时候,这就要求我们做任何事情上都要持有一颗平常心。 只要做到不攀比,不虚荣,待人诚恳、做事踏实,以知足乐观的心态释怀所有,做事尽量站在别人的角度去考虑别人的感受,常怀感恩的心态待人,哪怕平庸,也会赢得世人对你的认可和尊重! 因为人活着,就需要一份积极向上的乐观和感恩的好心态来对待所有。

只要心中有景,何处都是彩云间;只要有一份好的心态,所有的阴霾都将会烟消云散…… 人生在世,免不了磕磕绊绊,不如意在所难免,因为很多事情都不是我们所预料的,也不可能按你的设想去发展。 正所谓“生活岂能百般如意,凡有一得必有一失。人生追求完美,但总会留下这样那样的遗憾,不存在十全十美,有遗憾才显出生活本色。” 只有这许许多多的遗憾,才是我们生命之中最为珍贵的财富;只有坦然面对所有,积极乐观的活着,就会发现平淡的生活原来也会变得很丰富。 生活,让我们微笑,也可以让我们哭泣。我们不要总是消极的怨天尤人,该以积极乐观的良好心态活着,如若心态好,精神打起来,好运自然来,就看你怎样去对待!