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

结对项目

时间:2023-09-28 20:22:45浏览次数:32  
标签:10 结对 String 项目 BuildFile org Test new

课程地址 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016
作业目标 进行结队项目尝试、实现小学四则运算的自动生成

团队成员

姓名 学号
高国豪 3121004734
黄家宝 3121004735

Github链接

PSP表格

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

效能分析

代码设计

类名 作用
Main 主函数
Create 生成题目
Compute 计算答案
Check 查重
BuidFile 生成相关文件
  • 函数
函数名 作用 归属
GCD 求最大公因数 Create
createFormula 随机生成算式 Create
typeCheck 对算式的运算符和算数进行区分,并进行计算 Compute
sim 化简分数 Compute
Compute 对算式进行计算 Compute
generation 生成暂存题集、答案集 Check
isRepeat 判断算式是否重复 Check
BuildFile 获取和输出题集、答案集 BuildFile
createExeFile 生成输出Exercise.txt BuildFile
createAnsFile 生成输出Answer.txt BuildFile
createGradeFile 生成输出Grade.txt BuildFile
output 输出成绩 BuildFile
obtainAnswer 获取相应文件的信息 BuildFile
  • 总体流程图

  • 关键代码设计

点击查看代码
public String[] createFormula(int r){
        Random random = new Random();
        String[] operator = {"+","-","×","÷","="};

        String[] totalOperator = new String[1 + random.nextInt(3)];
        String[] totalFraction = new String[totalOperator.length + 1];
        String formula = new String();

        Boolean isFraction = false;

        //随机生成操作数
        for (int i = 0; i < totalFraction.length; i++){
            //随机确定生成整数or分数
            int numType = random.nextInt(2);

            if(numType == 0) {//生成分数时
                int denominator = 1 + random.nextInt(r);
                int molecule = random.nextInt(denominator);
                int integer = random.nextInt(r + 1);
                //化简分数
                if (molecule!=0) {
                    int GCD1 = GCD(denominator, molecule);
                    denominator /= GCD1;
                    molecule /= GCD1;
                }
                //输出最简分数
                if (molecule > 0 && integer == 0) {
                    totalFraction[i] = molecule + "/" + denominator;
                    isFraction = true;
                }
                else if (molecule == 0)
                    totalFraction[i] = String.valueOf(integer);
                else {
                    totalFraction[i] = integer + "'" + molecule + "/" + denominator;
                    isFraction = true;
                }
            }else {//生成整数时
                int integer = random.nextInt(r+1);
                totalFraction[i] = String.valueOf(integer);
            }
        }

        //随机生成运算符
        for (int i = 0; i < totalOperator.length; i++){
            if(isFraction)
                totalOperator[i] = operator[random.nextInt(2)];
            else
                totalOperator[i] = operator[random.nextInt(4)];
        }
        //括号
        int bracket = totalFraction.length;
        if(totalFraction.length != 2)
            bracket = random.nextInt(totalFraction.length);
        //合成算式
        for (int i = 0;i < totalFraction.length; i++) {
            if (i == bracket && bracket<totalOperator.length)
                formula = formula + "(" + totalFraction[i] + totalOperator[i] ;
            else if (i == totalFraction.length - 1 && i == bracket + 1 && bracket<totalOperator.length)
                formula = formula + totalFraction[i] + ")" + "=";
            else if (bracket<totalOperator.length && i == bracket+1)
                formula = formula + totalFraction[i] + ")" + totalOperator[i];
            else if (i == totalFraction.length - 1)
                formula = formula + totalFraction[i] + "=";
            else
                formula = formula + totalFraction[i] + totalOperator[i];
        }
        //检查
        Compute compute = new Compute();
        String[] answerFormula = compute.typeCheck(formula, 3 * totalOperator.length + 3);

        if(answerFormula != null)
            return answerFormula;
        return null;
    }

测试运行

  • 测试代码及其结果
  1. CreateTest
点击查看代码
package org.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class BuildFileTest {
    @Test
    void BuildFileTest(){//创建题目文件及答案测试
        new BuildFile().BuildFile(10,10);
    }
    @Test
    void createGradeFileTest(){//创建分数文件测试
        new BuildFile().BuildFile(10,10);
        new BuildFile().createGradeFile("..\\Calculator\\Answer.txt","..\\Calculator\\Exercises.txt");
        new BuildFile().BuildFile(5,5);
        new BuildFile().createGradeFile("..\\Calculator\\Answer.txt","..\\Calculator\\Exercises.txt");
    }
}

测试结果

  1. ComputeTest
点击查看代码
package org.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class ComputeTest {
    @Test
    void typeCheckTest() {
        String f = "";
        new Compute().typeCheck(f,0);
    }
}

测试结果

  1. CheckTest
点击查看代码
package org.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class CheckTest {
    @Test
    void generationTest(){//生成给定参数的算术表达式
        new Check().generation(10,10);
        new Check().generation(5,10);
        new Check().generation(10,5);
    }
}

测试结果

  1. BuildFileTest
点击查看代码
package org.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class BuildFileTest {
    @Test
    void BuildFileTest(){//创建题目文件及答案测试
        new BuildFile().BuildFile(10,10);
    }
    @Test
    void createGradeFileTest(){//创建分数文件测试
        new BuildFile().BuildFile(10,10);
        new BuildFile().createGradeFile("..\\Calculator\\Answer.txt","..\\Calculator\\Exercises.txt");
        new BuildFile().BuildFile(5,5);
        new BuildFile().createGradeFile("..\\Calculator\\Answer.txt","..\\Calculator\\Exercises.txt");
    }
}
测试结果

  • 覆盖率

项目小结

通过此次结队作业,我们深刻认识到个人项目与团队项目的区别:个人项目要个人负责起各个方面的编写;而团队项目则更讲究分工协作,看似团队中的个人只承担了部分责任,实际在项目的执行上却极其考验彼此间的协作和配合。在项目进行初期,我们也曾因工作分配的不合理、彼此间沟通的不顺利而导致项目进度缓慢。但好在在项目进行的过程中这种类似事情的发生有所改善,彼此之间的合作经验和默契也逐渐得到增强。总的来说,经过此次作业,让我们更深刻地认识到团队合作的便利以及在合作中所要注意的事项,也更期待下一次在团队中更多人数的情况下进行项目的开发。

标签:10,结对,String,项目,BuildFile,org,Test,new
From: https://www.cnblogs.com/GaGuHa/p/17735532.html

相关文章

  • 结对项目:自动生成小学四则运算题目
    这个作业属于哪个课程计科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无法访问处理先把坑埋了,免......
  • 结对项目-Java实现四则运算题目生成器
    软件工程21级计科1班作业要求结对项目作业目标了解结对合作开发流程,提高合作开发效率项目成员姓名学号江卓颖3121004699詹慧丹3221004855Github地址github仓库链接PSP表PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗......