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

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

Github地址: https://github.com/yanyuluu/yanyuluu/tree/master/software

一、基本要求

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

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

二、我们做的扩展方向

  1. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  3. 程序可以出单个整数阶乘的题目:如:4!=24
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)

三、开发环境下调试:Intelij IDEA

       

四、估计实现所需时间,记录结对编程时间。

PSP2.1 Personal Software Process Stages Time Senior Student Time
Development 开发 50 60
· Analysis 需求分析 (包括学习新技术) 20 30
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 0 0
· Coding Standard 代码规范 5 8
· Design 具体设计 30 35
· Coding 具体编码 45 60
· Code Review 代码复审 3 5
· Test 测试(自我测试,修改代码,提交修改) 10 8
Reporting 报告 0 0

五、代码实现

1.定义一个面板及其组件

class myframe extends JFrame
{
    JLabel L1=new JLabel("题目:");//创建无图像并且其标题为空字符串的 JLabel
    JLabel L2=new JLabel("输入题目个数:");
    JLabel L3=new JLabel("提示:");
    JLabel L4=new JLabel("       ");   //题目
    JLabel L5=new JLabel("题目个数不能大于5");   //提示
    JTextField T1=new JTextField(6);//创建一个6长度的文本框
    JButton B1=new JButton("开始"); //按钮
    JButton B2=new JButton("确认");
    JButton B3=new JButton("下一题");
    JButton B4=new JButton("换皮肤");
    JPanel p1=new JPanel();//JPanel:面板组件,非顶层容器

2.设置面板大小,设置面板内控件的位置和大小 

this.setSize(360,300);//设置面板大小
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭子窗口
        this.add(p1);
        p1.setLayout(null);
        L1.setBounds(50, 20, 90, 30);
        p1.add(L1);
        L4.setBounds(140, 20, 150, 30);
        p1.add(L4);
        L2.setBounds(50, 70, 90, 30);
        p1.add(L2);
        T1.setBounds(150, 70, 90, 30);
        p1.add(T1);
        B4.setBounds(200, 120, 90, 30);//换皮肤
        p1.add(B4);
        B1.setBounds(50, 120, 90, 30);//开始
        p1.add(B1);
        B2.setBounds(80, 170, 90, 30);//确认
        p1.add(B2);
        B2.setEnabled(false);
        B3.setBounds(170, 170,90,30);//下一题
        p1.add(B3);
        L3.setBounds(50, 200, 50, 30);
        B3.setEnabled(false);
        p1.add(L3);
        L5.setBounds(100, 200, 180, 30);
        p1.add(L5);

3.将程序运行界面设置为可见,并显示在屏幕中间,设置为用户不可改变面板大小

        this.setVisible(true);//设置可见窗口
        this.setResizable(false);//设置面板不可改变大小
        this.setLocationRelativeTo(null);//此窗口将置于屏幕的中央

4.产生随机产生-99到99的三个随机数a,b,c,随机生成两个运算符j,k

a=(int) (Math.random()*200-100);//random出来的数为0-1之间,然后取-99到99的整数
        b=(int) (Math.random()*200-100);
        c=(int) (Math.random()*200-100);
j=(int) (Math.random()*4);
k=(int) (Math.random()*4);

 5.判断随机产生的数是否为负数,如果是就用括号括起来

else if(b<0&&c>=0)
            {
                //检测到b小于0,为负数,给b的左右两边加上括号运算
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(c);
                L4.setText(s1);
                System.out.println(s1);
            }
            else if(b>=0&&c<0)
            {
                //检测到c小于0,为负数,给c的左右两边加上括号运算
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]);
                L4.setText(s1);
                System.out.println(s1);
            }

 6.实现阶乘的部分代码

            a=(int) (Math.random()*9+1);//随机产生一个整数 范围是0-9(包括0和9)
            s1=String.valueOf(a)+String.valueOf(h1[2]);//获取这个数进行阶乘
            L4.setText(s1);
            result=1;
            for(int i=1;i<=a;i++)//从1开始一直乘到这个数字本身
            {
                result=result*i;
            }

六、运行结果截图

       1.没进行任何操作的主页面

         

         2.输入题目个数,点击开始随机出题

          

        3.输入大于5的题目数会弹出小窗提示

          

        4.输入答案,回答正确则提示回答正确,回答错误则显示“回答错误,答案为:”

            

        5.全部答题完毕,会显示答对题数

          

        6.点击换皮肤,会给面板换一个颜色

           

七、分工与合作

    1、结对成员

  • 本人——黄雨纯:负责代码注释以及撰写博客
  • 队友——卢欣余(http://www.cnblogs.com/lxyu/):负责代码整合以及上传代码到GitHub

   2、扩展方向

  • 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8(卢欣余)
  • 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(黄雨纯)
  • 程序可以出单个整数阶乘的题目:如:4!=24(黄雨纯)
  • 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)(卢欣余)

八、总结心得

  • 这个项目和以前学的知识有很多的关联,在做项目的同时也回顾了以前的知识
  • 程序还是不够全面,有的地方考虑的不够
  • 技术方面还是有点欠缺的,没能把程序用户界面做的更加美观

附录:结对同伴学号及博客地址,结对工作照片

             结对同伴:201606120047卢欣余

             同伴博客地址:https://www.cnblogs.com/lxyu/p/9842929.html

             结对工作照片:

             

原文地址:https://www.cnblogs.com/hycolins/p/9837258.html