第四次作业--结对项目(四则运算升级版)

                                                  结对项目(四则运算升级版)           

作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

上传Github地址https://github.com/CTqin/CTqin

 

一、基本要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

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

、我做的扩展方向

       1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66(保留两位小数功能实现,不支持出带括号题目)

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

      3.程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现两种颜色切换)

 

 

、开发坏境

 

四、具体代码

     1. 主要利用以下这个函数去产生随机数去出题目

 

int x=(int)(Math.random()*5);

int x=(int)(Math.random()*5);
switch(x)
{
    case 0:
        function1();//一个运算符,整数,整数
        break;
    case 1:
        function2();//一个运算符,整数,分数
        break;
    case 2:
        function3();//一个运算符,分数,分数
        break;
    case 3:
        function4();//两个运算符
        break;
    case 4:
        function5();//求阶乘
        break;
    case 5:
        function6();//题目出现负数
        break;

}

 

 

 

     2.可以处理负数的题目的实现代码

private void function6()//表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。
    {
        int a=(int)(Math.random()*99+1)*-1;//随机生成-1~-99的负整数
        int b=(int)(Math.random()*10+1);
        int x1=(int)(Math.random()*4);
        switch(x1)
        {
            case 0:
            {
                t.setText("("+a+") "+String.valueOf(ch[0])+" "+b);
                answer =a+b;
            }
            break;
            case 1:
            {
                t.setText("("+a+") "+String.valueOf(ch[1])+" "+b);
                answer =a-b;
            }
            break;
            case 2:
            {
                t.setText("("+a+") "+String.valueOf(ch[2])+" "+b);
                answer =a*b;
            }
            break;
            case 3:
            {
                t.setText("("+a+") "+String.valueOf(ch[3])+" "+b);
                answer =(float)a/(float)b;
            }
            break;
        }

    }

 

 

      3.功能框背景颜色的变动

 

     if(e.getSource()==colorchangebtn)
        {
            if (colorchange==true) {
                p1.setBackground(Color.red);
                p2.setBackground(Color.red);
                colorchange=false;
            }
            else
            {
                p1.setBackground(Color.white);
                p2.setBackground(Color.white);
                colorchange=true;
            }
        }

 

先使按钮装一个监听器,两种颜色在里面循环。自己百度改变框背景的方法。

 

五、解决问题

      前期在于配对的问题,找不到作业的伙伴,几经匹配,才配上队。队员陈挺钦(他的博客),他封装和加工漂亮以及上传代码。大部分他做,我只是参与其中一部分的讨论。负责的功能都是大胆构思,小心实践就出来。按照自己的逻辑和经验。唯有颜色变化没涉及过。上网百度之后,比较之后选出最简单的方法应用到代码之中。没太大的问题,可能老师给的时间也很足,所以没感到太大的压迫。

 

附图:统计表

 

PSP2.1

Personal Software Process Stages

Time Senior Student(h)

Time(h)

Planning

计划

0

0

· Estimate

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

7

8

Development

开发

1

1.5

· Analysis

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

0.1

0.3

· Design Spec

生成设计文档

0

0

· Design Review

设计复审

3

1

· Coding Standard

代码规范

0.1

0.1

· Design

具体设计

0.5

1

· Coding

具体编码

1

1

· Code Review

代码复审

1

1.1

· Test

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

0.5

1

Reporting

报告

0

0

Test Report

测试报告

0

0.5

·workload

计算工作量

0

0.5

·correction

并提出过程改进计划

0

0

 

 

结对编程分工:

 

何铠江201606120010:背景颜色设置,整数相加减乘除,时间更新

 

陈廷钦201606120003:页面布局,点击时间处理,答案判断,阶乘计算,代码细节(具体博客

 

 工作图(本人右边)

 

 

posted @ 2018-10-24 19:39  何铠江  阅读(214)  评论(0编辑  收藏  举报