需求分析
实现一个命令行程序,要求:
自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
- 随机出现整数。
- 括号必须成对存在。
- 为了避免由于一次出现大量算式导致翻找时浪费不必要的时间,设计成每算一个再给出下一个算式,并给出当前进度。
- 能一键给出算式的所有答案。
- 自主设置涉及的运算符以适应不同年级的小学生。
设计思路
- 随机出现数字算式。
- 先做出整数计算式。
- 暂时先做出整体框架,接下来再增添细节。
实现过程中的关键代码解释
随机整数,并用switch语句。
import java.util.Random;
import java.util.Scanner;
import java.text.NumberFormat;
import java.util.*;
public class NumberCounter {
public static void main(String args[]) {
NumberFormat nf = NumberFormat.getPercentInstance();
Integer num1, num2;
RationalNumber N1, N2 = null, N3 = null;
String Q = null, A;
int trues = 0;
Random generator = new Random();
int num, answer;
Scanner scan = new Scanner(System.in);
System.out.println("题目数量: ");
int num4 = scan.nextInt();
int num6 = generator.nextInt(1);
if (num6 == 0) {
for (int i = 0; i < num4; i++) {
int num5 = generator.nextInt(3);
num1 = Integer.obj();
num2 = Integer.obj();
switch (num5) {
case 0:
num = num1.add(num2);
System.out.println(num1.getNum() + "+" + num2.getNum() + "=");
answer = scan.nextInt();
if (answer == num)
trues++;
else
System.out.println("正确答案: " + num);
break;
case 1:
num = num1.reduce(num2);
System.out.println(num1.getNum() + "-" + num2.getNum() + "=");
answer = scan.nextInt();
if (answer == num)
trues++;
else
System.out.println("正确答案: " + num);
break;
case 2:
num = num1.ride(num2);
System.out.println(num1.getNum() + "*" + num2.getNum() + "=");
answer = scan.nextInt();
if (answer == num)
trues++;
else
System.out.println("正确答案: " + num);
case 3:
num = num1.excepet(num2);
System.out.println(num1.getNum() + "/" + num2.getNum() + "=");
answer = scan.nextInt();
if (answer == num)
trues++;
else
System.out.println("正确答案: " + num);
break;
}
}
}
编写过程记录
PSP2.1 | Personal Softwore Process Stage | 预计耗时(分钟) | 实际耗时(分钟)) | 重要成长 |
---|---|---|---|---|
Planning | 计划 | 40 | 60 | |
Estimate | 做这个任务需要多长时间 | 360 | 240 | |
Development | 开发 | 30 | 30 | |
Analysis | 需求分析(包括学习新技术) | 30 | 35 | |
Design Spec | 生成设计文档 | 60 | 40 | |
Design Review | 设计复审(和同事审核设计软件) | 40 | 20 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 120 | 180 | |
Design | 具体设计 | 120 | 100 | |
Coding | 具体编码 | 100 | 120 | |
Code Review | 代码复审 | 30 | 15 | |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 | |
Reporting | 报告 | 30 | 40 | |
Test Report | 测试报告 | 40 | 50 | |
Size Measurement | 计算工作量 | 10 | 20 | |
Postmortem & Process Improvement Plan | 30 | 10 |
结对伙伴
我的结对伙伴是蔡文琛,本周的工作主要是他来操刀了,我的代码都是在他的指导下进行编辑,很感谢他对我的帮助。