zoukankan      html  css  js  c++  java
  • 201571030335/201571030320《小学四则运算练习软件》结对项目报告

    源码链接地址:  https://github.com/woaichimangguo(我的201571030335)

                              https://github.com/mashifang(小伙伴的201571030320)

                                                         

    一. 需求分析:

    (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分。

     (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:

     

    (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习。

    (4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图 。

    (5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试。

    (6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。

    (7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。

    二. 核心功能代码展示:

    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
    import javax.swing.*;
     
    public class Self extends JFrame{
        int rightSum=0;
        Her createArithmeticnew=new Her();
        private JPanel panel1=new JPanel();
        private JLabel label=new JLabel();
        JTextField text=new JTextField(10);
        ArrayList<String> list=new ArrayList<String>();
        public static void main(String[] args) {
            // TODO Auto-generated method stub
          JFrame frame=new  Self();
          frame.setTitle("小学四则运算训练小程序");
          frame.setSize(300,200);
          frame.setLocationRelativeTo(null);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
        }
        public Self(){
            setLayout(new GridLayout(3, 2,5,5));
            addAnswer();
            JPanel panel2=new JPanel();
            //panel2.setSize(10,100);
            panel2.add(new JLabel("请输入答案:"));
            panel2.add(text);
            this.add(panel2);
            JButton buttonSubmit=new JButton("提交答案");
            buttonSubmit.addActionListener(new ActionListener() {
     
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    int size=list.size();
                    int errorSum=size-rightSum;
                    JFrame resultFrame=new JFrame();
                    resultFrame.setTitle("运算结果");
                    resultFrame.setSize(500,500);
                    resultFrame.setLocationRelativeTo(null);
                    resultFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    resultFrame.setVisible(true);
                    JPanel panel=new JPanel();
                    Font font = new Font(Font.DIALOG, Font.PLAIN, 20);
                    panel.add(new JLabel("做题总数: "+size+" "+"正确数:"+rightSum));
                    setLayout(new GridLayout(100, 1,5,5));
                    for(int i=0;i<size;i++){
                        panel.add(new JLabel(list.get(i)));
                    }
                    resultFrame.add(panel);
                }});
            JButton buttonNext=new JButton("下一题");
            buttonNext.addActionListener(new ActionListener() {//定义时间监听器
               public void actionPerformed(ActionEvent e) {
                   String question=label.getText();
                   double result=Double.parseDouble(text.getText());
                   String ifRight="";
                   if(Her.result==result){
                     ifRight="正确";
                     rightSum++;
                   }else{
                       ifRight="错误";
                   }
                   String message=question+", "+"你的答案:"+result+", "+"正确答案: "+Her.result+", 状态: "+ifRight;
                   list.add(message);
                   text.setText("");
                   String answer=Her.creat();
                    label.setText(answer);
                   }
                  });
            JPanel panel3=new JPanel();
            //button.setSize(10,10);
            panel3.add(buttonNext);
            panel3.add(buttonSubmit);
            add(panel3);
        }
        public void addAnswer(){
            //System.out.println("hah");
            //panel1.setSize(0,50);
            Font font = new Font(Font.DIALOG, Font.PLAIN, 20);
            label.setFont(font);
            String answer=Her.creat();
            label.setText(answer);
            panel1.add(label);
         
            add(panel1);
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    import java.util.ArrayList;
    import java.util.Random;
     
    public class Her {
         //private ArrayList<Double> list=new ArrayList<Double>();
        static double result=0;
         public static String creat(){
             Random random=new Random();
             int a=random.nextInt(101);
             int b=random.nextInt(101);
             int c=random.nextInt(4);
             char character='+';
             switch(c){
                case 0:character='+'; result=a+b; break;
                case 1:character='-'; if(a<b){int temp=a;a=b;b=temp;} result=a-b; break;
                case 2:character='x'; result=a*b; break;
                case 3:character='/'; result=a/b; break;
             }
             return "题目:"+a+character+b+"=?";
         }
    }

     

    三. 程序运行:程序运行时每个功能界面截图:

    四.实验过程照片:

    五.提供此次结对作业的PSP:

    PSP2.1

    任务内容

    计划共完成需要的时间(h)

    实际完成需要的时间(h)

    Planning

    计划

    15

    17

    ·       Estimate

    ·  估计这个任务需要多少时间,并规划大致工作步骤

    18

    20

    Development

    开发

    96

    98

    ··       Analysis

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

    48

    50

    ·       Design Spec

    ·  生成设计文档

    24

    26

    ·       Design Review

    ·  设计复审 (和同事审核设计文档)

    18

    20

    ·       Coding Standard

      代码规范 (为目前的开发制定合适的规范)

    12

    16

    ·       Design

      具体设计

    24

    25

    ·       Coding

      具体编码

    36

    21

    ·       Code Review

    ·  代码复审

    7

    9

    ·       Test

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

    13

    21

    Reporting

    报告

    9

    6

    ··       Test Report

    ·  测试报告

    3

    2

    ·       Size Measurement

      计算工作量

    2

    1

    ·       Postmortem & Process Improvement Plan

    ·  事后总结 ,并提出过程改进计划

    3

    3



    六. 请使用汉堡评价法给你的小伙伴一些点评。

           本次结对项目合作中,我的小伙伴非常的认真,细心,有想法,而且表现出了很强的逻辑思维。我们两个在一次次的尝试下,发现不足并经过认真讨论下改正错误,完成此次任务。在本次试验我们合作中,我在她身上学习到了很多,希望以后还能跟她一起学习合作。

    七. 结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。

          通过本次结对项目合作,我发现了我的小伙伴身上很多值得我学习的地方,看到了她与我不同的想法,学习到了她不一样的方法。思想交换,互相学习,共同进步想必就是这次试验我的收获。我觉得结对编程真的能够带来1+1>2的效果。在问题上我们可以共同更快更有效率的完美解决,在其他方面我们可以优势互补,相互学习,提升自己。这种结对的方法真的是很有效,以后的编程学习中,我认为个人独立思考很重要,但是结对合作更是有它的好处,两个的结合一定能使编程能力提高,加油。

  • 相关阅读:
    day2
    day1
    ORM基本增删改查
    ORM
    url路由
    模板语言、url
    views视图
    django基本过程
    django基础
    Web框架
  • 原文地址:https://www.cnblogs.com/zjy25/p/8719472.html
Copyright © 2011-2022 走看看