zoukankan      html  css  js  c++  java
  • 结对项目-四则运算 “软件”之升级版

    作业来源: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

                 结对工作照片:

                 

  • 相关阅读:
    冒泡排序
    线程同步
    线程取消
    线程分离
    第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数
    第3月第1天 GCDAsyncSocket dispatch_source_set_event_handler runloop
    第2月第25天 BlocksKit
    第2月第24天 coretext 行高
    第2月第6天 iOS 运行时添加属性和方法
    第2月第5天 arc invocation getReturnValue
  • 原文地址:https://www.cnblogs.com/hycolins/p/9837258.html
Copyright © 2011-2022 走看看