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


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

    作业来源: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:页面布局,点击时间处理,答案判断,阶乘计算,代码细节(具体博客

     工作图(本人右边)

     

  • 相关阅读:
    mentohust 使用
    查找 GPU 计算能力
    在写代码过程中遇到的问题,以及当时的解决方法(如实记录)
    ubuntu14.04 解决屏幕亮度无法调节的问题
    Ubuntu14.04下安装 boost (boost_1.54 最简单的方法)
    在 Ubuntu下安装 labelImg (标数据用)
    在树莓派上配置MariaDB
    使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况
    如何读懂SQL Server的事务日志
    ActiveMQ安装使用与spring整合配置教程
  • 原文地址:https://www.cnblogs.com/hekairui/p/9827814.html
Copyright © 2020-2023  润新知