第三次作业:个人项目-小学四则运算 “软件”之初版
作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
一、题目要求:
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:
23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
二、耗时统计表(/min):
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 15 | 8 |
Estimate | 估计这个任务需要多少时间 | 180 | 240 |
Development | 开发 | 60 | 50 |
Analysis | 需求分析 (包括学习新技术) | 10 | 12 |
Design Spec | 生成设计文档 | 20 | 21 |
Design Review | 设计复审 | 18 | 35 |
Coding Standard | 代码规范 | 48 | 50 |
Design | 具体设计 | 38 | 42 |
Coding | 具体编码 | 52 | 120 |
Code Review | 代码复审 | 45 | 56 |
Test | 测试(自我测试,修改代码,提交修改) | 18 | 36 |
Reporting | 报告 | 33 | 26 |
测试报告 | 14 | 23 | |
计算工作量 | 180 | 240 | |
并提出过程改进计划 | 30 | 32 |
三、部分代码:
//让用户输入想要出的题的数字的位数
System.out.println("当M=10时表示一位数的加减运算,M=100时表示两位数的加减运算...请选择");
int M=in.nextInt();
an.setM(M);
System.out.println("请输入需要打印多少道题:");
int N=in.nextInt();
an.setN(N);
an.Showme();
//输出加减的运算题,并且输出答案
class Jiajian extends Yunsuan
{
public char o[]={'+','-'};
public void Showme()
{
for(int i=0;i<N;i++)
{
// for(int j=0;j<10;j++)
// {
int a=(int)(Math.random()*M)+1;//随机数种子 *M+1,加一表示非0
int b=(int)(Math.random()*M)+1;
int c=(int)(Math.random()*2);
System.out.print(a);
System.out.print(o[c]);
System.out.print(b+"="+(a+b));
// }
System.out.println();
}
}
}
class Chengchu extends Yunsuan
{
public char p[]={'*','/'};
// public char p_1='*';
public void Showme()
{
for(int i=0;i<N;i++)
{
// for(int j=0;j<10;j++)
// {
int a=(int)(Math.random()*M)+1;
int b=(int)(Math.random()*M)+1;
int c=(int)(Math.random()*2);
System.out.print(a);
System.out.print(p[c]);
if(p[c]=='*') {
System.out.print(b + "=" + (a * b));
System.out.println();
}
else {
double d=a;
double e=b;
double g=d/e;
double f=(double)Math.round(g*100)/100;
System.out.print(b + "="+f );
System.out.println();
}
// }
}
}
}
四、运行结果:
实现四则运算的出题和输出答案,给用户