一、码云链接
二、需求分析
- 实现一个命令行程序,要求:
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
三、设计思路(同时输出UML类图)
import java.util.Scanner;
import java.util.Random;
import java.io.IOException;
import java.lang.String;
public class sizeyunsuan {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你想要做的题目的数量:");
int num = scanner.nextInt();
double result=0;
double answer,accuracy;
double right=0;
for (int i=0;i<num;i++) {
Random random = new Random();
int num_1 = random.nextInt(100);
int num_2 = random.nextInt(100);
System.out.print("题目 "+(i+1)+" :
");
switch (random.nextInt(4)) {
case 0:
result=Jisuan.add(num_1,num_2);
System.out.println(num_1+" + "+num_2);
break;
case 1:
result=Jisuan.sub(num_1,num_2);
System.out.println(num_1+" - "+num_2);
break;
case 2:
result=Jisuan.mul(num_1,num_2);
System.out.println(num_1+" * "+num_2);
break;
case 3:
result=Jisuan.div(num_1,num_2);
System.out.println(num_1+" / "+num_2);
break;
}
System.out.println("请输入你的答案:");
answer = scanner.nextInt();
if (answer == result) {
System.out.println("Right !!!");
right++;
} else
System.out.println("Wrong !!!
The correct answer is : " + result);
}
accuracy = (double) (right / num) * 100;
if(num==0) {
System.out.println("答题结束 !!!");
}
else{
System.out.println("答题完毕 !
你的正确率为 :" + accuracy + "%");
}
}
}
class Jisuan {
static double add(int num_1,int num_2) {
return (num_1+num_2);
}
static double sub(int num_1,int num_2) {
return (num_1-num_2);
}
static double mul(int num_1,int num_2) {
return (num_1*num_2);
}
static double div(int num_1,int num_2) {
double temp;
if (num_2!=0) {
temp=num_1/num_2;
}
else
temp=0;
return temp;
}
}
四、功能截图
五、结对感受
第一次正式合作结对编程,题目有一定难度所以我们在讨论设计的过程中花费了较多时间。虽然此前也接触过四则运算的编程题目,但这个项目的要求明显要高,多了很多额外条件。如果我一个人做的话,很可能因为题目的繁琐而消极怠工,无法完成。但通过我们两个人共同查阅资料,不断地交流、修改、讨论,终于解决了本题目也算是有一点点合作的成就感。我的编程水平不如李梓豪,很多时候他考虑问题要周全的多,所以在日后的合作中我还是要加强学习,努力完善自己的思维,提高自身能力。
六、PSP表格
PSP | Personal Software Process Stages) | 预估耗时(分钟)) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 90 | 120 |
Development | 开发 | 40 | 60 |
Analysis | 需求分析 (包括学习新技术) | 30 | 40 |
Design Spec | 生成设计文档 | 10 | 15 |
Design Review | 设计复审 (和同事审核设计文档) | 25 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 15 | 30 |
Design | 具体设计 | 60 | 75 |
Coding | 具体编码 | 100 | 125 |
Code Review | 代码复审 | 30 | 25 |
Test | 测试(自我测试,修改代码,提交修改) | 50 | 75 |
Reporting | 报告 | 10 | 20 |
Test Report | 测试报告 | 20 | 25 |
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 80 |
合计 | 580 | 825 |