zoukankan      html  css  js  c++  java
  • 20165229结对编程阶段总结(第一周)

    结对编程练习_四则运算(第一周)

    参考资料

    结对编程练习_四则运算

    数据结构应用


    需求分析

    • 实现一个命令行程序,要求:

      • 自动生成小学四则运算题目(加、减、乘、除)
      • 支持整数
      • 支持多运算符(比如生成包含100个运算符的题目)
      • 支持真分数
      • 统计正确率
    • 扩展需求,文件:

      • 处理生成题目并输出到文件
      • 完成题目后从文件读入并判题
      • 多语言支持:简体中文, 繁體中文, English
      • 生成题目去重

    设计思路

    1.明确设计目的--自动生成小学四则运算题目(加、减、乘、除)

    2.将问题逐一解决,eg:如何生成随机数

    3.完善条件--支持整数、多运算符、真分数、统计正确率

    4.编译运行并测试

    代码及注释

    import java.util.Scanner;
    public class szys2906 {
        public static void main(String[] args)
        {
            int answer;//answer代表答题者的回答
            int count=0;//count代表题目数量
            int key=0;//key代表计算机计算出来的答案
            int right=0;//right代表回答正确的题目数量
            System.out.println("题目数量:");
            Scanner input=new Scanner(System.in );
            count=input.nextInt();
            szys2906 question=new szys2906();
            for(int n=0;n<count;n++)//注意n从0开始!
            {
                int i=(int)(Math.random()*100);
                int j=(int)(Math.random()*100);
                switch((int)(Math.random()*4))
                {
                    case 0://加法
                        System.out.println(i+"+"+j+"=");
                        key=i+j;
                        break;
                    case 1://减法
                        if(i<j)
                        {
                            int temp=i;
                            i=j;
                            j=temp;
                        }
                        System.out.println(i+"-"+j+"=");
                        key=i-j;
                        break;
                    case 2://乘法
                        System.out.println(i+"*"+j+"=");
                        key=i*j;
                        break;
                    case 3://除法
                        while(j==0)
                             j= (int)(Math.random()*100);//分母若为0,则重新取随机数
                        System.out.println(i+"/"+j+"=");
                        key=i/j;
                        break;
                }
                Scanner reply=new Scanner(System.in );
                answer=reply.nextInt();
                if(answer==key){
                     System.out.println("回答正确!");
                     right++;
                }
                else{
                     System.out.println("回答错误!");
                }
            }
            float rate=(float)right/(float)count;
            System.out.println("正确率为"+rate);
        }
    }
    
    

    运行过程截图

    代码托管地址

    码云链接

    UML图:

    遇到的困难及解决方法

    • 遇到的问题:正确率出现了1.5的错误情况

    • 解决方法:将 for(n=0;n<=count;n++) 改成了 for(n=0;n<count;n++)

    • 本次实验扩展需求中“多语言支持:简体中文, 繁體中文, English”“生成题目去重”没有实现,希望以后能解决。

    对结对的小伙伴做出评价(重点指出需要改进的地方)

    我的结对小伙伴是小夏同学,在结对编程中,我们互相帮助,互相学习,在各方面都得到了提高。我总是很粗心,但是我的结对伙伴却足够细心,能够帮助我并指出很多问题。结对编程在增强我合作意识的同时,也使我更加自立。我们最需要改进的地方就是时间观念不强,完成任务拖拖拉拉,总是在周日截止时间前上演生死时速的戏码,以后要打好提前量,争取早些完成任务,留出总结反思的时间。

    PSP

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 2.0 1.5
    Estimate 估计这个任务需要多少时间 16.5 17.5
    Analysis 需求分析 (包括学习新技术) 2.0 1.5
    Design Spec 生成设计文档 1.0 1.5
    Design Review 设计复审 (和同事审核设计文档) 1.0 0.5
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 1.5 2.0
    Design 具体设计 1.0 1.5
    Coding 具体编码 2.0 3.0
    Code Review 代码复审 0.5 0.5
    Test 测试(自我测试,修改代码,提交修改) 1 1
    Reporting 报告 1.5 2.0
    Test Report 测试报告 0.5 0.5
    Size Measurement 计算工作量 0.5 0.5
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 2.0 1.0
  • 相关阅读:
    html5基础的常用的技巧
    安全验证之使用摘要认证(digest authentication)
    自制AutoMapper实现DTO到持久层Entity的转换
    javascript ajax 脚本跨域调用全解析
    Padrino 生成器指南
    jQuery设计思想
    MS SQL SERVER 2008 使用OBJECT_ID判断临时表是否存在
    C#基础原理拾遗——引用类型的值传递和引用传递
    Java的23种设计模式
    使用实时文件夹显示联系人信息
  • 原文地址:https://www.cnblogs.com/zkkj/p/8850121.html
Copyright © 2011-2022 走看看