结对项目
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 学会结对编程,合作编写程序 |
成员:3119005343王宇崇
Github链接
一、PSP2.1表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间 | 25 | 10 |
Development | 开发 | 300 | 390 |
Analysis | 需求分析 (包括学习新技术) | 400 | 450 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 | 20 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 30 | 20 |
Coding | 具体编码 | 500 | 400 |
Code Review | 代码复审 | 30 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting | 报告 | 20 | 30 |
Test Repor | 测试报告 | ||
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 20 |
合计 | 1435 | 1510 |
二、模块接口的设计与实现过程
1.程序流程图
2、项目结构
main:项目入口
AnswerCheckUtil类:检验答案是否正确
ExerciseIntegerUtil类:生成整数型题目
ExerciseFractionUtil类:生成分数型题目
FractionOperationUtil类:将分数转换为带分数
ExerciseInsertUtil类:将题目和答案写入文本文件中
三、计算模块接口部分的性能改进
四、部分代码说明
main类
点击查看代码
package main;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import utils.AnswerCheckUtil;
import utils.ExerciseFractionUtil;
import utils.ExerciseIntegerUtil;
public class main {
public static void main(String[] args) {
//n表示输入题目数量,x表示输入数字的范围
int in,n,x,over;
System.out.println("自动生成小学四则运算题目");
while(true) {
Scanner scanner=new Scanner(System.in);
System.out.println("选择题目类型:1整数类型,2分数类型");
//判断是否输入为数字
if(!scanner.hasNextInt())
continue;
in=scanner.nextInt();
if(in==1) {
System.out.println("请输入出题的数量和数字的范围");
n=new Scanner(System.in).nextInt();
x=new Scanner(System.in).nextInt();
ExerciseIntegerUtil.getExerise(n, x);
File file=new File("write.txt");
try {
if(!file.exists())
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("请在write.txt中作答,答题完毕请输入1");
over=scanner.nextInt();
//判断是否输入正确
while(over!=1) {
System.out.println("输入有误,请重新输入");
over=new Scanner(System.in).nextInt();
}
AnswerCheckUtil.checkAnswer();
}
else if(in==2) {
System.out.println("请输入出题的数量和数字的范围");
n=new Scanner(System.in).nextInt();
x=new Scanner(System.in).nextInt();
ExerciseFractionUtil.getExercise(n, x);
File file=new File("write.txt");
try {
if(!file.exists())
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("请在write.txt中作答,答题完毕请输入1");
over=scanner.nextInt();
while(over!=1) {
System.out.println("输入有误,请重新输入");
over=new Scanner(System.in).nextInt();
}
AnswerCheckUtil.checkAnswer();
}
else {
System.out.println("你输入有误");
}
}
}
}
五、具体的测试案例
六、项目小结
在这次结对编程中,我没有找到合适的队友,所以打算一个人完成这个项目,先是在网上找了资料学习,但是却没有得到好的思路,还好有和其他已经结了对的同学交流讨论后,我才能确定初步的思路,开始项目。在项目的完成过程中,由于只能由一个人来考虑并完成,所以在碰到许多难题时,便会浪费很长的时间,由此我深刻地体会到这个项目需要结对的重要性。在项目完成之后,对于题目的部分要求也不能很好的满足,例如对于题目的查重功能未能实现,总的来说,这是一次令我印象深刻的编程体验,我觉得对于一个编程项目来说,相比由一个人来完成,还是与人合作,多讨论多交流才能让成果更符合需求,让自己收获更多。