结对 四则运算

编译环境:Ecllipse

开发人员:朱浩龙 学号:201306114324

叶煜稳 学号:201306114323 博客:http://www.cnblogs.com/doubi2wy/

最后开发时间:2015—04—09

实现功能:

  1. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  2. 用户答题结束以后,程序可以显示用户答题所用的时间
  3. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  4. 程序可以出单个整数阶乘的题目:如:4!=24

分工:

程序的主体和答案的算法是我和队友一起完成的,表达式中含有负数以及用户可以选择出题数是我独立完成的;先是答题时间以及阶层是叶煜稳完成的。

总结:

这次的程序编写有很多的困难,一开始的不适应以及双方写代码方式的不同都造成了很多的困难。程序本身还存在着许多的问题,例如答案的算法有时候不正确,程序有时候会BUG,这些都是还没有解决的问题。四则运算本身不是很难,但是如果涉及多个运算符的话算法的思考就会变得复杂,解决算法的问题是编程中花费时间最多的,但是通过算法的分析设计使得我对于java算法的立即更加的深刻。在这次的实验中,界面非常的简陋,这是由于时间问题,我希望下次的界面能够做的更好。通过这次实验,让我了解了结对编程的好处。首先在编程的过程中可以避免很多细节上的问题,例如语句的缺少,算法的错误等都可以及时的发现。但是在结对编程的过程中也会出现类是吵架的现象出现,这是两个人的想法以及个人习惯的碰撞。虽然结对编程使用的时间好像比预计的时间要多。但是我相信多次结对变成后会变得更快。

package ZhuTi;

import java.awt.Color;

public class 四则运算 {

    private JFrame frame;
    private JTextField T1;
    static long startTime;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    四则运算 window = new 四则运算();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
    }
    int i,j,count=0;
    int c1,c2;
    double []a=new double [10];
    int []c=new int [10];
    int []s1=new int [10];
    char f = 0;
    String s2="";
    String s=null;
    long ST1;
    private JTextField T2;

    /**
     * Create the application.
     */
public 四则运算() {
    startTime = System.currentTimeMillis(); 

        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        final JButton B1 = new JButton("\u5F00\u59CB\u7B54\u9898");
        final JLabel L1 = new JLabel("");

        T1 = new JTextField();
        T1.setColumns(10);
        T1.setVisible(false);

        final JLabel L2 = new JLabel("");

        final JLabel L3 = new JLabel("");

        JLabel l3 = new JLabel("\u6BCF\u6B21\u7B54\u9898\u7684\u6570\u76EE\uFF08\u5C0F\u4E8E5\uFF09");

        T2 = new JTextField();
        T2.setColumns(10);
        T2.setText("5");
        GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(160)
                    .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                        .addComponent(L2)
                        .addComponent(L3))
                    .addContainerGap(196, Short.MAX_VALUE))
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(151)
                    .addComponent(B1, GroupLayout.PREFERRED_SIZE, 98, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(185, Short.MAX_VALUE))
                .addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
                    .addContainerGap(97, Short.MAX_VALUE)
                    .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
                        .addGroup(groupLayout.createSequentialGroup()
                            .addComponent(l3)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(T2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                            .addGap(14))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addComponent(L1)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(T1, GroupLayout.PREFERRED_SIZE, 151, GroupLayout.PREFERRED_SIZE)))
                    .addGap(115))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(36)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(l3)
                        .addComponent(T2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.UNRELATED)
                    .addComponent(B1, GroupLayout.PREFERRED_SIZE, 34, GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(ComponentPlacement.UNRELATED)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(T1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(L1))
                    .addGap(18)
                    .addComponent(L2)
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addComponent(L3)
                    .addContainerGap(78, Short.MAX_VALUE))
        );
        frame.getContentPane().setLayout(groupLayout);
        T2.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                c2=(int)(Double.parseDouble(T2.getText()));
                if(c2>5)
                    {
                    T2.setText("5");
                    c2=5;
                    }
            }
        });
        B1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                L1.setVisible(true);
                L2.setVisible(true);
                L3.setVisible(true);
                L1.setText(" ");
                L2.setText(" ");
                L3.setText(" ");
                T1.setVisible(true);
                T2.setEditable(false);
                B1.setVisible(false);
                c2=(int)(Double.parseDouble(T2.getText()));
                if(c2>5)
                    {
                    T2.setText("5");
                    c2=5;
                    }
                ST1 = System.currentTimeMillis();
                c1=0;
                String s2=methodA();
                System.out.println(a[0]);
                L1.setText(""+s2+"=");
                }
        });
        T1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                int d=(int)(Double.parseDouble(T1.getText()));
                if(a[0]==d)
                {
                    L2.setText("正确!");
                    L3.setText(" ");
                    for(i=0;i<999;i++);
                    T1.setText("");
                    if(c1<c2)
                    {
                    String s2=methodA();
                    System.out.println(a[0]);
                    L1.setText(""+s2+"=");
                    c1++;
                    count++;
                    }
                    if(c1==c2)
                    {
                        long endTime1 = System.currentTimeMillis();
                        JOptionPane.showMessageDialog(null, "答题耗时耗时"
                                + (endTime1 - ST1) / 1000 + "秒"+"\n答对"+(count)+"题"+"\n答错"+(c2-count)+"题", "消息提示",
                                JOptionPane.ERROR_MESSAGE);
                        B1.setVisible(true);
                        T2.setEditable(true);
                        L1.setVisible(false);
                        L2.setVisible(false);
                    }
                }
                else
                {
                    L2.setText("错误!");
                    L3.setText("正确答案是"+a[0]);
                    T1.setText("");
                    if(c1<c2)
                    {
                    String s2=methodA();
                    System.out.println(a[0]);
                    L1.setText(""+s2+"=");
                    c1++;
                    }
                    if(c1==c2)
                    {
                        long endTime1 = System.currentTimeMillis();
                        JOptionPane.showMessageDialog(null, "答题耗时耗时"
                                + (endTime1 - ST1) / 1000 + "秒"+"\n答对"+(count)+"题"+"\n答错"+(c2-count)+"题", "消息提示",
                                JOptionPane.ERROR_MESSAGE);
                        B1.setVisible(true);
                        T2.setEditable(true);
                        L1.setVisible(false);
                        L2.setVisible(false);
                        L3.setVisible(false);
                        T1.setVisible(false);
                    }
                }
                }
        });
        }
