心算抢答系统 2.docx
- 文档编号:23979579
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:30
- 大小:90.71KB
心算抢答系统 2.docx
《心算抢答系统 2.docx》由会员分享,可在线阅读,更多相关《心算抢答系统 2.docx(30页珍藏版)》请在冰豆网上搜索。
心算抢答系统2
应用技术学院
课程设计报告
课程名称C语言课程设计
课题名称心算抢答系统
专业机械制造设计与自动化
班级0781
学号200713090122
姓名刘洋
指导教师王颖
2008年7月8日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题心算抢答系统
专业班级机设0781
学生姓名刘洋
学号22
指导老师王颖
审批
任务书下达日期:
2008年6月20日
任务完成日期:
2008年7月8日
《C语言课程设计》任务书
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、时间安排
时间
任务
2008-6-20上午9:
40-10:
40
知道老师给学生布置课程设计的任务及要求
2008-6-20到2008-6-30
学生根据设计任务及要求,对系统进行需求分析、概要设计和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序。
修改并完善程序并上机调试程序。
2008-7-4
接受指导老师的验收。
2008-7-4到2008-7-8
书写课程设计报告。
提交课程设计报告。
三、基本情况
课程类别:
必修课
课程学分:
1学分
课程学时;1周
课程对象:
机械设计0781、0782、0783、0784。
四、设计和调试过程规范化要求
需求分析
分析系统功能需求以及用户操作流程。
1)概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
2)详细设计
定义数据存储结构,并设计实现系统功能的具体算法,画出各算法的工作流程图。
3)代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。
源程序要求书写规范,结构清晰。
重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。
4)程序调试
程序编译、链界成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。
如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。
如果程序能够基本正确地运行,可考虑增加若干基本的容错功能(如避免用户操作错误时程序出现死循环等);另外尽量对现有算法给出改进方案,并比较不同算法之间的优缺点。
五、设计报告及书写内容要求
课程设计任务完成后,每位同学必须独立书写一份课程设计报告,注意:
不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
课程设计报告的内容应包括一下五个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
2)概要设计:
包括系统总体设计框架和系统功能模块图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)主要源程序代码:
包括储存结构设计说明,以及完整源程序清单;
5)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);
6)总结:
包括课程设计过程中的学习体会与收获、对C语言和本课程设计的认识以及自己的建议等内容;
7)书写格式严格按所附要求书写。
附:
课程设计报告装订顺序:
c语言课程设计任务书题目报告规范前言目录(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
六、考核方式
指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:
1)平时出勤(占10%)
2)系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)
3)程序能否完整、准确地运行、个人能否独立、熟练地调试程序(占40%)
4)设计报告(占30%)
5)独立完成情况(占10%)。
题目
1、问题描述:
适用于小学生数学心算抢答赛。
比赛题型分为两种:
“四则简单运算”和“四则混合运算”,计算机随机出题,选手抢答。
要求进入每种题型比赛时,计算机均有提示,每队的记分窗口随得分情况而更新。
2、功能描述:
1、显示如下画面:
欢迎参加小学生心算抢答赛
按任意键开始比赛
2、举办单位确定参赛的队数,每队分配一个记分窗口,底分均为100分。
3、比赛题型分为两种:
“四则简单运算”(N道题)和“四则混合运算”(M道题),N、M由举办单位确定,计算机随机出题,先出“四则简单运算”题,每出一道,选手抢答,做对一题加5分,做错一题减5分。
后出“四则混合运算”,做对一题加10分,做错一题减10分。
要求进入每种题型比赛时,计算机均有提示,每队的记分窗口随得分情况而更新。
4、根据最后总分,由高到低宣布比赛名次,按任意键退出比赛系统。
5、要求整个设计以人为本,用户界面友好。
3、算法提示:
1、用简单的程序设计方法
2、一定的窗口设计技巧
3、简单的数据类型
4、测试数据:
随机函数产生
5、其它:
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
如底分的设置、每种类型题目的加、减分的多少均可由举办方设定。
课程设计报告规范
需求分析
⒈程序的功能
⒉输入输出要求
概要设计
⒈程序又那些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
⒉课题的总体数据结构和数据库结构;即要储存什么样的数据,这些数据是什么结构,它们之间有什么关系等。
详细设计
⒈采用C语言定义相关的数据类型。
⒉写出各模块的类C码算法。
⒊画出函数的调用关系图。
调试设计以及设计体会
1试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
⒉程序调试中遇到的问题以及解决问题的方法。
3程设计过程中的经验教训、心得体会。
使用说明
用户使用手册:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
书写格式
⒈设计报告要求用A4纸打印成册:
2.标题和正文要求见附1
3.封面格式如下
附录
1参考书目
《C语言程序设计案例教程》张基温编著清华大学出版社
《C程序设计(第三版)》谭浩强编著清华大学出版社
《C语言程序设计方法》邓文新张宏烈编著哈尔滨工业大学出版社
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件、(A4大小的图纸及程序清单)。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四宋体;行距为22。
●正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码要求对程序写出必要的注释)。
●正文总字数要求在5000字以上(不含程序原代码)。
前言
<
目录
《C语言课程设计》任务书2
一、目的2
二、时间安排2
三、基本情况3
四、设计和调试过程规范化要求3
五、设计报告及书写内容要求4
六、考核方式4
题目5
1、问题描述:
5
2、功能描述:
5
3、算法提示:
6
4、测试数据:
6
5、其它:
6
课程设计报告规范6
需求分析6
概要设计6
详细设计7
⒈采用C语言定义相关的数据类型。
7
调试设计以及设计体会7
使用说明7
书写格式7
附录7
附1:
8
前言8
课程设计主文档10
1.课程设计题目10
2.内容摘要10
3.关键字10
4.总体设计方案的选定10
概要设计11
1.程序的模块组成11
2.函数的主要功能11
3.相关的数据类型11
4.*函数间的调用关系图如下12
流程图13
源程序15
心得体会21
总结23
应用技术学院课程设计评分表24
课程设计主文档
1.课程设计题目
小学生心算抢答系统
2.内容摘要
该系统是一个简单的心算系统,能够使选手实现抢答,了解自己的得分及排名情况,同时也减少了工作人员的工作量.其功能包括:
选手抢答、四则简单计算、四则混合计算、显示选手得分、选手排名等。
3.关键字
抢答系统
4.总体设计方案的选定
程序的功能:
要实现对心算抢答进行统一有效的管理需要通过用函数、数据类型、C语言(控制语句、函数调用语句、表达式语句等)来实现.由于是计算,很自然的要建立一个题库,而这个题库的题目是通过函数之间的调用来实现的.
概要设计
1.程序的模块组成
主菜单函数、主函数:
voidmain():
自定义子菜单函数:
voidf();voidp();voidp2();
自定义清屏函数:
voidmy_clear();
自定义输入函数:
voidmy_print();
自定义第一轮测试函数:
voidtest_1();
自定义第二轮测试函数:
voidtest_2();
2.函数的主要功能
主函数:
显示主菜单:
自定义子菜单函数:
显示子菜单:
自定义清屏函数:
设置颜色:
自定义输入函数:
输入“#”、“*”;
自定义第一轮测试函数:
随机出题,并输入选手的选号及答案,同时输入成绩,显示名次。
3.相关的数据类型
intalgType_1=0,algType_2;/*计算类型*/
inti,j,n,m;/*循环变量*/
intpoints_1[PN+1],point_2[PN+1];/*选手得分*/
intnum1=0,num2=0,num_1,num_2,num_3;/*操作变量*/
intresult=0;/*结果*/
intanswer_1[PN+1],answer_2[PN+1];/*选手答案*/
intmax_1,temp_1,max_2,temp_2;
inttotal[4];
4.*函数间的调用关系图如下
(1)mian函数的下属子功能函数及其调用示意图
voidmian
my_clear()
f()函数
(2)子功能函数及其调用示意图
Mian()
P2()函数
F()函数
P1()函数
My_clear()
(1)
P1函数
F()函数
P11()函数
Test-1()函数
(2)
F()函数
P2()函数
P21()函数
Test-2()函数
(3)
流程图
开始
主菜单
退出系统
进入系统
返回
第一流比赛
第二流比赛
返回
四则简单运算
四则混合运算
返回
测试
返回主菜单
结束
源程序
#include"stdio.h"
#include"conio.h"
#include"time.h"
#definePN3
#defineN10
#defineM10
inttotal[4];
/*自定义清屏函数*/
voidmy_clear(intfg_color,intbg_color)
{textbackground(bg_color);
textcolor(fg_color);
clrscr();
}
/*第一轮测试函数*/
voidtest_1()
{intalgType_1=0,/*计算类型*/
i,j,points_1[PN+1],/*循环变量*/
/*选手得分*/
num1=0,num2=0,/*操作得分*/
result=0,/*结果*/
answer_1[PN+1],
total[PN+1];
/*选手得分*/
for(i=1;i<=PN;i++)
{total[i]=100;
points_1[i]=100;
/*设置底分*/
answer_1[i]=0;
}
printf("现在开始抢答,请看题:
");
for(i=1;i<=N;i++)
{num1=rand()%100+1;/*产生随机数*/
num2=rand()%100+1;
algType_1=rand()%4+1;
switch(algType_1)
{case1:
result=num1+num2;
printf("\n%d+%d",num1,num2);break;/*加法运算*/
case2:
if(num1>=num2)/*减法运算*/
{result=num1-num2;
printf("\n%d-%d",num1,num2);break;
}
else
{result=num2-num1;
printf("\n%d-%d",num2,num1);break;
}
case3:
result=num1*num2;/*乘法运算*/
printf("\n%d*%d",num1,num2);break;
case4:
result=num1/num2;/*除法运算*/
printf("\n%d/%d",num1,num2);break;
}
printf("=?
");
scanf("%d%d",&j,&answer_1[j]);
if(answer_1[j]==result)
points_1[j]+=5;/*积分*/
else
{points_1[j]-=5;
printf("你现在的得分:
");
printf("%d%5d",j,points_1[j]);/*输出得分*/
}
}for(i=1;i<=PN;i++)
{total[i]=points_1[i];
}
main();}
/*第二轮测试函数*/
voidtest_2()
{intalgType_2=0,m,n,points_2[PN+1],num_1=0,num_2=0,num_3=0,
result=0,answer_2[PN+1];
for(m=1;m<=PN;m++)
{points_2[m]=100;
answer_2[m]=0;total[m]=100;
}
printf("现在开始抢答,请看题:
");
for(m=1;m<=M;m++)
{num_1=rand()%100+1;
num_2=rand()%100+1;
num_3=rand()%100+1;
algType_2=rand()%3+1;
switch(algType_2)/*四则混合运算*/
{case1:
result=num_1+num_2*num_3;
printf("\n%d+%d*%d",num_1,num_2,num_3);
break;
case2:
if((num_1+num_2)>num_3)
{result=num_1+num_2-num_3;
printf("\n%d+%d-%d",num_1,num_2,num_3);
}
else
{result=num_3-(num_1+num_2);
printf("\n%d-(%d+%d)",num_3,num_1,num_2);
}
break;
case3:
if(num_1*num_2>num_3)
{result=num_1*num_2-num_3;
printf("\n%d*%d-%d",num_1,num_2,num_3);
}
else
{result=num_3-num_1*num_2;
printf("\n%d-%d*%d",num_3,num_1,num_2);
}
break;
}
printf("=?
");
scanf("%d%d",&n,&answer_2[n]);
if(answer_2[n]==result)
points_2[n]+=10;/*积分*/
else
{points_2[n]-=10;
printf("你现在的得分是:
");
printf("%d%5d",n,points_2[n]);/*输出得分*/
total[n]=points_2[n];
}
}
main();}
/*主函数*/
main()
{intchoice;
voidf();
voidp1();
voidp11();
voidp2();
voidp21();
my_clear(1,6);
printf("*************************谢谢使用本系统*************************\n");
printf("#*#*#*#*#*#*设计人刘洋机设0781#*#*#*#*#*#*\n");
printf("************************************\n");
printf("**\n");
printf("*欢迎参加小学生心算系统*\n");
printf("**\n");
printf("************************************\n");
printf("1.进入系统\n");
printf("2.成绩查询\n");
printf("0.退出系统\n");
printf("\n请在上述功能中选择(0-1):
");
do
{scanf("%d",&choice);
switch(choice)
{case1:
f();break;
case2:
mark();break;
case0:
exit(0);
}
}
while
(1);
}
/*子函数*/
voidf()
{int_choice;
my_clear(1,6);
gotoxy(15,6);
printf("1.第一轮抢答");
gotoxy(15,8);
printf("2.第二论抢答");
gotoxy(15,10);
printf("0.返回");
gotoxy(15,14);
printf("请在上述功能中选择(0-2)");
do
{scanf("%d",&_choice);
switch(_choice)
{case1:
p1();break;
case2:
p2();break;
case0:
main();break;
}
}
while
(1);
}
voidp1()
{intch_1;
my_clear(1,6);
printf("1##四则简单计算##");
gotoxy(15,6);
printf("0.返回");
gotoxy(15,15);
printf("请在上述功能中选择(0-1)");
do
{scanf("%d",&ch_1);
switch(ch_1)
{case0:
main();break;
case1:
p11();break;
}
}
while
(1);
}
voidp11()
{clrscr();
textbackground(BLUE);
test_1();
}
voidp2()
{intch_2;
my_clear(1,6);
printf("1##四则混合计算##");
gotoxy(15,8);
printf("0.返回");
gotoxy(15,15);
printf("请在上述功能中选择(0-1)");
do
{scanf("%d",&ch_2);
switch(ch_2)
{case0:
main();break;
case1:
p21();break;
}
}
while
(1);
}
voidp21()
{clrscr();
textbackground(BLUE);
test_2();
}
mark()
{inti,
clscr();
for(i=1;i<=PN;i++)
printf("\n成绩分布是队伍%d的成绩是%d\n",i,total[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 心算抢答系统 心算 抢答 系统