zoukankan      html  css  js  c++  java
  • 《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)

    结对对象与其博客链接

    20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10630566.html

    需求分析

    (一)功能需求
    1.自动生成题目(本周已完成)
    可生成包含不同运算符个数的题目
    2.题目运算(判题)(这周先做了真分数,运算和后缀计算打算下周做)
    实现中缀表达式转为后缀表达式并计算
    判断用户答题正误,并输出正确结果
    3.支持真分数(第二周内容,本周提前做了)
    实现分数算式的计算
    3.题目去重(扩展需求)
    实现对自动生成表达式中相同题目的去重
    (二)对需求的理解:
    1.能随机生成多道四则运算题目,可由用户输入控制
    2.支持整数和真分数(第二周内容,本周已做)
    3.支持多运算符,运算符个数可由用户输入控制
    4.能够判断正误,错误时能提醒并输出正确答案(这周先做了真分数,运算和后缀计算打算下周做)
    5.可以计算正确率

    设计思路

    1.我们对支持多运算符的理解就是为:在输出前,由用户输入所要求的运算符个数,然后程序运行自动给出相应算式。
    2.提前做了第二周真分数的内容,我们没有做出选项来确认用户是否需要进行真分数练习,希望下周可以对此进行优化,计算和后缀转换的内容打算下周做。
    3.由于学习c语言的时候曾设计过类似于这样的四则运算的程序,可以说思路很快就捋顺了,具体怎么实施则经过商讨后翻译成Java语言。
    4.总体思路就是这样了,具体思路见下面的UML类图。

    UML类图

    实验过程中的关键代码解释

    题目生成代码(Timushengcheng.java)

    public class Timushengcheng {
    
        String[]Shengchengtimu;//设置生成题目的数组
    
        int fuhaoshu,num;//接收用户所需的设定(题目个数、符号数个数)
    
    
        public Timushengcheng(int num ,int fuhaoshu)//构造题目生成函数
        {
            this.num=num;
            this.fuhaoshu=fuhaoshu;
            Shengchengtimu=new String[num];
        }
    
        public String questionfuhaoshu(int a)//生成单个用户要求运算符个数的题目的方法
        {
            String express="";
            String[]OC={"+","-","×","÷"};
    
            for (int c=0;c<a;c++) {
                Zhenfenshu b = new Zhenfenshu();
                String d=b.getZhenfenshu();
                String e=OC[(int) (Math.random() * 4)];
                while (d=="0"&&e=="÷") {
                    Zhenfenshu f=new Zhenfenshu();
                    d = f.getZhenfenshu();
    
                }
                express +=d+" "+e+ " ";
            }
    
            Zhenfenshu c=new Zhenfenshu();
            String e=c.getZhenfenshu();
            while (express.charAt(4*fuhaoshu-1)=='÷'&&e=="0")
            {
                Zhenfenshu d=new Zhenfenshu();
                e=d.getZhenfenshu();
            }
    
            express+=e+" "+"=";
            return express;
        }
    
        public  void QuestionNum()//生成用户要求个数的题目,且将其放入生成题目数组中保存的方法
        {
            Timushengcheng F=new Timushengcheng(num,fuhaoshu);
            for(int a=0;a<num;a++)
                Shengchengtimu[a]=F.questionfuhaoshu(fuhaoshu);
        }
    
    
        public String[] getShengchengtimu()//返回生成题目数组的方法
        {
            return Shengchengtimu;
        }
    
    
        public String getShengchengtimu2(int a) //返回数组中指定索引处的方法
        {
            String b;
            b=Shengchengtimu[a];
            return b;
        }
    
        public String toString() //输出生成题目数组中表达式的方法
        {
            String a="";
            for (int b=0;b<num;b++)
                a+=Shengchengtimu[b]+"
    ";
            return a;
        }
    }
    

    真分数生成代码(Zhenfenshu.java)

    public class Zhenfenshu {

    int numerator, denominator;
    
    public Zhenfenshu() //设置真分数生成函数
    {
        numerator= (int) (Math.random()*51);
        denominator= (int) (Math.random()*51);
        if(denominator==0)
            denominator=1;
        xianzhi1();
    }
    
    public void xianzhi1()//主要使分母不为零
    {
        if (numerator != 0) {
            int common = xianzhi2(Math.abs(numerator), denominator);
    
            numerator = numerator / common;
            denominator = denominator / common;
        }
    }
    
    private int xianzhi2(int num1, int num2) //主要使分母大于分子(真分数)
    {
        while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;
    
        return num1;
    }
    
    
    public String getZhenfenshu() //化简得到的分数直至最简
    {
        String result;
        if(numerator==0)
            result="0";
        else
        if(denominator==1)
            result=numerator+"";
        else
            result=numerator+"/"+denominator;
        return result;
    }
    

    }

    #测试方法
    ##测试程序代码(TimushengchengTest.java)
    import java.util.Scanner;
    
    public class TimushengchengTest {
        public static void main(String[] args){
            int num,fuhaoshu;
            Scanner scan=new Scanner(System.in);
    
            System.out.print("题目个数为:");
            num=scan.nextInt();
    
            System.out.print("题目中的运算符个数为:");
            fuhaoshu=scan.nextInt();
    
            Timushengcheng a=new Timushengcheng(num,fuhaoshu);
            a.QuestionNum();
            System.out.println("生成的"+num+"个表达式为:");
            System.out.println(a);
    
    
        }
    }
    #运行结果截图
    正常测试:
    ![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402160924263-1445029809.png)
    
    异常测试
    ![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402160945419-547252247.png)
    
    边界测试
    ![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402161000598-516537346.png)
    
    #代码托管+码云链接
    1.码云链接
    https://gitee.com/Lyh20175309/java-besti-is-lyh/tree/master/jiedui1
    2.代码托管
    ![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402180444765-1873805057.png)
    
    #对结对的小伙伴做出评价
    陶光远同学细心地给我讲解C语言知识,帮我弥补之前的缺漏,他是这个团队的真核,我充其量算一个辅助,他是中流砥柱
    希望在接下来的活动中能帮助他更多
    #PSP
    PSP2.1|Personal Software Process Stages|预估耗时(分钟)|实际耗时(分钟)
    --|--|--|--
    Planning|计划| |
    Estimate|估计这个任务需要多少时间|1100|1600
    Development|开发| |
    Analysis|需求分析 (包括学习新技术)|30|90
    Design Spec|生成设计文档|30|40
    Design Review|设计复审 (和同事审核设计文档)|60|60
    Coding Standard|代码规范 (为目前的开发制定合适的规范)|60|60
    Design|具体设计|60|60
    Coding|具体编码|700|1100
    Code Review|代码复审|60|60
    Test|测试(自我测试,修改代码,提交修改)|30|60
    Reporting|报告| | 
    Test Report|测试报告|20|20
    Size Measurement|计算工作量|10|10
    Postmortem & Process Improvement Plan|事后总结, 并提出过程改进计划|40|40
             |    |合计|1100|1600
  • 相关阅读:
    SortedList的使用示例
    oracle 查询
    sql group by统计
    删除隐藏盘符的隐藏共享,打开隐藏盘符
    【C#】Entity Framework 增删改查和事务操作
    CSS rem长度单位
    HTML 页面meta标签
    VUE 生成二维码(qrcodejs)
    VUE 密码验证与提示
    JavaScript 加解密库(crypto-js)
  • 原文地址:https://www.cnblogs.com/20175309lyh/p/10642961.html
Copyright © 2011-2022 走看看