• 201571030333/201571030132《小学四则运算》结对项目报告


    GitHub仓库地址:

     https://github.com/Sophur/Team-four-operation

    一、需求分析

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

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

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

    (4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:

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

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

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

    二、软件设计

    程序流程图:

                                                     

    类图:

     

    三、核心功能代码展示

     给queding按钮添加监听器,计算本轮分数的核心代码:

     1 //确定按钮的点击事件
     2     queding.addActionListener(new ActionListener() {
     3         public void actionPerformed(ActionEvent e) {
     4          
     5             a1[0]=ans1.getText();
     6             a1[1]=ans2.getText();
     7             a1[2]=ans3.getText();
     8             a1[3]=ans4.getText();
     9             a1[4]=ans5.getText();
    10             a1[5]=ans6.getText();
    11             a1[6]=ans7.getText();
    12             a1[7]=ans8.getText();
    13             a1[8]=ans9.getText();
    14             a1[9]=ans10.getText();
    15             a1[10]=ans11.getText();
    16             a1[11]=ans12.getText();
    17             a1[12]=ans13.getText();
    18             a1[13]=ans14.getText();
    19             a1[14]=ans15.getText();
    20             a1[15]=ans16.getText();
    21             a1[16]=ans17.getText();
    22             a1[17]=ans18.getText();
    23             a1[18]=ans19.getText();
    24             a1[19]=ans20.getText();
    25         
    26             int sum=0;
    27             for(int i=0;i<20;i++){
    28             if(a[i].equals(a1[i])){
    29                 sum=sum+5;
    30             }else{
    31                 sum=sum+0;
    32             }
    33             }
    34             grade1.setText(String.valueOf(sum));
    35             //System.out.println(sum);
    36             
    37         }
    38     });
    View Code

    给bu3按钮添加监听器,输出成绩柱状图:

    1 bu3.addActionListener(new ActionListener() {
    2         public void actionPerformed(ActionEvent e) {         
    3             Diagram dg = new Diagram();    
    4             dg.setVisible(true);  
    5         }
    6     });
    View Code

    Diagram类的具体实现:

     1 import java.awt.Color;  
     2 import java.awt.Graphics;  
     3 import java.awt.Graphics2D;  
     4 import java.util.Random;    
     5 import javax.swing.JFrame; 
     6    
     7 public class Diagram extends JFrame{  
     8   
     9     //绘制柱形统计图  
    10     private Random ran;  
    11     public Diagram(){  
    12         super();  
    13         ran = new Random();  
    14         setTitle("成绩柱状图");  
    15         setBounds(100, 100, 400, 271);  
    16         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    17     }  
    18     @Override  
    19     public void paint(Graphics g){  
    20         int Width = getWidth();  
    21         int Height = getHeight();  
    22         int leftMargin = 20;//柱形图左边界  
    23         int topMargin = 50;//柱形图上边界  
    24         Graphics2D g2 = (Graphics2D) g;  
    25         int ruler = Height-topMargin-5;  
    26         int rulerStep = ruler/10;//将当前的高度评分为10个单位  
    27         g2.setColor(Color.WHITE);//绘制白色背景  
    28         g2.fillRect(0, 0, Width, Height);//绘制矩形图  
    29         g2.setColor(Color.black);  
    30         g2.setColor(Color.blue); 
    31         int grade[]= {60,40,100};
    32         for(int i=0;i<grade.length;i++){//绘制柱形图              
    33             int value=(grade[i]/10)*rulerStep;  //矩形的高
    34             int value1=grade[i];
    35             int step = (i+1)*40;//设置每隔柱形图的水平间隔为40  
    36              //绘制圆角矩形                       
    37             g2.fillRect(leftMargin+step*2, Height-value, 40, value*3);  
    38             //纵轴的编号  
    39             g2.drawString("第"+(i+1)+"轮"+grade[i]+"分", leftMargin+step*2, Height-value-5);  
    40         }  
    41     }  
    42    
    43 }  
    View Code

    四、程序运行

    程序运行首先出现以下界面:

     

    计时开始,进行答题,点击确定按钮后,答案保存并输出本轮分数:

    点击输出柱状图按钮后显示柱状图:

    五、结队过程

           此次结对过程很愉快,在小伙伴身上学到了很多东西,一起努力,一起进步的感觉很愉快!以下为结对照片:

    六、本次PSP展示

    PSP2.1

    任务内容

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

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

    Planning

    计划

    2

    1.5

    ·       Estimate

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

    8

    9

    Development

    开发

    7

    7

    ··       Analysis

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

    2

    2

    ·       Design Spec

    ·  生成设计文档

    1

    0.5

    ·       Design Review

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

    2

    3

    ·       Coding Standard

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

    1

    0.5

    ·       Design

      具体设计

    6

    7

    ·       Coding

      具体编码

    7

    6

    ·       Code Review

    ·  代码复审

    0.5

    1

    ·       Test

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

    1

    2

    Reporting

    报告

    2

    3

    ··       Test Report

    ·  测试报告

    0.5

    0.3

    ·       Size Measurement

      计算工作量

    0.5

    0.5

    ·       Postmortem & Process Improvement Plan

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

    0.5

    0.5

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

          汉堡评价法其实我没太理解它的意思。但是本次结对过程我们确实在一些问题上出现过一些分歧,而且又因为是第一次结对合作,所以对小伙伴的编码习惯认识的不是很透彻,很难从最内层(本质和基本属性)方面进行反馈。所以两人在结对过程中的交流还是很客气的。

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

           能的!如果是我一个人在完成这个项目的话,很有可能我会放弃这个项目,在同伴不懈努力的影响下我坚持完成了我不擅长的代码。

  • 相关阅读:
    数据标注对于人工智能行业的发展到底有多重要?
    人工智能行业每日必读(01·15)
    数据堂与云测数据,哪个数据标注质量更高?
    龙猫数据与云测数据,哪个数据标注质量更高?
    人工智能行业每日必读(01·14)
    人工智能行业每日必读(01.13)
    AI行业精选日报_人工智能(01·10)
    Serverless Kubernetes:理想,现实与未来
    什么是云原生
    深挖云原生的真正含义
  • 原文地址:https://www.cnblogs.com/zhanyulin/p/8714715.html
Copyright © 2020-2023  润新知