public String methodA(){
    String s2="";
    String s=null;
    int n=(int)(Math.random()*5);
    System.out.println(n);
    if(n==0)
        {
        a[0]=((int)(Math.random()*9+1));
        f=‘!‘;
        s2=s2+a[0]+f;
        System.out.println(a[0]);
        }
    else{
        for(i=0;i<=n;i++)
        {
            a[i]=((int)(Math.random()*200+1))-100;
        }
    for(i=0;i<n;i++)
    {
        c[i]=(int)(Math.random()*4+1);
    }
    for(i=0;i<=n;i++)
    {
        if(a[i]<0)
        {
            s="("+a[i]+")";
        }
        else s=""+a[i];
        s2=s2+s;
        switch(c[i])
        {
            case 1: f=‘+‘;break;
            case 2: f=‘-‘;break;
            case 3: f=‘*‘;break;
            case 4: f=‘/‘;break;
        }
        if(i<n) s2=s2+f;
    }}
    if(n==0)
    {
        for(i=(int) a[0];i>1;i--)
        {
            System.out.println(i);
            System.out.println(a[0]);
            a[0]=a[0]*(i-1);
        }

    }
    else{
    for(i=0;i<=n;i++)
    {
                    if(c[i]==3)
                    {
                        a[i]=a[i]*a[i+1];
                        for(j=i;j<n;j++)
                            {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                            }
                        i=0;
                        n--;
                    }
                    if(c[i]==4)
                    {
                        a[i]=a[i]/a[i+1];
                            for(j=i;j<n;j++)
                            {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                            }
                    i=0;
                    n--;
                    }
                }
                for(i=0;i<=n;i++)
                {
                    if(c[i]==1)
                    {
                        a[i]=a[i]+a[i+1];
                        for(j=i;j<n;j++)
                            {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                            }
                    i=0;
                    n--;
                    }
                    if(c[i]==2)
                    {
                        a[i]=a[i]-a[i+1];
                                                for(j=i;j<n;j++)
                            {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                            }
                    i=0;
                    n--;
                    }
                }
    }
                return (s2);
}
}

程序界面:

时间: 2024-10-06 19:27:18

结对 四则运算的相关文章

20150401 作业2 结对 四则运算

