作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
gitHub:https://github.com/lincanbin5201314/ls
同伴:201606120020沈敏
博客园:http://www.cnblogs.com/Mram/
一.基本要求
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二.开发环境
程序所使用的开发环境是:IntelliJ IDEA 2018.2.2x
三.扩展方向
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
四.程序实现
结队项目的实现,需要有可视化界面的显示。

题目数目的输入有所限制(1-5)道题,输入不符合会弹出提示窗口,并默认题目数目为1。
class dialog extends JDialog {
private static final long serialVersionUID = 1L;
public dialog(JFrame jf){
super(jf,"提示窗口",true);
Container con = getContentPane();
con.add(new JLabel("您输入错误!请重新输入."));
setBounds(100,100,300,100);
}
}
界面布置:
JFrame jf = new JFrame("四则运算");
JPanel p1=new JPanel();
Container con = jf.getContentPane();
con.setLayout(null);//取消布局管理器
con.setBackground(Color.CYAN);//设置容器的背景颜色
JButton exerciseNum = new JButton("生成题目数量"); //实例化一个按钮
JButton summitAns = new JButton("提交答案"); //实例化一个按钮
JButton changeBgc = new JButton("背景颜色改变"); // 实例化一个按钮
JLabel label = new JLabel("题目数量:", JLabel.CENTER); //题目数量标签
label.setBounds(10,30,95,30);
label.setFont(new Font("宋体",Font.PLAIN,16));
JLabel labe2 = new JLabel(("题目数量不能大于5"), JLabel.CENTER);
labe2.setBounds(141,30,180,30);
labe2.setFont(new Font("宋体",Font.PLAIN,16));
JLabel labe3 = new JLabel((""), JLabel.LEFT);//题目显示在窗口
labe3.setBounds(5,75,250,200);
labe3.setFont(new Font("宋体",Font.PLAIN,16));
JLabel labe4 = new JLabel((""), JLabel.LEFT);//题目显示在窗口
labe4.setBounds(10,242,170,120);
labe4.setFont(new Font("宋体",Font.PLAIN,15));
Double[] arr=new Double[10];
exerciseNum.setBounds(320, 30, 120, 30); // 设置位置与大小
summitAns.setBounds(180, 300, 120, 30); // 设置位置与大小
changeBgc.setBounds(310, 300, 120, 30); // 设置位置与大小
jf.setSize(500, 400);
JTextField textField = new JTextField();
textField.setBounds(100, 30, 40, 30);
textField.setVisible(true);
JTextField textField1 = new JTextField();
textField1.setBounds(180, 85, 40, 20);
textField1.setVisible(false);
JTextField textField2 = new JTextField();
textField2.setBounds(180, 125, 40, 20);
textField2.setVisible(false);
JTextField textField3 = new JTextField();
textField3.setBounds(180, 160, 40, 20);
textField3.setVisible(false);
JTextField textField4 = new JTextField();
textField4.setBounds(180, 200, 40, 20);
textField4.setVisible(false);
JTextField textField5 = new JTextField();
textField5.setBounds(180, 235, 40, 20);
textField5.setVisible(false);
JLabel label1 = new JLabel(""); //题目数量标签
label1.setBounds(240,85,200,30);
JLabel label2 = new JLabel(""); //题目数量标签
label2.setBounds(240,125,200,30);
JLabel label3 = new JLabel(""); //题目数量标签
label3.setBounds(240,160,200,30);
JLabel label4 = new JLabel(""); //题目数量标签
label4.setBounds(240,200,200,30);
JLabel label5 = new JLabel(""); //题目数量标签
label5.setBounds(240,235,200,30);
label1.setFont(new Font("宋体",Font.PLAIN,15));
label2.setFont(new Font("宋体",Font.PLAIN,15));
label3.setFont(new Font("宋体",Font.PLAIN,15));
label4.setFont(new Font("宋体",Font.PLAIN,15));
label5.setFont(new Font("宋体",Font.PLAIN,15));
单击提交答案,算出所用时间和算出得分。
单击颜色修改可以修改背景颜色:
五.问题与解决
1.构造窗体及元素布置方面不熟悉。
以前有学习一些这方面的知识,不过只是学的一些皮毛,所以在开始做之前,我们通过百度还有书籍熟悉一些知识。
2.怎么做到鼠标单击响应事件,还有事件之间值的传递。
一开始想了很久都没搞懂怎么在两个之间传递局部变量,后来上网才知道两个事件间不能传值,所以通过定义全局变量来实现共用。
六.结队工作照片
七.统计表
PSP2.1 | Personal Software Process Stages | Time Senior Student(h) | Time(h) |
Planning | 计划 | 1 | |
· Estimate | 估计这个任务需要多少时间 | 50 | 55 |
Development | 开发 | 3 | |
· Analysis | 需求分析 (包括学习新技术) | ||
· Design Spec | 生成设计文档 | ||
· Design Review | 设计复审 | 2 | |
· Coding Standard | 代码规范 | 5 | |
· Design | 具体设计 | ||
· Coding | 具体编码 | 20 | 22 |
· Code Review | 代码复审 | ||
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 13 |
Reporting | 报告 | ||
· | 测试报告 | 0.5 | |
计算工作量 | |||
并提出过程改进计划 |