c课程设计实训报告

2024-05-18

c课程设计实训报告(共8篇)

c课程设计实训报告 篇1

课程设计报告

课 程 名 称: 课程设计题目: 姓

名:

系:

业: 年

级: 学

号: 指 导 教 师:

C语言设计课程设计

万年历

信息工程系

计算机科学与技术

2012

2013 年月 12 日

任 务 书

实训的目标

1.进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。

2.针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

3.掌握C语言的编程技巧和上机调试程序的方法。4.掌握程序设计中的常用算法。

任务名称:万年历

项目功能:

1、能够显示当前月的日历以及标志出当前日期。

2、可以翻页、翻年。

3、可以输入年月日查看输入的年月的日历。

4、拥有记事本的功能。

教师签名:

目录

一、实训要求:................................................................................................................4 1.掌握时间函数的运用。................................................................................................4 2.掌握在WinTC下的动画制作。...................................................................................4 3.掌握bioskey和随机函数的运用。.............................................................................4 4.学会边界的判断。........................................................................................................4 5.掌握链表和文件。........................................................................................................4 6.综合所学内容编写一个程序。....................................................................................4

二、实训题目:.......................................................................................................................4 1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。4

2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。................4 3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。...................................................................................................................4 4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。...................................................................................................4 5.万年历............................................................................................................................4

三、实训过程:.......................................................................................................................4 1.时间函数:....................................................................................................................4 思考过程:.......................................................................................................................4 2.动画制作:....................................................................................................................4 思考过程:.......................................................................................................................4 障碍物(边界判断)...........................................................................................................4 思考过程...........................................................................................................................4 链表及文件:.......................................................................................................................4 思考过程...........................................................................................................................4 1.课程设计:万年历(带记事本功能)........................................................................5 ① 思考过程.....................................................................................................................5 ②源代码:.......................................................................................................................5 ③ 运行结果...................................................................................................................10

四、实训心得:.....................................................................................................................11

一、实训要求:

1.掌握时间函数的运用。

2.掌握在WinTC下的动画制作。3.掌握bioskey和随机函数的运用。4.学会边界的判断。5.掌握链表和文件。

6.综合所学内容编写一个程序。

二、实训题目:

1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。

3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。

4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。5.万年历

三、实训过程:

1.时间函数:

a)思考过程: 第一小题:先把系统当前时间用time函数转换成秒,再把输入的天数用24乘3600秒转换成秒,再与系统当前的秒数相加减,最后用ctime函数以字符串输出。第二小题:调用localtime取得系统当前年月日,然后把当前年月日提取出来用自己输入的年月日进行替换,用mktime把该年月日转换成秒,然后再把系统当前时间转换成秒,两个秒数进行相加减,把加减后的结果除以(24*3600)就得到相差的天数。第三小题和第二小题同理,输入两个日期、转换成秒以后相加减,最后除以(24*3600),就得到了两个日子相差的天数。

2.动画制作:

思考过程:做个循环,先用白色画一个圆,然后再用背景色画一个圆把当前圆覆盖,然后改变圆心,然后在画圆再覆盖~最后循环完之后,再用白色在用位置画个圆,因为不这样干的话,屏幕上就没有最好运行的位置了…第二小题同理~ 障碍物(边界判断);

① 思考过程:第一小题:判断出上下左右移动的时候能运动的范围(即控制外边界),然后再把范围内的某些不能通过的点的范围找出来,把他们分别排除在外,其他的坐标点就是可以任意移动的了,用bioskey计算按下的键的键值,然后判断可以移动之后,就在当前位置用背景色画一个方框,然后在移动之后的位置用白色画方框和障碍物等。第二小题划定一个匡,然后在匡的范围再把小球的半径减去,就是最后小球能运动的范围了…然后我设置的是让小球逆时针转动,然后用随机函数(系统时间做种子)来控制小球偏移的位置(或者说角度)。

链表及文件: ① 思考过程:第一个问题需要做的是结构体的认识并运,定义一个结构体,然后输入内容,然后再输出之前输入的内容。第二个问题则是创建链表并输出,将一个节点分成了两份,一边是指针域,一边是数据域,而指针域,指针域是下一节点的地址,我把头结点不存储数据,以方便之后两题的操作;第三个问题是删除链表,首先定义一个空的字符串,P,P1,P2,把头指针赋值给P,随后让用户输入要删去数据的名字,储存在字符串中,利用strcmp函数进行查找,随后如果第一个有数据的节点就符合要求,就把第二个节点的地址赋值给头节点的指针域后跳出循环,如果不是第一个节点符合要求就执行循环,让P赋值给P2,再把p->next赋值给P,这时P就到了下一个节点,再把p->next赋值给P1,也就是让P1得到第三个节点的首地址,P指向第二个节点,P2指向第一个节点,再进行循环,还是没找到就把P,P1,P2同时向后移动一个节点,如果找到了,就把P2的值赋给p->next,再把p->next的值赋给P,这时P就回到了上一个节点,再把p->next直接指向P1,就把中间的那个节点跳过,完成了删除功能;第四个问题则是增加节点,同样定义一个整型数据(即学号),P,P1,P2,P3,让用户键入想要添加的位置,之后让头指针赋值给P,p->next就赋值给P1,也就是让p1指向下一个节点,随后执行循环,让用户输入想学号和每个节点内的学号比较,如果找到了,就创建一个新的链表,并让P3指向它,让用户输入添加的信息,并且把p->next赋值给P2和P,这是P就到了下一个节点,再把p->next赋值给P1,也就是让P1指向第二个,P和P2都指向第一个,返回循环,如果符合要求就让p3->next指向P1,p2->next指向P3,这样,新的节点就进入了链表中,满足要求,最后在主函数中先输入数据,然后执行一个死循环,让用户选择功能,如果选择1就删除一个节点,选择2就增加一个节点,选择0就跳出循环结束程序。1.课程设计:万年历(带记事本功能)

① 思考过程:用localtime取得当前的系统时间,并且提取出年月日,然后把公元元年到今年一月一日前的天数计算出来,把这个天数除7取余为a,然后就获得了今年元旦前的一天是星期几。然后循环、从一月循环到当前月的上一月的最后一天,在这个循环中,循环一次a+1;当a=7时a置零,这个是用来计算当前月的上一月的最后一天是星期几,然后从新在次循环外另开一个循环来输出当前月的日历,并标记出今天用()标记,然后用bioskey读取用户按下的键值,并实现相应的翻页、标记特殊日子、记事本、从新输入年份等功能…

②源代码:

#include #include #include void f();

/*计算公元元年到某年某月的时间*/ void f1(long int t,long int n,int y,int r);

/*按日历模式输出要得到的那个月的日历*/ void w();

/*当前月的日历*/ void s();

/*输入某个年份和月份*/ void m(long int n,int y,int r);

/*记事本功能的函数*/

struct jishiben

/*记事本的结构体定义*/ {

long int a;

char name[100];};

void w()

/*输出当前月的日历*/ {

int y,r,a,b,c;

/*分别定义月份日期以及记录键值记录日期以及某月最后一天*/

long int n;

/*定义年份的变量*/

time_t timep;

struct tm *p;

time(&timep);

p=localtime(&timep);/*取得当地时间*/

printf(“%d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);/*输出当前的年月日*/

n=(1900+p->tm_year);

/*获得当前年份*/

y=(1+p->tm_mon);

/*获得当前月份*/

r=p->tm_mday;

/*获得当前的是几号*/

for(;;)

{

printf(“jin tian shi %d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);

/*输出当前年月日*/

f(n,y,r);

/*调用函数f获得某年某月的日历*/

printf(“an fang xiang jian ke tiao jie nian huo yuen”);

printf(“ru xu shu ru nian fen qing an hui ge jian n”);

printf(“ruo xu shi yong ji shi ben qing an hui chen”);

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)c=31;

if(y==4||y==6||y==9||y==11)c=30;

if(y==2&&(((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0))))c=29;

if(y==2&&((n%4!=0)||((n%100==0)&&(n%400!=0))))c=28;

/*判断月份及最后一天*/

a=bioskey(0);

/*取得按下的键值*/

if(a==18432)n=n-1;

/*按方向键向上则年份减一*/

if(a==20480)n=n+1;

/*按方向键向下则年份加一*/

if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}}

/*按方向键向左则月份减一*/

if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}}

/*按方向键向右则月份加一*/

if(a==18488){b=r;r=r-7;if(r<1)r=b;}

/*按小键盘8则上一周*/

if(a==19509){b=r;r=r+7;if(r>c)r=b;}

/*按小键盘5则下一周*/

if(a==19252){b=r;r=r-1;if(r<1)r=b;}

/*按小键盘4则上一日*/

if(a==19766){b=r;r=r+1;if(r>c)r=b;}

/*按小键盘则下一日*/

if(a==7181)m(n,y,r);

/*调用m函数 进行记事本功能*/

if(a==3592)s();

/*按回格键调用函数s 出入年份和月份*/

if(a==283)exit(0);

/*按esc键 直接退出程序*/

system(“CLS”);

} } void f(long n,int y,int r)

/*计算公元元年一月一号到某年的天数n y r为年月日*/ { long int i,t;

/*定义 i为循环变量

t为天*/ t=0;for(i=1;i

if(((i%4==0)&&(i%100!=0))||((i%100==0)&&(i%400==0)))/*判断闰年*/

t=t+366;

if((i%4!=0)||((i%100==0)&&(i%400!=0)))

/*判断平年*/

t=t+365;

if(t%7==0)

/*为防止数据过大 所以当t除7的余数是0的时候,让t=0;*/

t=0;} f1(t,n,y,r);

/*调用函数f输出某月的日历*/ }

void f1(long int t,long int n,int y,int r)

/*按日历模式输出某月的日历n y r为年月日*/ { int i,j,k,a;

/*a为记录星期的*/ a=t%7;for(i=1;i

/*循环到某月的前一个月*/

{

for(j=1;;j++)

{

a=a+1;

if(a==7)a=0;

if((i==1||i==3||i==5||i==7||i==8||i==10||i==12)&&j==31)break;

if((i==4||i==6||i==9||i==11)&&j==30)break;

if(i==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;

}

}

printf(“%ld nian %d yue ri lin”,n,y);printf(“ 1 n”);printf(“MON TUE WED THU FRI SAT SUNn”);for(k=0;k

”);for(j=1;;j++)

/*按日历模式输出某月*/ {

if(j==r)printf(“(%2d)”,j);

/*标记出当前的日子以及特殊的日期*/

else printf(“ %2d ”,j);

a=a+1;

if(a==7){a=0;printf(“n”);}

/*当循环一个星期以后,输出一个换行符*/

if((y==1||y==3||y==5||y==7||y==8||y==10||y==12)&&j==31)break;

if((y==4||y==6||y==9||y==11)&&j==30)break;

if(y==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;/*判断这个月的最后一天时跳出循环*/ } printf(“n”);}

void s()

/*输入年月的函数*/ { long int n;int y,r,a;for(;;){

printf(“qing shu ru nian he yuen”);

scanf(“%ld%d”,&n,&y);

if(y<12&&y>0)break;

/*判断输入的月份是否正确*/

else printf(“yue fen shu ru cuo wun”);} for(;;){ r=0;

/*这里不需要标记处某天,所以令r=0*/ f(n,y,r);

/*调用函数f来输出需要的某月的日历*/ printf(“an fang xiang jian ke tiao jie nian huo yuen”);printf(“ru xu shu ru nian fen qing an hui ge jian n”);printf(“an r jian fan hui dang qian yuen”);a=bioskey(0);if(a==18432)n=n-1;

/*按方向键上键 则年份减一*/ if(a==20480)n=n+1;

/*按方向键下键 则年份加一*/ if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}} /*按方向键左键月份减一*/ if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}} /*按方向键右键 月份加一*/ if(a==283)exit(0);

/*按esc退出程序*/ system(“CLS”);

/*清屏*/ if(a==4978)w();

/*按小写的r 则调用函数w显示当前月的日历*/ if(a==3592)s();

/*按回格键 调用它自己 从新输入一个年月*/ } } void m(long int n,int y,int r){

long int c;

/*c是用来计算结构体长度的*/

long int s=r+100*y+10000*n;

/*转换年月日 例如2013-7-10 就转换成20130710*/

struct jishiben kefu;

/*定义结构体*/

FILE *fp;

/*定义文件指针*/

c=sizeof(struct jishiben);/*计算结构体需要的长度*/

system(“CLS”);

/*清屏*/

if((fp=fopen(“qw2.txt”,“a+”))==NULL)

/*判断这个文件是否存在*/

{printf(“da kai shi bai qing xian chuang jian gai wen jiann”);exit(-1);}

else

{

for(;!feof(fp);){fread(&kefu,sizeof(kefu),1,fp);if(kefu.a==s)break;} /*筛选数据*/

if(kefu.a==s)

{

printf(“ri qi %ld---%s n”,kefu.a,kefu.name);}

/*若得到了需要的数据 则显示出来*/

else

/*否则录入数据*/

{

/*录入前先把文件关闭掉

然后再从新以追加方式打开*/

fclose(fp);

fp=fopen(“qw2.txt”,“a”);

fseek(fp,-c,2);

printf(“qing shu ru xing xi n”);

kefu.a=s;

/*令长整型变量等于s 方便筛选*/

printf(“qing shu ru nei rongn”);

printf(“%ldn”,kefu.a);

gets(kefu.name);

/*输入字符*/

fwrite(&kefu,c,1,fp);

/*把数据写入*/

}

getch();

fclose(fp);

/*关闭文件*/

}

w();

/*返回w函数再进行相应的操作*/ }

int main(){ w();

/*调用函数w来开始第一次运行*/ getch();} ③ 运行结果

按回车实现记事本功能:

按回车返回记事本:

在特殊日子下按回车,查询是否有要做的事情:

四、实训心得:

c课程设计实训报告 篇2

(1)C语言具有丰富的数据类型、众多的语句、丰富的库函数以及较多的语法规则。由于受课时的影响,很多教师在教学过程中,着重讲授语法及相关概念,结合各章节的内容演示一些实现各种语句的小程序,如条件转移语句、循环语句、数组、指针、函数、结构体等。而学生上机实验时,忙于调试实现各种语句的小程序以及程序中的各种语法错误,很少能够将这些知识全部贯穿起来,更谈不上建立程序设计的思想。很多学生学完以后,只会编写一些小程序,感觉就像学习语文知识时,只会“造句”,不会“写文章”一样。而项目实训,则通过开发一个实际的项目,不仅将学过的内容综合起来,而且增强了学生分析程序、调试程序的能力,同时对程序设计的思路更加清晰。

