数据结构课程设计报告(怎么学好数据结构啊)
本文目录
- 怎么学好数据结构啊
- 《数据结构 课程设计》表达式求值 实验报告
- 数据结构课程设计报告(一元多项式的计算)
- 写一份 数据结构课程设计报告两个部分为:二叉树的遍历和查找(折半查找)的实现
- 《数据结构》课程设计报告:后序遍历( 用递归和非递归的方法一起都要)
- 数据结构课程设计综合排序代码及实验报告书
- 求一份数据结构课程设计报告
- 数学课程设计心得体会
- 数据结构的课程设计报告要怎么写啊
怎么学好数据结构啊
挺难学的,我们理论课都要结束了才开的实践课,不知道老师怎么想的,现在有课程设计,挺难的,把我们的设计题目给你参考下:《数据结构》课程设计课程设计时间:10~16周周二下午一、课程设计的目的数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、课程设计的基本要求1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成,其中包括: a)需求分析: 在该部分中叙述,每个模块的功能要求 b)概要设计 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构,请写出该存储结构的定义)。 c)详细设计 各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现) 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。 e)课程设计总结总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;4、课程设计提交内容: a) 每组的课程设计结果要进行检查和演示,程序源代码和文档文件等必须上交,作为考核内容的一部分。 b) 课程设计报告。可以结合3中的每个步骤对自己负责编写的部分重点描述。在电子文件中写明小组各成员具体分工,在PPT演示中明确说明。 所有内容打包成文件夹,文件夹内应至少包括:源代码、课程设计报告、可执行文件、PPT等。三、上交作业及成绩评定1、上交要求 按照课程设计提交内容准备,其中课程设计报告以打印文稿的形式上交,电子文档在16周课程结束前统一拷贝至各班学习委员处,最后由交至各班学习委员交至2503办公室。2、评分标准 根据完成任务的情况,分别在第15周和第16周周二下午,各小组以PPT和源代码执行文件形式在机房进行系统演示,面向全体同学讲解。课程设计报告书的质量、演示情况和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。上机程序检查未通过者、最终无设计报告者或严重抄袭他人设计者,成绩为不及格。备注:每班分为6~8个小组,每组4人,特殊情况可5人一组。自由分组,分组名单由各班学习委员确认后在第10周周四下午4:00前交给任课老师。每个题目每班最多只能有二个小组选做,评分时根据各题目难度确认难度系数,由得分和难度系数相乘得出最终分数。每组最少要完成二个题目,完成三个和三个以上者可加分。每小组之间题目及内容不得雷同,否则成绩最高为及格。六、编制一个求解迷宫通路的图形界面演示程序。 1.0问题描述:1) 输入一个任意大小的迷宫,任设起点、终点、障碍,用栈求出一条走出迷宫的路径,并显示在屏幕上。2) 根据用户界面提示,用键盘输入。Home键设置迷宫起点,End键设终点,上下左右箭头键移动,Enter键添加墙,Del键删除墙,完成后按F9键演示,Esc键退出。3)本程序要求至少得出一条成功的通路,也可求得全部路径(也可全部路径)。此外,也可尝试保存或载入测试文件(此功能不做强行要求)。4)当未输入起点时,消息显示“Error: You must set Startplace.”;未输入终点时,显示“Error: You must set Endplace.” 找到路径时,屏幕显示足迹,并在消息框出现Path found,否则消去足迹,显示Path not found.十七、学生成绩管理系统 1.15现有学生成绩信息文件1(1.txt),内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47…. .. .. .. …学生成绩信息文件2(2.txt),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77…. .. .. .. …(文件内容可根据测试要求,自行制定)试编写一个管理系统,要求如下:1、实现对两个文件数据进行合并,生成新文件3.txt2、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3、对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4、输入一个学生学号后,能查找到此学生的其它信息并输出结果(至少采用两种查找方法实现)5、要求使用结构体,链或数组等实现上述要求.采用多种方法且算法正确者,可适当加分.
《数据结构 课程设计》表达式求值 实验报告
算术表达式求值演示
一、概述
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。
二、 系统分析
1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果。
3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:
本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5. 测试数据。
2
算术表达式求值演示
一、概述
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。
二、 系统分析
1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果。
3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:
本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5. 测试数据。
操作集合:
(1)void InitStack1(SqStack1 &S1);//声明栈建立函数 (2)void InitStack2(SqStack2 &S2);//声明栈建立函数
(3)void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 (4)void Push1(SqStack1 &S1,char e);//声明入栈函数 (5)void Push3(SqStack2 &S2,float e);//声明入压栈函数 (6)char GetTop1(SqStack1 &S1);//声明取栈顶元素函数 (7)float GetTop2(SqStack2 &S2);//声明取栈顶元素函数 (8)char Pop1(SqStack1 &S1);//声明出栈函数 (9)float Pop2(SqStack2 &S2);//声明出栈函数 (10)char Compare(char m,char n);//声明比较函数
(11)float Operate(float a,char rheta,float b);//声明运算函数 (12)void DispStack1(SqStack1 &S1);//从栈底到栈顶依次输出各元素 (13)void DispStack2(SqStack2 &S2);//从栈底到栈顶依次输出各元素 }ADT SqStack
结构分析:
栈中的数据节点是通过数组来存储的。因为在C语言中数组是用下标从零开始的,因此我
们在调用他们的数据是要特别注意。指针变量的值要么为空(NULL),不指向任何结点;要么其值为非空,即它的值是一个结点的存储地址。注意,当P为空值时,则它不指向任何结点,此时不能通过P来访问结点,否则会引起程序错误。如果输入的数字不符合题目要求,则会产生错误结果。
算法的时空分析:
时间和空间性能分析:时间上,对于含n个字符的表达式,无论是对其进行合法性检测还是对其进行入栈出栈操作n次,因此其时间复杂度为O(n)。空间上,由于是用数组来存储输入的表达式,用栈来存储运算中的数据和运算符,而栈的本质也用到的数组,数组在定义时必须确定其大小。在不知表达式长度的情况下确定数组的长度确非易事,此时极易造成空间的浪费,因此空间性能不是很好。
数据结构课程设计报告(一元多项式的计算)
【问题描述】 编程实现一元多项式的加法计算。【基本要求】 能用链表实现一元多项式的加法计算,并能打印出计算结果。【所需知识】 (1)基本编程方法和程序设计知识。 (2)链表的理解和运算与运用。【所用算法】 遍历算法和递归算法。【操作平台】 Visual C++#include《stdio.h》#include《graphics.h》#define MAX 100typedef struct polynode{ float coef; int expn; struct polynode *next;}node;node * create(void) /*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/{ node *h,*r,*s; float c; int e; h=(node *)malloc(sizeof(node)); /*建立多项式的头结点,为头结点分配存储空间*/ r=h; /*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ printf("coef:"); scanf("%f",&c); /*输入系数*/ printf("expn: "); scanf("%d",&e); /*输入指数*/ while(c!=0.0) /*输入系数为0时,表示多项式的输入结束*/ { s=(node *)malloc(sizeof(node)); /*申请新结点*/ s-》coef=c; /*申请新结点后赋值*/ s-》expn=e; /*申请新结点后赋值*/ r-》next=s; /*做尾插,插入新结点*/ r=s; /*r始终指向单链表的表尾*/ printf("coef:"); scanf("%f",&c); printf("expn: "); scanf("%d",&e); } r-》next=NULL; /*将表的最后一个结点的next置NULL,以示表结束*/ return(h);} void polyadd(node *pa, node *pb) /*一元多项式相加函数,用于将两个多项式相加, 然后将和多项式存放在多项式pa中,并将多项式pb删除*/ { node *p,*q,*pre,*temp; int sum; p=pa-》next; /*令p和q分别指向pa和pb多项式链表中的第一个结点*/ q=pb-》next; pre=pa; /*位置指针,指向和多项式pa*/ while(p!=NULL&&q!=NULL) /*当两个多项式均未扫描结束时,执行以下操作*/ { if(p-》expn《q-》expn) /*若p指向的多项式指数小于q指的指数*/ { pre-》next=p; /*将p结点加入到和多项式中*/ pre=pre-》next; p=p-》next; } if(p-》expn==q-》expn) /*若指数相等,则相应的系数相加*/ { sum=p-》coef+q-》coef; if(sum!=0) { p-》coef=sum; pre-》next=p;pre=pre-》next;p=p-》next; temp=q;q=q-》next;free(temp); } else /*如果系数和为零,则删除结点p与q,并将指针指向下一个结点*/ { temp=p-》next;free(p);p=temp; temp=q-》next;free(q);q=temp; } } if (q-》expn《p-》expn) { pre-》next=q; /*将q结点加入到和多项式中*/ pre=pre-》next; q=q-》next; } } if(p!=NULL) /*多项式A中还有剩余,则将剩余的结点加入到和多项式中*/ pre-》next=p; else /*否则将B的结点加入到和多项式中*/ pre-》next=q;}void print(node * p) /*输出函数,打印出一元多项式*/{ while(p-》next!=NULL){ p=p-》next; printf(" %f*x^%d",p-》coef,p-》expn);}}void calculate() /*给多项式赋值并计算*/{ float cal=1.0,mid=0.0,las; int j; float num, x; int i=0; float later=0.0; int e; printf("Please input num:"); /*输入常数的值*/ scanf("%f",#); printf("Please input x:"); /*输入未知数X的值*/ scanf("%f",&x); printf("Please input e:"); /*输入数组的初值以判断是否循环*/ scanf("%d",&e); printf("Please input c:"); scanf("%f",&c); while(e!=0.0 ) /*此循环用于多项式的计算*/ { cal=1; for(j=0;j《e;j++) /*表示出X的几次方*/ { cal=cal*x; } i++; mid=cal*c; /*表示出单项*/ later+=mid; printf("Please input e :",i,i); scanf("%d%f",&e); } las=later+num; /*表示出完整的多项式*/ printf("The Result is :\n"); printf("%f",las); /*最终的计算结果*/ sleep(3);}void main(){node * pa,* pb,*pc,*p,*q,*pre;int driver=VGA,mode=VGAHI;initgraph(&driver,&mode,"c:\\tc ");setbkcolor(BLUE);setcolor(RED);printf("Welcome,Let’s go!\n");printf("Next, you will see the process of computing !");printf("\nPlease input the coef and expn of pa:\n");pa=create(); /*调用建立链表函数,创建多项式A*/print(pa);printf("\nPlease input the coef and expn of pb:\n");pb=create(); /*同理,创建B*/print(pb); p=pa-》next; /*以下代码用于排序*/ pa-》next=NULL; while(p!=NULL) { if(pa-》next==NULL) { pa-》next=p;p=p-》next; pa-》next-》next=NULL; } else { pre=pa;q=pre-》next; while(q!=NULL && p-》expn》q-》expn) { pre=q;q=q-》next; } q=p-》next; p-》next=pre-》next; pre-》next=p; p=q; } } printf("\nthe first ordered one:\n");print(pa); /*输出排序后的pa*/ p=pb-》next; /*以下代码用于给pb排序*/ pb-》next=NULL; while(p!=NULL) { if(pb-》next==NULL) { pb-》next=p;p=p-》next; pb-》next-》next=NULL; } else { pre=pb;q=pre-》next; while(q!=NULL && p-》expn》q-》expn) { pre=q;q=q-》next; } q=p-》next; p-》next=pre-》next; pre-》next=p; p=q; } } printf("\nthe second ordered one:\n");print(pb); /*输出排序后的pb*/printf("\nSum of the polys is:\n");polyadd(pa,pb); /*调用一元多项式相加函数*/print(pa); /*调用输出函数,打印结果*/printf("\n");setbkcolor(RED);calculate(); /*调用计算多项式值的函数*/}【编后总结】本程序在逻辑设计,详细设计,程序编码和程序调试阶段时本来都城有设计save()保存函数,和load()下载函数,分别用来保存创建的多项式,和下载其它需计算的多项式数据,这样这个系统才能更加实用,void createadj()原来的函数原型为arcnode *createdj()函数中用链表结构把adjmatrix,最后只放弃save()和load()函数,在 main()主函数中初始化该算式。从这次程序设计中我看到自己的不足之处,今后要更努力的学习和掌握好数据结构程序设计的知识。
写一份 数据结构课程设计报告两个部分为:二叉树的遍历和查找(折半查找)的实现
数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与大家共勉。首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到Microsoft公司的.NET产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sqlserver2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。通过一个暑假的学习,基本搞清楚了理论方面的东西,具体怎么用也不是很清楚。但是这为这学期的课程设计打下了铺垫。来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。遇到什么就学什么。我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,justdoit!我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。最后我选择了roseUML建模工具。在此之前,我脑袋里面没有软件建模的思想,什么UML建模对我而言就是一张空白的纸。但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。以及后来的数据库分析的时候用到的powerdesigner也是一样。开发的时候我想过用什么架构,c/s模式?模式有很多,怎么选择?我就上网搜索现在最流行的架构是什么。结果搜到了MVC架构,就是你啦。我决定用这个架构,不会,没关系,咱学。Justdoit!前期工作准备好后,那么我就得把我暑假学的.net加以实践。这个时候我更加深入的了解了利用ado.Net操纵数据库的知识。并且对数据库里面的存储过程有了比较深入的了解。经过大概2个多星期的奋斗,我完成了我的数据库课程设计--基于.net数据集的图书馆管理系统。并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。与其临渊羡鱼,不如退而结网。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML,我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,justdoit!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。
《数据结构》课程设计报告:后序遍历( 用递归和非递归的方法一起都要)
我们的数据结构实验也是这题,需要我把我的实验报告给你参考下么! 我这里就只发这部分的代码。Status PreOrderTraverse(BiTree T){//先序遍历二叉树T的递归算法if (T){printf("%d ",T-》data);if(T-》lchild) PreOrderTraverse(T-》lchild);if(T-》rchild) PreOrderTraverse(T-》rchild);return FALSE;}elsereturn OK;}Status PreOrder(BiTree T){//先序遍历二叉树T的非递归算法while(!(T==NULL&⊤==NULL)){if(T){printf("%d ",T-》data);push(T);T=T-》lchild;}else{T=(BiTree)pop();T=T-》rchild;}}}Status InOrderTraverse(BiTree T){//中序遍历二叉树T的递归算法if (T){if (T-》lchild) InOrderTraverse(T-》lchild); printf("%d ",T-》data);if (T-》rchild) InOrderTraverse(T-》rchild);return FALSE;}else return OK;}Status InOrder(BiTree T){//中序遍历二叉树T的非递归算法while(!(T==NULL&⊤==NULL)){while(T){push(T);T=T-》lchild;}T=(BiTree)pop();printf("%d ",T-》data);T=T-》rchild;}}Status PostOrderTraverse(BiTree T){//后序遍历二叉树T的递归算法if (T){if (T-》lchild) PostOrderTraverse(T-》lchild); if (T-》rchild) PostOrderTraverse(T-》rchild);printf("%d ",T-》data);return FALSE;}else return OK;}Status PostOrder(BiTree T){//后序遍历二叉树T的递归算法unsigned sign;//记录结点从栈中弹出的次数 while(!(T==NULL&⊤==NULL)){if(T){push(T);//第一次遇到结点T时压入其指针 push(1);//置标志为1 T=T-》lchild;}else{while(top){sign=pop();T=(BiTree)pop();if(1==sign)//表示走过T的左子树 {push(T);push(2);T=T-》rchild;break;}else{if(2==sign)//表示T的左右子树都已走过 {printf("%d ",T-》data);T=NULL;}}}}}}
数据结构课程设计综合排序代码及实验报告书
#include《stdio.h》#include《stdio.h》#include《stdlib.h》#include《time.h》#define N 200double maopao(int B,int M)//冒泡排序{ clock_t start, finish; double time; // 测量一个事件持续的时间 start = clock(); FILE *fp1; int i,j,t; for(i=0;i《M-1;i++)//排序 for(j=0;j《M-i-1;j++) if(B) { t=B=t; } finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; fp1=fopen("a","wb"); printf("经排序后序列为:\n"); for(i=0;i《M;i++)//输出排序后结果 { if(i%10==0)printf("\n"); printf("%d ",B); fwrite(&B,sizeof(int),1,fp1);//把数据以二进制形式存入磁盘文件 }fclose(fp1); printf("\n"); printf( "冒泡排序法运行时间:" ); printf( "%f seconds\n", time ); return time;}double charru(int A, int len)//插入排序{ clock_t start, finish; double time; // 测量一个事件持续的时间 start = clock(); FILE *fp2; int i,j,high,low,mid,temp; for(i=1;i《len;i++) { temp=A; low=0;high=i-1; while(low《=high) { mid=(low+high)/2; if(A》temp) high=mid-1; else low=mid+1; } for(j=i-1;j》high;j--) A; A=temp; } finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; fp2=fopen("b","wb"); printf("经排序后序列为:\n"); for(i=0;i《len;i++) { if(i%10==0)printf("\n"); printf("%d ",A); fwrite(&A,sizeof(int),1,fp2); }fclose(fp2); printf("\n"); printf( "插入排序法运行时间:" ); printf( "%f seconds\n", time ); return time;}double xuanze(int arry,int n)//选择排序{ clock_t start, finish; double time; //测量一个事件持续的时间 start = clock(); FILE *fp3; int i,j,k,t; for(i=0;i《n;i++) { k=i; for(j=i+1;j《n;j++) if(arry) k=j; t=arry; arry; arry=t; } finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; fp3=fopen("c","wb"); printf("经排序后序列为:\n"); for(i=0;i《n;i++) { if(i%10==0)printf("\n"); printf("%d ",arry); fwrite(&arry,sizeof(int),1,fp3); } fclose(fp3); printf("\n"); printf( "选择排序法运行时间:" ); printf( "%f seconds\n", time ); return time;} int kuaisu(int*c,int low,int high)//快速排序确定枢轴位置{ int temp,t; temp=c; while(low《high) { while(low《high&&c》=temp)high--; { t=c=t; } while(low《high&&c《=temp)low++; { t=c=t; } } return low;}void kuaisu1(int *b,int low,int high)//快速排序{ int t; if(low《high) { t=kuaisu(b,low,high); kuaisu1(b,low,t-1); kuaisu1(b,t+1,high); } }double xier(int *x, int n)//希尔排序{ clock_t start, finish; double time; /* 测量一个事件持续的时间*/ start = clock(); FILE *fp5; int h, j, k, t,i; for(h=n/2; h》0; h=h/2) { for (j=h; j《n; j++) { t = *(x+j); for(k=j-h; (k》=0 && t《*(x+k)); k-=h) { *(x+k+h) = *(x+k); } *(x+k+h) = t; } } finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; fp5=fopen("e","wb"); printf("经排序后序列为:\n"); for(i=0;i《n;i++) { if(i%10==0) printf("\n"); printf("%d ",x); fwrite(&x,sizeof(int),1,fp5); }fclose(fp5); printf("\n"); printf( "希尔排序法运行时间:" ); printf( "%f seconds\n", time ); return time;}void main(void){ FILE *fp4; int i,a; double min,b; char ch,ch1; for(i=0;i《30;i++) printf("*"); printf("欢迎进入综合排序系统"); for(i=0;i《30;i++) printf("*"); printf("\n"); srand((unsigned)time(NULL));//获取随机数 printf("获得%d个随机数:\n",N); for(i=0;i《N;i++) a=(rand()%12767+20000)%32767; for(i=0;i《N;i++)//输出随机数 { if(i%10==0)printf("\n"); printf("%d ",a); } printf("\n"); do { for(i=0;i《80;i++) printf("="); printf("\t1.冒泡排序\n"); printf("\t2.选择排序\n"); printf("\t3.插入排序\n"); printf("\t4.快速排序\n"); printf("\t5.希尔排序\n"); printf("\t6.方法比较\n"); printf("\t7.退出\n"); printf("\t请选择排序方法:\n"); do { ch=getchar(); }while(ch!=’1’&&ch!=’2’&&ch!=’3’&&ch!=’4’&&ch!=’5’&&ch!=’6’&&ch!=’7’); switch(ch) { case’1’: b=maopao(a,N);break; case’2’: b=xuanze(a,N);break; case’3’: b=charru(a,N);break; case’4’: clock_t start, finish; //测量一个事件持续的时间 double time; start = clock(); kuaisu1(a,0,N-1); finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; fp4=fopen("d","wb"); printf("经排序后序列为:\n"); for(i=0;i《N;i++) { if(i%10==0)printf("\n"); printf("%d ",a); fwrite(&a,sizeof(int),1,fp4); }fclose(fp4); printf("\n"); finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; b=time; printf( "快速排序法运行时间:" ); printf( "%f seconds\n", time ); break; case’5’: b=xier(a,N);break; case’6’: min=b; for(i=0;i《5;i++) { if(min》b) min=b; } ch1=’a’; i=0; while(i《5) { if(min》=b) switch(ch1) { case ’a’:printf("较好的算法是冒泡排序\n");break; case ’b’:printf("较好的算法是选择排序\n");break; case ’c’:printf("较好的算法是插入排序\n");break; case ’d’:printf("较好的算法是快速排序\n");break; case ’e’:printf("较好的算法是希尔排序\n");break; } ch1++;i++; }break; case’7’: { printf("\n"); for(i=0;i《37;i++) printf("*"); printf("谢谢 !"); for(i=0;i《37;i++) printf("*"); exit(0); } default:exit(1); } }while(1);}
求一份数据结构课程设计报告
//class CNode.h#ifndef __CNODE_H__#define __CNODE_H__#include 《iostream》using namespace std;struct stData //出生年月结构{ int m_nYear; int m_nMonth; int m_nDay;};struct stResult //五门课成绩结构{ double m_dSubject_1; //自己改成绩的名称 double m_dSubject_2; double m_dSubject_3; double m_dSubject_4; double m_dSubject_5;};struct stStudent //声明学生信息的结构{ string m_strNumber; //学生学号 string m_strName; //姓名 char m_chSex; //性别 struct stData m_stData; //出生年月 string m_strAppearance; //政治面貌 struct stResult m_stResult; //五门课成绩};typedef class CNode{ private: struct stStudent m_stStudent; CNode* m_Next; public: CNode(); //构造函数 ~CNode(); //析构函数 void SetNodeData(); //设置结点内容的函数成员 stStudent GetNodeData(); //获取结点内容的函数成员 void SetNodeNext(CNode* _Next); //设置结点Next指针的函数成员 void ShowNodeData(); //输出结点内容的函数成员 CNode* GetNodeNext(); //获取结点Next指针的函数成员}LinkNode;#endif//class CLinkList#ifndef __CLINKLIST_H__#define __CLINKLIST_H__ #include "CNode.h"typedef class CLinkList{ private: LinkNode* m_Head; //链表的头指针 LinkNode m_Node; //链表的头结点 public: CLinkList(); //构造函数 ~CLinkList(); //析构函数 void CreateList(); //初始化链表的函数成员 LinkNode* GetListNode(int _nIndex); //按位置查找指定位结点的成员函数 void InsertList(int _nIndex); //插入结点的成员函数 void DeleteList(int _nIndex); //删除某一结点的成员函数 LinkNode* GetHeadList(); //获取头指针的成员函数 void SetListData(int _nIndex); //设置链表中某一结点的值的成员函数 void ShowListData(int _nIndex); //这个是现实链表中某一结点值的函数成员 void DestroyList(int _nIndex); //销毁某一位置以后链表的成员函数 void ShowList(); //显示链表的成员函数}LinkList;#endif//class CLinkList#include "CLinkList.h"#include "CNode.h"CLinkList::CLinkList() { cout 《《 "这个是构造函数"《《 endl; m_Head = &m_Node; //链表的头指针指向头结点 m_Node.SetNodeNext(NULL); //将头结点的Next指针设置为NULL;}CLinkList::~CLinkList(){ cout 《《 "这个是析构函数" 《《 endl;}void CLinkList::CreateList() //以向后追加的方式创建一个链表,输入0退出{ int nTemp = 0; //定义一个临时变量用于标志程序结束 cout 《《 "欢迎来创建链表 !" 《《 endl; CNode * pTemp = NULL; //定义一个临时结点指针,用来增加新结点用 CNode * pNode = m_Head; //定义一个标记指针,首先叫其指向头结点 while(1) { pTemp = new LinkNode; cout 《《 "请输入下一个结点的内容!" 《《 endl; pTemp-》SetNodeData(); //设置链表中结点的内容 cout 《《 "如果想继续输入下一个学生的信息请输入 1,否则输入 0" 《《 endl; cin 》》 nTemp; if (’0’ == nTemp) { break; } pNode-》SetNodeNext(pTemp); //让链尾的Next指向新建的结点 pNode = pTemp; //将结尾元素向后移 } cout 《《 "创建链表结束" 《《 endl;}LinkNode* CLinkList::GetListNode(int _nIndex){ cout 《《 "这个是按位置查找指定位结点的成员函数" 《《 endl; LinkNode* pNode = m_Head-》GetNodeNext(); //定义一个临时的结点指针,初始化指向头结点 int Temp = 0; //定义一个临时的变量,用来标记已检查结点的个数的 if(-1 == _nIndex) //返回头结点(即头指针) { return m_Head; } if(_nIndex 《 -1) //_nIndex控制条件 { cout 《《 "您输入的是错误的位置!" 《《 endl; return 0; } while(pNode != NULL) { if(_nIndex == Temp) { return pNode; } pNode = pNode-》GetNodeNext(); //临时结点向后移动 ++Temp; } return pNode; //没找到结点就返回NULL}void CLinkList::ShowListData(int _nIndex);void CLinkList::InsertList(int _nIndex) //插入结点的函数成员{ cout 《《 "这个是插入结点的成员函数" 《《 endl; LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要插入位置的前一指针 LinkNode* pTemp = new CNode; //定义一个临时结点指针,用来增加新结点用 pTemp-》SetNodeData(); //设置插入结点的内容 pTemp-》SetNodeNext(pNode-》GetNodeNext()); pNode-》SetNodeNext(pTemp); }void CLinkList::DeleteList(int _nIndex){ cout 《《 "这个是删除某一结点的成员函数" 《《 endl; LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要删除位置的前一指针 LinkNode* pTemp = NULL; //定义一个临时结点指针,用来指向要删除的结点 pTemp =pNode-》GetNodeNext(); //把pTemp指向要删除的结点 pNode-》SetNodeNext(pTemp-》GetNodeNext()); //把pNode指向要删除的结点的后一个结点 delete pTemp; //删除结点 pTemp = NULL; }LinkNode* CLinkList::GetHeadList(){ cout 《《 "这个是获取头指针的成员函数" 《《 endl; return m_Head;}void CLinkList::SetListData(int _nIndex){ cout 《《 "这个是设置链表中某一结点的值的成员函数" 《《 endl; CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要修改内容位置的结点 pNode-》SetNodeData(); //修改内容}void CLinkList::ShowListData(int _nIndex){ cout 《《 "这个是显示链表中某一结点值的成员函数" 《《 endl; CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要获取内容位置的结点 pNode-》ShowNodeData(); //返回想要得到位置的结点内容}void CLinkList::DestroyList(int _nIndex) { cout 《《 "这个是销毁某一位置以后链表的成员函数" 《《 endl; LinkNode* pTemp = GetListNode(_nIndex - 1); //定义一个结点指针,指向要销毁位置的前一结点 LinkNode* pNode = pTemp-》GetNodeNext(); //定义一个结点指针,指向要销毁位置的结点 while(pTemp-》GetNodeNext() != NULL) //销毁动作的结束条件或初始条件 { pTemp-》SetNodeNext(pNode-》GetNodeNext()); //把需要销毁的位置的前结点的Next指向销毁位置的下一个结点 delete pNode; //销毁结点 pNode = pTemp-》GetNodeNext(); //把pNode重新指向要销毁位置的结点 }} void CLinkList::ShowList(){ cout 《《 "这个是显示链表的成员函数" 《《 endl; int nTemp = 0; //定义一个临时的整形变量用来控制输入的个数 LinkNode* pTemp = m_Head-》GetNodeNext(); //定义一个结点类指针,指向第0位的结点 if(NULL == pTemp) { cout 《《 "这是个空链" 《《 endl; } while(pTemp != NULL) { pTemp-》ShowNodeData(); ++nTemp; if(0 == nTemp % 5 && nTemp != 0) //控制每行只能输出5个结点的内容 { cout 《《 endl; } pTemp = pTemp-》GetNodeNext(); }}//class CNode#include "CNode.h"CNode::CNode() //构造函数 { //m_stStudent = {0}; m_Next = NULL;}CNode::~CNode() //析构函数{}void CNode::SetNodeData(){ char* pNumber = new char; //用来接收字符串的临时变量 char* pName = new char; char* pAppearance = new char; cout 《《 "学生学号: " 《《 endl; cin 》》 pNumber; m_stStudent.m_strNumber = pNumber; cout 《《 "姓名: " 《《 endl; cin 》》 pName; m_stStudent.m_strName = pName; cout 《《 "性别: " 《《 endl; cin 》》 m_stStudent.m_chSex; cout 《《 "出生年月: " 《《 endl; cout 《《 "m_stData.m_nYear" 《《 endl; cin 》》 m_stStudent.m_stData.m_nYear; cout 《《 "m_stData.m_nMonth" 《《 endl; cin 》》 m_stStudent.m_stData.m_nMonth; cout 《《 "m_stData.m_nDay" 《《 endl; cin 》》 m_stStudent.m_stData.m_nDay; cout 《《 "政治面貌: " 《《 endl; cin 》》 pAppearance; m_stStudent.m_strAppearance = pAppearance; cout 《《 "五门课成绩: " 《《 endl; cout 《《 "m_dSubject_1: " 《《 endl; cin 》》 m_stStudent.m_stResult.m_dSubject_1; cout 《《 "m_dSubject_2: " 《《 endl; cin 》》 m_stStudent.m_stResult.m_dSubject_2; cout 《《 "m_dSubject_3: " 《《 endl; cin 》》 m_stStudent.m_stResult.m_dSubject_3; cout 《《 "m_dSubject_4: " 《《 endl; cin 》》 m_stStudent.m_stResult.m_dSubject_4; cout 《《 "m_dSubject_5: " 《《 endl; cin 》》 m_stStudent.m_stResult.m_dSubject_5; delete pNumber; //释放内存 pNumber = NULL; //指针置空 delete pName; //释放内存 pName = NULL; delete pAppearance; //释放内存 pAppearance = NULL; }stStudent CNode::GetNodeData() //返回结点内容(即学生信息){ return m_stStudent;}void CNode::SetNodeNext(CNode* _Next){ m_Next = _Next;}void CNode::ShowNodeData(){ const char* pNumber = m_stStudent.m_strNumber.c_str(); //用来接收字符串的临时变量 const char* pName = m_stStudent.m_strNumber.c_str(); const char* pAppearance = m_stStudent.m_strAppearance.c_str(); cout 《《 "学生学号: " 《《 pNumber 《《 ’\t’ 《《 "姓名: " 《《 pName 《《 ’\t’ 《《 "性别: " 《《 m_stStudent.m_chSex; cout 《《 "出生年月: " 《《 m_stStudent.m_stData.m_nYear 《《 ’,’ 《《 m_stStudent.m_stData.m_nMonth 《《 ’,’ 《《 m_stStudent.m_stData.m_nDay; cout 《《 "政治面貌: " 《《 pAppearance 《《 "五门课成绩: " 《《 endl; cout 《《 "m_dSubject_1: "《《 m_stStudent.m_stResult.m_dSubject_1《《 endl; cout 《《 "m_dSubject_2: "《《 m_stStudent.m_stResult.m_dSubject_2《《 endl; cout 《《 "m_dSubject_3: "《《 m_stStudent.m_stResult.m_dSubject_3《《 endl; cout 《《 "m_dSubject_4: "《《 m_stStudent.m_stResult.m_dSubject_4《《 endl; cout 《《 "m_dSubject_5: "《《 m_stStudent.m_stResult.m_dSubject_5《《 endl;}CNode* CNode::GetNodeNext(){ return m_Next;}#include "CLinkList.h"#include "CNode.h"void Text(); //测试函数声明int main(){ cout 《《 "这是mian函数" 《《 endl; Text(); return 0;}void Text(){ cout 《《 "这个是测试函数" 《《 endl; LinkList* pList = new LinkList; //创建一个内存链表对象 cout 《《 "------------------CreateList-----------------------------" 《《 endl; pList-》CreateList(); //初始化链表的函数成员 pList-》ShowList(); cout 《《 endl; cout 《《 "------------------GetListNode-----------------------------" 《《 endl; LinkNode* pNode = NULL; //定义一个临时的结点类指针用于检测查找函数成员 pNode = pList-》GetListNode(3); //按位置查找指定位结点的成员函数的测试 if(pNode) { cout 《《 "用按位置查找的方法找到了指定位结点" 《《 endl; } else { cout 《《 "对不起,用按位置查找的方没有找到指定位结点" 《《 endl; } cout 《《 endl; cout 《《 "------------------InsertList-----------------------------" 《《 endl; pList-》InsertList(0); //插入结点的成员函数的测试 pList-》ShowList(); cout 《《 endl; cout 《《 "------------------DeleteList-----------------------------" 《《 endl; pList-》DeleteList(0); //删除某一结点的成员函数的测试 pList-》ShowList(); cout 《《 endl; cout 《《 "------------------GetHeadList-----------------------------" 《《 endl; pNode = NULL; pNode = pList-》GetHeadList(); //获取头指针的成员函数的测试 if(pNode) { cout 《《 "已经返回了头指针" 《《 endl; } else { cout 《《 "对不起,头指针为空" 《《 endl; } cout 《《 endl; cout 《《 "------------------GetHeadList-----------------------------" 《《 endl; pList-》SetListData(3); //设置链表中某一结点的值的成员函数的测试 pList-》ShowList(); cout 《《 endl; cout 《《 "------------------GetListData-----------------------------" 《《 endl; cout 《《 "pList-》ShowListData(3) ="; pList-》ShowListData(3); //获取链中某一结点值的成员函数的测试 cout 《《 endl; cout 《《 "------------------DestroyList(3)-----------------------------" 《《 endl; pList-》DestroyList(3); //销毁第3位置以后链表的成员函数的测试 pList-》ShowList(); cout 《《 endl; cout 《《 "------------------DestroyList(0)-----------------------------" 《《 endl; pList-》DestroyList(0); //销毁第0位置以后链表的成员函数的测试 pList-》ShowList(); cout 《《 endl; delete pList; //释放内存 pList = NULL; //指针置空}你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言
数学课程设计心得体会
当我们积累了新的体会时,就十分有必须要写一篇心得体会,这样可以不断更新自己的想法。应该怎么写数学课程设计心得才合适呢?以下小编在这给大家整理了一些数学课程设计心得体会,希望对大家有帮助!
static/uploads/yc/xinde/img011.jpg"width="484"height="300"/》
#数学课程设计心得体会(篇1)#
本次课程设计,使我对《数据结构》这门课程有了更深入的理解。《数据结构》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
我的课程设计题目是线索二叉树的运算。刚开始做这个程序的时候,感到完全无从下手,甚至让我觉得完成这次程序设计根本就是不可能的,于是开始查阅各种资料以及参考文献,之后便开始着手写程序,写完运行时有很多问题。特别是实现线索二叉树的删除运算时很多情况没有考虑周全,经常运行出现错误,但通过同学间的帮助最终基本解决问题。
在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的`能力。并对VC有了更深入的了解。《数据结构》是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。上机实习一方面能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的;另一方面,上机实习是对学生软件设计的综合能力的训练,包括问题分析,总体结构设计,程序设计基本技能和技巧的训练。此外,还有更重要的一点是:机器是比任何教师更严厉的检查者。因此,在“数据结构”的学习过程中,必须严格按照老师的要求,主动地、积极地、认真地做好每一个实验,以不断提高自己的编程能力与专业素质。
通过这段时间的课程设计,我认识到数据结构是一门比较难的课程。需要多花时间上机练习。这次的程序训练培养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能,提高了我适应实际,实践编程的能力。
总的来说,这次课程设计让我获益匪浅,对数据结构也有了进一步的理解和认识。
#数学课程设计心得体会(篇2)#
新的课程理念强调课程设计必须从学生的角度出发,要与学生的经历和经验相联系,所倡导的是以人为本,以学生为主体,关注学生终身可持续发展,注重各种能力和创新意识的培养。课堂教学应遵循教学规律,循序渐进。在本书中,编者能从理论上向读者阐述数学课堂教学中教育观,引领读者课堂教学设计方案,能从数学课堂中概念教学,命题教学,复习课等教学各环节使读者从中受益匪浅,在我十几年的教学生涯中,深深体会到一堂课的成败与课前的教学设计密不可分,如若你课前能做大量的准备工作,对课的重点,难点进行充分的研究,了解课的地位,对教学目标的制定,课堂中的板书,课堂语言严谨性准确性能作准备,大量公开课的成功应归功于课的设计。
数学课堂要生活化,新课程倡导用具体的,有趣的,富有挑战性的素材,引导学生投入数学活动,使课堂教学内容不再空洞,枯燥,拉近数学与现实的距离,让学生感受到数学来源于生活,产生乐于接受的心理。比如:在引入分数时,新课程利用比身高的`例子,利用名人姚明的身高作比较,让学生体会到数学的实用性;在讲角的比较大小时,利用学生熟悉的足球射门,来比较谁的进球机会大;在学圆的周长时,教学一开始设计了这样一个问题:两个遥控模型机器人分别沿两种不同形状的赛道进行比赛,一种是边长为4。7米的正方形,另一种是直径为6米的圆形,如果它们同时,同速从一点出发,那么谁先到达原出发点呢函数的引入时,每个人与他的生日的对应关系,衣服上的纽扣与纽门的对应关系。通过引入生活中的例子,可丰富学生的感性认识,激发学生的学习兴趣。
在数学教学设计中,我们总是在教导学生,学习科学知识的重要性,而形成科学态度,科学精神更重要。所谓科学态度,就是实事求是的态度,所谓科学精神,就是怀疑的,批判的,探索的,创造的精神。可是这种态度和精神不可能离开学科教学,离开学科发展的实际过程单独进行说教。它必须渗透在学科教学的过程之中。教学模式具有多样性,具体如何选择,要根据学生的知识水平,学习动机,学习能力,学习风格和学习态度来选择,也可根据教师的自身的不同的特长,数学素养和教学风格来选择。对数学教学内容有透彻的理解,又善于用生动的语言表达自己的思想,这样的教师运用讲练结合教学模式往往效果较好,而有的教师洞悉数学思想发展的脉络,又善于启发学生的思维,这样的教师运用引导发现模式就比较适当。如数学概念的教学中,有的用数学的式子来定义,如正比例函数,反比例函数,一次函数,二次函数等;有的通过例举一些式子归纳它们的共性用文字来下定义,如方程等;
数学课堂设计要发挥学生的主体性,在我认为,教师在课堂中,应该更多扮演一种引导者和激发者的角色。激发了学生求知欲望后,教师就应及时地将新课的内容有计划,有层次,由浅入深地展示给学生,并让学生参与新知识建立的过程,促使学生对新知识加以理解和掌握。同时,在教学过程中要有意识地结合教学内容向学生显示"怎样思考"的信息,提高思维能力。课堂教学结构虽有其比较稳定的活动程序,但决不是固定的,要根据不同的教学任务,教学内容和本班学生的实际情况加以调整,并有机地结合起来。优化教学过程,就要全面考虑教学过程的各因素,使每节课安排的程序成为一个科学有序的组合,每一个环节都成为这个整体的有机组成部分。这些问题是新,旧知识的结合点,教师应帮助学生理解新知,根据学生已有的知识,提出最近发展区之间的问题,以实现知识迁移。教师要调动学生学习积极性,引导学生打开思路去想问题。本阶段,如在几何直观教学中应引导学生通过动手,动口,动脑加以分析解答,调动多种感官同时参与学习过程,参与探索知识的过程。根据学生的质疑,教师可以把握大量的反馈信息,从而有针对性地进行疏导,释疑,解惑,提高课堂教学的效率。教师尤其要鼓励低差学生质疑,耐心地给予解答。
《数学教学设计》能从数学教学的各个环节,使我们体会到数学设计中应考虑各要素,根据课的内容,学生做好课前设计,为课堂教学提供充分素材,达到课堂教学的目的。
#数学课程设计心得体会(篇3)#
通过网络学习,使我对《小学数学新课程标准》的内容有了深层次的理解,我感受到这次课改绝对不仅仅是改变一下教材而已,而是学生学习方式的彻底改革,更是我们教师教学方法上的重大改革。本课程重点学习小学数学新课程内容分析与教学设计。内容包括:新课程基本理念;数与代数教学研究与设计;空间与图形教学研究与设计;统计与概率教学研究与设计;实践与综合运用教学研究与设计。在研究“小学数学课程基本理念”的基础上,围绕小学数学课程的四个方面“数与代数”、“空间与图形”、“统计与概率”、“实践与综合运用”展开,从内容分析和教学设计两个维度对每部分内容进行探讨。下面我就谈一下学习后的感受:
一、数学课程要促进每一个学生的发展
义务教育阶段的数学课程要体现基础性、普及性和发展性。数学是义务教育的重要组成部分,义务教育是打基础的教育,是每一个儿童接受正规教育的开始。小学到初中是给学生打基础的重要阶段,这一阶段的教育应该体现基础性。基础性表现在要为学生的成长为学生将来走向社会奠定数学基础。普及性是从义务教育的任务考虑的。随着普及义务教育的提出和逐步实现,中小学各学科的教学目标与内容就应当与之相适应。数学教育要面向每一个学生,就是从普及教育的角度,为实现普及义务教育的目标而设计和实施的。发展性是关注每一个学生的发展,使不同智力水平的学生都有发展的机会,学生的智力水平都得到提高。发展性可以从两个方面来理解,一方面是强调每一个学生的发展,每个学生数学素养的发展;另一方面也应关注学生个体的发展,注重学生个体发展的差异,不是一刀切,不是要求儿童都达到同一水平,应该给那些能够发展和可以发展的学生留有更多的空间,这种发展是学生智慧和潜能的发展,使每一个学生可以按照自己的需要,按照自己的潜能来发展。
二、要把激发学生的学习积极性贯彻于数学教学始终
教与学是师生双边的关系,教要得法,学要主动。主动来自兴趣,兴趣需要培养。同样的教材,讲得生动,妙趣横生,学生百听不厌,回味无穷;讲得教条,枯燥无味,学生呆若木头,事倍功半。为活跃课堂气氛,调动学生的学习积极性,提高讲课艺术,增强教学效果,具体做法如下:
1、注意教态、语言力求生动
在课堂上要注意态度,并通过多种方式,特别是通过幽默的方式,生动的语言,努力使学生的学习兴趣倍增,情绪高涨,进入一种较高的学习意境。
2、注意提问方法,激发学生积极思考
教师要使学生通过一系列小问题的思考并逐一解决,增强学习的信心。注意提问方法和技巧,可以较好地发挥教师的主导作用和学生的主体作用,调动学生参与课堂教学的积极性,提高了教学效果。
3、使数学课堂教学有趣起来
初中数学的教材改革之一是在课文中穿插了"想一想"与"谈一谈"等栏目,知识性和趣味性并重。穿插于课堂的趣味教学,不仅能满足学生的求知欲,还能提高学生学习的主动性和积极性。
三、向学生提供丰富多样的数学学习内容
《标准》中提出向学生提供现实的、有趣的、富有挑战性的数学学习内容,这些内容成为学生主动地从事观察、实验、猜测、验证、推理与交流等数学活动的主要素材。内容的呈现以“问题情境——建立模型——解释、应用与拓展”的基本模式展开。
本次课程改革中,数学内容的领域和范围发生了很大变化。将数学学习内容分为数与代数、空间与图形、统计与概率、实践与综合运用4个领域。这与以往相比发生了很大变化。增加了实践与综合运用这个领域,目的在于使学生更多地了解数学的现实意义,培养学生综合运用数学知识解决问题的能力。数与代数、空间与图形、统计与概率的内容也发生了很大变化。内容结构的变化,使小学数学更加丰富多样,使学生有机会接触更多的与现实相联系的问题。通过具有现实性的’问题,使学生体会数学在日常生活中的意义,能运用数学表示事物,进行交流。另一个问题是内容的呈现方式,或者说教材的呈现方式。
《标准》提倡教材的多样性、趣味性,生活化和情境性,这是符合学生年龄特点和认识规律的。要让大多数学生喜欢数学,对数学学习感兴趣,首先应当以活泼的形式,学生喜欢的方式展现教材的内容。抽象的内容更需要灵活的形式,更需要以行动有趣的事例,展示所学的内容。教材呈现方式的改变表现在两个方面。一是外在的形式更加灵活多样,二是为学生留有充分的活动、想象与交流的空间,三是适当采用故事的方式,表现问题的情境。
四、面向全体,重视非智力因素的培养
智力因素与非智力因素在一定条件下是相互促进的。同等智力水平的学生,学习成绩有时差距很大,究其主要原因,是非智力因素妨碍了他智力的有效发展,如学习积极性差,自我约束能力差,等等。因此培养学生的非智力因素,能有效提高教学质量,特别是对课堂教学有着深远的意义。
特别是对于我们小学生,主要从非智力因素方面多加培养,本着"爱"的原则,抓住各自的性格特点,尽心安抚,多关心和爱护,多给予鼓励。在学习上给予耐心辅导,取得点滴进步就要充分肯定,帮助他们树立信心,逐步培养学生的学习兴趣。
对小学数学新课程内容分析与教学设计内容的学习后,今后我要在备课时抓住数学的本质,思考如何设计有效的教学活动。在教学设计时,多问几个为什么,多研读教材,了解教材间的联系,努力站在一定的高度,使教学设计有数学底蕴。
#数学课程设计心得体会(篇4)#
一、加强理论学习,深入认识课题研究的内涵
1、从新课程课堂教学实施的现状来看,存在着新课程理念和教学行为相脱节、课程改革与抓教学质量“两张皮”的现象。这已成为导致学生学业负担过重,教师压力过大、教育教学效益不高,课程改革难以深化的瓶颈。究其原因,固然是多层面和复杂的,但其中一个十分重要的因素是;在新课程理念向教学实践转化过程中,由于缺乏在具体教学技术层面的帮助指导,致使新课程教学目标难以落实,教学效益和质量难以提升。为此,研究和探索课堂教学设计是推进和深化新课程教学改革的重要内容和关键问题。
2、提高小学数学教师教学专业素养的需要。
新课程实施需要教师从教材的“忠实执行者”转变为课程教学的“创新设计者”。因此,创造性设计小学数学课堂教学的能力已成为小学数学教师专业素养的重要方面。在新课程教学实践中,广大小学数学教师缺乏教学设计方面的培训指导。因而,多数小学数学教师的课堂教学设计仍停留在传统意义上“学科本位”的教“课本知识”的设计层面,缺乏对学习主体经验和需要,学习者建构过程。课程资源、学习情境、学习方式、教师角色、学习群体等多种因素的综合考虑,因而,在课堂教学实践中三维教学目标难以整合,教学质量和效率难以提高,课程资源不能有效利用,学生学习主动性未能有效激发。为此,本课题研究也是帮助小学数学教师提高教学专业素养和教学质量、效率的需要。
3、有效教学设计是当前教学理论和实践共同关注的领域,也是一门新兴的具有技术特性的科学。所谓教学设计,是在一定的教学理论指导下,根据课程标准和教材的要求,基于学生的学习特点与需求,对教学活动的目标内容、组织形式、教学方式、学习情境、评价指导,及整个教学过程所作的整体系统化策划和具体安排,以此提高课堂教学质量和效益,实现在可能条件下的教学过程最优化。
二、明确研究目标:
1、探索并形成小学数学新课程背景下小学数学课堂教学设计的理念和应用性理论,形成若干设计模式及具体操作方法,切实提出教师课堂教学设计能力。
2、揭示新课程背景下小学数学教学活动过程及诸因素与学生学科素养形成之间具体的关系和规律,以丰富对课堂教学设计的认识。
3、形成若干系列化的小学数学课堂教学设计案例及指导意见,作为教师学习和进行课堂教学设计的参照。
三、在实际教学中进行研究
1、抓住重点——准确把握教学目标
有效教学设计是实现教学目标达成的前提,教师对新课程教学目标及课堂教学目标把握得越好,教学就越有效。所以,我认为准确确定一节数学课的教学目标并加以完成是一节课有效的第一标准。教师在教学中要体现有效性,首先在这节课中设计知识与技能,过程与方法,情感、态度、价值观三维目标是否准确。其次,设计的教学目标是否关注了学生。教学目标的的设定一定要符合了学生的认知特点,你只有设计了关注学生的目标而不是关注知识的目标,才能有效。
下面是我在执教《抛硬币》一课时对教学目标的把握情况:
抛硬币这节课是学生第一次在课堂学习中接触不确定现象,这对学生来说是一种全新的认识,必须让学生参与到活动中亲身感受,获得直观的体验。
我确定的教学目标是这样的:
(1)、在简单的猜测活动中感受不确定现象,初步体验有些事情的发生是不确定的,有些是确定的。
(2)、会用“一定”“可能”或“不可能”等词汇描述生活中一些事件发生的可能性。
这就是说,我们在设计教学目标时应做到:
(1)、了解学生已有的知识基础和生活经验,确定切合学生实际的教学目标。(课前调研)
(2)、数学学习活动必须建立在学生的认知发展水平和已有经验基础上。(抓准切入点)
老师开课设计了采用抛硬币的游戏,老师先让学生在自主地玩游戏中去发现(硬币可能正面朝上,也可能反面朝上),初步感知事件发生的“可能性”,体验数学就在我们身边。同时也给学生营造一个宽松活泼的课堂气氛,学生从抛硬币活动中不知不觉地对事件发生的可能性进行预测,很自然引入新课。
本节课,学生在“抛硬币一摸球一装圆片一抽奖”等一系列的游戏活动中,自主参与知识的发生、发展、形成的过程,“三维目标”的达成度较好。真正体现了“良好的开端是成功的一半。”
2、创设良好的数学学习情境——激发学生产生学习的需要
课改以来,“创设情境”成为小学数学课堂中一道亮丽的风景线。一些有趣新颖且富有思考价值、具有挑战性的课堂学习情境令教师们眼界大开。但是如何使设计的情境具有有效性,这是我们课题研究中的一个重要问题。
《抛硬币》一课从学生的生活经验和已有的知识出发,创设了生动有趣的情境,符合低年级学生的心理特点和教材实际,让学生在猜一猜、抛以抛、摸一摸、比一比、说一说等充满童趣的情境中玩数学、学数学,学生通过活动,发现和掌握有关“可能性”的知识,初步学会从数学的角度观察事物、思考问题,激发学生对数学的兴趣。
装圆片游戏更具开放性、挑战性、创造性。在探知的过程中让学生展开想象去猜想、去操作、去探索、去讨论、去判断、去验证结论,解决问题。在装一袋摸到的不可能是绿圆片和摸到的可能是绿圆片这两个活动时,学生的答案是多种多样的。开放的探索过程给学生提供了更多的参与机会和成功的机会,激发了学生学习的积极性,让每个学生在主动探索中得到发展。实现了人人学有价值的数学,人人都获得必需的数学。
3、以学定教——选用合适的教学方式
备课时,我们经常绞尽脑汁考虑怎样设计情景,怎样设计问题,采用什么样的学习方式等问题,而容易忽视学生本身,所谓的`学情分析也经常是照本宣科,没有进行真正的调查了解。在我执教的《可能性》一课的活动探究环节中,通过摸球让学生初步体验“一定”、“可能”和“不可能”。开始教学时,考虑到节省时间,提高效率,我想通过对比学习让学生在一次活动中就能体验确定现象和不确定现象,于是把六个小组的盒子里的小球分成三种情况(全是黄色球、有白色球和黄色球、有白色球蓝色球和黄色球),让学生以小组为单位开展活动(从盒子中摸球并记录摸出的小球的颜色),然后每个小组汇报活动情况,让多种情形同时展示出来(摸出的全是黄色小球;摸出的有白、黄两种颜色的小球;有白、黄、蓝三种颜色的小球),可是当每个小组在汇报时其他小组的同学根本没兴趣听,接下来的验证猜测引出“一定”、“可能”、“不可能”的过程中学生的学习热情也不高,只有少数学生在发表意见。
第一次试教,没有达到我预想的效果。课后我认真的反思了出现这种状况的原因:三年级的学生对于简单事件发生的规律性的发现仍然来自直观的实验,在一次活动中同时展示三种摸球的情况,对于他们有一定难度,因为每个小组只验证了本组的发现,对于其他小组的结论没有经过验证所以很茫然。第二次试教,我让学生经过两次活动,第一次:每个小组的盒子里都装的是黄色球,学生通过摸球活动体验了事件发生或不发生的可能性,理解了“一定”、“不可能”;第二次:每个小组的盒子里都装着两个黄色球、两个白色球,通过小组在一起猜测、验证,体验了事件发生的不确定性,理解了“可能”,两次活动层次清楚,学生建构知识的思路清晰。
几次试教让我深深体会到,学生才是课堂的主人,只有真正的了解学生,才能准确把握教学定位,进行教学设计。所以说,教师要充分的了解学生,以学定教,才能真正促进学生主动发展,进而教学相长。
本学期的课题研究才刚刚起步,我相信在今后的教学中,我会在研后教,在教中研,使课题研究真正起到实效性。
#数学课程设计心得体会(篇5)#
我们五年级组开展了《小学数学生态课堂环境开发的研究》这个课题,收获不小,本人心得如下:
首先,我很喜欢我们的组长赵老师组织的这个团队。赵老师博学、严谨、风趣、对我们又和蔼可亲,没有一点架子,总是对老师充满了肯定与鼓励。课题组的其他老师们,个个都很能干,上课、评课、做调查、写文章……样样都拿手。而自己却有那么多的不足。但是,与压力相比,有机会向赵老师及其它的优秀老师学习,我更多的是感到荣幸。
其次,我喜欢我们的活动形式。每次活动,我们都是在课例的基础上进行专题研讨交流,然后赵老师对我们进行课题研究的理论辅导,不仅如此,还辅导我们写调查报告、写论文、写案例、赛课,以及参与数学生态课堂的活动。一年来,这些丰富多彩的活动形式,让我开了眼界,逐渐转变了教育理念。
再次,我喜欢《小学数学生态课堂环境开发的研究》这个课题。通过每次活动的学习,我逐渐认识到老师教育学生,就像栽培植物那样,是让植物自然生长,而不是像工业那样用模具去铸造成批的产品或机械零件。面对植物的种子,你只要准备好土壤、肥料,充分利用好阳光和水分,顺其内在的生长规律,相信种子内在的力量,它们一定能顺利的发芽、开花、结果!
在数学生态课堂上,不仅要强调知识与技能,更应关注学生的创新精神、情感意志及健全人格的培养;既要重视预设性目标,更要关注课堂生成,鼓励学生在学习过程中产生新的思路、方法,教师的任务不只是完成预设的方案,而应和学生一同探讨、分享、创造美好的生命经历。
在这一年中,在听课学习时,我也会不自觉地从生态课堂环境的角度去观察,观察课堂的物质环境,观察师生、生生的交流,观察师生的评价与情感交流。优质的课堂上师生间、生生间在如朋友般的合作与交流中,在经历了一次次思想的交锋、一次次原汁原味的争论后,留下的是一次次知识的收获、一次次能力的’提升、一次次情感的满足,学生始终保持着高昂的学习热情,感受着学习的快乐,品尝着成功的喜悦。
我特别喜欢这样的课堂氛围,哪怕作为听课教师,也吸引着我的思维快乐和积极地参与,我想,我正是身处于数学生态课堂环境之中,所以才有这样的感受,它的魅力影响的也许不止我一个人。在自己的课堂教学中,我也在尝试着营造生态的课堂环境,除了课件、板书设计等要简洁美观,我在传授新知的环节,结合学生的年龄特点,采用学生喜欢和容易接受的方式。课堂中保证小组合作交流的次数与时间,教师注意倾听、对学生的评价多了鼓励与期待等。自己的教学观念随着课题研究的参与逐渐发生着转变,但是转变的程度还算不上理想,在课堂上对学生的“引导”,如何发挥学生的主体性,以及和学生的情感交流等,一直是让自己困惑的地方。什么时候,自己的课堂环境也能“生态”呢?
是呀,教育是“农业”,一份耕耘,一份收获。只有自己在教学与研究的领域真正地投入,学生才会送给自己一个满意的课堂。
##
数据结构的课程设计报告要怎么写啊
晕/////真麻烦。。。。。数据结构实习报告规范 实习报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容: 1、需求分析 以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定: (1)输入的形式和输入值的范围; (2)输出的形式; (3)程序所能达到的功能; (4)测试数据:包括正确地输入及其输出结果和含有错误的输入及其输出结果。 2、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 3、详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。 4、调试分析 内容包括: (1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析; (2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进思想; (3)经验和体会等。 5、用户使用说明 说明如何使用你编写的程序,详细列出每一步操作步骤。 6、测试结果 列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。 7、附录 题 目 : 约瑟夫-实习报告 尺 寸 : 约瑟夫-实习报告.doc 目 录 : 一、需求分析 二、概要设计 三、程序具体设计及函数调用关系 四、调试分析 五、测试结果 原 文 : 实习报告 题目:约瑟夫(Joseph)问题的一种描述是:编号为1,2,......,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个开始重新从1报数,如此下去,直至年有人全部出列为止。试设计一个程序求出出列顺序。 班级: 姓名: 学号: 完成日期: 一、需求分析 1. 本演示程序中,利用单向循环链表存储结构存储约瑟夫环数据(即n个人的编号和密码)。 2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示"提示信息"之后,由用户在键盘上输入演示程序中需要输入的数据,运算结果显示在其后。 3. 程序执行的命令包括: 1)构造单向循环链表;2) 4. 测试数据 m 的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序为6,1,4,7,2,1,3,5)。 二、概要设计 1.单向循环链表的抽象数据类型定义为: ADT List{ 数据对象:D={ai | ai∈正整数,I=1,2,......,n,n≥0} 数据关系:R1={《 ai-1,ai 》 |,ai-1,ai∈D,I=1,2,......,n} 基本操作: Init List(&L) 操作结果:构造一个空的线性表L。 List Insert(&L,i,e) 初始条件:线性表L已存在,1≤i≤List Length(L)+1. 操作结果:在L中第i个位置之前插入新的数据无素e,L长度加1。 List Delete(&L,i,&e) 初始条件:线性表L存在非空,1≤i≤List Length(L). 操作结果:删除L的第i个元素,并用e返回其值,L长度减1。 2. 程序包含四个模块: 1)主程序模块:
更多文章:
酒厂实习报告(有哪位好心人能提供一份啤酒厂的实习报告,1万字)
2024年6月13日 16:00
30周年班会举行(2019小学禁毒教育主题班会活动总结3篇)
2024年5月12日 12:20
形势与政策以及当代世界经济与政治(考研政治考试分值及题型如何分布的)
2024年4月21日 02:50