C语言课程设计任务书新——刘阳(共8篇)
1.C语言课程设计任务书新——刘阳 篇一
一、课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
二、课程设计名称及内容
课程设计名称:运动会比赛计分系统
设计内容:设计一个运动会比赛计分系统,该系统要求对运动会比赛得分进行管理和维护。
三、任务和要求
要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数 各项目名次取法有如下几种:
(1)取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;
(2)取前3名:第一名得分5,第二名得分3,第三名得分2;(3)用户自定义:各名次权值由用户指定。
四、设计方案提示
(1)界面
系统以菜单方式工作(2)输入数据并存入文件
使用到结构体变量和动态链表,由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。对输入的信息进行合法性判断,直到输入正确为止。都输入完成后,调用写文件函数对指定的文件进行写操作,把输入的信息写入到文件中。(3)显示所有记录
将文件中的所有记录以表格的形式输出。如果文件未打开会出现“文件打开失败!按任意键返回...”,关闭文件。(4)查询
所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。二:算法设计:
信息输入模块、比赛结果录入模块以及查询模 题目的总体要求是要建立三个模块:信息输入模块、建立三个模块 块。在建立完之后,要求该程序能够在用户将各种必要的信息记录之后,用户可以查询所 有学校的比赛成绩,而且也可以生成团体总分表,查看参赛学校信息和比赛项目信息等一切 录入的信息,为此,要示编程人员能通过一些具体的程序将以上的功能加以实现。在建立三个模块的大前提下,我们将采用结构体,循环体,指针和各种函数来实现这 种功能,在数据结构体中,要采用结构体数组,其中包括学校、项目、运动员三个结构体。学校结构体成员包括学校校名、竞赛项目、得分项目结构体成员包括项目名、权值。(1)在此程序中,包括几个头文件:mainfile.h;dos.h;conio.h;momery.h;接下来,定义全)局变量,其中包括“参赛学校项目数 N;男子项目数 M;女子项目数 W;参赛学校g_school;竞赛项目 g_sport;各名次链表指针 ptrHead,ptrThis,ptrNew;总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。总
体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。
(2)各种结构的分析:)各种结构的分析: 静态存储方式: 它是指在程序运行期间由系统分配固定的存储空间的方式,全局变量全部存 静态存储方式: 放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放,在程 序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。用 static 声明局部变量:使用该变量可以使局部变量的值在函数调用结束后不消失而保留原 值,这即为静态局部变量的特点。静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不 释放。对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。如在定义局部变 量时不赋初值的话,则对静态局部不说,编译时自动赋初值 0(对数值型变量)或空字符
总体设计 信息输入模块 比赛结果录入模块 查询模块 设置参赛信息 设置竞赛项目总数 主菜单 设置竞赛项目信息 设置项目名次取法 生成报表 打印竞赛项目信息 填充参赛信息 请输入您的选择 开始。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。虽然静态局部 变量在函数调用结束后仍然存在,但其他函数是不能引用它的。Malloc 函数 函数的作用是在内存的动态存储区中分配一个长度为 size 的连续空间。此函数的值 是一个指向分配域起始地址的指针,如果此函数未能成功地执行,则返回空指针。链表是动态地进行存储分配的一种结构,所谓建立动态链表是指在程序执行过程中从无到有 地建立一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。循环结构是结构程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复 循环结构 杂程序的基本构造单元。通常用 while、do…while 语句实现循环,最常用的是 for 3
语句的循 环,夺循环中还有循环的嵌套,它是指一个循环体内又包含另一个完整的循环结构。用语句 来实现从循环体内跳出来,即提前结束循环,接着执行循环下面的语句,但 break 语句不能 用于循环语句和 swich 语句之外的任何其他语句中。另外一种就是 continue 语句,它的作用 是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判 定。Swich 语句 语句是多分支选择语句,它后面括号内的“表达式”,ANSI 标准允许它为任何类 型。当表达式的值与一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,每一个 case 的常量表达式的值必须都不相同;否则就会出现相互矛盾的现象。各个 case 和 default 的出现次序不影响执行结果,执行完一个 case 后面的语句后,流程控制转移到下一 个 case 继续执行。“case 常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行 swich 语句时,根据 swich 后面表达式的值找到匹配的入口标号,就从此标号开始执 行下去,不再进行判断程序流程图 开始 请输入您的选择 c s i p q 编号 n=0? i<=2 i=0 i=1 0 2 1 MAX—M MAX—W 男团总分 女团总分 r 团体总分 输出 t 生成报表 结束 HOU 第 6 页 2010/9/5 项目名次的取法及每一名次的分值 开始 请选择编号 0 1 2 0 7 输入名次 0 5 1 5 1 3 t=i 2 3 2 2 i=i+1 3 2 i>0 4 1 n<5 n<3 输出
****************************MENU1******************************* ****** 1.enter!!2.record!!3.search!!******************************************************************************* choice your number:()
二、课程设计体会 在此次的 C 语言的课程设计中,我不仅 学到了许多有庆这方面的专业知识,更重要的是我学会了如何在拿到一个题目时进行简单的 程序分析,并编译出一些相对简单的程序,当然了,对自己编译出的不对的程序,我也能 4
进 行一些分析,并对其进行完善。在此次的学习过程中,老师教给了我们很多的东西,从一开 始的不懂 VC++这种软件,到最后的我们可以进行较熟练的应用它,也许在这过程中,我们 无论是学生还是老师都遇到了一些小的困难,但是在我们师生的共同努力下,我们最终还是 克服了它,单从这一点来说,我们就学到了许多的东西,比如 teamwork,同学之间的相互 帮助以及与老师的配合,都证明了这一点,我相信这是我此次学习C 语言程序的最大收获。在我的程序设计的过程中,遇到了很大有难题,特别是在刚拿到我的题目时,头脑中 根本没有头绪,更不要说去编译程序了,当时真的很担心是否可以完成老师布置的任务,但 慢慢的在学习的过程中,我开始懂得了一些编译的方法,就尝试着去编译一些程序,结果还 是很好,最后我编出了我题目的程序,但是在程序的运行过程中,又遇到了新的难题,那就 是我所编的程序中有太多的错误,根本无法进行运行,没办法,只好硬着头皮修改,不过还好,在老师和同学们的帮助下,我最终将我的程序成功地进行了运行,在我自己的程序运行 时,心中有一种说不出的高兴,是的,自己这几天的努力总是没有白费。
五.附录:
源代码:
#include
}itemnode;typedef struct {
int schoolnum;
int score;
int mscore;
int wscore;
itemnode c[m+w];}headnode;headnode h[n];
void input(){
int i,j,k,s;
for(i=0;i { h[i].schoolnum=0; h[i].score=0; h[i].mscore=0; h[i].wscore=0; } for(i=0;i { printf(“n学 校 编 号:”); scanf(“%d”,&h[i].schoolnum); for(j=0;j { printf(“n项 目 编 号:”); scanf(“%d”,&h[i].c[j].itemnum); printf(“n取前3或前5名:”); scanf(“%d”,&h[i].c[j].top); while(h[i].c[j].top!=3&&h[i].c[j].top!=5) {printf(“n输入错误,请重新输入!:”); scanf(“%d”,&h[i].c[j].top);break;} printf(“n获得几个名次:”);6 scanf(“%d”,&k); for(s=0;s<5;s++) h[i].c[j].range[s]=0; for(s=0;s { l: printf(“n名 次:”); scanf(“%d”,&h[i].c[j].range[s]); if(h[i].c[j].top==3) switch(h[i].c[j].range[s]) { case 0:h[i].c[j].mark[s]=0; break; case 1:h[i].c[j].mark[s]=5; break; case 2:h[i].c[j].mark[s]=3; break; case 3:h[i].c[j].mark[s]=2; break; default:{puts(“输入错误!请重新输入!”); goto l;} } else switch(h[i].c[j].range[s]) { case 0:h[i].c[j].mark[s]=0; break; case 1:h[i].c[j].mark[s]=7; break; case 2:h[i].c[j].mark[s]=5; break; case 3:h[i].c[j].mark[s]=3; break; case 4:h[i].c[j].mark[s]=2; break; case 5:h[i].c[j].mark[s]=1; break; default:{puts(“输入错误!请重新输入!”); goto l;} } h[i].score=h[i].score+h[i].c[j].mark[s]; if(j<=m-1) h[i].mscore=h[i].mscore+h[i].c[j].mark[s]; else h[i].wscore=h[i].wscore+h[i].c[j].mark[s]; } printf(“n”); } } } void output(){ int choice,i,j,t; int a[n]; int sign; do { printf(“n***************************1.按学校编号****************************n”); printf(“*****************************2.按学校总分****************************n”); printf(“*****************************3.按男团总分****************************n”); printf(“*****************************4.按女团总分****************************n”); printf(“*****************************请根据提示进行操作!:”); scanf(“%d”,&choice); printf(“n”); switch(choice) { case 1:for(i=0;i { printf(“n学校编号:%dn”,h[i].schoolnum); printf(“学校总分:%dn”,h[i].score); 输出 输出 输出 输出 printf(“男团总分:%dn”,h[i].mscore); printf(“女团总分:%dn”,h[i].wscore); printf(“n”); } break; case 2:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[a[i]].score { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; case 3:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[a[i]].mscore { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; case 4:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[i].wscore { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&sign); printf(“n”); }while(sign==1); } void chaxun(){ int choice; int i,j,k,s; printf(“n*****1:按学校编号查询n”); printf(“n*****2:按项目编号查询n”); printf(“n*****请选择查询方式:”); scanf(“%d”,&choice); switch(choice) { case 1: do { printf(“要查询的学校编号:”); scanf(“%d”,&i); if((i>n)||(i<=0)) printf(“错误:这个学校没有参加此次运动会!n”); else { printf(“******************要查询的项目编号:”); scanf(“%d”,&j); if(j>m+w||j==0) printf(“******************此次运动会没有这个项目******************n”); else { printf(“这个项目取前 %d名,该学校的成绩如下:n”, 11 h[0].c[j-1].top); for(k=0;k<5;k++) if(h[i-1].c[j-1].range[k]!=0) printf(“名次:%dn”,h[i-1].c[j-1].range[k]); } } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&s); printf(“n”); }while(s==1); break; case 2: do { printf(“要查询的项目编号:”); scanf(“%d”,&s); if(s>m+w||s==0) printf(“此次运动会不包括这个项目n”); else { printf(“该项目取前 %d名,取得名次的学校n”,h[0].c[s-1].top); for(i=0;i for(j=0;j<5;j++) if(h[i].c[s-1].range[j]!=0) printf(“ 学 校 编 号 :%d,名次:%dn”,h[i].schoolnum,h[i].c[s-1].range[j]); } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&i); printf(“n”); }while(i==1); break; } } void write(){ int i,j,s; FILE *fp; if((fp=fopen(“sportsdata结果.txt”,“a+”))==NULL) { printf(“不能打开文件n”); exit(1); } fputs(“学校编号 学校总分 男子总分”,fp);fputs(“n”,fp); for(i=0;i { fprintf(fp,“%2dtt ”,h[i].schoolnum); fprintf(fp,“%2dtt”,h[i].score); fprintf(fp,“%2dtt”,h[i].mscore); fprintf(fp,“%2d ”,h[i].wscore); fputs(“n”,fp); } fclose(fp);} 女子总分 void read() { FILE *fp; int i,j,s; if((fp=fopen(“sportsdata.txt”,“r”))==NULL) { printf(“文件不存在,不能打开文件!n”); exit(1); } for(i=0;i { fscanf(fp,“%d”,&h[i].schoolnum); // for(j=0;j // { fscanf(fp,“%d”,&h[i].c[j].itemnum); fscanf(fp,“%d”,&h[i].c[j].top); // for(s=0;s<5;s++) // { fscanf(fp,“%d”,&h[i].c[j].range[s]); // } // } } fclose(fp);} int main(){ FILE *fp; int choice; int flag1=1,flag2=1; system(“cls”); do { printf(“n####***********************************************####n”); printf(“n####******************校级运动会分数统计系统*******************####n”); printf(“nn ####^^^^^^^^^^^^^^1.录入信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^2.读取信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^3.显示信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^4.查询信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^5.退出程序^^^^^^^^^^^^^^####n”); printf(“n####*************************************************************####n”); printf(“nn请根据提示选择操作!:”); scanf(“%d”,&choice); if(choice==1) flag1=0; else if((fp=fopen(“sportsdata.txt”,“r”))!=NULL) flag2=0; else { system(“cls”); printf(“没有信息,请你录入信息!n”); } }while(flag1&&flag2); switch(choice) { case 1: 欢迎使用程序 printf(“n==========请输入信息========n”); input(); write();printf(“==========信息已存入档=========”); main(); case 2: read(); write; break; case 3: printf(“===========输出信息==========n”); if(flag1) read(); output(); main(); case 4: printf(“===========查询信息==========n”); if(flag1) read(); chaxun(); main(); case 5: printf(“n退出系统!谢谢使用!nn”);exit(0); default: printf(“输入错误!n”);exit(0); } 六主要知识点 面向过程程序设计方法 界面制作,switch的应用。 数组或链表的实现与应用。 文件的读写。 七.其他 程序设计可在VC++、C++ Builder环境下进行。八.参考资料 [1] 黄明等编著《C语言课程设计》北京:电子工业出版社 [2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社 [3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版 [4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版 [5] 谭浩强编著《C程序设计题解与上机指导(第3版)》北京:清华大学出版社 [6] 谭浩强编著《C程序设计(第3版)》北京:清华大学出版社 任务驱动教学法符合探究式教学模式,适用于培养学生的创新能力和独立分析问题、解决问题的能力。C语言课程采用任务驱动的教学法,其优势是明显的,教师的教和学生的学都是围绕如何完成一个具体任务进行的。 1.1 教学目标的分析 分析教学目标是为了确定学生学习的主题,即与基本概念、基本原理、基本方法或基本过程有关的知识内容。C语言课程是计算机专业核心基础课程,理论性强、概念抽象,具有广泛使用价值。C语言课程的教学目标从整体上可分为以下3个层次: 第一个层次的目标是进行程序设计方法的教学和训练,以便提高学生的程序设计能力和对C语言的理解和运用能力;第二个层次的目标是培养学生理论联系实际、勇于实践勤于动手的良好习惯,养成善于自学的能力;第三个层次的目标是培养学生分析问题和解决问题的能力。程序设计是使用编程语言解决实际问题的过程。通过理论联系实际的学习和经常性的实际操作练习,学生会在分析问题要点、把握解决问题关键、关注计划实施细节等方面不断得到锻炼。 1.2 教学内容的分析 教学内容是为实现教学目标,要求学习者系统学习的知识、技能和思想、行为的总和。教学内容分析是指对学习者已具有的能力转化为教学目标所规定的知识和技能所需学习的知识、技能和态度及其关系进行详细剖析的过程。 C语言课程的教学内容主要分为3大教学单元,即入门、程序设计的基本结构和模块化程序设计的基本结构教学单元,各教学单元之间的顺序基本上是固定的,前一部分的学习是后一部分的基础。本文选择程序设计的基本结构作为教学单元内容。 1.3学生特征的分析 分析学生特征是为了设计适合学生能力与知识水平的学习问题;提供适合学生个性特征的帮助与指导;设计适合学生的情景问题与学习资源。问卷调查是教育研究中最常用的收集资料的方法,研究者通过事先设计好的问题来获取有关信息和资料的一种方法。研究者以书面形式给出一系列与研究目的有关的问题,让被调查者做出回答,通过对问题答案的回收、整理、分析,获取有关信息。 本文的研究根据教学内容和学习目标分析,编制了相应的题目,在实验前后对研究对象进行问卷调查,然后进行数据统计分析,从而得出任务驱动教学法对学生学习效果的影响。笔者选择所在学校的一个实验班级进行本次实验,该实验班是在校的大学二年级学生,具有了在校大学生的共性。在实施教学前,笔者已经对学生的情况做了详细的了解,这个班级是计算机专业班,所需分析的是学习者对该课程学习时已经具备的有关知识与技能的基础,学习者对该课程的认识以及学习者对该课程的学习兴趣和学习动机的了解。 1.4 学习任务的设计 任务驱动教学关键在于任务的设计,教师设计一堂好的课堂任务是提高教学质量的关键,如何根据学生特点设计合适的任务呢?首先,要正确理解任务和教学目标之间的关系。教学目标是对学生掌握知识、技能以及能力的要求,是任务设计的出发点和依据。任务是教学目标的具体化,通过具体的任务完成相应的教学目标。 本次学习任务设计为停车场计费功能的实现。主要使学生通过具体问题的实例编程、调试、修改,掌握结构化程序设计的算法思想。在整个任务驱动过程中,学生可以运用上课所学的流程图、分支和循环程序等C语言知识点进行任务的完成。 1.5 教师角色的转变 建立在任务驱动教学法之上的C语言课程教学模式随着计算机技术与网络技术的高速发展而变化,作为信息时代的教师需要不断地学习新的方法与策略,运用先进的教学理念、教学手段来引导和促进学生对问题的思考和解决。显而易见,教师的角色需要改变,教师在传统课堂教学中作为教学过程的执行者、组织者和管理者的角色需要改变,以教师为中心的讲解式教学方式,强化教师在教学中的中心地位的单一角色也需要改变。 建立在任务驱动教学模式下的教师的角色既有传统教学环境下的角色特点,也有任务驱动教学环境下的角色特点,在任务驱动教学过程中,教师扮演着不同的角色。教师要充分发挥主导作用,对C语言课程的重点和学生普遍反映的难点问题进行重点地讲解;在以小组任务驱动学习为主的教学形式中,教师成为了小组学习的设计者,组织者,引导者和评价者。在小组讨论时,教师可以对学生讨论的问题进行解释与答疑,在网络环境中,教师一般利用BBS或E-mail与学生交流,教师对学生提出的问题进行及时的反馈。 1.6 管理与帮助的设计 教师职责:控制、管理、帮助和指导;关键是教师能否适应职责与角色的转变为了尽可能获得准确的实验结果,在实验实施之前对学生进行访问、调查,了解学生的爱好、兴趣、能力、知识水平;实验过程中对该班学生的学习进行引导、帮助,给予一定的支持。 为了合理地分组,根据对该班学生的能力进行分组,主要采用操作能力强弱,男女生搭配来划分小组。因为每个小组成员都要协作学习,组员分工不同,所以为了提高学习结构化程序设计算法思想的教学效果,采用的是“组内异质,组间同质”的分组方法。组内异质为互助合作奠定了基础,而组间同质又为在全班各小组问展开公开竞争创造了条件。一般按5人来划分,这样班上总共有38人,可以划分为8个组。 1.7 总结与强化的设计 简明扼要的串讲,将学生知识系统化;检测与练习可巩固所学知识,保证达到预期教学目标。教学中对学生的学习进行总结与评价,并结合学生学习过程中的典型问题进行简明扼要的串讲,帮助学生系统化知识;通过小组完成情况的展示汇报评价进行总结综合性地评价学生的学习成果。 2 教学过程的实现 教学过程的实现主要包括以下几个关键步骤: (1)情境的导入。用VCD和投影仪在大银幕上播放幻灯片或者视频,展示情境。 (2)任务的布置。作范例、指导学生观看范例并了解结构化程序设计的算法思想;要求学生明确C语言程序流程图、程序分支和循环程序等知识点。鼓励学生使用教师提供的资源,在教师的指导帮助卞,根据C实例的分析,进行程序的流程设计;并进一步指导学生如何提高算法的效率。 (3)讲解的穿插。选择典型小组学生的程序设计算法的运行结果,根据其中的问题进行知识点的串讲。 (4)子任务的分解。引导学生,提出子任务,要完成程序流程图的设计应该包括哪些步骤?每个步骤的目的是什么?各个步骤中涉及到哪些程序语句?可否将嵌套较多的语句用switch/case等程序语句代替?代替后算法的时间复杂度及空间复杂度是否有所改变?等一系列的问题,让学生去探究、查询、收集及学习。在此基础上,根据分组方案对学生进行合理的分组。 (5)任务的分析。在学习获取信息中碰到问题时,给予恰当的指导,必要时可以手把手教其相关的程序设计,再进行操作的撤销,让学生亲自动手再进行一次操作。 (6)结果的展示。教师认真听取每个小组所展示的程序设计运行结果,并做出总结与评价。引导小组对本组问题解决的方法及效果做出评价,并且小组之间可以进行相互评价。 3 教学结果分析 通过对学生所完成程序设计的情况,分析如下: (1)对本文所研究的C语言程序设计的学习效果,学生反应采用任务驱动教学方式要好于采用传统教学方式。从学生喜欢教师采用的教学模式程度来看,该班中只有7%的学生喜欢传统教学模式,而有69%的学生非常喜欢新的教学模式,18%表示一般喜欢,仅仅有6%的学生表示不喜欢。 (2)任务驱动教学方式促进了学生对C语言课程的学习,该班学生在协作交流意识、程序设计、算法优化等各方面都得到了很好的锻炼。有81.05%的学生对采用任务驱动的教学方式表示很有效,说明在C语言课程教学中任务驱动教学方式有效地促进了他们对C语言课程专题的学习。但是还有16%的学生认为基本有效或不太有效,通过对学生的问卷调查和访谈了解到:这些学生中60%是因为教师准备的学习设备不够充分,小组成员太多,学习时间太短,35%的学生没有积极和教师、同学配合参与学习活动。有80%的学生认为在今后的学习中教师很有必要多采用信息技术环境下任务驱动教学方式。有76%的学生感到通过本次学习对学好C语言课程及其他程序设计语言更有信心了,87%感到与同学的交流对自己理解程序语言很有帮助。 总之,通过教师有效组织的任务驱动教学法,学生可以获得了不少知识、体验,并对相关知识点的掌握有所巩固。同时,在此基础上,教师引导学生进行归纳、总结,理清知识的内在联系,把零散的知识纳入科学的知识结构之中,使学生对知识的掌握达到结构化和系统化,有助于学生理解和记忆所学的知识,还有助于学生将所学的知识融会贯通,综合运用。 摘要:任务驱动教学法适用于学习操作类的知识和技能。以C语言课程为例,研究了任务驱动教学法的具体应用。设计了教学方案,涉及到教学目标、教学内容、学习任务等方面的分析设计,并通过教学过程的实现以及结果分析,表明任务驱动教学法的有效性。 关键词:任务驱动教学法,C语言课程教学,教学设计 参考文献 [1]倪宝童.浅析“任务驱动”教学法在计算机教学中的运用[J].辽宁师专学报,2007(6). 题 一、《学生成绩管理系统》 1、写一个“学生成绩管理”程序,要求程序如下功能: (1)成绩录入,(2)成绩修改(按学号修改),(3)成绩查询(至少提供按学号、按姓名、按班级、按课程等4种查询方式)(4)统计汇总(总分、平均分、最高分、最低分等) 2、一条学生的成绩记录结构如下: 学号(主键,无重复,数据类型可用长整型,编码位数及含义自定)姓名(字符型数据,长度自定)班级(整型数据,长度自定) 课程成绩(包括至少4门课程成绩,课程名自定,每门课程数据类型为实型数据,长度5位,小数1位) 3、学生成绩以文件形式存放 要求用链表实现数据的输入、查询、修改和删除操作。4.作业提交方式: (1)设计报告:在程序运行界面突出显示设计者的班级、学号和姓名。内容包括:设计思路、功能模块划分、系统结构图、程序清单。设计报告一律用A4纸打印,封面要统一,装订线在左侧,双面打印。 (2)光盘:每个班统一制作一张光盘,每人一个文件夹,命名为:学号和姓名。 光盘内含:源程序文件;可执行程序文件;测试用例;课程设计报告WORD文档。 题 二、《工资管理系统》 题 三、《图书管理系统》 1、主要的数据表 图书基本信息表,借书卡信息表,借阅信息表,图书分类信息表,代码表等.2、主要功能模块 图书基本情况的录入,修改,删除等基本操作.办理借书卡模块.实现借书功能.实现还书功能.能方便的对图书进行查询.对超期的情况能自动给出提示信息.具有数据备份和数据恢复功能.3、设计要求 图书编号可参考国家统一的图书编码方法,再完成基本功能模块的情况下,尽量使系统能具有通用性.题 四、《仓库管理系统》 题 五、《票务管理系统》 题 六、《通讯录管理系统》等等„„ 作业要求和提交方式: 同题一。 题 七、《学生学籍管理系统》 1、主要的数据表 学生基本情况数据表,学生成绩数据表,课程表,代码表等.2、主要功能模块 实现学生基本情况的录入,修改,删除等基本操作.对学生基本信息提供灵活的查询方式.完成一个班级的学期选课功能.实现学生成绩的录入,修改,删除等基本操作.能方便的对学生的每个学期成绩进行查询.具有成绩统计,排名等功能.具有留级,休学等特殊情况的处理功能.能输出常用的各种报表.具有数据备份和数据恢复功能.3、设计要求 学生成绩表的设计,要考虑到不同年级的教学计划的变化情况.对于新生班级,应该首先进行基本情况录入,选课,然后才能进行成绩录入.2 题 八、《地铁站售票机售票过程的模拟》 1. 本题内容为:用C语言编写一个模拟广州市地铁一号线某车站自动售票机售单程票的过程的程序。要求可以选择输入起点站。 2. 要求按“选到达站”→“投币“→“出票”的过程准确无误地完成一次购票操作。 选到达站:用显示菜单方式显示各车站名,然后按相应的车站编号选择; 投币:按到达站的票价,可用按下一次空格键代表投入一枚一元硬币。(不要直接按数字键); 出票:用给出文字信息表示出票操作(包括退还多投的硬币信息)。 3. 要求能对乘客购票步骤给予提示,对错误操作给予提醒。(如在规定的时间快到时未能投入足够的币额则显示催促信息,而规定的时间到后未能投入足够的币额者则取消本次购票操作并退还已投款项)。 4. 操作简便、可靠性好(不能遇误操作就出现退出运行程序或死机)。5. 作业提交方式:同题一。 题 九、《银行储蓄管理系统》 1、主要的数据表 定期存款单,活期存款帐,存款类别代码表等.2、功能模块 实现储户开户登记.办理定期存款帐.办理定期取款手续.办理活期存款帐,办理活期取款手续.实现利息计算.输出明细表.具有数据备份和数据恢复功能.3、设计要求 要进行实际调研,系统功能在实现时参照实际的储蓄系统的功能.同时要考虑银行系统数据的安全与保密工作.数据要有加密功能.题 十、《设备管理系统》 1、主要数据表 设备明细帐表,设备使用单位代码表,国家标准设备分类表等.2、功能模块 实现设备的录入,删除,修改等基本操作.实现国家标准设备代码的维护.能够对设备进行方便的检索.实现设备折旧计算.能够输出设备分类明细表.具有数据备份和数据恢复功能.3、设计要求 具体设备编码参考国家统一编码方法,功能实现也要考虑通用性.题 十一、《医院药品进销存管理系统》 1、主要的数据表 药品分类代码表,药品库存表,供货商信息表,采购信息表等.2、功能模块 新药品的入库.过期药品的出库登记,处理记录.药品库存检索.供货商信息检索.药品采购记录管理.药品用药说明信息管理.输出相应的数据报表.具有数据备份和数据恢复功能.3、设计要求 具体项目内容去医院进行调研,药品编码也应参考国家统一编码方法.题 十二、《英语学习助手系统》 1、主要的数据表 英语分级单词表,常用单词例句表,短文分级表等.2、功能模块 实现英语单词的录入,修改,删除等基本操作.实现常用英语单词例句的录入,修改,删除等基本操作.实现英语单词检索,翻译等.常用英语单词例句检索.根据难度随机生成一份单词测试题目.能够检索出短文极其翻译对照表.具有数据备份和数据恢复功能.3、设计要求 系统要考虑实用性,尽量实现英汉互译.英语单词和短语可以考虑加上声音.题 十三、《大学生就业咨询系统》 1、主要数据表 用人单位基本信息表,专业信息表,地区代码表等 2、功能模块 对用人单位的基本信息进行录入,修改,删除等.实现毕业生专业信息的维护.定时发布用人单位的毕业生需求信息.方便的实现对人才需求信息的检索.对用人单位的级别能够自动进行变更.能够对历年的毕业需求信息进行统计,分析.具有数据备份和数据恢复功能.3、设计要求 方便毕业生进行就业信息检索,可考虑将就业信息在网上进行发布.题 十四、《教务辅助管理系统》 1、主要的数据表 教师基本信息表,课程表,教室资源表等 2、功能模块 对上课教师基本信息进行管理.对全院开设的课程进行管理.录入教师基本上课信息.实现自动排课功能.计算工作量 能够进行各种数据统计.能够输出相应的报表.具有数据备份和数据恢复功能.3、设计要求 软件功能主要考虑实用,具体功能模块一定要先进行调研.如果有下列情况,则视情节严重程度,成绩下降若干档次,直至不及格: 光盘文件含有病毒或者内容不能正确读出; 抄袭、复制别人程序或文档; 未能按时提交实验报告和光盘。 一、课程设计的目的 高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。 课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节,培养学生的探索精神和创新能力。通过答辩训练学生的综合表达能力。 二、课程设计教学的基本内容和要求 1、课程设计教学基本内容 高级语言课程设计不仅是对程序设计能力的综合锻炼,更是对团队合作、软件开发与项目管理过程的训练。因此,课程设计根据题目的难度由小组合作完成,每个小组1-4人。整个课程设计分为以下几个阶段进行:选题与开题、系统设计、系统编码实现、系统测试、撰写课程设计报告、系统评价与验收。 (1)选题与开题:题目可来自教师指定的参考题目,也可自由选题,特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。 (2)系统设计:系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。 (3)系统编码实现:小组成员根据初步的系统设计方案,对系统编程实现。(4)系统测试:在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。(5)撰写课程设计报告:完成文档整理,按照要求完成课程设计报告。(6)系统评价与验收:通过小组答辩的形式对程序的功能进行评价与验收。 2、课程设计教学的要求 参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下: (1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯; (4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面: 程序的总体设计和算法分析。 程序流程图、函数说明 源程序代码清单 测试数据和测试过程记录 遇到的问题及解决方法分析 课程设计小结 三、课程设计的进度安排 系统整体设计和详细设计 1天 系统编码实现 1天 系统测试 1天 撰写课程设计报告 1天 演示软件和答辩 1天 四、课程设计的考核 评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的课程设计报告,严格检查以下各项任务完成情况: 1、设计文档中要求项目是否齐全。 2、程序中运行时的屏幕提示信息是否准确: 如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。 3、问题和或任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。 问题的解决方案采取由顶向下设计的形式,在适当的地方使用伪代码,把整个解决方案划分成若干模块。 5、程序完成后的代码应当加以注解。最少应清楚指出每一个模块。 6、用于检查程序的测试数据,或者对一个控制程序给出测试的例程。测试应考虑探索通过程序的几条路径,在合适的地方选择打印输出来。 7、程序的技术文档:必须包含函数的原型说明和所用变量的全体清单 8、程序顺利运行,结果正确;测试程序是否工作且满足设计指标并评价其效率。 五、指导书、参考资料 《C程序设计》 谭浩强编 清华大学出版社 《C程序设计思想与方法》 尹宝林编著 机械工业出版社 1 激发学生的学习兴趣 要想学生学好C语言,提高学生的学习兴趣,首先必须让学生对课程有个全局的认识。学生在接触一门新课程前,最关心的问题就是这门课程是学什么、学完之后可以做什么[1]。因此,在教学之初,教师应首先使学生明确学习这门课程的目的、要求以及目标,使学生初步了解该课程在本专业中处于什么位置,为什么要学习该课程,学好该课程对于个人的专业发展有什么作用,教师可以结合程序设计在本专业中应用的实例,使学生明白学习该课程的重要性和必要性,从而激发学习兴趣。另外,由于C语言的概念比较抽象,在每一章初期概念讲解阶段,可以多举一些与生活密切相关的例子,为概念的引入做准备,以激发学生的学习兴趣。例如,在介绍数组这个概念时,由于数组是一种新的数据类型,为加深学生的理解,可以提出一个问题让同学们思考:一个班学生的学习成绩应该如何存储呢?并提示学生这些数据有何特点,从而引出在C语言中如何存储,从而引出数组这个概念。这种方法能够发展学生的探索能力,避免了直接的理论说教,不仅能激发学生的学习兴趣,还能加深学生对新知识点的理解。此外,在教学过程中,布置一些有趣味性的编程题目,积极鼓励有能力的同学参加软件设计大赛,使学生通过独立或团体完成一个软件设计,增强他们的学习自信,调动学习热情,提高学习兴趣。 2 注重知识的归纳总结 和自然语言一样,许多字词可能是相近的、相反的或者是相同的,字词间存在着内在的联系[2]。在C语言中,涉及到此类的知识点时,可以采用归纳总结的方法进行教学。例如,循环结构中的while语句,dowhile语句和for语句。在学生充分掌握三种语句的基础上,教师对这三种循环语句进行归纳总结,归纳三种语句的异同点,并针对同一程序详细介绍如何用这三种语句分别实现。便于学生对循环结构的灵活掌握。另外,C语言中学到的知识点都是零星、片面的,有些甚至是容易混淆的,比如说运算符的优先级和结合性,教师在课堂中对此类知识点进行归纳总结,方便学生的比较与记忆。并且在新的一章开始学习之前,对上一章的内容进行重点、难点以及小结的归纳总结,便于学生温故而知新,避免学生边学边忘,前后知识不衔接的问题。 3 注重算法思维的培养 算法是程序设计的灵魂,在程序设计中要设计一个好的程序首先要对程序的算法有较详细的了解,其次才是采用编程语言对算法的实现。但很多学生学完C语言课程后不会编程,甚至不知道从何下手。造成这一现象的主要原因是由于程序设计的思想与学生传统的思维方式不一致,学生缺乏对算法的抽象思维能力,因此不会分析问题,无法写出算法,这就需要教师在介绍程序范例时注重学生算法思维能力的培养。教师首先提出问题,可以选择一些与实际生活贴近的小例子,如鸡兔同笼问题,引发学生进行思考,然后详细分析问题,启发学生用现有的思维方式去思考如何解决,得到解决问题方法后再启发学生将其转化为算法,并可以改变现有条件,使学生在对新问题的思考过程中,培养学生对算法举一反三的能力,最后教师对算法进行总结归纳,加深学生对这类问题的理解。将具体问题和学生的现有知识联系起来,有利于克服学生的畏难情绪,也有利于使学生快速掌握算法。 4 认真上好实验课 《C语言程序设计》是一门实践性很强的课程,“边学边练”是掌握这门课程的最好方法。因此,我们根据理论教学进度安排了实验课,并制定了专门的实验指导书,实验指导书明确了上机实验目的和要求,制定了实验内容和详细的操作步骤,并为程度较高的学生设置了选做题目。在实验过程中,注重以学生为主体,教师为主导,安排的实验内容循序渐进,采用模仿-改正-编程的实践训练思路来培养学生[3],使学生在运行程序和调试程序中锻炼分析问题和解决问题的能力,对于实验过程中学生提出的疑难问题,教师首先加以引导或者提示,启发他们独立思考解决问题,经过自己思考解决问题往往印象比较深,也能激发学生的学习热情,对于实验中存在问题比较多的题目,教师及时进行总结,并在课堂中统一进行指导,不仅节约时间,满足同学们的需要,而且对知识的掌握起到巩固加强的目的。 5 提高教师素质 由于《C语言程序设计》课程教学任务较重,所以计算机专业老师难以承担所有的课程教学任务,造成许多任课老师都是各个院系的非专业老师,缺乏系统的程序设计思想。针对这一情况,学校每学年都多次组织计算机学院多年从事课程教学并且经验丰富的专业老师对任课教师进行培训,针对课程内容进行串讲,在串讲过程中,任课老师可以对在教学过程中的疑难问题以及教材中出现的问题进行讨论。促进教师之间的教学交流,并创建了QQ群以及网络平台,便于老师们之间的信息共享以及交流,努力提高教师素质。另外,学校每学年组织《C语言程序设计》教学竞赛,教师教学的积极性显著提高,使教师不断扩充自己的知识水平和能力,不断学习新的教学方法和手段,从而提高课堂教学效果。 6 改革考核方式 为了扎实推进学校教学改革,切实提高《C语言程序设计》课程教学质量,对《C语言程序设计》课程考试环节进行了改革,在传统的考核方式理论成绩(70%)和平时成绩(30%)基础上,新增了上机考试环节,课程成绩由平时成绩(15%)、理论成绩(70%)、机试成绩(15%)等3部分组成。理论考试重点考核学生的C语言基础知识、编程思想和算法分析能力,上机考试重点考核学生的动手编程操作能力和程序调试能力。机试的考试系统由学校自主开发,学生考试时由系统自动从100套试题库中随机抽题进行考试,做到了严格的公平公正。实践后表明,这种考核方式能够更加客观地反映学生的知识掌握程度,同时能够促进学生主动学习,提高学生的动手操作能力。 实践证明,C语言的教学改进可以提高学生的学习兴趣,有利于学生对相关概念的理解以及编程能力的培养,使学生逐步掌握分析问题、解决问题的思维能力,同时也为非计算机类专业学生将程序设计思想灵活运用到自己的专业领域打下了基础。 参考文献 [1]胡丹.非计算机专业《C语言程序设计》教学探讨[J].电脑知识与技术,2011,7(34):8983-8985. [2]邓静.C语言程序设计教学方法的探讨[J].教育教学论坛,2010(9):88. 专业 班级 学号 姓名 一、实践目的 通过本课程设计教学,为学生提供一个综合运用所学知识,解决实际问题的机会,增强其实践动手能力和工程实践能力,锻炼和培养学生的自学能力,使学生能利用C++语言设计功能较全的一个应用程序,得到程序设计方法、文献资料查询、设计报告写作的综合训练。同时加深对< 二、实践任务与要求 1、编写一个简单的基于MFC的应用程序(5学时) 《C++程序设计实践教程》P218-P226综合设计题中任选一题。 2、参照《C++程序设计实践教程》中P64-74的实例,从以下各题中任选一题,在vc++环境下编写一个基于控制台方式的应用程序(Win32 Console Application,25学时)1).教学管理系统。学生信息包括学生的班级代号、学号和姓名,选课信息包括每个学生该学期所选课程,成绩包括每个学生所选的课程的考核成绩。系统功能要求如下: (1)能输入学生信息、选课信息和成绩。 (2)能输出各班的某门课程不及格的名单(含学号、姓名和成绩)。(3)能输出某门课程全年级前5名的学号、姓名和成绩。(4)能输出某门课程每个班的总平均分(从高到低排列)。(5)能输出某门课程某班的成绩单(按学号排列)。 2).通讯录管理程序。通讯录要求存储姓名、性别、工作单位、住宅电话、移动电话、办公电话、E-mail地址等内容。系统功能要求如下: (1)通讯录记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。(2)增加某人的通讯录。(3)修改某人的通讯录。(4)删除某人的通讯录。 (5)按多种方式查询符合条件的信息。(6)用文件存储数据。 3).图书室管理系统。该系统存储以下信息: (1)对于同一作者同一书名的书,存储书名、书目编号、作者名、库存册数(不包括已借出的)、已借出册数。 (2)对于每一本书还要存储一个登录号(这是区别每一本书的唯一标志)、当前借阅该书的读者姓名与借书证号、借阅日期。 系统功能要求如下:(1)创建存储系统。(2)增加新书。 (3)删去无使用价值的旧书。 (4)处理借书。要求读者提供书目号与登录号,一位读者限借2册。检查库中有无读者要求借阅的图书,检查该读者已借阅图书数量。 (5)处理还书。 (6)查询某登录号的书是谁借了。 4).工资管理系统。该系统在磁盘上存储了某单位上月全体职工的工资信息。对于每一位职工存储以下信息:月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通费,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。个人所得税计算方法设为:工资少于800元的部分为0,800~2000元的部分为5%,2000~5000元的部分为10%,5000元以上的部分为20%。 系统功能要求如下: (1)创建存储职工工资信息的存储系统。(2)添加某职工的工资信息。(3)删除某职工的工资信息。 (4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)。(5)输出指定编号职工的工资信息(借查询用)。(6)输出当月全体职工的工资信息(发工资用)。 5).车票管理系统。一车站每天有n个发车班次,每个班次都有一班次号(1,2,3,…,n),固定的发车时间固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。例如: 班次 发车时间 起点站 终点站 行车时间 额定载量 已订票人数 1 8:30 长沙 广州 2 9:30 长沙 南昌 1.5 3 8:00 长沙 南宁 4.5 4 10:00 长沙 武汉 3.5 ……(1)录入班次信息(信息用文件保存),可不定时地增加班次数据。 (2)浏览班次信息,可显示出所有班次当前状况。如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息。 (3)查询路线:可按班次号查询,也可按终点站查询。 (4)售票和退票功能。当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。 三、实习纪律 1、独立思考、完成程序设计的所有内容,严禁抄袭。2、按时上、下机,不得无故缺课 四、设计报告要求 设计报告要求简洁、严谨(3000-4000字,4页),应包括以下几方面的内容: 1、系统功能概述 2、主要的数据结构概述 3、系统结构框架 4、各主要功能模块的实现算法(画出流程图或自然语言描述) 5、调试过程中遇到的主要问题及解决的方法;对设计和编码的回顾讨论和分析;改进思想;收获和体会等 6、主要程序模块的清单 五、时间安排 上机时间:18-19周 最后一次实验检查程序运行情况并交设计报告。 六、成绩评定规则 1、程序调试结果分优、良、中、及格、不及格五等,占总课程成绩的60% 2、实验过程评价:在上机操作过程中学生的上机能力按优、良、中三档评定,占课程总成绩的20% 3、实验报告评价占课程总成绩的20% 指导教师 李利明 中南大学 计算机基础教学实验中心 一、课程的任务和目的 任务: 《C语言课程设计》是对学生的一种全面综合的训练,是必不可少的实践环节。学生能较熟练地使用基本数据类型、各种控制结构、数组、结构体、指针和函数进行程序设计,对较综合性的问题,能从问题的分析、功能模块的划分进行较综合性的程序设计。 目的: 1、培养学生综合运用所学的知识,通过上机实践,提高分析和解决问题的能力。 2、通过实践训练,提高学生在理论计算、结构设计、查阅设计资料、运用标准与规范编程能力。 二、课程设计内容与要求 (一)设计内容: 1.综合字符串、控制结构、函数、输入输出技术。 2.综合结构体、结构体数组、控制结构、函数、输入输出技术。3.综合指针、结构体、结构体数组、控制结构、函数、输入输出技术。 (二)设计要求 1.以下设计题目难度不一,可自行选择一个。 2.要求能较熟练的应用基本数据类型、各种控制结构、数组、字符串、结构体(数组)、指针、函数、文件。 三、设计题目 设计 一、班级成绩管理系统 设计内容:对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求: 1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 2、本系统显示菜单: 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存到文件 d、从文件读入成绩 e、成绩排序 f、成绩修改(要求先输入密码)g、成绩统计 1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩 3)显示超过某门课程平均成绩的学生人数 g、退出系统 (3)执行一个具体的功能之后,程序将重新显示菜单。(4)将学生成绩保存到文件中。 设计二 小学生测验 设计内容:面向小学生随机选择两个整数形成四则运算算式要求学生解答,最后生成作答试卷保存到文本文件。 1、电脑随机出10道题,每题10分,程序结束时显示学生得分; 2、每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则给出正确答案; 3、对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; 4、总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。 设计 三、大整数加减法运算 设计内容:大整数加减法运算 在高精度运算的场合下,通常需要对超级大的整数进行运算。编程实现两个大整数的加减法运算,求两个不超过200位的整数和或差(使用数组)。例如: ******21229 + 4343***4475******34------------------4343*********63 *********00-1------------------*********9 设计 四、学生通讯录管理系统设计 设计内容:“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。1.数据包括:姓名,电话,地址,邮编及e-mail。2.可对记录中的内容进行修改。3.可增加或删除记录。4.可显示所有保存的记录。5.可以按姓名或电话进行查询。 6.数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作。7.菜单界面自行设计。 设计 五、大奖赛评分程序 设计内容: 对参赛结果分数进行处理:参赛选手 n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。 选手的最后得分lastScore计算方法为: (1)m<9时,去掉一个最高分和一个最低分后另m-2个得分的平均值。(2)m≥9时,去掉两个最高分和两个最低分后另m-4个得分的平均值。 假设事先已经建立了文本文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。编制程序,依次从数据文件file1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个文本文件file2.txt中同时输出如下形式的结果信息。例如:参赛选手人数n=5,评委人数m=7,磁盘文件file1.txt中的初始数据为: 1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2 2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3 3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6 4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3 5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9 程序执行后,屏幕显示结果以及磁盘文件file2.txt中的结果均应该为: 可进一步考虑找出比赛的第1至第k名,也在屏幕以及file3.txt中同时输出相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,则有效分(即已删除原来的最高分后)中最高分高者名次优先)。 设计 六、用扑克牌计算24点 设计内容:一副扑克牌的每张牌表示一个数(J、Q、K分别表示11、12、13,两个司令都表示6)。任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减-乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4个数顺序可以任意组合,4个运算符任意取3个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为24。输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出-1表示无解。 样例输入 样例输出: 2 3 12 12 5 5 5 5 ((3-2)*12)+12(5*5)-(5/5)1 3 5 6(1+(3*6))+5 8 13 9 4 8+((13-9)*4)2 13 7 7 2*(13-(7/7))5 5 5 2 四、对学生能力培养的要求 1.培养对问题的分析、功能划分以及数据组织的能力; 2.培养应用各种数据类型和控制结构的操作能力; 3.培养算法设计、程序设计和调试的能力; 五、考核 成绩构成: 1.设计过程的表现。包括按时做设计、认真、投入和努力程度等20%; 2.设计结果验证。包括设计结果是否正确、完整、独立完成程度及掌握综合性、编程工作量的情况等40%; 3.设计报告。包括设计报告是否规范、完整、能反映设计过程40%。 成绩等级。课程设计的成绩分为:优秀、良好、中等、及格,不及格五个等级。 说明: 1.凡未按要求或不能按时完成者不能评定为及格。2.未交设计报告者,以不及格评定。 3.与他人雷同或抄写复制他人程序,以不及格评定。 六、说明 (一)设计的一般步骤: 1、选题与搜集资料。 2、分析与概要设计:根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计。 3、程序设计:运用掌握的C语言编写程序,实现程序的各个模块功能,注意锯齿型程序书写规范。 4、调试与测试:调试程序,并记录测试情况。 5、完成课程设计报告。 6、验收:指导教师对每个同学提交的程序进行综合验收。 (二)设计报告的规范说明: 设计报告要求规范书写,应当包括如下8个部分: 1、需求分析、基本要求:描述要求编程解决的问题,给出程序要达到的具体的要求。 2、算法思想:描述解决相应问题算法的设计思想。 3、模块划分:描述所设计程序的各个模块(即函数)功能。 4、概要设计:给出所使用的基本数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。 5、详细设计:主要函数核心代码要求有注释语句。 6、测试数据:设计测试数据,或具体给出测试数据。要求测试数据能全面地测试所设计程序的功能。 7、总结分析。 8、程序清单。 《C语言程序设计》是计算机相关专业的一门基础课程, 是培养学生计算思维能力、程序设计与实现能力的入门课程, 同时也是《数据结构与算法分析》等课程的先导课程;C语言也是IT企业中常用的编程语言。因此, 该课程的教学对学生后续课程的学习和今后的工作都会产生重要的影响。对于初学者而言, 因为逻辑思维能力较弱, 所以在学习过程中积极性不高, 学习效率低下, 难以提高其编程语言解决实际问题的能力。经过多年的授课, 笔者对《C语言程序设计》的课程教学进行了一些探讨和实践 二、教学中存在的问题 1. 教学主体以教师为主 在传统的教学中, 教学主体往往以教师为主, 高等院校对教师的考核注重“科研”, 因此很多教师容易忽视“教学”的重要性。在《C语言程序设计》的教学中教师方面的问题主要包括: (1) 课程的知识点较多, 存在教学内容与教学时数之间的矛盾; (2) 教师的教学方法、方式陈旧, 难以激发学生主动学习的兴趣; (3) 教师在教学中大多重课堂教学, 轻实验教学; (4) 任课教师往往没有工程实践经历, 其综合业务水平有待提高。 2. 教学中没有充分调动学生学习的积极性 《C语言程序设计》的课程学习是在新生入学的第一学期, 这对课程的教学也带来一定的消极影响, 主要体现在: (1) 学生学习目的不明, 动力不足, 很多学生以为进入了大学主要是锻炼社会交往能力; (2) 学生的逻辑思维能力较弱, 想象空间较窄, 遇到挫折容易产生厌学情绪; (3) 由于受传统应试教育的影响, 学生大多重教轻学, 重理论轻实践, 考试能力强, 编程能力弱, 不能用计算思维解决实际问题。 三、教学改进的举措 针对上述问题, 笔者摒弃以单向性知识传授为主的教学模式, 主张讲课教师应以课程的内容和学生的知识积累为基础, 积极引导学生创造性地运用知识和能力, 自主地发现、分析和解决问题, 学生在研讨中学习知识、培养能力和提高素质。具体的教学实施方案包括: 1. 编制详细的教学设计方案 为帮助学生提高自主学习和创新的能力, 需要制定详细的教学设计方案, 该方案是课程教学具体实施的主线, 它相当于一场晚会的节目演出单, 讲课教师是导演和主持人, 而学生是主角和演员。教学设计方案主要包括:教学日期和时数、教学内容和主题、实验内容、教学方法、教学手段和作业安排等。 2. 优化教学内容 该课程存在教学内容较多而教学时数受限, 全面而细致的讲解所有的内容已不合时宜。教学内容的优化应满足教学目标的要求, 满足学生的学习需要, 激发学生的学习兴趣[1]。因此, 我们按照“少而精、宽而新, 突出核心的知识点”的原则优化教学内容, 体现教学内容的先进性、实用性。按照学习进度, 给学生安排相应阶段的学习任务, 有些内容要求学生自主完成。 3. 改变传统的教学方式 传统的“填鸭式”教学方式效果并不好[2], 因此, 我们在教学引入并主要采用了“讨论式”教学, 以充分调动学生学习的积极性, 具体的做法包括: (1) 每次授课结束前, 布置预习思考题, 要求学生在课下充分预习, 课上围绕思考题展开讨论, 每次课分组讨论1-3次, 每次2-5分钟;学生课堂讨论、发言或回答问题的时间约占总学时的20%; (2) 随机抽查回答问题与各组指派同学回答问题相结合, 回答问题不以正确性为唯一依据, 也注重表达过程的清晰度和逻辑性, 尤其鼓励问题回答者阐述自己的观点或提出问题。统计表明, 学生回答问题次数平均水平有6-8次; (3) 将学生在课堂教学过程中的表现按评分标准将其分值记入到平时成绩档案中。 4. 加强教学方法的改革 在教学中应以学生为中心, 引导学生走向知识, 通过合理施压, 注重师生的互动交流, 培养学生善于总结、发现问题和主动学习的能力[3,4]。在《C语言程序设计》的课程教学中, 我们对教学方法做了如下改革: (1) “案例教学法”贯穿教学全过程, “学生信息管理系统”贯穿了该课程的全部章节, 是学生在学习过程中的“长期任务”; (2) “任务驱动法”引导学生学习, “长期任务”可以分解为多个对应于知识点的“短期任务”, 有助于学生逐步提高编程能力; (3) 用“负反馈教学法”解决学生学习中问题, 有效的提高学生的学习效率; (4) 弱化语法, 以“算法为先”实现实际问题的求解; (5) 并用“多媒体”教案扩大课堂信息量, 精心制作与教材配套的CAI课件和习题。 5. 建立新型的实验教学模式 为了激发学生学习的积极性, 我们通过建立新型的实验教学模式[5], 包括: (1) 为增强学生学习的体验感, 减少了基础验证型实验比例, 增加综合型实验和设计性实验的比例; (2) 建立以小组为单位的实验完成机制, 培养学生的团队合作能力; (3) 加强实验报告的规范, 增强学生的职业岗位意识; (4) 建立定期的课外讨论机制, 教师定期发布讨论主题, 学生以小组为单位进行准备, 然后通过专题讨论和点评, 并将学生的表现记入平时成绩档案; (5) 鼓励实验动手能力的较强的同学自己设计实验项目, 并依据结果给予其一定的平时成绩奖励。 6. 健全严格的学生考核机制 传统的考核以笔试为主, 学生为了应对考试采取死记硬背的方式, 为此我们建立严格全面的考核机制, 包括: (1) 建立学生学习小组, 分组原则是小组内部异质化, 小组之间同质化; (2) 建立每个学生平时学习成绩档案, 学生的平时表现与分值相对应; (3) 制定公平合理的成绩评定方案:学期总评成绩=平时成绩×60%+期末考试成绩×40%, 平时成绩=小组成绩*小组人数*组员在项目组的贡献百分比 (组员的贡献百分比是在教师给出小组成绩之前, 经过该小组的全体成员一致同意后提交给任课教师) , 这种考核方式可以促进学生的团队协作精神和竞争意识;而期末考试侧重于通过编程以解决实际问题, 从而促使学生平时多思考、多上机实践, 有助于提高他们的逻辑思维和编程能力。 7. 积极开展第二课堂教学 积极引导学生参加课外实践活动, 主要采取了如下措施: (1) 开设了网络教学平台资源, 为学生提供大量的经典实例程序、教学课件和习题, 并通过电子邮箱、QQ群和微信群等手段, 随时为学生答疑, 了解学生的学习状况以调整教学内容和手段; (2) 鼓励学生自主创立或参加各种创新社团和讲座, 目前, 本学院已成立“海盗社”等实践社团, 面向全校学生举办多种创新活动, 2014年共组织了11场关于程序设计相关的讲座和活动; (3) 将各类程序设计竞赛和实践教学相结合, 鼓励学生参加各类程序设计大赛, 为此学院提供了稳定的经费和场地支持, 并依据参赛结果给学生一定的表彰和物质奖励; (4) 在大一第二学期末段, 组织学生到印孚瑟斯技术中国有限公司等IT企业实地参观学习, 了解这些企业的文化、发展和对职业岗位能力的需求, 进一步让学生明确个人今后的发展目标和计划, 激发其学习热情和自身的发展潜能[6]。 四、结束语 以上是我们在《C语言程序设计》课程教学方面所做的探索和尝试, 学生的逻辑思维和实践编程能力得到了较明显的提升: (1) 在全国和上海市的计算机二级C语言考试中, 本专业学生的通过率逐年提高; (2) 学生参加上海市和全国的C语言程序设计大赛获得良好的成绩; (3) 近年来学生对本课程教学反应和评价良好, 本课程被评为学校的重点课程。 摘要:本文提出了《C语言程序设计》课程教学中存在的一些问题, 并针对性的给出了课程教学改革的实施方案, 主要包括编制详细的教学设计方案, 改变传统的教学方式, 建立严格的学生考核机制, 加强教学方法的改革, 建立新型的实验教学模式等。 关键词:C语言程序设计,教学方法,考核机制 参考文献 [1]韩立毛, 范新明, 徐秀芳.应用型本科院校“程序设计基础”课程的教学模式研究与实践[J].计算机教育, 2010 (2 ) :128 -131, 143 . [2]王金鹏.程序设计基础教学方法的改革与实践[J].长春教育学院学报, 2014, 30(8 ) :105 -106. [3]孙慧然, 刘刚, 孙静波.“程序设计基础”理论与实验教学的改革与实践[J].实验技术与管理, 2012, 29(4 ) :299 -300. [4]杨俊生, 张润.基于计算思维的“C程序设计”案例设计初探[J].工业和信息化教育, 2013 (6 ) :64 -69. [5]杨锋英.程序设计基础课程教学探索[J].计算机教育, 2013 (4 ) :25 -28. 【C语言课程设计任务书新——刘阳】推荐阅读: c语言课程设计题目09-25 2022语言课程设计任务书08-22 C语言课程设计与评价学习总结09-12 C语言与语言混合编程DSP设计08-23 c语言程序设计实例06-19 c语言程序设计试题库07-01 c语言程序设计第10章07-07 c语言程序设计第五章09-15 C语言程序设计实验指导及报告07-26 C语言程序设计教学大纲72du09-292.C语言课程设计任务书新——刘阳 篇二
3.C语言课程设计选题 篇三
4.C语言课程设计任务书新——刘阳 篇四
5.谈《C语言程序设计》课程教学 篇五
6.C语言课程设计任务书新——刘阳 篇六
7.《C语言课程设计》 教学大纲 篇七
8.C语言课程设计任务书新——刘阳 篇八