(2)高职院校的学生入学基础相对比较差,抽象思维能力比较弱,逻辑分析能力相对比较差,而程序设计课程刚好需要较强的抽象思维能力及逻辑分析能力。因此,C语言程序设计对于大部分高职学生来讲,内容比较抽象,概念比较多,入门比较难,有很多人甚至产生厌学的思想。开设实训专周,实施项目实训,主要以上机操作与调试程序为主,学生选择自己喜欢的项目进行开发,不仅提高了学生的学习兴趣,且培养了学生的实际操作能力及分析问题的能力。

(3)实训专周,时间比较短,要开发一个软件项目相对比较难,再加上高职学生的基础参差不齐,单独一个人很难完成一个项目的开发。因此,主要是分组进行项目实训,由6-7个人组成一个小组,模拟软件公司人员设置让学生扮演不同角色,有项目经理、系统分析员、软件开发员、软件测试员、文档员等,通过小组项目开发,不仅提高学生的参与意识,培养团队精神,锻炼沟通交流能力,同时还增强了学生的职业素质、职业意识。

2 C语言项目实训的设计思路

2.1 制定项目任务书

项目任务书主要明确实训的目的及内容,让学生懂得为什么要进行实训。实训的目的是什么,实训的内容是什么,实训的形式是什么,时间安排如何,清楚最后要提交的实训成果,了解实训成绩评分的细则。

2.2 分组

分组对于项目能否按时完成非常重要,因此,分组要采用“指定”与“自由组合”相结合。“指定”主要是由指导教师指定每个小组的组长,主要是结合学生在学习C语言过程中,对学习内容掌握的情况以及上机调试程序的情况来确定,这些组长一般要有较强的组织能力及较高的威信,具有较强的程序设计能力。组长选定后,就由学生根据各个组长的情况进行自由组合,一个组一般6-7人为宜。

2.3 选题

由指导教师根据教学过程中使用比较多的案例,拟定学生比较熟悉的一些项目,如学生成绩管理系统、校园IC卡管理系统、上网卡管理系统、考勤卡管理系统、会员卡管理系统等。一般指导教师拟定的选题比学生的组数多,让学生有更多的选择,学生也可以自己拟定题目,由指导教师审核后实施。为了保证每个组的实训效果,要求每个组的选题不能相同。

2.4 考核方式

考核方式分指导教师考核与学生互评相结合,指导教师主要根据各个小组的实训过程、实训创新、小组答辩、以及实训成果四个方面给各个小组进行评分,一般实训过程占30%,实训创新占20%,小组答辩占20%,实训成果占30%。而学生互评主要是小组的每个成员根据每个人在项目实训过程中参与程度以及发挥的作用进行互评,一般采取不记名的方式给小组中每个成员进行评分。然后指导教师根据每个学生所在的组所得分数结合同组同学的评分、以及学生撰写实训报告的情况进行综合,最后得出每个学生的实训成绩。

2.5 提交成果

提交成果主要包括每个小组编写程序的源代码、小组汇报PPT以及每个学生的实训报告。

3 C语言项目实训实施与管理

3.1 资讯

在进行项目实训前一个星期,先对实训班级进行分组,并给每个组发放项目任务书,同时指导老师提供一些完整的实例,如公交卡管理系统、通讯录管理系统等。让学生以小组为单位利用课余时间收集与项目相关的资料,并复习已经学过的知识。

3.2 计划

针对项目实训实施过程进行计划,包括每天要完成的实训内容,小组人员的具体工作安排,包括谁主要负责编程,谁主要负责调试,谁进行文档处理,谁制作汇报PPT等。

3.3 决策

每个小组的项目确定后,就要进行系统分析,由于学生没有软件开发的经验,因此,系统分析及系统设计就要求指导老师参与,并进行引导。每个小组根据系统的功能进行模块设计,并确定系统的主要功能模块。这个过程指导老师必须全程参与,特别是功能模块的确定非常重要,如果功能模块多,涉及内容多,很难在一周内完成,因此,要把握好项目规模的“度”。

3.4 实施

实施主要是过程的实施,包括系统分析、讨论系统功能模块、进行编码、调试程序等。要求每个同学负责项目中的一个模块,负责编码及调试,最后再合并一个总的项目。

3.5 检查

检查主要是过程检查及结果检查。由于是实训专周,学生除了这门课的实训外,没有其它的学习任务,因此,学生可以从早到晚投入到课程实训中。由于C语言实训是软件开发,因此,都是在计算机房内完成。指导老师可以随时检查各个组完成项目的情况,并有针对性的进行指导。

3.6 评价

是对各个小组完成项目的情况进行评价。一周实训结束后,一般来讲,各个小组都能够完成项目的整体设计及整个项目的编码,只是由于水平不同,完成的效果不同。最后,各个小组派出代表汇报各自项目完成的情况、主要创新点,并进行演示。指导教师则根据各个小组的汇报进行讲评。

