zoukankan      html  css  js  c++  java
  • 软件工程个人作业(3)

    源代码:

    package zuoye2;

    import java.awt.Container;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.*;

    class jiemian

    {

    public jiemian()

    {

    JFrame jf=new JFrame("四则运算");

    jf.setBounds(200, 100, 500, 500);

    jf.setLayout(null);

    Container c=jf.getContentPane();

    JCheckBox j1=new JCheckBox("有乘除法");

    JCheckBox j2=new JCheckBox("有括号");

    JCheckBox j3=new JCheckBox("有负数");

    JCheckBox j4=new JCheckBox("有余数");

    JLabel l1=new JLabel("请输入数值范围");

    JLabel l4=new JLabel("请输入参数个数(1—10)");

    JLabel l2=new JLabel("—");

    JLabel l3=new JLabel("请输入题目数目(1-30)");

    JTextField t1=new JTextField("2");

    JTextField t2=new JTextField("20");

    JTextField t3=new JTextField("30");

    JTextField t4=new JTextField("30");

    j1.setBounds(100, 100, 80,20);

    j2.setBounds(100, 130, 80,20);

    l4.setBounds(100, 160, 180,20);

    j3.setBounds(100, 220, 80,20);

    j4.setBounds(100, 250, 80,20);

    t1.setBounds(100, 190, 50,20);

    l1.setBounds(100, 280, 150,20);

    t2.setBounds(100, 310, 50,20);

    t3.setBounds(180, 310, 50,20);

    l2.setBounds(160, 310, 30,20);

    l3.setBounds(100, 340, 150,20);

    t4.setBounds(100, 370, 50,20);

    c.add(j1);

    c.add(j2);

    c.add(j3);

    c.add(l4);

    c.add(j4);

    c.add(t1);

    c.add(l1);

    c.add(t2);

    c.add(t3);

    c.add(l2);

    c.add(l3);

    c.add(t4);

    JButton b1=new JButton("确定");

    JButton b2=new JButton("退出");

    b1.setBounds(350, 150,70, 50);

    b2.setBounds(350, 300,70, 50);

    c.add(b1);

    c.add(b2);

    b1.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e)

    {

    jf.dispose();

    String a1,a2,a3,a4,a5;

    int c1,c2,c3,c4,c5;

    boolean f1=false,f2=false,f3=false,f4=false,f5=false;

    a1=t1.getText().toString();

    a2=t2.getText().toString();

    a3=t3.getText().toString();

    a4=t4.getText().toString();

    if(a2.equals("")||a3.equals(""))

    {

    JOptionPane.showMessageDialog(null, "范围不能为空", "范围不能为空", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    else if(a4.equals(""))

    {

    JOptionPane.showMessageDialog(null, "数目不能为空", "数目不能为空", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    else if (a1.equals(""))

    {

    JOptionPane.showMessageDialog(null, "参数个数不能为空", "参数个数不能为空", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    else if(Integer.parseInt(a1)>10||Integer.parseInt(a1)<=0)

    {

    JOptionPane.showMessageDialog(null, "参数个数超出", "参数个数超出", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    else if(Integer.parseInt(a4)<=0||Integer.parseInt(a4)>30)

    {

    JOptionPane.showMessageDialog(null, "题目数目不正确", "题目数目不正确", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    else if(Integer.parseInt(a3)<=Integer.parseInt(a2))

    {

    JOptionPane.showMessageDialog(null, "范围不正确", "范围不正确", JOptionPane.ERROR_MESSAGE);

    System.exit(0);

    }

    if(j1.isSelected())

    {

    f1=true;

    }

    if(j2.isSelected())

    {

    f2=true;

    }

    if(j3.isSelected())

    {

    f3=true;

    }

    if(j4.isSelected())

    {

    f4=true;

    }

    c1=Integer.parseInt(a1);

    c2=Integer.parseInt(a2);

    c3=Integer.parseInt(a3);

    c4=Integer.parseInt(a4);

    yunsuan a=new yunsuan(c1,c2,c3,c4,f1,f2,f3,f4);

    }

    });

    b2.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e)

    {

    jf.dispose();

    }

    });

    jf.setVisible(true);

    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    }

    package zuoye2;

    public class m extends jiemian

    {

    public static void main(String[] args)

    {

    // TODO Auto-generated method stub

    jiemian a=new jiemian();

    }

    }

    package zuoye2;

    import java.awt.Container;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.util.Random;

    import javax.swing.ImageIcon;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JTextField;

    import javax.swing.WindowConstants;

    public class yunsuan implements Runnable

    {

    JFrame jf=new JFrame("四则运算");

    Container c=jf.getContentPane();

    int i1,i2,i3,i4,anwser;

    boolean j1,j2,j3,j4;

    JTextField j5;

    Thread t;

    protected void ks()

    {

    t=new Thread(this);

    }

    public yunsuan(int c1, int c2, int c3, int c4, boolean f1, boolean f2, boolean f3, boolean f4)

    {

    i1=c1;

    i2=c2;

    i3=c3;

    i4=c4;

    j1=f1;

    j2=f2;

    j3=f3;

    j4=f4;

    JButton bu1=new JButton("提交");

    JButton bu2=new JButton("退出");

    bu1.setBounds(20, 100, 60, 20);

    bu2.setBounds(100, 100, 60, 20);

    c.add(bu1);

    c.add(bu2);

    ks();

    t.start();

    bu1.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e)

    {

    String qs;

    qs=j5.getText().toString();

    if(qs.equals(""))

    {

    JOptionPane.showMessageDialog(null, "答案为空", "答案为空", JOptionPane.ERROR_MESSAGE);

    }

    else if(anwser==Integer.parseInt(qs))

    {

    t.stop();

    ks();

    c.removeAll();

    bu1.setBounds(20, 100, 60, 20);

    bu2.setBounds(100, 100, 60, 20);

    c.add(bu1);

    c.add(bu2);

    t.start();

    c.repaint();

    jf.setVisible(true);

    }

    else

    {

    JOptionPane.showMessageDialog(null, "答案错误", "答案错误", JOptionPane.ERROR_MESSAGE);

    }

    }

    });

    bu2.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e)

    {

    jf.dispose();

    }

    });

    jf.setBounds(250, 200, c1*150+100, 200);

    jf.setLayout(null);

    jf.setVisible(true);

    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    @Override

    public void run()

    {

    int c1,c2,c3,c4;

    boolean f1,f2,f3,f4;

    //Container c=jf.getContentPane();

    c1=i1;

    c2=i2;

    c3=i3;

    c4=i4;

    f1=j1;

    f2=j2;

    f3=j3;

    f4=j4;

    int a,b,d = 0,e;

    String a1,b1,d1;

    JLabel j1,j2,j3,j4,j7;

    j1=new JLabel();

    j2=new JLabel();

    j3=new JLabel();

    j4=new JLabel();

    j7=new JLabel();

    JTextField j6;

    j5=new JTextField();

    j6=new JTextField();

    Random r1[]=new Random[2];

    Random r2=new Random();

    int i,j=0,k=0,l;

    j5=new JTextField();

    j6=new JTextField();

    for(i=0;i<2;i++)

    {

    r1[i]=new Random();

    }

    j5=new JTextField();

    if(f1==true)

    {

    a=c3-c2;

    b=c3-c2;

    a=r1[0].nextInt(a);

    b=r1[1].nextInt(b);

    a=a+c2;

    b=b+c2;

    e=r2.nextInt(4);

    }

    else

    {

    a=c3-c2;

    b=c3-c2;

    a=r1[0].nextInt(a);

    b=r1[1].nextInt(b);

    a=a+c2;

    b=b+c2;

    e=r2.nextInt(2);

    }

    e=e+1;

    if(f3!=false)

    {

    if(e==1)

    {

    a=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    d=a+b;

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("+");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    if(e==2)

    {

    a=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    d=a-b;

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("-");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    }

    else

    {

    if(e==1)

    {

    a=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    d=a+b;

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("+");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    if(e==2)

    {

    int x;

    a=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    if(b>a)

    {

    x=b;

    b=a;

    a=x;

    }

    d=a-b;

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("-");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    }

    if(e==3)

    {

    a=r1[0].nextInt(c3-c2)+c2;

    b=r2.nextInt(c3-c2)+c2;

    d=a*b;

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("X");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    if(f4==false)

    {

    if(e==4)

    {

    d=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    a=b*d;

    while(d==0||b==0)

    {

    r1[0]=new Random();

    r1[1]=new Random();

    d=r1[0].nextInt(20);

    b=r1[1].nextInt(20);

    a=b*d;

    }

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("/");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    }

    else

    {

    if(e==4)

    {

    j7=new JLabel("余");

    a=r1[0].nextInt(c3-c2)+c2;

    b=r1[1].nextInt(c3-c2)+c2;

    while(a==0||b==0)

    {

    r1[0]=new Random();

    r1[1]=new Random();

    d=r1[0].nextInt(20);

    b=r1[1].nextInt(20);

    a=b*d;

    }

    a1=String.valueOf(a);

    b1=String.valueOf(b);

    d1=String.valueOf(d);

    j1=new JLabel(a1);

    j2=new JLabel("/");

    j3=new JLabel(b1);

    j4=new JLabel("=");

    }

    }

    if(e==4&&f4==true)

    {

    j1.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j2.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j3.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j4.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j5.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j7.setBounds(65+j*42,50+(k/2)*32, 40, 30);

    j++;

    j6.setBounds(50+j*42,50+(k/2)*32, 40, 30);

    j++;

    j++;

    j++;

    k++;

    if(k!=0&&k%2==0)

    {

    j=0;

    }

    c.add(j1);

    c.add(j2);

    c.add(j3);

    c.add(j4);

    c.add(j5);

    c.add(j6);

    c.add(j7);

    }

    else

    {

    j1.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j2.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j3.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j4.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j5.setBounds(50+j*42, 50+(k/2)*32, 40, 30);

    j++;

    j++;

    j++;

    j++;

    j++;

    k++;

    if(k!=0&&k%2==0)

    {

    j=0;

    }

    c.add(j1);

    c.add(j2);

    c.add(j3);

    c.add(j4);

    c.add(j5);

    }

    anwser = d;

    c.repaint();

    jf.setVisible(true);

    }

    // TODO Auto-generated method stub

    }

     设计思路:

    1.建立一个frame面板,通过添加复选框来选择是否有乘除法,是否有余数,是否有括号以及是否有负数。

    2.通过添加文本框来控制计算范围和题目数目。

    3.当点击确定按钮,当前窗口关闭,数据提交,并新建一个frame窗口。

    4.通过random产生随机数来控制计算题目以及加减乘除(0-3分别代表加减乘除,若没有选择有乘除,则产生0或1,从而将乘除运算排除掉)

    5.根据是否选择有余数来控制除法。若没有余数,则将生成的两个随机数之积作为被除数,第二个随机数作为除数。

    6.若选择有负数,加减不做处理,否则比较减数与被减数大小。若减数大于被减数,则将二者交换。

    7.通过建立JLabel数组来向窗口输出题目,题目坐标按照题目数累加

    8.通过建立文本框来填入答案

    9.括号和检验重复没做。

    10.通过线程来控制题目更换

    截图:

    1.

    2.

  • 相关阅读:
    6月17日
    6月16日
    6月15日
    6月14日
    6月13日
    6月12日
    6月11日
    6月10日
    6月8日
    6月5日
  • 原文地址:https://www.cnblogs.com/LJT666/p/5528571.html
Copyright © 2011-2022 走看看