首页 > 其他分享 >结对项目

结对项目

时间:2023-09-28 21:22:20浏览次数:47  
标签:tmp 结对 20 项目 后缀 equals stack 表达式

作业概述

这个作业属于哪个课程 软件工程
这个作业要求在哪里 个人项目作业
这个作业的目标 完成小学四则运算算法”的设计并进行测试
姓名学号 陈梓鹏 3121005208

项目链接

项目链接

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 60
Estimate · 估计这个任务需要多少时间 20 20
Development 开发 60 90
Analysis 需求分析 (包括学习新技术) 60 90
Design Spec 生成设计文档 15 20
Design Review 设计复审 10 15
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20
Design 具体设计 60 70
Coding 具体编码 120 150
Code Review 代码复审 20 30
Test 测试(自我测试,修改代码,提交修改) 60 80
Reporting 报告 30 40
Test Repor 测试报告 20 25
Size Measurement 计算工作量 20 15
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
合计 575 755

性能分析

接口设计与实现

image
Create:

  • select方法: 随机生成正数或真分数
  • creatBackExp方法: 根据中缀表达式生成后缀表达式.通过表达式中序和后序遍历结果判断表达式是否相同
    • 表达式可以看做一棵二叉树, 中缀表达式和后缀表达式就是对该二叉树的中序遍历和后续遍历后的结果
  • create方法: 调用上面的两个方法, 生成不重复的表达式

IOFile:

  • writeFile: 将字符串写入文件
  • readFile: 以字符串形式读取文件

Reverse:

  • 对Create传过来的表达式的中缀转化成后缀,遍历后缀表达式计算结果
    • 中缀表达式转后缀表达式
