• 20175325 第二周结对编程项目 四则运算


    20175325 第二周结对编程项目 四则运算

    一、需求分析:

    • 实现一个命令行程序,要求:
    • 自动生成小学四则运算题目(加、减、乘、除)
    • 支持整数
    • 支持多运算符(比如生成包含100个运算符的题目)
    • 支持真分数
    • 统计正确率
    • 题目去重
    • 能多次生成四则运算题目
    • 能根据用户输入的数字生成四则运算的题目数量
    • 多语言支持:
    • 简体中文, 繁體中文, English
    • 文件:
    • 处理生成题目并输出到文件
    • 完成题目后从文件读入并判题
    • 用户能够选择是否开始答题

    二、 设计思路:

    • 产生随机数并且考虑符号的优先级。
    • 能实现整数的四则运算
    • 再实现分数的四则运算,分子和分母都取0-100范围以内的整数;
    • 根据输入的两个参数决定表达式的数量及四则运算的范围,随机生成其范围内的自然数及运算符。
    • 能随机插入左括号并在相应的位置插入右括号。
    • 根据四则运算规律进行四则运算,能判断结果是否正确,并输出正确率。

    三、UML类图:

    四、结果测试:

    • 运行结果:


    • 文件截图:

    五、码云链接:
    https://gitee.com/sgm5/text1/commit/41bc7337f3f7066853056a8499178379889c11e9

    六、实现过程中的关键代码解释:

    • 下列是如处理分数计算过程
    public void Fraction(String FenShu) {
            String[] File = null;
            if (FenShu.contains("+")) {
                File = FenShu.split("\+");
                Calculate(File, 0);
            } else if (FenShu.contains("-")) {
                File = FenShu.split("-");
                Calculate(File, 1);
            } else if (FenShu.contains("x")) {
                File = FenShu.split("\x");
                Calculate(File, 2);
            } else if (FenShu.contains("÷")) {
                File = FenShu.split("÷");
                Calculate(File, 3);
            }
        }
    
    • 插入括号的方法
    • 法则
      1.如果遇到数字,我们就直接将其输出。
      2.如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。
      3.如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。
      4.如果遇到运算符号且栈非空,查看栈顶元素, 如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。
      5.如果我们读到了输入的末尾,则将栈中所有元素依次弹出。
    if (first == '(') {
                return true;
            }
            switch (symbol) {
                case '(':
                    return true;
                case 'x': {
                    if (first == '+' || first == '-')
                        return true;
                    else
                        return false;
                }
                case '÷': {
                    if (first == '+' || first == '-')
                        return true;
                    else
                        return false;
                }
                case '+':
                    return false;
                case '-':
                    return false;
                case ')':
                    return false;
                case '=':
                    return false;
                default:
                    break;
            }
    

    七、总结与对队友的评价:
    本周我们主要对上周代码进行了修改和完善,在程序里加入了分数的算法。我们两个人是室友,结对比较方便,讨论的时间也更加地充足,对于队友的想法也能及时地了解并沟通,当我们两个有分歧的时候、在两人都不明白的代码或者知识时,都能够各自去查找并且将所得到的解答相互沟通,从而达到了事半功倍的效果,对于“领航员”和“驾驶员”的角色,我们总是轮流着来,相互学习,相互吸收优点。通过这次结对作业,加深了我对JAVA的知识印象,也弥补了之前学习中的一些不足

    八、PSP:

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 60 100
    ·Estimate · 估计这个任务需要多少时间 400 550
    Development 开发 150 250
    ·Analysis ·需求分析 (包括学习新技术) 30 45
    ·Design Spec · 生成设计文档 30 50
    ·Design Review ·设计复审 (和同事审核设计文档) 30 50
    ·Coding Standard ·代码规范 (为目前的开发制定合适的规范) 20 30
    · Design · 具体设计 60 100
    · Coding · 具体编码 150 200
    ·Code Review ·代码复审 20 45
    ·Test ·测试(自我测试,修改代码,提交修改) 120 200
    Reporting 报告 60 80
    ·Test Report · 测试报告 15 25
    ·Size Measurement ·计算工作量 10 20
    ·Postmortem &Process Improvement Plan · 事后总结, 并提出过程改进计划 25 40
    合计 1180 1785
  • 相关阅读:
    VirtualBox 全屏问题
    PHP中SQLite模块的加载
    Js选择器总结
    安全测试06常规软件的需要测试哪些方面?
    安全测试04kala Linux 局域网扫描IP进行断网攻击
    安全测试10nmap基本使用方法
    安全测试03kali Linux 长期获取ROO权限
    安全测试09DMitry域名查询工具
    MeterSphere自动化测试框架安装步骤
    安全测试05Wpscan扫描WordPress漏洞
  • 原文地址:https://www.cnblogs.com/sgm5/p/10703283.html
Copyright © 2020-2023  润新知