电气078321谢挺 心算抢答系统.docx
- 文档编号:20129961
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:29
- 大小:149.24KB
电气078321谢挺 心算抢答系统.docx
《电气078321谢挺 心算抢答系统.docx》由会员分享,可在线阅读,更多相关《电气078321谢挺 心算抢答系统.docx(29页珍藏版)》请在冰豆网上搜索。
电气078321谢挺心算抢答系统
应用技术学院
课程设计报告
课程名称:
C语言程序设计
课题名称:
心算抢答系统
专业:
电气工程及自动化
班级:
0783班
学号:
21
姓名:
谢挺
指导教师:
王颖
2008年3月27日
湖南工程学院
课程设计任务书
课程名称:
C语言程序设计
课题:
心算抢答系统
专业班级:
电气工程及自动化
学生姓名:
谢挺
学号:
21
指导老师:
王颖
审批:
任务书下达日期:
2008年3月8日
任务完成日期:
2008年3月27日
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了四个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘(缺一不可)收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、基本情况
课程类别:
必修课
课程学分:
1学分
课程学时:
1周
课程对象:
电气工程0781、0782、0783、0784、0785、0786
三、时间安排
时间
任务
2008-3-8下午3:
40-5:
40
指导老师给学生布置课程设计的任务及要求
2008-3-10到2008-3-15
学生根据设计任务及要求,对系统进行需求分析、概要设计和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序
修改并完善程序并上机调试程序
2008-3-16
接受指导老师的验收
2008-3-16到2008-3-22
书写课程设计报告
提交课程设计报告
课题要求
一、需求分析
分析系统功能需求以及用户操作流程。
二、概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
三、详细设计
定义数据储存结构,并设计实现系统功能的具体算法,画出各算法的工作流程图。
四、代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。
源程序要求书写规范,结构清晰。
重点函数的重点变量。
重点功能部分均要求给出清晰的程序注释。
五、程序调试
程序编译、连接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。
如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。
如果程序能够基本正确地运行,可考虑增加若干基本的容错功能;另外尽量对现有的算法给出改进方案,并比较不同算法之间的优缺点
五、设计报告及书写内容要求
课程设计任务完成后,每位同学必须独立书写一份课程设计报告,注意:
不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
课程设计报告的内容应包括以下五个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
2)概要设计:
包括系统总体设计框架和系统功能模块图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)主要源程序代码:
包括存储结构设计说明,以及完整源程序清单;
5)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);
6)总结:
包括课程设计过程中的学习体会和收获、对c语言和本次课程设计的认识以及自己的建议等内容。
7)书写格式严格按所附要求书写。
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
●正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
●正文总字数要求在5000字以上(不含程序原代码)。
一.问题描述:
适用用于数学心算抢答赛。
比赛题型分为两种:
“四则简单运算”和“四则混合运算”,计算机随机出题,选手抢答。
要求进入每种题型比赛时,计算机均有提示,每队的记分窗口随分的情况而更新。
二.功能要求:
1:
显示如下画面:
2.举办单位确定参赛的对数,每队分配一个记分窗口,底分均为0分。
3.比赛题型分为两种:
“四则简单运算”(N道题)和“四则混合运算”
(M道题),N,M由举办单位确定,计算机随机出题,现出:
“四则
简单运算”题,每出一道,选手抢答,做对一题加5分,做错一题减
5分。
后出“四则混合运算”,做对一题加10分,做错一题减10分。
要求进入每种题型比赛时,计算机均有提示,每队的积分窗口随得
分情况而更新。
4.根据最后总分,由高到底宣布比赛名次,按任意键退出比赛系统。
5.要求整个设计以人为本,用户界面友好。
三.算法提示
1.用简单的程序设计方法
2.一定的窗口设计技巧
3.简单的数据类型:
int,char,
4.简单的指针
四、测试数据:
主持人测试
五、其他:
对改系统有兴趣的同学可以在实现系统的基本功能后,完善系统的其他功能。
如底分的设置,每种类型题目的加,减分的多少和选手的起始均可由举办方设定。
课题要求4
一、题目6
二、内容6
三、关键字:
6
【需求分析】6
【概要设计】7
1)、程序的模块组成:
7
2)、各个函数的主要功能:
7
【详细设计】7
算法:
8
、【代码设计】10
1.主函数main()10
2.四则简单运算函数simple()10
4.高低分排名函数exchange()11
【程序调试】12
十、总结13
十一,参考资料13
附件13
一、题目
《心算抢答系统》
二、内容
该系统是一个简单的心算抢答系统,能够使选手实现抢答,了解自己的得分及排名情况。
其功能包括:
选手抢答、四则简单计算、四则混合计算、显示选手得分、选手排名等。
三、关键字:
心算抢答系统
【需求分析】
1.开始时主持人可以选择难题与容易题的数目。
2.主持人可以选择先抢答者进行回答问题。
3.参加者的起始分为0。
,若难题回答正确则加10分若回答错误则扣10分。
若容易回答正确则加5分若回答错误则扣5分。
4.程序能够给出2个数字的加减乘除的容易运算,也可以给出较难的4种其他的难题运算。
5.在题目回答错误之后显示出正确答案。
6.在题目答完之后显示出3人的最终分数,并给出从高到低的排名。
主持人宣布开始抢答后开始抢答,主持人选择抢答者回答问题,若难题回答正确则加10分若回答错误则扣10分。
若容易回答正确则加5分若回答错误则扣5分。
在题目回答错误之后显示出正确答案,回答完题之后显示得分。
总体设计方案的选定:
程序的功能:
要实现对心算抢答进行统一有效的管理需要通过用函数、数据类型、C语句(控制语句、函数调用语句、表达式语句、复合语句等)来实现。
由于是计算,很自然的要建立一个题库,而这个题库里的题目是随机的。
这个系统有很多个界面,这些界面的调用,最终是通过函数之间的调用来实现的。
【概要设计】
程序的模块组成以及各个函数的功能:
1)、程序的模块组成:
主函数:
voidmain()
四则简单运算函数:
intsimple()
四则混合运算函数:
intmix()
高低分排名函数:
voidexchange()
交换函数:
voidswap()
2)、各个函数的主要功能:
voidmain():
主函数
simple():
四则简单运算函数.
mix():
四则混合运算函数。
voidexchange():
抢答结束后排出名次。
voidswap():
交换函数为排序函数服务。
【详细设计】
相关的数据类型
队伍信息结构数组
structteam
{charname;
intscore;
}tea[3]={{'A',0},{'B',0},{'C',0}
算法:
voidmain():
输入难题与容易题的数目。
确定扣分加分规则。
输出最后得分与排名。
simple():
规定简单题目的类型。
mix():
规定较难目的类型。
voidexchange():
进行分数比较。
voidswap():
进行排名。
函数功能调用关系流程图如下:
【代码设计】
整个系统除了主函数外,另外还有5个函数,实现三大功能:
四则简单运算功能、四则混合运算功能、从高分到低分排序功能。
1.主函数main()
利用scanf()函数输入第一轮和第二轮抢答的次数。
2.四则简单运算函数simple()
此函数通过随机数和加,减,乘,除,实现四则简单运算。
算法:
先初始化随机数发生器,得到两个随机数,在利用switch函数选择要进行的运算。
N-S流程图如下:
3.四则混合运算函数mix()
此函数通过随机数和加,减,乘,除,实现四则简单运算。
。
算法:
先初始化随机数发生器,得到三个随机数,在利用switch函数选择要进行的运算。
N-S流程图如下:
4.高低分排名函数exchange()
此函数建立在四则简单函数和四则混合运算的基础之上,当运算结束时,会执行此函数。
算法:
通过比较和交换函数,实现高低分排序。
N-S流程图如下:
【程序调试】
(1)先进入欢迎界面后,根据提示分别输入第一轮的次数,和第二轮的次数。
(2)当输入了次数后,先运行的是简单运算,先输入参赛队伍,再输入答案,如果答案正确则给相应的队伍加分,当错误时,则扣分。
(3)当简单运算结束后,出现混合运算的提示,与简单运算的方法一样。
(4)在抢答结束后应该会出现各队的得分,并自动对其进行排序。
(5)注意要按要求输入数字和字母,否则会得到错误的信息。
十、总结
这次课程设计历时一个星期多左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实
际的能力还急需提高。
学习C语言不是一朝一夕的事情。
如何以最小的代价学习并精通C语言是本文的主题。
即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。
当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
不断的练习,一个最愚蠢的办法,我也离不开这个蠢办法,但却不得不承认是最实用的也是最好用的,刚开始学的时候,不断的翻书查看,然后试着不看书凭记忆不断写些代码,把自己易忘记和易错的记下来,再默记几次,而写代码和看代码是每天必做的功课,经过一段时间,我发觉我翻书的次数少了,东西慢慢在脑子里了,这是一种潜移默化的学习过程。
我觉得入门还是多看些书,多实践,养成良好的编程习惯,在实践的同时多思考问题,多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现或者说模仿着去实现,让别人对你的代码多提意见,探究别人的思维过程,增强自己的思维能力,拓展视野,经常看看自己以前写的东西,有空拿出来改良改良,我想每隔一段时间,都会有意想不到的收获。
就一定可以达到有效的锻炼自己的抽象逻辑思维能力。
另外还需注意的就是自己实在无法理解的地方不妨指出来多多请教老师和懂的同学让他们用自然语言来描述一道,并且记录下来这样可以达到事半功倍的效果。
学习C语言不能停留在学习它的语法规则,而是利用学到的知识编写C语言程序,解决实际问题。
即把C语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。
只有通过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确地解题。
我首先觉得,用到的程序段不必太高级,因为天下事有高低之分,决定优劣的不是集体中某部分的强弱,起决定作用的是组合内各元素的和谐,要能在一个集体中各尽所能,每个人都能发挥长处,避免自己的短处,那么这个集体的实际组合能量是最优的。
其次,注重程序设计地完善性与缜密性,在设计程序地思路时,应从大局着手,尽可能地考虑所有可能出现地异常情况,以便在前期地设计阶段就加以控制。
比如针对数组下标溢出地情况,学习了指针之后,就可以运用动态数组地知识加以解决。
程序的调试非常重要,掌握好的调试方法,可以事半功倍。
下面说一下程序已经没有编译错误,能够运行,但又得不出正确结果的情况下的程序的常用常见调试方法,完成程序的编写,决不意味着万事大吉。
认为万无一失的程序,实际上机运行时可能不断出现麻烦。
如编译程序检测出一大堆错误。
有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。
有时候一个消耗你几个小时时间只是个小小错误.
通过对编码规范的再次学习,发现了一些做的不够的地方,在以后的工作中努力的改正,并严格遵守编码规范来进行编码。
1.代码的排版布局。
2.效率问题。
在实践过程中,自己编程的时候常常会犯错误,并总结了一些克服缺点的方法。
而且更深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。
只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。
在设计程序的同时也增长了翻阅有关文献的能力,加强了实践能力及自学能力,培养了分析问题、编程和动手能力,掌握了程序设计基本技能。
好的排版比较利于别人对代码进行阅读和修改。
虽然这是一小问题,但也不容忽视。
代码不仅要运行正确,还要比较高的运行效率。
其原则是通过对系统数据结构的划分与组织的改进,以及对程序算法的优化来提高时间和空间上的效率。
我在做以后的项目过程中会更加的注意,并积极的提高程序运行的效率。
C语言语法结构很简洁精妙,写出的程序也很高效。
C语言能够让你深入系统底层。
同时,我也清楚地知道21世纪挑战与机遇并存,没有足够的知识储备必将被时代所抛弃。
C语言作为国际上广泛流行的通用程序设计语言,在计算机的研究和应用中已展现出强大的生命力。
C语言兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。
虽然我们C语言已有四个月,但一直都重概念、轻实践,这次设计对我们来说是千载难逢的机会,无论如何都要好好把握。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义,通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
十一,参考资料
<
<
<
C语言之家()
C语言教室(http:
//www.vcok.co
《C语言程序设计案例教程》张基温编著清华大学出版社
C程序设计(第三版)谭浩强著清华大学出版社
《C语言课程设计案例精编》中国水利水电出版社
附件
#include
#include
#include
voidmain()
{intsimple();
intmix();
voidexchange(int*p1,int*p2,int*p3);
structteam
{charname;/*定义字符量name*/
intscore;/*定义整型score*/
}tea[3]={{'A',0},{'B',0},{'C',0}};/*定义没个人的初始分为0*/
inti,p,j,t,k,n,m;/*定义整型*/
inta,b,c;/*定义整型*/
intresult1,answer1,result2,answer2;/*定义整型*/
int*q1,*q2,*q3;/*定义指针q1,q2,q3*/
charch1,ch2;
printf("************************************\n");
printf("$$\n");
printf("$$\n");
printf("$welcomejioninthiscompetition!
$\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");
getch();
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;/*如果简单题目回答正确,答题者score+5*/ else {printf("Thisansweriswrong.\n"); printf("Therightansweris%d\n",result1); tea[t].score-=5;/*如果简单题目回答错误,答题者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;/*如果较难题目回答正确,答题者score+10*/ else {printf("\nyouransweriswrong.\n"); printf("Therightansweris%d\n",result2);/*输出正确答案result2*/ tea[t].score-=10;/*如果较难题目回答错误,答题者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');/*按分数大小打印出A,B,C*/ q1=&tea[0].score; q2=&tea[1].score; q3=&tea[2].score;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电气078321谢挺 心算抢答系统 电气 078321 谢挺 心算 抢答 系统