4 C语言项目实训存在的主要问题

4.1 项目的“度”较难把握

由于C语言的项目实训主要以软件开发为主,而这门课基本上是学生接触编程语言的第一门课,由于没有参加过软件开发,刚开始进行实训时,大部分同学都是比较迷茫,不知道怎么着手。因此,项目题目的确定以及各个模块的规模非常重要,难度太大无法按时完成,影响学生的兴趣,而难度小,又影响学生综合能力的提高,所以项目的难度比较难把握。

4.2 编写程序的规范性比较差

在课程实验时,由于都是编写一些短小的程序,解决某个单一的算法,所以编写程序及调试程序的难度相对较小,也不注意程序的规范问题。而项目实训由于编写一个较大的软件,涉及很多函数,而且每个函数都是由不同的同学完成,变量的定义以及函数之间数据的传递等规范性比较差,使得最后进行程序合并时,漏洞百出,要花大量的时间进行修改。

4.3 部分学生参与度不够

由于高职学生的基础参差不齐,又是小组项目实训,有部分基础差一点的学生在编程和调试程序阶段根本插不上手,一个组往往只有3-4个人在忙。

4.4 学生互评拉不下面子

由于分组以自由组合为主,同组的同学大家都比较熟,在学生互评中,都拉不下面子,不管个人水平如何,参与程度如何,互评的结果都差不多,一般只相差3-4分,给指导老师对同学的评分带来一定的困难。

5 结束语

C语言项目实训将以前学过的知识综合起来,让学生温故而知新,项目实训贯穿了项目教学法的思想,以学生为中心,极大的调动学生学习的积极性及主动性。

参考文献

[1]付兴宏,罗雨滋.项目教学法在《C语言程序设计》教学中的应用[J].朝阳:辽宁师专学报,2007,9(2).

[2]郝蕊洁,万小红.项目教学法在非计算机专业《C语言程序设计》课程中的实践[J].合肥:电脑知识与技术,2009(9).

[3]许晓宇,姜俊华,王成杰.谈C语言实训课的设计[J].北京:科技资讯,2008(3).

[4]林跃进.IT项目实训课的设计与实施[J].北京:计算机教育,2007(3).

c课程设计实训报告 篇3

【摘 要】实训课程作为实践教学的重要内容,是人才培养过程中的一个重要环节,对社会的发展和进步起到了非常重要的作用,为社会输送了大量人才,但是实训教学中仍存在很多问题。本文主要从教学内容、教学方法、考核方式三个方面进行探讨。

【关键词】实训;教学内容;教学方法;考核方式

0.引言

C语言程序设计实训这门课程要求学生掌握计算机程序设计语言的基本知识和程序设计的方法与技术,培养学生应用计算机解决实际问题的能力,重视学生实际编程能力和程序思维能力的培养,通过学生上机编写程序来提升学生的编程能力,培养学生的学习兴趣和创新能力。

C语言程序设计为其前导课程,是对其前导课程知识的巩固、实践与提升,是ACM程序设计课程的基础,通过此次实训为程序设计比赛和ACM大赛输送人才,使更多的学生在全国的各种编程比赛中取得好成绩,同时为学生毕业后从事编程工作打下良好的基础,为企事业单位输送程序设计人才。

本人根据C程序设计实训课程教学中存在的问题对教学内容、教学方法,考核方式进行了改革,并以本校2010级软件班学生为试点进行教学,总结了一些经验。

1.教学中存在的问题及解决对策

1.1实训内容单一

实训教学内容应该首先根据C语言的特点对知识进行整合,然后引入针对性较强的典型综合实例,从程序整体向各个核心知识点渗透。教师可以根据学生的实际情况设计实训项目,内容应覆盖学生所学的知识,突出实用性,内容最好为学生所熟悉领域或学生感兴趣的领域。如果学生层次不一,可以根据学生对基础知识的掌握情况设置不同的实训内容。

1.2教学方法单一

在实训教学过程中,应将重点放在分析程序设计过程上,培养学生良好的编程习惯,逐步提高学生编程能力。单一实训手段要达到这一目标是很困难的,这就要求运用多种实训教学方法,让学生对编程有个很好的理解过程。

可以引入多种教学方法。以前的实训课程不能激发学生的学习兴趣,主要是因为课堂是由老师主载,学生是被动的学习,不能成为课堂的主人。我们将采用多种教学方法来激发学生的兴趣,转变老师和学生的课堂角色。

(1)基于ACM模式的教学方法。ACM的教学模式是结合具体的问题讲授概念与理论,辅以课堂讨论,做习题等多项教学手段。在教学过程中,安排学生深入有关实际问题进行研究,加深对所学理论的认识,利用网站进行程序设计。以往的教学是按照基础知识、循环结构语句、结构体语句等知识点的顺序进行讲解。基于ACM的教学方式是按照习题所属知识类别进行理论讲解,离散数学、初等数论、数值计算、人工智能、动态规划算法、图算法等知识点进行讲解与练习。ACM的教学模式在一定程度上将基础学科很好地运用于程序设计当中,有利于知识的融合,可以提高学生的思维能力,在做练习时举一些趣味习题,激发学生的兴趣。

