软件开发与创新第二次实验———结对编程:计算出题系统

一.结对信息
2252418 盛宇伟
2252436 董朝
二.题目要求
小学老师要每周给同学出300道四则运算练习题。
这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
两个运算符,100 以内的数字,不需要写答案。
需要检查答案是否正确,并且保证答案在 0..100 之间
尽可能地多设置一些条件
请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)
三.设计思路分析
1.根据题目要求,算式形式应为【1-99】 运算符 【1-99】运算符 【1-99】= 结果
2.随机生成题目的同时,也生成答案,在选择显示答案后,将题目和答案同时输出
3.设计简单的控制台程序,有3个功能,分别为答案,题目,退出,以满足基本的需求
四.分工安排
由2252436董朝同学编写代码大体框架,我对来编写一些函数,在编程过程中互相检查,完成后,由董朝同学进行测试,我来编写博客
五.代码
`import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;

public class chuti {
static double[] one=new double[500];
static double[] two=new double[500];
static double[] there=new double[500];
static int[] aaa=new int[500];
static int[] bbb=new int[500];
static double[] sum=new double[500];
static double[] yousum=new double[500];
static String[] saaa=new String[500];
static String[] sbbb=new String[500];

 static String[] laber=new String[500];


 public static void printone( int number1){
     System.out.println(number1+"道100以内的四则运算题目输出:");
     System.out.println("----------------------------");
     for(int i=0;i<number1;i++){

         Random r1=new Random();

         one[i]=r1.nextInt(100);
         two[i]=r1.nextInt(100);
         there[i]=r1.nextInt(100);
         //1=*,2=/,3=+,4=-。
         aaa[i]=r1.nextInt(4)+1;
         bbb[i]=r1.nextInt(4)+1;



         if(bbb[i]==1||bbb[i]==2){
             if(bbb[i]==1){
                 sum[i]=two[i]*there[i];
             }else if(bbb[i]==2){
                 sum[i]=two[i]/there[i];
             }
             if(aaa[i]==1){
                 sum[i]=sum[i]*one[i];
             }else if(aaa[i]==2){
                 sum[i]=sum[i]/one[i];
             }else if(aaa[i]==3){
                 sum[i]=sum[i]+one[i];
             }else if(aaa[i]==4){
                 sum[i]=sum[i]-one[i];
             }

         }else{
             if(aaa[i]==1){
                 sum[i]=one[i]*two[i];
             }else if(aaa[i]==2){
                 sum[i]=one[i]/two[i];
             }else if(aaa[i]==3){
                 sum[i]=one[i]+two[i];
             }else if(aaa[i]==4){
                 sum[i]=one[i]-two[i];
             }
             if(bbb[i]==1){
                 sum[i]=sum[i]*there[i];
             }else if(bbb[i]==2){
                 sum[i]=sum[i]/there[i];
             }else if(bbb[i]==3){
                 sum[i]=sum[i]+there[i];
             }else if(bbb[i]==4){
                 sum[i]=sum[i]-there[i];
             }
         }
         //
         if(aaa[i]==1){
             saaa[i]="*";
         }else if(aaa[i]==2){
             saaa[i]="/";
         }else if(aaa[i]==3){
             saaa[i]="+";
         }else if(aaa[i]==4){
             saaa[i]="-";
         }
         //
         if(bbb[i]==1){
             sbbb[i]="*";
         }else if(bbb[i]==2){
             sbbb[i]="/";
         }else if(bbb[i]==3){
             sbbb[i]="+";
         }else if(bbb[i]==4){
             sbbb[i]="-";
         }
         //打印,选择0到1000的数
         DecimalFormat de=new DecimalFormat("#0");
         if(sum[i]<=1000&&sum[i]>=0){
             if(i%5==0&&i!=0){
                 System.out.println();
             }
             System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"=\t\t");
         }else{
             i--;
         }
     }
     System.out.println();
     System.out.println("----------------------------");
     System.out.println("题目输出完毕");
 }

 public static void answerone(int number1){
     System.out.println(number1+"道100以内的四则运算题目答案:");
     System.out.println("---------------------------");
     DecimalFormat de=new DecimalFormat("#0");
     DecimalFormat df=new DecimalFormat("#0.00");
     for(int i=0;i<number1;i++){
         if(i%5==0&&i!=0){
             System.out.println();
         }
         System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"="+df.format(sum[i])+"\t\t");
     }
     System.out.println();
     System.out.println("----------------------------");
     System.out.println("答案显示完毕");
 }

 public static void chaeck(int number1){
     System.out.println("3.检查。请输入下列题目答案:");
     int cnt=0;
     Scanner scanner=new Scanner(System.in);
     DecimalFormat de=new DecimalFormat("#0");
     for(int i=0;i<number1;i++){
         if(i%5==0&&i!=0){
             System.out.println();
         }
         System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"= ");
         yousum[i]=scanner.nextDouble();
         String  str = String.format("%.2f",sum[i]);
         sum[i] = Double.parseDouble(str);
         if(yousum[i]==sum[i]){
             cnt++;
             laber[i]="true";
         }else{
             laber[i]="false";
         }
     }
     System.out.println("--------------------------");
     System.out.println("显示答题结果为:");
     for(int i=0;i<number1;i++){
         if(i%5==0&&i!=0){
             System.out.println();
         }
         System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"="+de.format(yousum[i])+" ("+laber[i]+")\t\t");

     }
     System.out.println();
     System.out.println("题目总数:"+number1);
     System.out.println("答对题目: "+cnt);
     double count;
     count=(double)cnt/(double)number1;
     if(count>0.6){
         System.out.println("答题答的不错,继续加油哦!");
     }else{
         System.out.println("争取答的更好,还要加油哦!");
     }
 }

public static void setQuestion(){
    System.out.println("要出题的数目为:");
    Scanner scanner=new Scanner(System.in);
    int number1=scanner.nextInt();
    printone(number1);
    //answerone(number1);
    chaeck(number1);
}

public static void pint(){
     System.out.println("-----------------------------------");
     System.out.println("|              出题系统             |");
     System.out.println("|     1.答案                2.核对  |");
     System.out.println("|     3.结束                        |");
     System.out.println("------------------------------------");
}


public static void main(String[] args){
     Scanner scanner=new Scanner(System.in);
    int number1;


    System.out.println("要出题的数目为:");
    number1=scanner.nextInt();
    printone(number1);
    while(true){
        pint();
        int cnt=scanner.nextInt();
        if(cnt==1){
            answerone(number1);![](https://img2024.cnblogs.com/blog/3398630/202404/3398630-20240424211155493-574335144.png)

        }else if(cnt==2){
            chaeck(number1);
        }else{
            break;
        }
    }
}

}
`
六.运行截图






七.实验体会
结对编程对于我和搭档来说确实是一种比较新颖的体验,往日的编程一般都是由自己完成,而就是这样,寻找代码中的漏洞也是一件非常麻烦的事情,但是令我没有想到的是,在结对编程的过程中,只要能够在一旁观察搭档的语法输入,寻找漏洞要比自己编写时方便许多,这或许就是灯下黑的原因吧。而在另外一方面,通过结对编程,我和队友可以交流彼此的知识经验,以及编程习惯,也是通过交流,让我和搭档也能够从这次较为简单的编程中收获良多。

posted on 2024-04-24 21:21  盛宇伟  阅读(10)  评论(0编辑  收藏  举报