四则运算
需求分析:能够根据用户对题目数量的需求,生成一定数量的包含整数和真分数的题目,并且能够生成答案,判断正误,统计正确率。
功能设计:
1.随机生成整数和真分数的四则运算题目;
2.能够处理用户的输入,并判断正误,统计正确率;
3.能够自动计算出正确答案;
设计实现:代码是用java写的,写了两个类,一个是zhenshu ,用于实现整数运算,另一个是zhenfenshu ,用于实现真分数运算,在zhenfenshu类中,有写了一个yuefen的函数,用于对计算结果进行约分。
源代码链接:https://git.coding.net/echo1/liucun.git
代码说明:构造函数yuefen,用于对真分数进行约分,化为最简真分数,之前输出结果没有考虑到输出整数的情况,因此会出现2/1,4/2等情况,后来将这种情况又分开讨论了一下,现在就不会出现这种情况了。
public static String yuefen(int a,int b){ int y = 1; if(a>0){ for(int i=a;i>=1;i--){ if(a%i==0&&b%i==0){ y = i; break; } } } else if(a<=0){ for(int i=a;i<=0;i++){ } } int z = a/y; int m = b/y; if(z==0) { return "0"; } else if(z%m==0){ return ""+z/m; } return ""+z+"/"+m; }
代码说明:随机生成分子、分母和运算符,然后利用真分数四则运算法则编写运算方法,在利用构造函数“zhenfenshu”对计算结果进行约分,这里列举了加法运算的代码,因为之前没有考虑到像1/1*4/4这种情况,现在将输出方式进行了一些更改,分情况讨论了一下,就解决了上述问题。
for(i=0;i<x;i++){ m1=1+(int)(Math.random()*B);//随机生成一个小于B的分母 x1=1+(int)(Math.random()*m1);//生成一个比分母小的分子,实现真分数 m2=1+(int)(Math.random()*B);//随机生成一个小于B的分母 x2=1+(int)(Math.random()*m2);//生成一个比分母小的分子,实现真分数 int c=(int)(Math.random()*3);//生成运算符 if(c==0){ Z=x1*m2+x2*m1; M=m1*m2; d=yuefen(Z,M); if(x1%m1==0&&x2%m2!=0){ System.out.print(x1/m1+" + "+x2+"/"+m2+"= "); } else if(x1%m1!=0&&x2%m2==0){ System.out.print(x1+"/"+m1+" + "+x2/m2+"= "); } else if(x1%m1==0&&x2%m2==0){ System.out.print(x1/m1+" + "+x2/m2+"= "); } else System.out.print(x1+"/"+m1+" + "+x2+"/"+m2+"= "); }
代码说明:整数运算的情况比较简单,只用随机生成一些整数,然后按四则运算法则进行运算就可以了,下面是随机生成加法运算式的代码。
for (i = 0; i < x; i++) { int a = (int) (Math.random() * y);// 随机生成一个1-10的整数 int b = (int) (Math.random() * y);// 随机生成一个1-10的整数 int c = (int) (Math.random() * 3);// 随机生成一个0-3的整数,0表示加法,1表示减法,2表示乘法,3表示除法 if (c == 0) { d = a + b; System.out.print(a + "+" + b + "= "); }
PSP:
PSP2.1 |
Personal Software Process Stages |
Time(min) Senior Student |
Time (min) |
Planning |
计划 |
5 |
5 |
Estimate |
估计这个任务需要多少时间 |
5 |
3 |
Development |
开发 |
20 |
30 |
Analysis |
需求分析 (包括学习新技术) |
3 |
20 |
·Design Spec |
生成设计文档 |
5 |
3 |
·Design Review |
设计复审 |
1 |
1 |
Coding Standard |
代码规范 |
20 |
15 |
· Design |
具体设计
|
15 |
10 |
Coding |
具体编码 |
30 |
50 |
·Code Review |
代码复审
|
10 |
10 |
Test |
测试(自我测试,修改代码,提交修改) |
15 |
20 |
Reporting |
报告 |
10 |
10 |
|
测试报告 |
3 |
3 |
|
计算工作量 |
3 |
5 |
|
并提出过程改进计划 |
5 |
0 |
小结:刚开始看到题目的时候,觉得无从下手,不知道从哪开始做起,就百度了很多相似的题目,照着别人做过的代码进行修改,然后再一点一点满足这个题目的要求,最后运行,出错,然后修改,到最后做好,花了两天时间,现在来看,其实题目不是很难,只是自己之前动手写代码的时间太少了,拿到题目之后不知到怎么开始,希望自己以后能够多多练习,尽量少百度网上的代码,能够自己写出代码。