第一篇:(任务书)数据结构课程设计任务书
数据结构课程设计任务书
《数据结构》课程设计教学任务书
一、课程设计的目的
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求
1、独立思考,独立完成:每人任选一题,在课程设计中各任务要求独立完成,遇到问题大家可以相互讨论,互相调试检查,但不可以拷贝。
2、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
c)详细设计
各个算法实现的源程序(可放在附录中),对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想等。
4、每人实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如“11207210188 张丽”。该文件夹下至少包括:“源代码”和“课程设计报告”,统一放在服务器的文件夹“D: / 3
数据结构课程设计任务书
/11级专升本数据结构课程设计”中)。
5、课程设计报告要对重点函数及结构进行说明。报告格式参照(报告示例)。
6、报告提交
时间:第16周星期五之前,迟交无成绩。
形式:课程设计报告(要求书写课程设计报告)和电子文档。
三、课程设计内容:
1.大数相乘问题
例如:输入第一个数为:***172586,输入第二个数为:***7则程序运行后输出***172586****7=正确答案。2.矩阵的运算
采用十字链表表示稀疏矩阵,并实现矩阵的加减法和乘法运算, 要求:要检查有关运算的条件,并对错误的条件产生报警。3. 订票系统
设计航班信息,订票信息的存储结构,设计程序完成如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件 6. 宾馆订房和退房系统
假设一个宾馆有n个标准的客房,每个标准客房有m个标准间,利用链表、栈或者队列等数据结构设计出具有订房和退房等功能的管理系统。7. 建立二叉树和线索二叉树
分别用以下方法建立二叉树: 1)用先序遍历的输入序列 2)用层次遍历的输入序列 3)用先序和中序遍历的结果
最后对所建立的二叉树进行中序线索化,并对此线索树进行中序遍历(不使用栈)。8.校园导航问题
设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。9.马的遍历问题
设计程序完成如下要求:在中国象棋棋盘上,对任一位置上放置的一个马,均能选择一个合适的路线,使得该棋子能按象棋的规则不重复地走过棋盘上的每一位置。
要求:依次输出所走过的各位置的坐标。/ 3
数据结构课程设计任务书
11.设计一个模拟计算器来完成表达式的计算
要求对包含加、减、乘、除、括号运算符的任意整型表达式进行求解,操作数可以是多位数。12.八皇后问题
设计程序完成如下要求:在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。
要求:依次输出各种成功的放置方法。13.图的遍历过程演示
设计程序完成如下功能:对给定的图结构和起点,产生深度优先遍历和广度优先遍历序列,并给出求解过程的动态演示。14.构造n个城市连接的最小生成树
一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求:
1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。
2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)15. 药店的药品销售统计系统
设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
基本要求:在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。对各药品的药名、单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序、堆排等方法。
四、上交作业及成绩评定
1、上交要求
上交设计报告和源程序。其中设计报告要以手写报告的形式上交;电子版内容包括程序源码和设计报告的电子文档。整个班级的设计均放在一个文件夹中。
2、课程设计报告注意事项:
1)运行结果请截图(Alt + PrtSc);
2)系统功能模块介绍请请采用流程图形式; 3)课程设计总结可以从以下几个方面书写 : 课程设计的收获、遇到问题及其解决过程、程序调试技巧、在课程设计过程中对《数据结构》课程的认识等内容。
3、评分标准
根据完成任务的情况、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行百分制。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。
/ 3
第二篇:数据结构课程设计任务书
数据结构课程设计任务书
一、《数据结构课程设计》的目标
课程设计是《数据结构》课程的一个重要的实践环节,它可加深学生对该课程所学内容的进一步的理解与巩固,达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,培养基本的对基本数据结构的理解和运用,良好的程序设计方法、提高编码及调试程序技能的能力,为整个专业的学习以及软件设计水平的提高打下良好的基础。
二、设计内容
每位学生可以从《数据结构课程设计备选题目》中选择一个题目自行完成。要求每班中题目不能重复。
三、设计要求
1.学生必须仔细阅读《数据结构课程设计任务书》,认真主动完成课设的要求。有问题及时主动通过各种方式与指导教师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
3.课程设计按照教学要求需要两周时间完成,学院安排设计时
间学生不得缺席。
4、每位学生必须认真、独立完成设计任务,发现抄袭者或雷同者,一律按零分处理。
5、程序设计语言可选择C或C++。
6、程序要正确且具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行,对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。
四、上交相关内容要求
上交的成果的内容必须由以下三个部分组成,缺一不可。
1. 上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);
2. 上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;
3. 课程设计报告:(保存在word 文档中,文件名要求按照“学号_姓名_课程设计报告题目”起名,如文件名为“001_张三_二叉树动态演示”.doc)。报告要求文字工整通顺、图表规范、思路清楚、内容正确。设计报告必须按照规定格式规范,A4纸双面打印、装订。
将以上三个部分放在一个文件夹里,文件夹名要求按照"学号_姓名_课程设计报告题目”.zip命名。每个班将所有学生的文件夹收集起来刻成光盘上交。
五、时间安排
设计时间为两周(7.07—7.18),7月16日—7月18日答辩。考核方式
成绩按五分制,包括课程设计过程、课程设计结果、课程设计报告三部分。其中:
课程设计过程:20%
包括设计态度(10分)、出勤(10分)
课程设计结果:40%
其中:程序正确性:30分,运行效果:10分,答辩:10分。课程设计报告:40%
其中:正确性:20分,完整性:10分,规范性:10分。
六、设计报告格式
见《数据结构课程设计报告模板》。
第三篇:1206401数据结构课程设计任务书
1206402数据结构课程设计任务书
一、课程设计的目的
1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
二、课程设计的要求(应完成的工作)
完成并上交的成果的内容必须由以下两个部分组成,缺一不可(该部分以电子文件形式上交):
1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(以“学号姓名.cpp”来命名);
2.课程设计报告:(保存为word2003文档中,文件名要求按照“学号姓名.doc”命名,即文件名为“1206402**张三”.doc)按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成:
需求分析:在该部分中叙述模块的划分和各个模块的功能要求;
概要设计:在此说明每个部分的算法设计说明(使用专业流程图描述算法),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
详细设计及代码实现:各个模块实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
调试分析:测试数据,测试输出的结果(截图说明),时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
课程总结:总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
另外,报告还必须打印成纸质文档,字体小四,行距1.25倍。注意:去掉不该保留的内容,如提示、说明等。
三、题目参考、见另文件。
四、时间安排、17周,每天半天的时间必须到机房完成设计。
五、设计地点、实验楼407
六、组织管理、机房内按学号顺序坐位,错位的后果自负。要求到机房的时间内不定时抽查出勤状况,缺勤者按一定比例扣减最后得分。
七、考核评分。
根据提交的设计文档(包括程序主要完成的功能、数据结构设计、算法设计及专业流程图、主要代码、程序中有何创新、有何收获和所存在的不足以及需要改进的地方)和代码(程序的功能实现)进行考核。要求:
1.设计:思路清晰,设计可行。
2.文档:文档排版正确,思路清晰流畅,流程图符合规范并构图效果好。3.代码:结构清晰,注释得当,运行成功。
4.界面要求:每个功能应该设立菜单,有合理的提示,根据提示,可以完成相关的功能要求。
5.封面使用统一格式,要求封面布局合理美观。
6.A类选题最高分值可以到A,B类选题最高分值只能到B。根据各项情况,酌情加减分。
参考文献
[1]严蔚敏、吴伟民主编《数据结构》(C语言版)清华大学出版社 2002 [2]严蔚敏、吴伟民《数据结构习题集》(C语言版)清华大学出版社 [3]谭浩强编著 《面向对象程序设计》(C++)清华大学出版社
附:课程设计报告内容要求(示例)附:课程设计报告内容要求(示例)
《数据结构》课程设计报告
1206402 22 林晓苏
一、设计时间
2014年6月9日-----2014年6月13日
二、设计地点
湖南城市学院实验楼计算机407机房
三、设计目的
1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
5.培养查阅资料,独立思考问题的能力。四.设计小组成员 120640222林晓苏 五.指导老师
陈强、黄静 六.设计课题
编制一个课程管理系统
七.基本思路及关键问题的解决方法(需求分析和概要设计)需要建立相应的存储结构,要用到拓扑排序在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建个图, 该图用邻接表来存储,邻接表的头结点存储每门课的信息.本程序的目的是为用户编排课程,根据用户输入的信息来编排出每学期要学的课 程.针对计算机系本科课程结构之前开设。
八.算法及流程图(详细设计)
九.调试过程中出现的问题及相应解决办法(调试分析)试调过程中曾经出现过相应的代码无法被识别的问题。解决方法:经过排查之后发现时因为在不该回车的地方回车,使得一个可以被识别的词变成两端无法被识别的词。
十.课程设计心得体会(课程总结)本次实验中出现的问题很多,但是基本上的可以避免的。同时我也深深地领会到实践的重要性。课程虽然是枯燥的,但是应用到实践中确实灵活的。
十一.源程序(核心代码部分加上清晰的程序注释);
ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集.数据关系R: R={VR} VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在直接先修关系} 基本操作
P: void CreatGraph(ALGraph *);void FindInDegree(ALGraph , int *);void TopologicalSort_1(ALGraph G,int numterm,int maxcredit);void TopologicalSort_2(ALGraph G,int numterm,int maxcredit);}ADT Graph 栈的定义: ADT Stack{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…n,n>=0} 数据关系:R1={基本操作: void InitStack(SqStack *S);int StackEmpty(SqStack S);void Push(SqStack *S, int);int Pop(SqStack *S, int *e);}ADT Stack 3.2模块划分 4.1数据类型的定义 1typedef struct ArcNode{ int adjvex;struct ArcNode *nextarc;}ArcNode;typedef struct VNode{ char name[24];//课程名 int classid;//课程号
#define MAX_VERTEX_NUM 100 //最大课程总数 ai-1 ai
|ai-1,ai∈D,i=2,…,n} int credit;//课程的学分 int indegree;//该结点的入度 int state;//该节点的状态
ArcNode *firstarc;//指向第一条依附该顶点的弧针 }VNode,AdjList[MAX_VEXTEX_NUM];4 typedef struct{ AdjList vertices;int vexnum, arcnum;}ALGraph;邻接表的基本操作
void CreatGraph(ALGraph *);创建邻接表 void FindInDegree(ALGraph , int *);求一个结点的入度 void TopologicalSort_1(ALGraph G,int numterm,int maxcredit);拓扑排序来编排课程 void TopologicalSort_2(ALGraph G,int numterm,int maxcredit);2.
#define STACk_INIT_SIZE 100 //存储空间的初时分配量 #define STACKINCREMENT 10 //存储空间的分配增量 typedef int ElemType;typedef struct{ AdjList vertices;int vexnum, arcnum;}ALGraph;基本操作
void InitStack(SqStack *S);栈的初始化
int StackEmpty(SqStack S);判断栈是否为空
void Push(SqStack *S, int);入栈操作
int Pop(SqStack *S, int *e);出栈操作
int Sort(SqStack *S,int *t);参考文献 [1]严蔚敏、吴伟民主编《数据结构》(C语言版)清华大学出版社 2002 [2]严蔚敏、吴伟民《数据结构习题集》(C语言版)清华大学出版社 [3]谭浩强编著 《面向对象程序设计》(C++)清华大学出版社
第四篇:《数据结构》课程设计教学任务书.
愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉 《数据结构》课程设计教学任务书 计算机2007-1 课程设计周数:第20周 指导老师:刘文娟
一、课程设计的目的 数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的: * 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; * 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; * 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; * 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求
1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
c)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
e)课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;
4、每组实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如“200413498 高魁”。该文件夹下至少包括:“源代码”、“课程设计报告”、“可执行文件”。由学习委员收集刻盘按规定时间统一上交)。
5、报告提交 时间:第20周星期五检查,第20周星期五下午5点之前由学习委员收集上交,迟交无成绩。形式:课程设计报告(要求打印)和电子文档(统一刻盘)。
三、课程设计内容:
1、排序算法演示系统 【问题描述】 设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。【基本要求】(1实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。(2 待排序的元素的关键字为整数。其中的数据要用随机数产生(如10000个,至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。(3 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,用饼图或条形图进行表示,以便比较各种排序的优劣。(4 界面友好,易与操作。采用菜单方式进行选择。【选做内容】(1 对不同表长进行比较;(2 验证各算法的稳定性;(3 输出界面的优化。(4 使用汉字显示。
2、校园导游咨询系统 【问题描述】 设计一个校园导游程序,为来访的客人提供各种信息查询服务。【基本要求】(1 设计安徽理工大学的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2 为来访客人提供图中任意景点相关信息的查询。(3 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。【选做内容】(1 系统功能的完善;(2 提供求任意两个景点之间的所有路径的功能;(3 提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。(4 使用汉字显示。
3、通讯录 【问题描述】 设计散列表实现通讯录查找系统。【基本要求】(1 设每个记录有下列数据项:电话号码、用户名、地址;(2 从键盘输入各记录,分别以电话号码为关键字建立散列表;(3 采用线性探测再散列法解决冲突;(4 查找并显示给定电话号码的记录;(5 通讯录信息文件保存;(6 要求人机界面友好,使用图形化界面; 【选做内容
】(1 系统功能的完善;(2 设计不同的散列函数,比较冲突率;(3 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。(4 使用汉字显示。【实现提示】 如果不用界面编程,可用以下函数实现: 主函数:根据选单的选项调用各函数,并完成相应的功能。Menu(的功能:显示英文提示选单。Quit(的功能:退出选单。Create(的功能:创建新的通讯录。Append(的功能:在通讯录的末尾写入新的信息,并返回选单。Find(:查询某人的信息,如果找到了,则显示该人的信息,如果没有则提示通讯录中没有此人的信息,并返回选单。Alter(的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。Delete(的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。List(的功能:显示通讯录中的所有记录。Save(的功能:保存通讯录中的所有记录到指定文件中。Load(的功能:从指定文件中读取通讯录中的记录。
4、哈夫曼编码/译码器 【问题描述】 设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt。【基本要求】(1 输入一个待压缩的文本文件名,统计文本文件中各字符的个数作为权值,生成哈夫曼树;(2 将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod),(3 输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码;(4 显示指定的压缩文件和文本文件;(5 界面友好,易与操作。采用菜单方式进行选择。【选做内容】(1 把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。(2 显示哈夫曼树;(3 使用汉字显示。愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉
5、二叉树遍历算法集成 功能要求:(1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。(2)实现各种二叉树的遍历。包括先序遍历、中序遍历、后序遍历的递归或非递归算法。(3)要求能查找任一结点在某种遍历序列中的前驱和后继。(4)演示程序以人机对话的形式进行。每次测试完毕正确显示各种遍历序列。在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
6、航班信息的查询与检索 功能要求:(1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。(2)实现对飞机航班信息进行排序与查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。每个航班记录包括八项:航班号、起点站、到达站、班期、起飞时间、到达时间、飞机型号以及票价。除了票价为数值型外,其它的均定义为字符串。航班号 起点站 终点站 班期 起飞时间 到达时间 飞机型号 票价 CA1544 合肥 北京 1.3.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010
7、学生成绩管理系统(图书管理系统、个人账簿管理系统)功能要求:(1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。(2)实现对学生成绩信息进行排序与查找。可按学生学号、姓名等信息进行查询。每个学生信息包含:学号,姓名,班级,语文,数学,英语,物理,化学等项。学生信息的存储结构可以选择顺序结构,也可以选择链式结构。
8、表达式求值 功能要求:
当用户输入一个合法的表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的数要求在实数范围内。能执行多重括号嵌套运算。对于异常表达式给出错误提示。(要求使用静态栈数据结构。)
9、飞机订票系统 功能要求:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。(5)修改航班信息:当航班信息改变可以修改航班数据文件
10、多项式运算 功能要求:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列n,c1,e1,c2,e2,......,cn,en,其中n是多项式的 项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b;输出相加的多项式(4)多项式a和b相减,建立多项式a-b。输出相加的多项式(5)用带表头结点的单链表存储多项式。
11、猴子选大王 问题描述: n只猴子要
选大王,选举方法是:所有猴子按1,2,...,n编号围坐一圈,从第1号开始按1,2,...,m报数,凡
报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。基本要求:
分别选择顺序表和单向循环链表作为存储结构模拟整个过程,并依次输出出列的各猴子的编号和最终所选出猴王的编号。
12、停车场管理 问题描述: 设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。提示:
停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。
13、文本编辑器
功能要求:运用链表与数组来处理字符串的各项操作。如插入,删除,查找,替换,显示等等。
提示:对于自定义的文本文件“*.txt”,其每一行表示一个结点用单链表来实现,可以进行一行的修改,删除,添加等;每一行中的字符可用一维数组来存储,这样可以利用数组的特性方便地进行插入,删除,替换,甚至可以进行排序操作!
14、迷宫问题 问题描述:
在迷宫中求从入口到出口的一条简单路径。提示:
迷宫用一个二维字符数组maze来表示,用x表示纵坐标,y表示横坐标。(1)定义探索迷宫的四个方向:RIGHT为向右,DOWN向下,LEFT向左,UP向上,用Switch语句根据当前的位置坐标来判断下一步要探索的方向求出下一步要走的位置坐标。(2)探索迷宫的四个方向的坐标表示:RIGHT(x,y+1), DOWN(x+1,y, LEFT(x,y-1, UP(x-1,y。(3)对每个方向探索时,用0表示可通过,用1表示不能通过是障碍,对探索过的位置加以标记。把每一个可以通过的位置坐标放入栈中,最后打印输出路径。(4)根据二维字符数组和加标记的位置坐标,输出迷宫的图形。
15、电梯模拟运行 问题描述:
模拟我校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为第一层、第二层、......第九层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“ 空闲”时,将来到该层候命。
乘客可随时地进出于任何层。对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t检测一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层精致时间超过300t,则驶回1层候命。基本要求:
按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
(1)用系统计时,每当有新的动作要输入时要暂停计时,等输入完成后即可继续计时。
(2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出。
四、上交作业及成绩评定
1、上交要求
上交设计报告和相关光盘。其中设计报告要以打印文稿的形式上交。光盘内容包括程序源码设计报告的电子文档。整个班级的设计均刻在一张光盘上。(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如“200711111 王文”。该文件夹下至少包括:“源代码”、“课程设计报告”、“可执行文件”。由学习委员收集刻盘按规定时间统一上交)。
2、评分标准
根据完成任务的情况(必须进行系统演示、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。数据结构课程设计任务书----计2007-1 1 /7 愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉
第五篇:《数据结构》课程设计任务书2
二.本组课题及任务 1.课题名:约瑟夫环问题 2.任务: ⑴ 编写算法 ⑵ 记录开发日志 ⑶ 文档编写 ⑷ 程序代码编写 ⑸ 调试 运行 3.程序功能简介 1)界面友好
2)能完操作方法(流程)3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人的密码赋给m; 4)输出正确的排列顺序 4.主体内容
设计分析:基本思想
通过我们对约瑟夫问题的分析,我们认为利用单向循环链表就能解决这个问题。因为约瑟夫环的大小有输入决定,所以要进行动态内存分配。
为了实现上述操作,应以单向循环链表为存储结构。基本操作: new_code()操作结果:构造空链表,若成功就初始化每个人的相关信息 delete_code()
初始条件:线性链表存在
操作结果:释放指向出列的人的结点,并重新报数
本程序包含三个模块: ⑴ 主程序模块;
⑵ 构造链表并输入每个人信息模块; ⑶ 释放结点模块; 5.程序说明
本程序完成的是:编号为1,2,....,N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值M,从第一个人开始按顺时针方向自1开始顺序报数,报到M时停止报数.报M的人出列,将他的密码作为新的M值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止.程序输出出列顺序.6.操作方法(流程)(1)打开VC++ 6.0中文版。(2)输入自己编写好的源程序代码。
(3)运行程序,并找出程序中的错误,加以改正,直到能成功运行(4)输入测试数据,分析实验结果 7.设计体会
通过约瑟夫环算法的课题设计让我理解了循环队列,不单单只是书本上文字的循环队列的概念,更多是自己能够通过实际的操作对循环队列有了更深的了解。上机的编程的过程是对数据结构的基础的进一步的巩固。学习过程体验到了学习的乐趣,实验课题使我认识到平时学习的漏洞和知识的缺乏,为以后的学习敲了一下警钟,数据结构是门基础,要学习扎实才行 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。
数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。数据结构课程的主要目的是介绍一些常用的数据结构,阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种数据结构,讨论对它们实行的各种运算的实现算法。很多算法实际上是对某种数据结构施行的一种变换,研究算法也就是研究在实施变换过程中数据结构的动态性质。
学习的过程需要合作,而且在合作中提到自己的编程水平,借鉴他人好的地方,改掉原先自己不足,书本知识的与实际的联系,使自己的编程不在局限于原来的纸上谈兵,更多的是积累了经验,培养了能力 8.附录
(1)程序中主要变量、函数(指自定义函数及程序中用到的部分不常用系统函数)列表(含简要说明);实现主要功能的(本人任务部分)核心源程序 #include
{ bool IsOn;
int num;
int psw;
List*pnext;}*PList;enum
Status{ERROR_OK=0,ERROR_MEMORY_FALIED,ERROR_INPUT_NUM,ERROR_NOPERSON,ERROR_NUM};void GetErrorMsg(const Status &errorCode)
{ char msg[256];switch(errorCode){ case ERROR_OK: strcpy(msg,“执行成功!”);break;case ERROR_MEMORY_FALIED: strcpy(msg,“内存错误:没有足够大的内存!”);break;case ERROR_INPUT_NUM: strcpy(msg,“输入数据错误!”);break;case ERROR_NUM: strcpy(msg,“数据错误!”);break;case ERROR_NOPERSON: strcpy(msg,“错误:此编号的人不存在!”);break;default: strcpy(msg,“未知错误!”);} cout<
return ERROR_NUM;
PList pTemp=new List;
pls=pTemp;pls->num=1;pls->IsOn=true;for(int i=1;i
{ if(num<=0)
return ERROR_INPUT_NUM;PList pTemp=pls;for(int i=1;i!=num;i++){
pTemp=pTemp->pnext;} if(num==i){ cin>>pTemp->psw;if(pTemp->psw<=0)return ERROR_INPUT_NUM;else return ERROR_OK;} else return ERROR_INPUT_NUM;} Status ShowResult(const PList&pls,const int &m){ if(m<=0)
return ERROR_INPUT_NUM;if(pls==NULL)
return ERROR_NUM;int num=0;
PList pTemp=pls;do{ num++;pTemp=pTemp->pnext;}while(pTemp!=pls);int i=0,j,ps=m;while(i!=num){
if(i==0)
ps--;for(j=0;j
pnext;
}while(!pTemp->IsOn);}
pTemp->IsOn=false;
cout<<“第”<num< ps=pTemp->psw; i++; } return ERROR_OK;//返回成功 } void main(){ cout<<“*************************************”< 数 据 输 入int iTemp; Status errorCode;cout<<“**********Step1:*********”< GetErrorMsg(errorCode); }while(!(ERROR_OK==errorCode)); cout<<“************Step2:***********”< for(int i=1;i<=iTemp;i++){ cout<<“请输入第”< while(errorCode!=ERROR_OK) { GetErrorMsg(errorCode); cout<<“请输入第”< 密 码 输 入 环 中 人 数 输 入} cout<<“**********Step3:*********”< do{ cout<<“请输入初始密码:”;cin>>iTemp;cout<<“**********程序执行结果***********”< errorCode=ShowResult(pls,iTemp); GetErrorMsg(errorCode); }while(ERROR_OK!=errorCode);} 9.测试数据: 当n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6,则这正确的出列顺序为6,1,4,7,2,3,5 初 始 密 码 输 入