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

这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

结对同伴的学号:201606120056

结对同伴的姓名:杜俊霖

一、开发环境

IntelliJ IDEA 2018.2.2

系统:Window 10 x64. 

二、需求分析

1.原始需求:

生成题目,单个题目最多不能超过4个运算符,操作数小于100。

用户可以输入答案

若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

三、扩展要求

程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3

可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8

用户答题结束以后,程序可以显示用户答题所用的时间

用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 

程序可以出单个整数阶乘的题目:如:4!=24

程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

程序可以设置皮肤功能,可以改变界面的颜色即可。

四、结对软件过程耗时估计与统计表

PSP2.1

Personal Software Process Stages

Time Senior Student(h)

Time(h)

Planning

计划

3

6

· Estimate

估计这个任务需要多少时间

10

15

Development

开发

8

10

· Analysis

需求分析 (包括学习新技术)

2

6

· Design Spec

生成设计文档

2

4

· Design Review

设计复审

1

3

· Coding Standard

代码规范

0.5

1.5

· Design

具体设计

6

8

· Coding

具体编码

10

13

· Code Review

代码复审

2

3

· Test

测试(自我测试,修改代码,提交修改)

2

3

Reporting

报告

1

5

·

测试报告

0

0

·

计算工作量

3

6

·

并提出过程改进计划

0

0

五、主要部分代码

public static void exercise(){
        Timu();
        JFrame f=new JFrame();
        f.setTitle("在线答题系统(保留一位小数)");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setExtendedState(JFrame.MAXIMIZED_BOTH);
        f.setVisible(true);

        //设置窗口的大小和位置
        f.setSize(600,500);
        f.setLocation(400,100);
        f.setLayout(null);
        JPanel pan1=new JPanel();
        JLabel name1=new JLabel("题目");
        pan1.add(name1);
        JTextField  nameTest7=new JTextField(15);
        nameTest7.setBounds(10, 10, 180, 100);
        nameTest7.setText(M);
        // nameTest1.setPreferredSize(new Dimension(180,100));
        pan1.add(nameTest7);
        JLabel name2=new JLabel("请输入答案");
        pan1.add(name2);
        JTextField  nameTest1=new JTextField(15);
       // String Answer=nameTest1.getText();
        //int DaAn=Integer.parseInt(Answer);
        nameTest1.setBounds(10, 10, 180, 100);
        // nameTest1.setPreferredSize(new Dimension(180,100));
        pan1.add(nameTest1);
        pan1.setBounds(10, 10, 200, 120);
        f.add(pan1);


        JPanel pan2=new JPanel();
        JLabel name7=new JLabel("正确答案为:");
        pan2.add(name7);
        JTextField nameTest2=new JTextField(15);

        nameTest2.setBounds(300, 10, 180, 100);
        // nameTest2.setPreferredSize(new Dimension(180,100));
        pan2.add(nameTest2);
        pan2.setBounds( 300,10, 200, 120);
        f.add(pan2);

        JPanel pan3=new JPanel();
        pan3.setLayout(null);
        JTextField nameTest3=new JTextField(15);
        nameTest3.setBounds(10, 60, 480, 200);
        nameTest3.setPreferredSize(new Dimension(300,100));
        pan3.add(nameTest3);
        pan3.setBounds( 10,60, 500, 220);
        f.add(pan3);

        JPanel pan4 = new JPanel();
        JButton btnStart=new JButton("下一题");
        btnStart.setBounds(30, 300,30, 30);
        btnStart.setPreferredSize(new Dimension(100,80));
        btnStart.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int daan=0 ;
                String Answer=nameTest1.getText();

                    daan=Integer.parseInt(Answer);
                    System.out.println(daan);
                if(daan==DaAn){
                    nameTest2.setText(String.valueOf(DaAn));
                    Right++;
                }else {
                    nameTest2.setText(String.valueOf(DaAn));
                }
                Timu();
                nameTest7.setText(M);
                pan1.add(nameTest7);
                pan1.setBounds(10, 10, 200, 120);
                f.add(pan1);
            }
        });
        pan4.add(btnStart);
        pan4.setBounds(40, 350, 110, 90);
        f.add(pan4);

        JPanel pan5 = new JPanel();
        JButton btnStart1=new JButton("提交");
        btnStart1.setBounds(30, 300,30, 30);
        btnStart1.setPreferredSize(new Dimension(100,80));
        btnStart1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int res=JOptionPane.showConfirmDialog(null,"是否提交","是否提交",JOptionPane.YES_NO_OPTION);
                if(res==JOptionPane.YES_OPTION){
                    nameTest3.setFont(new Font("宋体", Font.PLAIN, 20));
                    nameTest3.setText("     提交成功      ");
                }else {
                    nameTest3.setFont(new Font("宋体", Font.PLAIN, 20));
                    nameTest3.setText("     请继续做题      ");
                }
            }
        });
        pan5.add(btnStart1);
        pan5.setBounds(190, 350, 110, 90);
        f.add(pan5);


        JPanel pan6 = new JPanel();
// pan4.setLayout(null);
        JButton btnStart2=new JButton("查看分数");
        btnStart2.setBounds(30, 300,30, 30);
        btnStart2.setPreferredSize(new Dimension(100,80));
        btnStart2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //计算用时

                    nameTest3.setFont(new Font("宋体", Font.PLAIN, 20));
                    nameTest3.setText(" 一共有"+i+"道题,共答对了:"+Right+"题");

            }
        });
        pan6.add(btnStart2);
        pan6.setBounds(340, 350, 110, 90);
        f.add(pan6);

    }

六、程序展示

七、总结

这次程序算是这个学期以来用时比较长的程序了,做的过程中也觉得比较耗脑子,自己也尽力做了

 

原文地址:https://www.cnblogs.com/hjlaaa/p/9870316.html