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


    这个作业的要求来自于: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);
    
        }

    六、程序展示

    七、总结

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

     

  • 相关阅读:
    Spring基础篇——AOP切面编程
    像我这样的人
    Java 内部类
    SQLite 带你入门
    Spring基础篇——通过Java注解和XML配置装配bean
    Spring基础篇——自动化装配bean
    VMware虚拟机+CentOS系统安装
    Spring基础篇——Spring容器和应用上下文理解
    Spring基础篇——DI/IOC和AOP原理初识
    Web 项目刚要打包,却找不到项目资源?
  • 原文地址:https://www.cnblogs.com/hjlaaa/p/9870316.html
Copyright © 2020-2023  润新知