心算抢答系统C语言课 程 设 计 报 告.docx
《心算抢答系统C语言课 程 设 计 报 告.docx》由会员分享,可在线阅读,更多相关《心算抢答系统C语言课 程 设 计 报 告.docx(14页珍藏版)》请在冰豆网上搜索。
心算抢答系统C语言课程设计报告
课程设计报告
课程名称C语言程序设计
课题名称心算抢答系统
专业机械设计制造及其自动化
班级0983班
学号200913090324
姓名
指导教师王颖
2010年7月2日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题心算抢答系统
专业班级机械设计0983
学生姓名
学号200913090324
指导老师王颖
审批
任务书下达日期2010年6月26日
任务完成日期2007年7月2日
<一>设计内容与设计要求
1.设计内容
(1)问题描述
适用于小学生数学心算抢答赛。
比赛题型分为两种:
“四则简单运算”和“四则混合运算”,计算机随即出题,选手抢答。
要求进入每种题型比赛时,计算机均有提示,每队的记分窗口随得分情况而更新。
(2)功能要求
1,
显示如下画面:
2,举办单位确定参赛的队数,每队分配一个记分窗口,底分均为100分。
3,比赛题型分为两种:
“四则简单运算”(N道题)和“四则混合运算”(M道题),N,M由举办单位确定,计算机随即出题,先出“四则简单运算”题,每出一道,选手抢答,做对一题加5分,做错一题减5分。
后出“四则混合运算”,做对一题加10分,做错一题减10分。
要求进入每种题型比赛时,计算机均有提示,每队的记分窗口随得分情况而更新
4,根据最后总分,由高到低宣布比赛名次,按任意键退出比赛系统。
5,要求整个设计以人为本,用户界面友好。
(3)算法提示
1,用简单的程序设计方法
2,一定的窗口设计技巧
3,简单的数据类型
(4)数据测试
随即函数产生
(5)其他
对该系统由兴趣的同学可以在实现上述基本功能后,完善系统的其他功能。
如底分的设置,每种类型题目的加,减分的多少均可由举办方设定。
2.设计要求
1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5).实际操作过程中遇到的问题及解决方法:
设计总结及心得体会.
6).上机演示。
3.分组及其安排
所选题目根据学生学号确定,一共八道题目,每四位选一题,即1-4号选择第一题;5-8号选择第二道题目,依次类推;当人数超过32位的时候,接下来的人数从第一题开始选,每人依次选一道。
4.成绩评定
程序设计方案是否合理;程序设计是否正确;调试结果;设计说明书的质量高低;答辩时回答问题情况;课程设计周表现情况;总评成绩记入“课程设计成绩评分表”。
<二>进度安排
第18周星期一08:
00——12:
00
总体设计,明确思路
第18周星期三08:
00----12:
00
编制程序,调试程序
第18周星期四08:
00----12:
00
编制程序,调试程序
第18周星期五08:
00----12:
00
学习心得,经验总结
目录
一、程序的模块组成以及各个函数的功能7
1.程序的模块组成7
2.各函数的主要功能7
3.相关的数据类型7
4.流程图8
二、程序调试11
三、总结12
四、附录14
评分表23
一.程序的模块组成以及各个函数的功能
1.程序的模块组成
主菜单函数、主函数:
main();
自定义子菜单函数:
voidmain();voidadd();voidtea()
voiddelete();voidmodify();
2.个函数的主要功能
主函数:
显示主菜单;
自定义子菜单函数:
显示子菜单
3、相关的数据类型
1.用简单的程序设计方法
2.一定的窗口设计技巧
3.简单的数据类型
4、流程图
三、总结
不经历风雨怎么能见彩虹!
一周的C语言课程设计即将结束,现在回想起来真是五味俱全,从开始的懵懂无知到现在做出一本挺有厚度的资料,我不但实践了课本的知识,还制作出心算小程序,虽然很多人帮了我的忙,仍旧感觉自己对C语言有了深入的了解,还是有所成长,有所收获,在实践中,自己编程常会犯错误,并总结一些克服缺点的方法。
深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。
只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。
其实这一周遇到了不少的挫折,第一次上机就有些不知所措,到底该从何下手呢?
后来有朋友同学的鼓励,慢慢调整心态,开始动手操作,原来编程很有意思,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是一个函数放错了地方所致,有时一个功能不知道怎么实现找这个、找那个。
有所编到最后一运行却告诉我错误,那真的很让人恼火。
以前上课都是学一些最基本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西,这样自己非常的投入,其实什么事情只要自己用心了,就会有所感触,有所收获。
真的觉得有味道,生活都变充实了。
此次程序设计主要用了函数的调用,if、else选择语句,时间函数,标准输入输出、随机取整函数等基本知识点,结合课本知识加上自己的应用结果颇为令人满意,但是还有很多的缺陷与不足,这是我可以清醒认识到的。
C语言是一项细致深入的工作,不仅要有严谨的思路,还要在实践中有耐心,要细心,如果无法沉着冷静,真的会看不到结果,毫无收获的。
C语言又是一种系统开发语言。
这一个学期对C语言的接触让我明白了自己的不足之处,对书上内容的理解不够透彻。
经过一周的上机操作,让我认识到自己的操作能力的不足。
不能很快的调试好程序,我想这与缺乏实际操作,以后要多实践课本知识,“孰能生巧”,用得多了,遇到的问题多了,自然就有了经验,一旦总结了经验,以后程序调试就容易很多。
通过这次的课程设计,我受益匪浅。
它让我了解了细心的重要性,程序中若有一丝一点的错误就会影响整个程序,而使其不能运行。
当我第一次拿到课程设计的任务书的时候,我都非常的兴奋,因为这是我们一次很好的锻炼机会。
我经过一周的C语言课程设计,我不但实践了课本的所学的知识,还亲自制作了自己的小程序,感觉自己对C语言有了更深入的了解。
在实践过程中,自己编程的时候常常会犯错误,并总结了一些克服缺点的方法。
而且更深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。
只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。
在设计程序的同时也增长了翻阅有关文献的能力,加强了实践能力及自学能力,培养了分析问题、编程和动手能力,掌握了程序设计基本技能。
在调试过程中,特别让我印象深刻的是自己开始在程序调试的时候,开始并没有并没有看到预期的结果,最后我仔细检查了源程序代码,发现自己在申明函数的时候,出现了一个严重的语法问题,导致我整个程序都不能运行。
我开始心理发慌起来,我开始放弃自己的先前做的工作,觉得自己是第一次做设计,第一次看到这么长的程序代码,有理由放弃,但是,想着自己很辛苦的写了这么久,还是不想放弃,我开始慢慢去找我出的问题,我从头到尾检查了一面,终于发现了问题之所在,我的心情顿时高兴起来,终于看到了希望!
我越来越兴奋,我从新把源程序放入WIN-TC中进行调试,终于是“柳岸花明又一村”。
同时也让我真正体会到一句话:
“胜利永远是属于永不放弃的人!
”O(∩_∩)O哈哈~
当然在本次课程设计的过程中遇到不止上面那一个困难,也有很多困难被我解决了。
比如,有一个操作上的功能错误。
我怎么找也找不到原因所在,找了老半天结果却是操作错误把一个函数放错了地方所致。
有的时候一个功能不知道怎么实现找这个、找那个源代码都不行。
当编译到最后一行运行却告诉我错误,那真的很烦人。
以前上课都是学一些最基本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西,这样自己非常的投入,有时候一编就是二三个小时坐在电脑前面,有时候连吃饭都忘了。
但现在回过头来看,还是挺有成就感的。
通过本次课程设计的学习,我体会到学好计算机一定要重视实践环节,不仅是在学习C语言,还是其他计算机语言都是一样的重要。
所以我以后在学习过程中更加重视实践环节的重要性。
这样我相信自己的计算机水平一定会取得更好的进步!
四、附录
#include
#include
#include
voidmain()
{intsimple();
intmix();
voidexchange(int*p1,int*p2,int*p3);
structteam
{charname;
intscore;
}tea[3]={{'A',100},{'B',100},{'C',100}};
inti,p,j,t,k,n,m;
inta,b,c;
intresult1,answer1,result2,answer2;
int*q1,*q2,*q3;
charch1,ch2;
printf("************************************\n");
printf("$$\n");
printf("$欢迎参加小学生心算抢答赛$\n");
printf("$按任意键开始比赛$\n");
printf("$$\n");
printf("$$\n");
printf("************************************\n");
for(i=0;i<10;i++)
printf("\n");
printf("inputsimplecountnumbern:
");
scanf("%d",&n);
printf("\ninputmixcountnumberm:
");
scanf("%d",&m);
printf("\n");
printf("pressanykeytobegain!
\n");
printf("Begain!
\n");
printf("Thefirstturn.\n");
printf("Thisissimplecount.\n");
printf("Pleaselookatthequestion:
\n");
for(p=0;p{result1=simple();
printf("Pleaseinputoneteamname:
");
getchar();
scanf("%c",&ch1);
printf("\ninputyouranswer:
");
scanf("%d",&answer1);
for(k=0;k<3;k++)
{t=k;
if(ch1==tea[k].name)
if(result1==answer1)
tea[t].score+=5;
else
{printf("Thisansweriswrong.\n");
printf("Therightansweris%d\n",result1);
tea[t].score-=5;
}
}
for(i=0;i<3;i++)
printf("%c%d\n",tea[i].name,tea[i].score);
}
printf("Thisturnisend.\n");
printf("\n\n\n\n\n");
printf("Thesecondturnbegain!
\n");
printf("Thisismixcount!
\n");
printf("Pleaselookatthequestion:
\n");
for(j=0;j{result2=mix();
printf("pleaseinputoneteam:
");
getchar();
scanf("%c",&ch2);
printf("\ninputyouranswer:
");
scanf("%d",&answer2);
for(i=0;i<3;i++)
{t=i;
if(ch2==tea[i].name)
if(result2==answer2)
tea[t].score+=10;
else
{printf("\nyouransweriswrong.\n");
printf("Therightansweris%d\n",result2);
tea[t].score-=10;
}
}
for(i=0;i<3;i++)
printf("%c%d\n",tea[i].name,tea[i].score);
}
a=tea[0].score;b=tea[1].score;c=tea[2].score;
if(a>b&&b>c)
printf("%c%c%c\n",'A','B','C');
if(a>b&&c>a)
printf("%c%c%c",'C','A','B');
if(a>b&&a>c&&c>b)
printf("%c%c%c\n",'A','C','B');
if(c>a&&c>b&&b>a)
printf("%c%c%c\n",'C','B','A');
if(b>a&&c>a&&b>c)
printf("%c%c%c\n",'B','C','A');
if(b>a&&a>c)
printf("%c%c%c\n",'B','A','C');
q1=&tea[0].score;
q2=&tea[1].score;
q3=&tea[2].score;
exchange(q1,q2,q3);
printf("%d%d%d\n",tea[0].score,tea[1].score,tea[2].score);
}
simple()
{ints,num1,num2,stpy;
srand((unsigned)time(NULL));
num1=rand()%100+1;
num2=rand()%100+1;
stpy=rand()%4+1;
switch(stpy)
{case1:
s=num1+num2;
printf("%d+%d=?
\n",num1,num2);break;
case2:
if(num1>=num2)
{s=num1-num2;
printf("%d-%d=?
\n",num1,num2);break;
}
else
{s=num2-num1;
printf("%d-%d=?
\n",num2,num1);break;
}
case3:
s=num1*num2;
printf("%d*%d=?
\n",num1,num2);break;
case4:
s=num1/num2;
printf("%d/%d=?
\n",num1,num2);break;
}
return(s);
}
mix()
{intt,num1,num2,num3,stpy;
srand((unsigned)time(NULL));
num1=rand()%9+1;
num2=rand()%9+1;
num3=rand()%9+1;
stpy=rand()%4+1;
switch(stpy)
{case1:
t=(num1+num2)*(num2-num3);
printf("(%d+%d)*(%d-%d)=?
\n",num1,num2,num2,num3);
break;
case2:
t=num1*num2/num3;
printf("%d*%d/%d=?
\n",num1,num2,num3);
break;
case3:
t=num1*num2-num1/num3;
printf("%d*%d-%d/%d=?
\n",num1,num2,num1,num3);
break;
case4:
t=(num1+num2-num3)*num3/num1;
printf("(%d+%d-%d)*%d/%d=?
\n",num1,num2,num3,num3,num1);
break;
}
return(t);
}
voidexchange(int*p1,int*p2,int*p3)
{voidswap(int*x,int*y);
if(*p1<*p2)swap(p1,p2);
if(*p1<*p3)swap(p1,p3);
if(*p2<*p3)swap(p2,p3);
}
voidswap(int*x,int*y)
{intt;
t=*x;
*x=*y;
*y=t;
}
应用技术学院课程设计评分表
课题名称:
C语言课程设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
(注:
1.此页附在课程设计报告最后一页;2.综合成绩按优、良、中、及格和不及格五级评定。
)