基于ACM的教学方法的优点如下:

①知识分类讲解可以加深学生对知识的理解,更加系统。

②ACM所选的题目趣味化生活化,可以激发学生的学习兴趣。

③题目所含知识面广泛,有利于知识的巩固。

④分组培养大家的团队协作精神。

⑤学生讲解培养学生的表达能力与思维能力。

(2)讨论式教学法。由于每一道程序题可以有不同的编写方法,答案不唯一,所以很适合使用讨论式教学方法。将学生以三人为一个团体进行分组,在组内讨论编程方法,上机编写程序并进行验证,由组内推举成员向大家进行讲解和演示,有不同编程方法的组可以继续演示,最后由老师进行总结,并选出时间和空间复杂度最小的程序,同时也可以发现学生在编程过程中出现的常见错误,发挥学生的团队精神,提高学生的表达能力。

(3)任务驱动法。在实训课堂上,学生需明确要完成的任务,依照实训任务完成实训。题目由易到难,知识点由单分支到多种分支情况的应用,这样适合学生学习特点及编程由易到难的编写过程。

1.3考试一锤定音

这门课程主要是培养和检验学生的编程能力,所以不能以一次考试来决定学生的最终成绩,检验过程应该贯穿整个学习过程。引入过程性考核思路,总成绩分部累加。采用平时计分和最终考核相结合的方式,以每节课的发言演示情况来给出平时等级,一学期进行累计,按累计成绩进行排名,前三分之一学生可以免去最后的考核,以平时成绩作为最终成绩,这样也可以激励大家踊跃发言,剩下的学生参加最终考核,最后成绩由平时成绩和最后一次考核的成绩各占一部分比例来组成。通过实践检验,课程考核方法改革后,考核出了学生的实际操作水平,用过程性考核思想后,在学习过程中时刻检验学生的学习接受掌握情况,加大了课程全程质量监控力度,课程考核结果基本能够反映学生学习后真正的计算机应用能力水平。考核结果公平、有效,这也是现在倡导的全过程考试。

2.总结

通过对C程序设计实训课程的教学内容、教学方法、考核方式的改革,并对2010级软件班学生进行试点后,使学生理解模块化程序设计的基本思想,掌握结构化程序设计的基本方法,掌握C语言的数据结构、程序结构、语句以及控制结构的使用方法,能用程序设计技术解决一定难度的实际问题,掌握在实际开发环境下进行编辑、编译、连接、调试和运行的方法;综合训练学生分析问题的基本方法,提高解决实际问题的能力,培养学生的专项技能和职业能力。

【参考文献】

[1]王嵩.C语言程序设计.教学探索与实践[J].教书育人,2006,(35).

[2]王美娜.C语言程序设计.教学方法探析[J].科教文汇(下旬刊),2007,(04).

[3]曾鸿.基于项目的软件工程综合实训教学模式[J].中国职业技术教育,2008,(12).

[4]王丽娟.C语言程序设计教学分析与探索[J].中国校外教育(理论),2008,(S1).

[5]刘斌,瞿新南.浅谈《C语言》项目教学[J].新课程研究(中旬刊),2009,(12).

C语言课程设计报告目录 篇4

一、课程设计题目1

二、设计任务分析1

三、系统总框图1

四、功能模块描述21.模块名称:主函数22.模块名称:建立数组33.模块名称:读取二维数组34.模块名称:计算聚点及象素点45.模块名称:屏幕输出二维数组6.模块名称:保存数组到文件7.模块名称:清空结果8.模块名称:对结果进行快速排序9.模块名称:计算平均象素10.模块名称:选择赋值函数11.模块名称:产生随机数函数12.模块名称:寻找聚点函数13.模块名称:入队操作14.模块名称:出队15.模块名称:排序函数16.模块名称:一趟快速排序函数

五、源程序

六、简单调试

c课程设计实训报告 篇5

报告人:06计算机应用班××号×××

一、题目:×××网站的设计

二、设计任务、要求

(内容格式为宋体小四)

三、软件环境及工具

(内容格式为宋体小四)

四、网站的规划

(网站的规划及简要说明,包括网站风格、网站特点、网站色彩、网站内容、网站草图(文件构成和页面构成)、任务分解;网站技术、参照网站或参考书籍、所需资料等。内容格式为宋体小四)

五、网站栏目介绍

(站内栏目简介,包括网站的栏目组成、各栏目的简要说明。内容格式为宋体小四)

5.1首页

(网站首页内容的详细介绍,主要的制作思路及过程,可适当配合页面截图说明。内容格式为宋体小四)

5.2(栏目1)

(网站中某栏目内容的详细介绍,主要的制作思路及过程,可适当配合页面截图说明。内容格式为宋体小四)

5.3(栏目2)

(网站中某栏目内容的详细介绍,主要的制作思路及过程,可适当配合页面截图说明。内容格式为宋体小四)

六、测试情况

(网站在设计初期发现的问题及修改过程、设计完成后本地测试、上传测试等情况。内容格式为宋体小四)

七、答辩及验收情况

(内容格式为宋体小四)

八、设计总结和体会

c课程设计实训报告 篇6

我们进行了为期一周的Java web的课程实训。在这次实训中,我觉得我学到了很多东西。这次,老师给我们安排了一个项目,是关于商店购物的。首先,我们划分了几个小组,每组4-6人,每个人有每个人的工作,每个人的工作完成后整合到一起,这个项目就完成了。我在我们小组的工作是写一段删除商品的Java代码。因为我的基础比较差,所以我分担的工作比较少,下面是我做的一段代码:

public void deleteProduct(String id){

Statement stmt = null;

connectTODB();

int tempid =

Integer.parseInt(id);

try {

stmt =

this.con.createStatement();

stmt.execute(“delete from

shop_info where product_id=” + tempid);

} catch(Exception e){

e.printStackTrace();

} finally {

close(this.con, stmt, null);}}

c课程设计实训报告 篇7

《C语言程序设计》教学内容枯燥抽象,学生不容易理解,加上编者对教材的处理上过于注重实践技能的培养,采用“任务驱动”法组织教材内容,通过一些实际案例阐述各章节的重要知识点,又通过案例延伸对相关知识点进行了扩展和延伸,使得各知识点都融合在各案例当中。这样虽然达到了各教学知识点的有机统一,但从知识点的连贯性和层次性上来讲,不容易被学生理解掌握。同时,该教材用学生信息管理项目案例作为主线,对于毫无编程经验的职专生来说,起点过高。

C语言程序设计的学习,主要涉及到C语言基础知识框架的建立和算法思想的培养,算法思想即是数学建模的过程,而且c语言的编写都是用英语字符来完成的,这就需要学生在数学和英语两科的综合运用能力上达到一定的要求,而职业类学校的学生恰恰在这两个科目上弱项,这就进步增大了教学的难度。在教学实际过程中,可能遇到无论教师怎么解释,学生都不知所云的情况。

同时,在c语言的学习程当中,也往往要涉及很多计算机硬件原理的知识,对于处于高二的职专生来讲,对一些计算机基础知识还不能达到融会贯通的程度,计算机知识不系统,这就更加增大了实际教学的难度。

针对以上教材的情况以及学生的实际接受能力,经过教学实践的摸索探讨,我总结出了如下“C语言程序教学”的方法 。

1.在教材的处理上,结合学生实际,做到有针对性地制定教学目标,提高学生的接受能力。

我在实际教学过程中,还是以本教材为主,但在知识结构上做了一些细化。在给学生分析完教材中的案例后,对涉及到的相关知识点进一步完善和系统,使学生整体上掌握住案例的实质。例如;在讲“变量”的过程当中,变量值的储存是一个访问内存物理地址的过程。在这里,就需要对学生扩展一些关于内存物理地址方面的知识点,让学生对整个变量值的储存过程能够清楚明亮,从而提高学生对知识点的接受能力和牢固度。

在备课过程中,在意识地在每课时的教案中穿插一些计算机小知识,以激发学生学习的兴趣,提高学生学习程序涉及的积极性。

2.把教授的专业性知识与学生熟悉的相关常识相联系。

在C语言授课过程中,可能会遇到一些专业性的术语,学生从来没接触过,不知道为何物。这种情况下,授课老师可以列举一些与之有联系的比较实际的常识来做类比。比如我在给学生讲授C语言程序的基本构成单位为“函数”时,因为C语言中的“函数”和数学中“函数”不是一种概念,而是完成一个相应功能的程序模块,学生容易混淆。所以我把C语言中的“函数”比作是人体里的各种器官,其最大的作用就是完成相应的功能,我们人体是各个器官的组合体,而C语言程序就是各个“函数”的组合体,这样,学生对函数的概念就会明了很多。

3.采用“自主——合作——探究”式的学习方式。

教材的编者在出版说明中谈到,要强调学生学习的自主性,强调以学生的团队学习为主,让学生分成小组共同就某些问题讲行探讨,使学生最大限度的自主掌握知识。当然,这是一种理想化的教学方式,但在实际教学过程中也不是不能实现,最起码在一定程度上可以实现,所以任课教师可以试着去培养学生的这种能力。

一些教師在教学设计中虽能体现出学生“自主—— 合作 ——探究”的意识,但在具体操作中形式化严重,实效性不强。

兴趣是学生的最好老师,大部分学生还是比较喜欢计算机这个专业的,我们应该充分抓住学生的这一特点,发挥他们的主体作用,让他们自主探索,自主学习。职校二年级的学生已经有了较好的判断、推理和逻辑思维能力。我在教学过程中,经常采取提取问题-探索问题-解决问题的方法。老师可以自行出个例子,设置疑问,让学生自主学习,这样的教学效果要比在课堂上死讲要好的多。比如,在讲解条件和循环语句,多配以流程图来增强学生直观性和理解性。在讲数组时,采用图例分析,让学生对数组各元素分布情况,产生准确的认识和理解。现在的高中学生,很自我,独立意识和接触新鲜事物的能力非常强,让学生自行分组设计一些小课题,即提高了学生的自主能力,也让同学之间也不由自主的互相帮助起来。最主要的是让学生自己发现问题并解决问题。这时候老师就要做好引路人,在学生自主学习的时候,给予适当帮助。

4.精讲多练,加强实践。在学生理解项目思想,确定项目的算法后,有针对性地对项目中涉及的知识点进行讲解,对于那些学生自己能完成的内容,少讲,只做提示,甚至不讲。课堂上留足够的时间,让学生多进行实践操作,同时加强巡查辅导,及时发现和纠正学生的错误。

总之,在难度较大的课程教学过程中,不仅要备好课,还需要用创新精神探究各种教学方法,培养学生的实践能力。作为年轻老师,我们应该一丝不苟地去面对学生,面对教材,面对自己这神圣的职业。

c语言程序设计实训总结 篇8

为加强学生的实践动手能力,为贯彻落实教学计划的要求,培养学生的专业实践技能,计算机系05级计算机网络工程与管理、计算机信息学管理、图形图像三个专业的学生于2006年6月9日至6月16日在校实验实训中心进行了为期一周的项目实训。此次实习由计算机系组织,由周军老师具体安排,实习内容为运用VC++6.0,编写一个简单的学生成绩管理系统。

通过此次实训,同学们能够利用C语言面向过程的编程思想来完成系统的设计,熟练掌握C语言的基本知识和技能;能够利用所学的基本知识和技能,解决简单的程序设计问题。

一、充分准备,使学生明确实训的目的与要求

本次实训的目的是要求学生通过熟练运用Turbo C 2.0的开发环境,以所掌握的C语言知识为基础,围绕本次安排的实训项目,精心准备,认真调试,通过查阅资料、通过阅读相关程序代码、通过多次上机调试、通过同学们相互讨论,使学生对C语言程序设计有一个全面的了解,从而能更加系统地理解C语言基础知识。

本次实训的要求是:教师要认真给参与实训的学生分好组,注意成绩好坏的搭配。同时,实训前公布本次实训内容,要求每个学生认真做好实训前的准备,查阅相关资料,精心编写代码。各组学生独立完成实训项目,独立撰写实训报告,认真及时进行实训总结。指导教师通过登陆教师后台管理系统对学生的实训过程进行跟踪指导、审核管理、进行批改,并给出考核成绩。教师在实训期间要检查学生到课情况,及时调整指定的分组角色。

二、精心组织,认真做好项目实训

对教师方面,本次实训要求教师每节实训课必须到场。教师必须清点学生到场情况并做好出勤记录,在有学生缺席的情况下调整好角色分配。同时要求教师必须把实训内容具体分配到课时,并提供相关内容供学生下载。教师通过登陆教师后台管理系统对学生的实训过程进行跟踪指导、审核管理、进行批改,并给出考核成绩;对学生方面,本次实训实训考评分合格与不合格两个档次。不合格的可要求重做,重做的次数不影响考评成绩。对复制的同学,一经发现,要求从头做起, 由老师指定内容, 完成相关的内容, 否则为不合格。

三、本次实训的效果与经验

通过此次实训,广大同学夯实了基础,锻炼了能力,综合素质得到较大提高。同时实训也为推动我系专业建设提供了丰富的经验。

1、本次实训促进了我系人才培养计划的完善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,如开源系列,受到同学们的欢迎。

2、本次实训促进了学生自身的发展。实训项目使学生初步接触C语言,熟悉了C程序设计过程,培养了他们的环境适应能力及发现问题、分析问题、解决问题的实际工作能力,为他们今后的发展打下了良好的基础。

四、存在的问题 实训过程中发现存在下列问题:一是学生素质参差不齐,基本功扎实的学生可以很快地完成本次实训项目,差的学生基本上还没有入门,更别谈开发一个项目了,如何提高学生的整体素质,是今后教学中值得考虑的问题。二是机房部分微机运行状态不太好,一些经常死机,一些同学辛辛苦苦编写的代码由于没有及时存盘,由于死机又得重新做,学生中有一些怨言,建议学校及时更换一些、淘汰一些过时的微机,加大对微机的维护。

总之,我系的专业实训经过几年的开展,积累了较丰富的经验,从系领导到任课教师对此都十分重视,实训组织工作周密细致,日常管理及时而有效,对存在问题能迅速解决。实践证明,专业实训适应高职学生的特点,符合高职教学规律与学生心理预期。专业实训作为计算机各专业教学体系的一个环节,无论对学生成才还是对教学开展,都有极大的促进作用。

计算机系

上一篇:《我的祖国》教案下一篇:爱岗敬业 用平凡谱写人生专题