软件工程网络15结对编程作业(201521123103 吴雅娟)
一、成员信息
吴雅娟:201521123103 (http://www.cnblogs.com/yayaya/)
赵铭:201521123093 (http://www.cnblogs.com/zhaoMing3/)
结对码云地址: (https://gitee.com/pair_programming/daima/tree/master)
所选代码:个人博客地址5:(http://www.cnblogs.com/NianQiFeng) 源代码:(https://git.coding.net/qwx_hh/java-szys.git)
二、需求分析
- 功能:
- 可以选择题目语言
- 随机生成题目,实现基本的加减乘除四则运算
- 做完题目回车可以查看答案是否正确
- 计时器功能,点击开始计时时,能显示用户开始答题后的消耗时间
- 对自己的错题进行复习
- 问题:
- 计时的地方可以手动输入时间,然后计时就结束了
- 语言选择模糊,没有按钮显示
三、程序设计
1、修改前代码的覆盖率 具体文件我放在了码云里
2、修改后的代码覆盖率具体文件我放在了码云里
3、功能图
四、修改代码展示
1、界面修改
public List<JTextField> Field_list=new ArrayList<JTextField>();
public Frame() {
super("Myapp");
hs.History_create();
initComponents();
if(Test_Number.l==1){
Set_qusetion.setText("开始");
jLabel2.setText("计时:");
jLabel1.setText("正确率:");
jLabel3.setText("用时:");
Review.setText("复习");
jLabel4.setText("正确:");
jLabel6.setText("全部:");
}
if(Test_Number.l==2){
Set_qusetion.setText("Start");
jLabel2.setText("Timing:");
jLabel1.setText("Correct rate:");
jLabel3.setText("Time cost:");
Review.setText("Review");
jLabel4.setText("Right:");
jLabel6.setText("All:");
}
jLabel7.setText(""+hs.total);
jLabel5.setText(""+hs.right_number);
}
2、增加运算符
public String int_operation() //整数计算
{
int result = 0;
if(a==0)
result=f+g;
if(a==1)
result=f-g;
if(a==2)
result=f*g;
astr = String.valueOf( result);
if(a==3)
{
if(g==0)
{
astr=int_operation();
return astr;
}
else
{
if(g!=0&&g!=1){
int d=common_divisor(f,g); //公约数计算函数
f=f/d;
g=g/d;
astr = (f+"/"+g);
}
if(g==1)
astr=(""+f);
}
}
if(a==4) //新加的
{
if(m==0){ //m==0时是减法
result=(f-g)*n;
}
if(m==1){
result=(f+g)*n; //m==1时是加法
}
}
return astr;
}
public String fra_operation(){ //分数计算
this.compute11 = new Random().nextInt(10)%(10-1+1) + 1;
this.compute21 = new Random().nextInt(10)%(10-2+1) + 2;
this.compute31 = new Random().nextInt(10)%(10-1+1) + 1;
this.compute41 = new Random().nextInt(10)%(10-2+1) + 2;
if(compute31<compute21||compute41<compute31||compute21%compute11==0||compute41%compute31==0)
{
astr=fra_operation();
return astr;
}
int fz=1,fm=compute21*compute41; //fz==分子,fm==分母
if(a==0)
fz=compute21*compute41+compute21*compute31;
if(a==1){
fz=compute11*compute41-compute21*compute31;
if(fz==0)
{
return astr=("0");
}
}
if(a==2)
fz=compute11*compute31;
if(a==3)
{
fz=compute11*compute41;
fm=compute21*compute31;
}
int f=common_divisor(fm,fz);
if(f>0){
fm=fm/f;
fz=fz/f;
}
if(f<0){
fm=-fm/f;
fz=-fz/f;
}
astr = (fz+"/"+fm);
// if(astr.equals("1/1")) astr="1";
// if(fm==1)
// {
// astr=(fz+"");
// }
return astr;
}
public static int common_divisor(int m,int n)
{
while(m%n!=0){
int t=m%n;
m=n;
n=t;
}
return n;
}
public String toString(){ //输出函数
if(x==true){
if(a==0)
qstr=(f+"+"+g+"=");
if(a==1)
qstr=(f+"-"+g+"=");
if(a==2)
qstr=(f+"×"+g+"=");
if(a==3)
qstr=(f+"÷"+g+"=");
if(a==4) //新加的
{
if(m==0)
{
qstr=("("+f+"-"+g+")*"+n+"=");
}
if(m==1)
{
qstr=("("+f+"+"+g+")*"+n+"=");
}
}
}
if(x==false){
if(a==0)
qstr=(compute11+"/"+compute21+"+"+compute31+"/"+compute41+"=");
if(a==1)
qstr=(compute11+"/"+compute21+"-"+compute31+"/"+compute41+"=");
if(a==2)
qstr=(compute11+"/"+compute21+"×"+compute31+"/"+compute41+"=");
if(a==3)
qstr=(compute11+"/"+compute21+"÷"+compute31+"/"+compute41+"=");
}
return qstr;
}
}
五、代码运行及码云截图
然后点击复习就会回到一开始界面选择语言,选择题数。
六、小结感受
结对编程确实有一定的好处,当遇到问题时很快就解决了,效率提高了,任务也可以分工合作,也减轻了负担。虽然在修改的过程中问题很多,但一起解决感觉很好。还可以从对方身上学会更多的东西。从这个角度看好像满足结对编程带来‘1+1>2’这种说法。这次结对因为自己能力差一点很多都靠赵铭解决,所以收获挺大的。
以下是结对的时候的部分聊天记录