public static String cal(String str) {

        List<String> list = new ArrayList<>();
        char[] arr = str.toCharArray();

        //存放数字临时变量
        StringBuffer tmpStr = new StringBuffer();
        for (char c : arr) {
            //如果是数字或小数点,添加到临时变量中
            if (c>='0' && c<='9') {
                tmpStr.append(c);
            }
            else if(c=='.') {
                tmpStr.append(c);
            }
            //如果是加减乘除或者括号,将数字临时变量和运算符依次放入List中
            else if (c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')'||c=='÷') {
                if (tmpStr.length() > 0) {
                    list.add(tmpStr.toString());
                    tmpStr.setLength(0);
                }
                list.add(c + "");
            }
            else if (c==' ') {
                continue;
            }
        }
        if (tmpStr.length() > 0) {
            list.add(tmpStr.toString());
        }
        //初始化后缀表达式
        List<String> strList = new ArrayList<>();
        //运算过程中,使用了两次栈结构,
        //第一次是将中缀表达式转换成后缀表达式,第二次是计算后缀表达式的值
        Stack<String> stack = new Stack<>();
        //声明临时变量,存放栈元素
        String tmp;
        //将中缀表达式转换成后缀表达式
        for (String s : list) {
            //如果是左括号直接入栈
            if (s.equals("(")) {
                stack.push(s);
            }
            //如果是右括号,执行出栈操作,依次添加到后缀表达式中,直到出栈元素为左括号,左括号和右括号都不添加到后缀表达式中
            else if (s.equals(")")) {
                while (!(tmp = stack.pop()).equals("(")) {
                    strList.add(tmp);
                }
            }
            //如果是加减乘除,弹出所遇优先级大于或等于该运算符的栈顶元素(栈中肯定没有右括号,认为左括号的优先级最低),然后将该运算符入栈
            else if (s.equals("*") || s.equals("/")||s.equals("÷")) {
                while(!stack.isEmpty()) {
                    //取出栈顶元素
                    tmp = stack.peek();//取出但不移除
                    if (tmp.equals("*") || tmp.equals("/")||tmp.equals("÷")) {
                        stack.pop();
                        strList.add(tmp);
                    }
                    else {
                        break;
                    }
                }
                stack.push(s);
            }
            else if (s.equals("+") || s.equals("-")) {
                while(!stack.isEmpty()) {
                    //取出栈顶元素
                    tmp = stack.peek();
                    if (!tmp.equals("(")) {
                        stack.pop();
                        strList.add(tmp);
                    }
                    else {
                        break;
                    }
                }
                stack.push(s);
            }
            //如果是数字,直接添加到后缀表达式中
            else {
                strList.add(s);
            }
        }
        //最后依次出栈,放入后缀表达式中
        while (!stack.isEmpty()) {
            strList.add(stack.pop());
        }

main:

  • 主类,调用create类生成表达式、Reverse类计算结果、IOFile类将表达式、比较结果输入到文件中

运行测试

  • 通过命令行生成10道题目
    image

  • 生成的题目
    image

  • 自己的结果与输出的正确答案的对比
    image
    image

总结

  • 通过对生成表达式和计算表达式的实现, 增强了对事件的抽象能力以及基本数据结构的熟悉程度,对二叉树的遍历,栈的调用有了进一步的理解

标签:tmp,结对,20,项目,后缀,equals,stack,表达式
From: https://www.cnblogs.com/zipeng007/p/17736511.html

相关文章

  • 结对项目
    课程地址https://edu.cnblogs.com/campus/gdgy/CSGrade21-12作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016作业目标进行结队项目尝试、实现小学四则运算的自动生成团队成员姓名学号高国豪3121004734黄家宝312100473......
  • 结对项目:自动生成小学四则运算题目
    这个作业属于哪个课程计科21级12班软件工程这个作业要求在哪里作业链接这个作业的目标结对项目github链接PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划3060Estimate估计这个任务需要多少时间3060Deve......
  • 结对项目:自动生成四则运算题目
    结对项目:自动生成四则运算题目项目成员:李奇龙3121004869李钰平3121004870github地址:作业仓库这个作业属于哪个课程点击这里这个作业要求在哪里点击这里这个作业的目标与队友共同完成结对项目——四则运算生成器一、PSP表格PSP2.1PersonalSoftwar......
  • 结对项目:实现一个自动生成小学四则运算题目的命令行程序
    结对项目软件工程首页-计科21级12班-广东工业大学-班级博客-博客园作业要求结对项目-作业-计科21级12班-班级博客-博客园作业目标实现一个自动生成小学四则运算题目项目成员3121004692甘盛培3121004702李梦承GitHubGitH......
  • 结对项目:实现自动生成小学四则运算题目
    这个作业属于哪个课程软件工程这个作业要求在哪里结对项目这个作业的目标学会团队配合的流程完成结对项目:四则运算生成器团队成员信息姓名学号Github作业链接傅浩钊3121004993傅浩钊:GitHub作业链接车文超3121002783车文超:GitHub作业链接P......
  • 结对项目:实现自动生成小学四则运算题目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade21-12这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016这个作业的目标实现小学四则运算的自动生成Github链接https://github.com/lsw11322/lsw11322/tree......
  • 2023-09-10:用go语言编写。作为项目经理,你规划了一份需求的技能清单 req_skills, 并打算
    2023-09-10:用go语言编写。作为项目经理,你规划了一份需求的技能清单req_skills,并打算从备选人员名单people中选出些人组成一个「必要团队」(编号为i的备选人员people[i]含有一份该备选人员掌握的技能列表)。所谓「必要团队」,就是在这个团队中,对于所需求的技能列表req_skills......
  • vsstudio: cmake项目调试
    vsstudio:cmake项目调试本文用于记录,在利用vsstudio进行cmake的QT项目研发过程中的环境配置。QtVisualStudioTool安装在vsstudio的扩展中搜索QT找到QTVisualStudio进行安装,然后配置QT所在路径QT环境配置此时如果运行cmake进行config时会报错,提示找不到QT相关环境......
  • 结对项目——实现一个自动生成小学四则运算题目的命令行程序—陈泽瀚and林桂旭
    软工作业3:结对项目:实现一个自动生成小学四则运算题目的命令行程序作业属于课程课程首页-计科21级1班-广东工业大学-班级博客-博客园作业要求个人项目-作业2-计科21级1班-广东工业大学-班级博客-博客园这个作业的目标实现一个自动生成小学四则运算题......
  • 『Jenkins』利用Jenkins在Windows系统上自动化部署.Net Core项目
    转自:https://blog.csdn.net/qq_34202873/article/details/117028489一、部署环境安装.NETSDK+Nuget+Git1NETCoreSDK下载链接:https://dotnet.microsoft.com/download/dotnet2Nuget下载链接:https://www.nuget.org/downloads二、Nugetv3无法访问处理先把坑埋了,免......