计应193焦德智 小学四则运算系统
一.计划
编写一个小学生四则运算出题程序
二.开发
1.需求分析
作为一名一年级小学生的家长,我希望制作一个出题软件,随机产生100以内的正整数加减乘除及符号,减法为负值的剔除,剔除不够减,循环产生。
2.生成设计文档
3.设计复审
4.代码规范
注意大小写、缩进、括号及分行。
5.具体设计
系统开始,随机产生10道加法、减法、乘法或除法,计算完成后,显示答案及对错,统计时间,系统结束。
6.具体编码
package sizeyunsuan;
import java.util.Random;
import java.util.Scanner;
import java.util.StringJoiner;
public class Student {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scanner = new Scanner(System.in);
int n,m;
System.out.println("请输入一个正整数:");
n=scanner.nextInt();
System.out.println("请输入一行几道题:");
m=scanner.nextInt();
/* 将生成的两个随机数和四个运算符存在数组中 **/
int[] a=new int[10000];
int[] b=new int[10000];
int[] d=new int[10000];
Random rand=new Random();
//使用数组
String z=null;
for(int i=0;i
int x=(int)(1+Math.random()*99);
int y=(int)(1+Math.random()*99);
int c=(int)(1+Math.random()*4);
a[i]=x;
b[i]=y;
d[i]=c;
for(int j=0;j
{
if(a[j]==x&&b[j]==y&&d[j]==c)
i--;
break;
}
switch(c)
{
case 1:z="+";break;
case 2:z="-";break;
case 3:z="*";break;
case 4:z="/";break;
}
if((x>=y&&z=="-")||(x*y<100&&z=="*")||(x/y>=1&&x%y==0&&z=="/")||(z=="+"))
{if((i+1)%m==0)
System.out.println((i+1)+":"+x+z+y+"=");
else
System.out.print((i+1)+": "+x+z+y+"="+" ");
}else
i--;
}
}
}
7.代码复审
8.测试
总结
我觉得这个题最难得一个地方就是怎样让出的题不重复,这个我也在网上查了很多资料,就是把产生的随机数放在数组里,这个还是比较好弄的,也有的人是用递归写的,这个也行;通过这个实验我学会了用随机函数,对数组认识更加深了。
PSP阶段 | 预计所需时间(小时) | 实际花费时间(小时) |
计划 | 8 | 6 |
明确需求和其他相关因素,估计每个阶段的时间成本 | 8 | 6 |
开发 | 88 | 91 |
需求分析 | 6 | 4 |
生成设计文档 | 6 | 6 |
设计复审(和同事审核设计文档 ) | 4 | 5 |
代码规范(为目前的开发制定合适的规范) | 4 | 4 |
具体设计 | 9 | 5 |
具体编码 | 41 | 54 |
代码复审 | 9 | 2 |
测试(自测,修改代码,提交修改) |
9 | 11 |
报告 | 4 | 3 |
测试报告 | 2 | 1 |
计算工作量 | 1 | 1 |
事后总结,并提出过程改进计划 | 1 | 1 |