结对项目-四则运算“软件”之升级版

Posted on 2018-10-24 17:49  赵铭杰  阅读(227)  评论(1编辑  收藏  举报

      一、程序基本要求如下:

 

  • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

      二、扩展方向(8选4)

   1、可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8

  •    2、用户答题结束以后,程序可以显示用户答题所用的时间
  •    3、用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  •    4、程序可以出单个整数阶乘的题目:如:4!=24

     三、时间记录表

 

 

 

PSP2.1

Personal Software Process Stages

Time Senior Student(h)

Time(h)

Planning

计划

1.5

1

· Estimate

估计这个任务需要多少时间

16

18.1

Development

开发

2

3

· Analysis

需求分析 (包括学习新技术)

1.5

3

· Design Spec

生成设计文档

0

0

· Design Review

设计复审

0.2

0.3

· Coding Standard

代码规范

0.4

0.2

· Design

具体设计

2

2.5

· Coding

具体编码

3

6

· Code Review

代码复审

1

0.8

· Test

测试(自我测试,修改代码,提交修改)

0.5

0.5

Reporting

报告

0

0

Test Report

测试报告

0.2

0.2

·workload

计算工作量

0.2

0.3

·correction

并提出过程改进计划

0.3

0.3      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、结对过程

1.结对成员

  • 刘庆松:把在控制台运行程序转成简单的可视化程序,程序可以出单个整数阶乘的题目:如:4!=24功能,用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数功能
  • 赵铭杰:对用户开始进行答题进行计时处理,在最后结束答题后,会提示所用的总时间;对随机生成的负数进行规范化处理,在负数的位置匹配括号。

2.开发环境

调试并编写代码

3. 结对照片

4. 部分代码及运行截图

 窗口布局文件代码(start.java)

         JFrame frame = new Start();
            frame.setTitle("四则运算");
            frame.setSize(300, 200);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);

 

 随机生成数值和符号的核心代码(start.java)

      int sign1 = (int) (Math.random() * 3); //产生0-3的随机数
            int sign2 = (int) (Math.random() * 3); //产生0-3的随机数
            int x = -(int) (Math.random() * 99)+(int) (Math.random() * 99);
            int y = -(int) (Math.random() * 99)+(int) (Math.random() * 99);
            int z = -(int) (Math.random() * 99)+(int) (Math.random() * 99);
            int j = 1 + (int) (Math.random() * 9);
            int sign3 = 1 + (int) (Math.random() * 3);
            String result = "";

 

 通过递归计算阶乘的结果功能代码(EasyOperation.java)

public  int jiecheng(int number){
        if (number <= 1)
            return 1;
        else
            return number * jiecheng(number - 1);
    }
}

 

 生成题目计算答案的功能代码(EasyOperation.java)

public  double count1(int x,int y,int z,int sign1,int sign2){
        double result=0;
        if((sign1==0)&&(sign2==0)){ result=x+y+z; }
        if((sign1==0)&&(sign2==1)){ result=x+y-z; }
        if((sign1==0)&&(sign2==2)){ result=x+y*z; }
        if((sign1==0)&&(sign2==3)){ result=x+y/z; }
        if((sign1==1)&&(sign2==0)){ result=x-y+z; }
        if((sign1==1)&&(sign2==1)){ result=x-y-z; }
        if((sign1==1)&&(sign2==2)){ result=x-y*z; }
        if((sign1==1)&&(sign2==3)){ result=x-y/z; }
        if((sign1==2)&&(sign2==0)){ result=x*y+z; }
        if((sign1==2)&&(sign2==1)){ result=x*y-z; }
        if((sign1==2)&&(sign2==2)){ result=x*y*z; }
        if((sign1==2)&&(sign2==3)){ result=x*y/z; }
        if((sign1==3)&&(sign2==0)){ result=x/y+z; }
        if((sign1==3)&&(sign2==1)){ result=x/y-z; }
        if((sign1==3)&&(sign2==2)){ result=x/y*z; }
        if((sign1==3)&&(sign2==3)){ result=x/y/z; }
        String test =new DecimalFormat("0.0").format(result);
        result = Double.valueOf(test);
        return result;
    }

 

生成“题目“”的字符串功能代码(EasyOperation.java)

 public  String count(int x,int y,int z,int sign1,int sign2){
        String result="";
        String sign3="";
        String sign4="";
        String x1 = String.valueOf(x);
        String y1 = String.valueOf(y);
        String z1 = String.valueOf(z);
        if(x<0)x1="("+x1+")";
        if(y<0)y1="("+y1+")";
        if(z<0)z1="("+z1+")";
        switch(sign1){
            case 0:sign3="+";break;
            case 1:sign3="-";break;
            case 2:sign3="x";break;
            case 3:sign3="/";break;
            default:sign3="+";
        }
        switch(sign2){
            case 0:sign4="+";break;
            case 1:sign4="-";break;
            case 2:sign4="x";break;
            case 3:sign4="/";break;
            default:sign4="+";
        }
        result=x1+sign3+y1+sign4+z1;
        return result;
    }

运行界面截图(start.java)

用户答案判断提示(EasyOperation.java)

 

统计用时提示(TimerCount.java)

提示用户答题数已超过五题(start.java)