结对项目-四则运算 “软件”之升级版

作业来源: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

三.扩展方向

  1. 用户答题结束以后,程序可以显示用户答题所用的时间
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  3. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可。

四.程序实现

结队项目的实现,需要有可视化界面的显示。

题目数目的输入有所限制(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 1
· Estimate 估计这个任务需要多少时间 50 55
Development 开发 3 3
· Analysis 需求分析 (包括学习新技术) 1 1
· Design Spec 生成设计文档 1 1
· Design Review 设计复审 2 2
· Coding Standard 代码规范 5 5
· Design 具体设计 1 1
· Coding 具体编码 20 22
· Code Review 代码复审 5 5
· Test 测试(自我测试,修改代码,提交修改) 10 13
Reporting 报告 2 2
· 测试报告 0.5 0.5
· 计算工作量 1 1
· 并提出过程改进计划 0.5 0.5
posted @ 2018-10-24 21:18  L杉  阅读(249)  评论(5编辑  收藏  举报