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

结对项目

时间:2024-09-28 20:23:41浏览次数:1  
标签:结对 String 项目 int 30 equals && operation

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230
这个作业的目标 组队编程实现四则运算的项目
组队成员 阿依古再丽(3222004721)、张汉洁(3222004598)

这次作业的github链接:https://github.com/fw-1208/11111111111

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(mins) 实际耗时(mins)
Planning 计划 30 20
Estimate 估计这个任务需要多少时间 10 10
Development 开发 360 200
Analysis 需求分析(包括学习新技术) 60 100
Design Spec 生成设计文档 20 30
Design Review 设计复审 50 30
Coding 代码规范(为目前的开发制定合适的规范) 30 20
Design 具体设计 60 50
Coding 具体编码 300 320
Code Review 代码复审 40 50
Test 测试 100 200
Reporting 报告 100 100
Test Repor 测试报告 30 100
Size Measurement 计算工作量 30 25
Postmortem & Process Lmprovement plan 事后总结,并提出过程改进计划 20 30
合计 1240 1285

二、开发环境

开发环境:IntelliJ IDEA 2022
开发语言:Java

三、需求分析

image

四、效能分析

image
image

五、设计实现过程

1、Number类:随机生成数、运算符,并对分数格式进行处理。
2、number_string类:处理数字和分数的格式转换。
其中,zhen_fen_change 方法负责将输入字符串数组中的分数格式进行转换。
对于包含分数格式(例如带有/的字符串),调用 Number 类的 false_fraction 方法进行处理。
对于不包含/的整数(且不是运算符或空格),将其转换为分数形式,即添加 /1,以标准化处理
3、Main类:生成数学题目并将其输出到一个文本文件exercises.txt中,代码中写有查重机制,保证了题目的唯一性。
4、answer类:从一个文本文件exercises.txt中读取数学题目,计算这些题目,得到正确答案,将答案输出到另一个文本文件answer.txt中。
5、Operation类:对分数进行运算。
6、answer_student类:学生的答案进行判断。它从两个文本文件中读取数据:一个是学生的答案 (student_answer.txt),另一个是正确答案 (answer.txt)。程序逐行比较两个文件中的内容,统计正确和错误的答案数量,并记录下题号。最终,它将结果输出到一个名为 Grade.txt 的文件中,包括正确和错误答案的数量及其对应的题号。

六、代码说明

1、关键代码

生成题目时查重机制,避免题目重复

boolean flag = true;
            // 查重
            for (int i = 0; i < str0; i++) {
                if (str_num[i] != null && jieguo2 != null && str_num[i].equals(jieguo2)) {
                    flag = false;
                    break;
                }
            }

            if (!flag) {
                k--;
            } else {
                String jieguo3 = (k + 1) + ". " + jieguo + " =";
                System.out.println(jieguo3);
                str_num[k] = jieguo2; // 记录生成的结果以防重复
            }

对于“生成的题目中如果存在形如e1÷ e2的子表达式,那么其结果应是真分数”这个要求,为方便运算,将所有数字转化为真分数

 // 分数转换为真分数和整数转化为分数
    public static String[] zhen_fen_change(String[] a) {
        Number s = new Number();
        for (int i = 0; i < a.length; i++) {
            if (a[i].contains("'")) {
                a[i] = s.false_fraction(a[i]);
            }
            if (!a[i].contains("/") && !a[i].equals("×") && !a[i].equals("÷") && 
                !a[i].equals("-") && !a[i].equals("+") && !a[i].equals(" ")) {
                a[i] = a[i] + "/1"; // 将整数转化为分数
            }
        }
        return a;
    }

四则运算的代码

// 乘法
    public static String mul(String a, String b) {
        int[] c = operation.split(a);
        int[] d = operation.split(b);
        int e = c[0] * d[0];
        int f = c[1] * d[1];
        int g = operation.gongyinzi(e, f);
        return (e / g) + "/" + (f / g);
    }

    // 除法
    public static String div(String a, String b) {
        int[] c = operation.split(a);
        int[] d = operation.split(b);
        int e = c[0] * d[1];
        int f = c[1] * d[0];
        int g = operation.gongyinzi(e, f);
        return (e / g) + "/" + (f / g);
    }

    // 加减法
    public static String add_sub(String a, String b, String yunsuanfu) {
        int[] c = operation.split(a);
        int[] d = operation.split(b);
        int g = c[1] * d[1] / operation.gongyinzi(c[1], d[1]);
        int e = g / c[1] * c[0];
        int f = g / d[1] * d[0];
        int h = yunsuanfu.equals("+") ? e + f : e - f;
        return h + "/" + g;
    }

    // 算术表达式最后运算
    public static String last(String[] a) {
        for (int i = 1; i < a.length; i += 2) {
            int n = 1;
            while (a[i - n].equals("")) {
                n++;
            }
            if (a[i].equals("×")) {
                a[i - n] = operation.mul(a[i - n], a[i + 1]);
            } else if (a[i].equals("÷")) {
                a[i - n] = operation.div(a[i - n], a[i + 1]);
            }
            a[i] = "";
            a[i + 1] = "";
        }

        for (int i = 1; i < a.length; i += 2) {
            int n = 1;
            while (a[i - n].equals("")) {
                n++;
            }
            if (a[i].equals("+")) {
                a[i - n] = operation.add_sub(a[i - n], a[i + 1], "+");
            } else if (a[i].equals("-")) {
                a[i - n] = operation.add_sub(a[i - n], a[i + 1], "-");
            }
            a[i] = "";
            a[i + 1] = "";
        }
        return a[0];
    }

七、测试运行

正确运行的结果
image
当不存在题目文件exercises.txt时候,计算正确答案时候会报错
image

八、项目小结

本次项目旨在开发一个能够进行四则运算(加、减、乘、除)的程序。通过这个项目,我们提升了团队成员的编程能力、协作能力以及对基本运算逻辑在程序中的实现能力。我们在debug过程中耗费了较长的时间,遇到了环境不适配、代码冗余等问题,在搜集资料后,我们成功地解决了这个问题!

标签:结对,String,项目,int,30,equals,&&,operation
From: https://www.cnblogs.com/SSTwin/p/18433760

相关文章

  • 结对项目
    姓名学号Github项目地址薛秋昊3122004369https://github.com/0818XR/0818XR/tree/main/3122004369/GenerateArithmeticProblems曾俊涛3122004373一.PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟实际耗时(分钟)Planning计划1010......
  • 结对项目
    这个作业属于哪个课程 软件工程课程这个作业要求在哪里 结对项目这个作业的目标 按照要求写一个四则运算生成器成员一 罗祖文3122004537成员二 郑志涛312004547GitHub地址:https://github.com/Lzw1322/3122004537PSP2.1PersonalSoftwareProcessStages预估耗时(分钟......
  • 结对项目
    姓名学号陈祥意3122004821肖商3122004837GitHub地址https://github.com/Csneer/auto_generate_formulaPSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划4050Estimate估计这个任务需要多少时间1460......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标学习合作编程开发项目,继续熟悉运用性能分析工具和PSP表格管理时间,养成良好编程风格......
  • 结对项目
    作业属于的课程计科22级12班作业要求要求作业目标团队合作实现一个自动生成小学四则运算题目的命令行程序姓名学号兰勇3122004783GitHub链接:链接一、PSP表格PSP2.1描述预估耗时(分钟)实际耗时(分钟)Planning·Estimate估计这个......
  • 结对项目
    这个作业属于哪个课程软件工程这个作业要求在哪里结对项目这个作业的目标组队实现一个自动生成小学四则运算题目的程序成员3122004487林丙昆成员3122004502赵衍锴GitHub地址:地址PSP2.1表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟......
  • 结对项目
    这个作业属于哪个课程计科22级12班这个作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序成员梁晓君(3222004682)阿丽娅·阿力木(3222004678)github地址作业github链接PSP表格PSP2.1PersonalSoftwareProcessStag......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标实现一个自动生成小学四则运算题目的命令行程序github地址:https://github.com/zjm72......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230成员李嘉锐(3122004951)林进光(3122004955)github链接https://github.com/bitpurleclude/3122004951Ma......
  • 结对项目:自动生成小学四则运算题目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标结对实现一个自动生成小学四则运算题目的命令行程序项目一、项目开发人员以及仓库地......