结对 四则运算 编译环境:eclipse 开发人员:de 开发时间:2015-04-07 实现功能: 1.基本的加减乘除 2.每次出1道题目,提交后会显示是否答对,如果错了,还会出现正确答案 3.题目是随机的 4.能出于分数相关的运算以及可以输入真分数 5.可以控制题目的数量 缺点: 1.分数计算的答案输入分数格式才显示正确 2.不能用户选择做什么运算 3.还不能统计答题的时间 4.不能统计答题正确的数目 ...... 个人体会: 1.能力还是不足,一些东西想到了却不能实现 2.要多点和伙伴讨论

结对-四则运算答题器-开发环境搭建过程

成员: 0:2015035107136-张良 1:2015035107128-邢云淇 结对项目:四则运算答题器 本次结对编程和团队项目我们都需要用python环境,为了便于书写代码,因此都选择了用pycharm这款ide 先准备好了Python和pycharm社区版安装包(社区版是免费的,功能够用了) 首先安装python2.7.5,一路下一步到finish结束,安装完成,环境变量已经自动配置好了,win+r运行python,成功运行,python环境搭建完毕. 选择安装路径 运行Python,

作业二——结对 四则运算

开发环境: VC++6.0队员:201306114407-吴哲永     20130611410-董大为功能:  1.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数 2.程序可以出单个整数阶乘的题目:如:4!=24 3.程序可以设置答题时间,时间设置为整数,单位为秒. 4.可以改变界面的颜色 5.程序可以出正整数四则运算,除法保留两位小数分工方面:这次我们结对并没有很明确分工,因为我们还是第一次合作,在很多方面都有不同风格,特别是在算法和传递便

结对-四则运算答题器-结对项目总结

项目地址:https://github.com/xyhcq/calc 结对成员: 学号:2015035107136 张良 学号:2015035107128 邢云淇 本次结对项目历时2个月,2位成员都是第一次从事结对编程,我们都能感到自己有了很大的收获,在结对编程的过程中,我们交换了一些自己的想法,发现了对方的一些想法优于自己的想法,互相学习了一番. 我们的结对项目为:四则运算答题器,能够根据用户输入的数值来界定出题的算数的最大值,同时可以控制生成计算题的数目,在生成题目后,由用户输入算式的答案来

结对-四则运算答题器-设计文档

项目名称:四则运算生成器 项目成员:孙明亮.刘爽 开发环境:Python2.7 实现功能:1.加.减.乘.除基本运算

结对-四则运算生成器-设计文档

项目名称: 四则运算生成器 成员: 李明,姜广昱 开发环境: Android stdio 功能: 生成四则运算题目模块:可随机生成包括小数.整数的四则运算. 四则运算难度调整模块:可调整四则运算难度包括题目数量.是否有小数.小数位数.整数位数. 答题模块:用户可对生成的题目进行作答. 答题结果及分析模块:生成题目答案,对照答题答案给出错误题目回顾,和答题成绩. 说明: 为实现上述功能,本软件分为答题和出题两大模块,出题时可调整难度,答题部分要显示分数和答错部分的正确答案

结对-四则运算答题器-需求分析

四则运算答题器-需求分析 编写目的 本需求分析文档说明描述了四则运算答题器项目的要求,描述了用户对功能的需求. 任务概述 四则运算答题器可以根据用户选择的难度,为其展示相应难度的题目,并在最后显示正确题目数量和错误题目数量. 项目功能 用户可以自由选择四则运算答题器的难度,难度分为简单.困难和极难.每种难度都有10道题(无重复的题目),都有做题所用的时间. 参考资料 四则运算出题器 随机四则运算的出题程序java

20150401 作业2 结对 四则运算ver 1.0

Web項目下 Tomcat服務器的路徑 /WebContant/ 目錄下 SE2_2.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt

实验二 结对四则运算

总结: 1.处理除法运算时要考虑除数不能为0的情况:2.设置了按钮要处理按钮监听事件:3.除法运算中要处理除不尽的情况,将结果设置为保留小数点后两位:4.判读第一个操作数与第二个操作数是否为负数并加括号时要分四种情况:5.处理时间计时的情况一定要将字符串转换为整型: 6.用if对答案进行判断时要将浮点型答案的条件放在前面,否则答案会出现问题: 7.按钮之间是互相独立的,不能嵌套使用: 心得体会: 这次的结对合作,让我也从别人的身上学到不一样的编程理念,明白自身的缺陷,有时候考虑一些问题仍不够全面