一、需求分析
数学的学习伴随着每个学生的整个学生时代,小学数学的学习尤为关键,小学数学学习的好坏直接影响到后续对于数学的学习。
四则运算,是数学学习的基础,所以在孩子学习四则运算的阶段,家长们普遍都会给自己的孩子设计大量的习题进行练习。但由于大部分家长工作很忙,回到家还要做家务等琐事,设计四则运算的练习题以及判断孩子的运算结果则显得很费时间。所以,一款根据家长的需求,使用计算机来生成随机的四则运算习题,就帮助家长们解决了一个很大的难题。
二、功能设计
基本功能:
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 和2 + 3是重复算式,而2 + 3 和3 + 2不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三、设计实现
本c语言程序一共包含四个函数。
main():主函数,作为程序的入口。在主函数中,根据用户选择,进行调用naomal()和set()两个函数。
normal():实现程序的基本功能,即出10道运算结果在100以内的,包含加减乘除的四则运算式。
set():设置函数,可以对一些参数进行设置。可设置出题的总数、结果的范围、是否包含乘除法。在该函数内设置完相关参数后,调用SecKind()进行出题。
SecKind():该函数的形参接收set()传过来的参数值,根据参数值进行出题。
四、测试运行
上图为程序的首页,通过输入数字选择模式
上图为输入1之后,进入普通模式
上图为输入2之后,进入自定义模式设置参数
五、代码片段
该片段为SecKind()的部分代码,主要实现的功能是,通过形参接收set()中设置的变量,此段代码为生成不含乘除法的代码。
int SecKind(int aa,int bb,int cc)
{
Sleep(2000);//延时2秒
system("cls");//清屏
int a=0;
int b=0;
int mode=0;//0:加 1:减 2:乘 3:除
int c=0;
int result=0;
int score=0;
int n;
srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
if(cc==0)
{
for(int i=0;i<aa;) //做n题
{
a = rand() % 10; //生成一个0~9之间的随机数
b = rand() % 10; //生成一个0~9之间的随机数
mode = rand() % 2; //生成一个0~1之间的随机数,代表运算符
printf("%d", a); //打印算式
switch(mode) //确定运算符
{
case 0:printf("+ ");
result= a + b;break;
case 1:printf("- ");
result= a - b;break;
default:printf("somethingis wrong!
");break;
}
printf("%d =
", b);
if(result<=bb)
i++;
}
}
}
六、总结
对于该程序,我根据需求描述,将程序功能分为两个大功能。即普通模式和自定义模式,对于不同的功能,写出对于的函数,以实现“模块化”的要求。
七、PSP
任务内容 | 计划时间 | 实际时间 |
---|---|---|
计划 | 10 | 10 |
需求分析 | 5 | 10 |
设计文档 | 10 | 8 |
复审文档 | 5 | 10 |
代码规范 | 3 | 3 |
具体设计 | 10 | 10 |
具体编码 | 15 | 25 |
代码复审 | 5 | 5 |
编译运行 | 2 | 2 |
测试 | 5 | 5 |
计算共工作量 | 2 | 2 |
总结 | 5 | 5 |