小学生数学系统解读.docx
《小学生数学系统解读.docx》由会员分享,可在线阅读,更多相关《小学生数学系统解读.docx(22页珍藏版)》请在冰豆网上搜索。
小学生数学系统解读
目录
一、系统开发的背景3
二、系统分析与设计4
(一)系统功能要求4
(二)系统模块结构设计4
三、系统的设计与实现6
(一)四则运算界面浏览:
printf()函数。
6
(二)运算符和数值:
sj()函数。
7
(三)随机函数srand((unsigned)time(NULL))9
(四)小学生成绩和等级。
10
四、系统测试12
(一)测试四则运算界面。
12
(二)运算符和数值测试。
13
(三)测试随机出10道题13
(四)测试小学生回答和分数13
(五)测试小学生回答的等级14
五、总结14
六、附件(代码、部分图表)14
小学生数学CAI系统
一、系统开发的背景
为了提高小学生的数学运算,让他们在数学学习过程中能够更好的学习四则运算,不光要学习一位数加减乘除一位数,还要学习二位数甚至三位数的练习,通过计算机来随机抽题,有一位数与一位数的四则运算,还有多位数与多位数的运算,以及多位数与一位数的运算,最后通过计算机输出成绩,再根据成绩输出小学生的等级,通过成绩可以了解小学生四则运算的水平.因此,我编写了小学生数学CAI系统.
在远古时代,我们的祖先已经可以利用一些其他的辅助东来进行计数了,他们可以用树枝和木棍来进行计数,再往以后,祖先发明了算筹,算盘来进行计数.但这个方法显得有些笨重.后来又发明了计算器,计算器可以计算以前没有计算的算式,也为人类提供了很好的帮助,但是这种计算的方法显得有的局限,一些比较大的数据没法计算,最后,人们又发明了电脑,电脑的发明又使人类的计数水平提高了一个档次,电脑的出现让我们不再在纸上面计算了,一些大型的数据处理交给计算机来处理,就连日常生活中的处理数据也要用到电脑或计算器,电脑或计算器以经离不开我们的生活,就连买个菜也要用到计算器来计算卖菜的钱,大量的依赖电脑或计算器已经让我们记不起用笔来计算.所以,我编写的小学生四则运算系统还是有很大的作用,它可以帮助小学生来提高数学成绩,该系统就像闯关的游戏一样,当小学生每回答对一题,系统便会给出相应的表扬语句,这可以激发小学生的兴趣,可以让小学生容易接受它,而不是有抵触心理,该题目给小学生三次机会,当小学生回答错误,给出鼓励语句,让小学生重新答,当三次全部没答对,系统会给出正确答案供小学生参考,最后给出成绩.
二、系统分析与设计
(一)系统功能要求
该系统为小学数学辅助教学系统,利用该系统可以锻炼小学生的数学运算能力。
它包括+、-、×、÷四则运算。
1.系统设置可以选择包含的运算符(+、-、×、÷)、数值的位数(1位,2位、3位)和运算符的个数。
2.系统自动随机地出10道题。
3.每出一题,小学生输入答案后,第一次答对,系统给出信息“完全正确,你非常聪明!
加10分”,总分+10分,显示下一题;若答错了,系统给出信息“你答错了,继续努力!
”,继续显示该题目,若第2次答对了,系统给出信息“答对了,你很棒!
加8分”,总分+8分,显示下一题;若答错了,系统给出信息“你答错了,继续努力!
”,继续显示该题目,若第3次答对了,系统给出信息“答对了,祝贺你!
加6分”,总分+6分,显示下一题;若答错了,系统给出信息“非常遗憾你又答错了,请继续做下一题。
本题的正确答案为……”,,继续显示下一题;
4.当答完所有的题给出总分。
(二)系统模块结构设计
通过对系统功能的分析,小学生数学CAI系统系统功能如图1所示。
图一小学生CPI数学系统功能图
通过上图的功能分析,把整个系统划分为7个模块:
1.四则运算界面浏览,该模块主要实现:
小学生CPI数学系统运行时有一个很有好的界面,通过输入*等符号以及欢迎使用小学生四则运算系统等实现页面,在运行的时候输出该界面,助助函数prinf()来实现;
2.运算符和数值模块,该模块主要实现:
小学生CPI数学统运算符和数值,小学生的运算符应该有四种,有加,减,乘,除四种运算符。
数值有一位数,两位数和三位数,借助函数sj()来实现;
3.随机出10道题模块,该模块主要实现:
让电脑可以随机的出10道加减乘除四则运算题,而不是用户自己输入,借助函数srand((unsigned)time(NULL));/*c语言随机数函数种子,用来实现随机产生10道随机数四则运算,允许随机给出的数在999以内.*/来实现。
4.小学生回答模块,该模块主要实现:
电脑随机出10道题,小学生可以回答问题。
借助if语句来实现;
5.小学生成绩模块,该模块主要实现:
小学生回答完,电脑可以给出分数,借助指针来实现。
6.小学生等级模块,该模块主要实现:
小学生回答完,电脑能给出等级,90分以上为“优秀”,75分以上为“良好”,60分以上为“合格”,60分以下为“不合格”.借助函数printf()实现。
三、系统的设计与实现
(一)四则运算界面浏览:
printf()函数。
首先输入printf函数,然后再输入欢迎进入小学生四则运算和目的功能的界面,流程图如图2所示。
开始
图二:
printf()流程图
该模块的具体代码如下所示。
printf("********************************************************************************\n");
printf("*******************************欢迎进入小学生算术四则运算测试程序***********************\n");
printf("***本程序是面向小学1~2年级学生,随机选择两个整数和加减乘除法形成算式要求学生解答******\n");
printf("***********************本程序目的是加强小学生的数学能力********************************\n");
printf("*****************************************************************************************\n");
(二)运算符和数值:
sj()函数。
通过sj()函数实现随机实现出10道四则运算,和随机产生数值。
流程图如图3所示。
开始
三:
sj函数流程图。
该模块的具体代码如下所示。
if(t->c==1)
{
t->b=sj(1000-(t->a));
t->add=(t->a)+(t->b);
}
if(t->c==2)
{
t->b=sj((t->a)+1);
t->add=(t->a)-(t->b);
}
if(t->c==3)
{
t->b=sj((t->a)+1);
t->add=(t->a)*(t->b);
}
if(t->c==4)
{
t->b=sj(t->a)%(t->b);
t->add=(t->a)/(t->b);
}
(三)随机函数srand((unsigned)time(NULL))
通过C语言的随机函数,让计算机随机的出10道题,让小学生回答。
流程图如图4所示。
图4:
随机函数srand((unsigned)time(NULL))流程图
(四)小学生成绩和等级。
小学生回答完以后,电脑给出成绩和等级。
流程图如图5所示。
图5:
小学生成绩和等级流程图
该模块的具体代码如下所示。
if(ad==t->add)
{
t->grade=10;
printf("完全正确,你非常聪明!
加10分\n");
}
else
{
printf("你答错了,继续努力!
\n");
if(t->c==1)printf("%d+%d=",t->a,t->b);
if(t->c==2)printf("%d-%d=",t->a,t->b);
if(t->c==3)printf("%d*%d=",t->a,t->b);
if(t->c==4)printf("%d/%d=",t->a,t->b);
scanf("%d",&ad);
if(ad==t->add)
{
t->grade=8;
printf("答对了,你很棒!
加8分\n");
}
else
{
printf("你答错了,继续努力!
\n");
if(t->c==1)printf("%d+%d=",t->a,t->b);
if(t->c==2)printf("%d-%d=",t->a,t->b);
if(t->c==3)printf("%d*%d=",t->a,t->b);
if(t->c==4)printf("%d/%d=",t->a,t->b);
scanf("%d",&ad);
if(ad==t->add)
{
t->grade=6;
printf("答对了,祝贺你!
加6分\n");
}
else
{
t->grade=0;
printf("非常遗憾你又答错了,请继续做下一题.\n");
printf("正确答案为%d\n",t->add);
}
}
}
}
}
voidmain()
{
inti,j,score=0;
charch;
structstructest[10];
srand((unsigned)time(NULL));
/*c语言随机数函数种子,用来实现随机产生10道随机数四则运算*/
printf("********************************************************************************\n");
printf("*******************************欢迎进入小学生算术四则运算测试程序***********************\n");
printf("***本程序是面向小学1~2年级学生,随机选择两个整数和加减乘除法形成算式要求学生解答******\n");
printf("***********************本程序目的是加强小学生的数学能力********************************\n");
printf("*****************************************************************************************\n");
for(i=0;i<10;i++)
{
ctm_i(&test[i]);
for(j=0;j
if(test[i].a==test[j].a&&test[i].b==test[j].b&&test[i].c==test[j].c)
ctm_i(&test[i]);
}
printf("准备好了吗?
按任意键进入");
scanf("%c",&ch);
for(i=0;i<10;i++)
tcm_i(&test[i],i);
printf("测试结束");
for(i=0;i<10;i++)
score=score+test[i].grade;
if(score>90)
printf("优秀\n!
");
elseif(score>75)
printf("良好\n!
");
elseif(score>60)
printf("合格!
\n");
else
printf("不合格!
\n");
printf("score=%d\n",score);
四、系统测试
(一)测试四则运算界面。
该四则运算界面是用printf()函数来输入,来输出四则运
算的界面和该四则运算的功能。
、
图6:
四则运算界面
(二)运算符和数值测试。
该运算符是实现四则运算(加,减,乘,除)和数值,随机选择四则运算和数值来进行运算。
图7:
运算符和数值测试
(三)测试随机出10道题
用c语言的随机函数让电脑随机出题,小学生回答C语言随机函数式是:
srand((unsigned)time(NULL))。
图8:
测试随机出10道题
(四)测试小学生回答和分数
电脑随机出题,小学生回答,回答完了以后电脑给出分数。
图9:
测试小学生回答和分数
(五)测试小学生回答的等级
小学生回答完以后,电脑根据小学生的分数给出小学生的等级。
图10:
测试小学生回答的等级
五、总结
系统完成了小学生四则运算计算的功能。
该功能可以提高小学生的数学成绩。
系统有不完善的地方,加法减法和乘法都能行,但是除法的算式不出来,随便写了三个数字后,系统出来的答案是随机数。
我的收获是如何使用c语言的随机函数,即输入该随机函数srand((unsigned)time(NULL)),电脑随机的出10道四则运算题,还学会了指针和结构体的用法,在以后的学习数据结构等专业课上,要学好结构体和指针。
六、附件(代码、部分图表)
程序代码如下:
#include
#include
#include
/*课题说明:
随机选择两个整数进行加减乘除运算,给出算式要求学生作答。
基本要求:
1)功能齐全:
界面操作灵活方便,至少实现以下基本功能:
1电脑随机出10道题,每题10分,程序结束时显示学生得分;允许随机给出的数在999以内.
2每道题学生有三次机会,当学生输入错误答案,提醒学生重新输入,如果三次都答错,则给出正确答案。
学生第一次答对,得10分,第二次答对,得8分,第三次答对,得6分。
3.90分以上为"优秀",75分以上为"良好",60分以上为"合格",60分以下为"不合格".
4.界面友好,有人性化.
5.有必要的注释*/
structstruc
{
inta;
intb;
intc;
intadd;
intgrade;
};
intsj(intn)
{
intt;
t=rand()%n;
returnt;
}
voidctm_i(structstruc*t)
/*定义指向结构体类型变量的指针变量*/
{
t->a=sj(1000);
t->c=sj(4);
if(t->c==1)
{
t->b=sj(1000-(t->a));
t->add=(t->a)+(t->b);
}
if(t->c==2)
{
t->b=sj((t->a)+1);
t->add=(t->a)-(t->b);
}
if(t->c==3)
{
t->b=sj((t->a)+1);
t->add=(t->a)*(t->b);
}
if(t->c==4)
{
t->b=sj(1000-(t->a));
t->add=(t->a)/(t->b);
}
t->grade=10;
}
voidtcm_i(structstruc*t,intn)
{
intad;
{
printf("===================================\n");
printf("现在进行第%d题\n",n+1);
printf("本题你总共有三次机会\n");
if(t->c==1)printf("%d+%d=",t->a,t->b);
if(t->c==2)printf("%d-%d=",t->a,t->b);
if(t->c==3)printf("%d*%d=",t->a,t->b);
if(t->c==4)printf("%d/%d=",t->a,t->b);
/*用来进行加减乘除运算*/
scanf("%d",&ad);
if(ad==t->add)
{
t->grade=10;
printf("完全正确,你非常聪明!
加10分\n");
}
else
{
printf("你答错了,继续努力!
\n");
if(t->c==1)printf("%d+%d=",t->a,t->b);
if(t->c==2)printf("%d-%d=",t->a,t->b);
if(t->c==3)printf("%d*%d=",t->a,t->b);
if(t->c==4)printf("%d/%d=",t->a,t->b);
scanf("%d",&ad);
if(ad==t->add)
{
t->grade=8;
printf("答对了,你很棒!
加8分\n");
}
else
{
printf("你答错了,继续努力!
\n");
if(t->c==1)printf("%d+%d=",t->a,t->b);
if(t->c==2)printf("%d-%d=",t->a,t->b);
if(t->c==3)printf("%d*%d=",t->a,t->b);
if(t->c==4)printf("%d/%d=",t->a,t->b);
scanf("%d",&ad);
if(ad==t->add)
{
t->grade=6;
printf("答对了,祝贺你!
加6分\n");
}
else
{
t->grade=0;
printf("非常遗憾你又答错了,请继续做下一题.\n");
printf("正确答案为%d\n",t->add);
}
}
}
}
}
voidmain()
{
inti,j,score=0;
intTime,end,start;
start=clock();
printf("%d",start);
structstructest[10];
srand((unsigned)time(NULL));
/*C语言随机函数,产生题目*/
printf("*******************************************************************************\n");
printf("*******************************欢迎进入小学生算术四则运算测试程序**************\n");
printf("***本程序是面向小学学生,随机选择两个整数和加减乘除法形成算式要求学生解答******\n");
printf("***********************本程序目的是加强小学生的数学能力************************\n");
printf("*******************************************************************************\n");
for(i=0;i<10;i++)
{
ctm_i(&test[i]);
for(j=0;j
if(test[i].a==test[j].a&&test[i].b==test[j].b&&test[i].c==test[j].c)
ctm_i(&test[i]);
}
for(i=0;i<10;i++)
tcm_i(&test[i],i);
printf("小学生四则运算测试结束!
\n");
for(i=0;i<10;i++)
score=score+test[i].grade;
if(score>=90)
{
printf("优秀!
\n");
}
elseif(score>=75)
{
printf("良好!
\n");
}
elseif(score>=60)
{
printf("合格!
\n");
}
else
{
printf("不合格!
\n");
}
printf("score=%d\n",score);
/*小学生回答问题的分数和等级*/
if(score>=60)
{
printf("祝贺你!
\n");
}
else
{
printf("继续努力,请重做!
\n");
for(i=0;i<10;i++)
{
ctm_i(&test[i]);
for(j=0;j
if(test[i].a==test[j].a&&test[i].b==test[j].b&&test[i].c==test[j].c)
ctm_i(&test[i]);
}
for(i=0;i<10;i++)
tcm_i(&test[i],i);
}
end=clock();
printf("%d\n",end);
Time=(end-start)/CLK_TCK;
printf("%d=(%d-%d)/%d\n",Time,end,start,CLK_TCK);
printf("%d\n",end-start);
printf("用时:
%d秒\n",Time);
/*小学生回答问题的时间*/
}