个人工作流程计应192六组许舒然

PSP计划表

PSP阶段

预计花费时间(小时) 实际花费时间
计划 1 2
明确需求和其他相关因素,估计每个阶段的时间成本 1 2
开发 22 30
需求分析 1 2
代码规范 2 1
具体设计 3 4
具体编码 5 7
代码复审 1 2

测试(自测、修改代码、提交修改)

2 3

需求分析:
随机生成任意数量的100以内的四则运算数学题,
并且所生成的题目不能超过小学生数学学习的范围,不能在题目中出现结果为负数以及题目出现负数运算的类似题型

功能分析:
1.输入指定的题目数量
2.所生成题目为100以内的四则运算
3.要随机生成不能出现重复题目
4.最后要判断所作答案是否正确

代码实现思路:运用java语言编写一个图形界面的程序,利用java的JFrame类创建可视化界面,
在利用for循环和Random随机数来生成四则运算题目,最后在使用equal方法来判断回答是否正确

代码实现:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestSZYS extends JFrame implements ActionListener {
  JisuanPanel[] panels;

  public TestSZYS() {
    super("四则运算"); //界面标题
    panels = new JisuanPanel[10];//生成题目的数量
    
    for (int i = 0; i < panels.length; i++)
      panels[i] = new JisuanPanel();
    Container c = getContentPane(); //获取内容面板
    
    c.setLayout(new BorderLayout()); //设置窗体格式
    JPanel panel = new JPanel(new GridLayout(10, 2));
    
    for (int i = 0; i < panels.length; i++)
      panel.add(panels[i]);
    c.add(panel, BorderLayout.CENTER);
    panel = new JPanel(new FlowLayout());
  ;
    
    JButton button = new JButton("提交验证");
    button.addActionListener(this);
    panel.add(button);
    c.add(panel, BorderLayout.PAGE_END);
  }
  
  //编写事件监听器
  public void actionPerformed(ActionEvent e) {
    
    if (e.getActionCommand().equals("提交验证")) {
      int n = 0;
      for (int i = 0; i < panels.length; i++) {
        if (panels[i].right())
          n++;
      }
      JOptionPane.showMessageDialog(null, "共做对" + n + "道!");
    }
    return;
  }

  public static void main(String[] args) {
    JFrame frame = new TestSZYS();
    frame.setBounds(50, 50, 400, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
}

class JisuanPanel extends JPanel {
  JLabel label;
  JTextField field;
  int result;

  public JisuanPanel() {
    super();
    label = new JLabel();
    field = new JTextField(4);
    add(label);
    add(field);
    init();
  }

  public void init() {
    int a, b;
    String fu;
    a = (int) (Math.random() * 100) + 1;
    b = (int) (Math.random() * 100) + 1;
    switch ((int) (Math.random() * 4)) {
    case 0:
      fu = " + ";
      label.setText("" + a + fu + b + "=");
      result = a + b;
      break;
    case 1:
      fu = " - ";
      label.setText("" + a + fu + b + "=");
      result = a - b;
      break;
    case 2:
      fu = " × ";
      label.setText("" + a + fu + b + "=");
      result = a * b;
      break;
    case 3:
      fu = " ÷ ";
      label.setText("" + a + fu + b + "=");
      result = a / b;
      break;
    default:
      JOptionPane.showMessageDialog(null, "出错!");
      System.exit(0);
    }
    if (result < 0 || result > 100 || a % b != 0)
      init();
    field.setText("");
    return;
  }
  
  //判断对错
  public boolean right() {
    if (field.getText().equals(""))
      return false;
    int num = result + 1;
    try{

      num = Integer.parseInt(field.getText());
    } catch (NumberFormatException e) {
      JOptionPane.showMessageDialog(null, "输入错误!");
      field.setText("");
    }
    if (num == result) {
      if (!(label.getText()).startsWith("√"))
        label.setText("√" + label.getText());
      return true;
    } else
      return false;
  }
}

代码实现效果:

 

 

 

posted @ 2021-04-11 17:04  智凯义  阅读(55)  评论(0编辑  收藏  举报