个人工作流程计应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;
}
}
代码实现效果: