结对编程:小学四则运算

作业基本信息

这个作业属于哪个课程 软件工程第一次作业
这个作业要求在哪里 结对编程:小学四则运算
这个作业的目标 完成代码编程
其他参考文献 CSDN,bilibili
姓名 学号
何智琳 3121005167

ps:和另外的两个舍友讨论过题目,最终觉得自己一个人也能做完,然后就自己做了

一 gitcode项目地址

二 psp表格

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

三 效能分析

请添加图片描述

请添加图片描述

由性能图可知,耗费最久的还是字符串,这里没有什么需要改进的。

四 思路设计设计实现过程

4.1主要实现的两个功能模块:出题和检查题目对错
  • 出题
  1. 输入-n和-r控制题目个数和数值范围
  2. 根据n,r随机生成中缀表示式
  3. 将中缀表达式生成后缀表达式
  4. 判断新增表达式与前面生成的是否相同,直到生成数量达到题目要求
  5. 输出Exercise.txt文件和Answers.txt文件。
  • 检查题目对错
  1. 输入自拟的答案Ans.txt
  2. 跟Answers.txt进行检验对错
  3. 输出Grade.txt 结果文件
4.2类的说明
  1. Main类:主函数,调用其他类
  2. Expression类:获取输入的操作数和操作符并随机生成表达式
  3. Calculate类:生成后缀表达式,将中缀表达式转换为后缀表达式
  4. Check类:实现表达式结果查重功能
  5. Function类:创建并输出Exercises.txt文件和Answers.txt文件
  6. CheckQuestion类:检验结果对错并输出Grade.txt文件
4.3流程图

请添加图片描述

五 代码说明

  • 主函数
package fouroperations;
 
import java.util.Scanner;
 
public class Main {
   
    public static void main(String[] args) {
   
        while(true) {
   
            System.out.println("请输入生成题目数-n");
            Scanner inputn=new Scanner(System.in);
            int n=inputn.nextInt();
            System.out.println("请输入生成题目参数范围-r");
            Scanner inputr=new Scanner(System.in);
            int r=inputr.nextInt();
            Function makefile = new Function();
            makefile.createProblemSet(n,r);
            break;
        }
    }
}
  • 将中缀表达式转换为后缀表达式,可以把括号去除,进行遍历的时候,遇到操作符则与栈弹出的两个有理数进行运算即可。
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 hasFraction = false;
 
        //随机产生 操作数:
        for (int i=0;i<totalFraction.length;i++) {
   
            int fractionOrNot = random.nextInt(2);
            if (fractionOrNot == 0) {
   
                int integralPart = random.nextInt(r+1);
                totalFraction[i] = String.valueOf(integralPart);
            } else {
   
                int denominator = 1+random.nextInt(r);
                int molecule = random.nextInt(denominator);
                int integralPart = random.nextInt(r+1);
                if (molecule!=0) {
   
                    int commonFactor = commonFactor(denominator, molecule);
                    denominator /= commonFactor;
                    molecule /= commonFactor;
                }
                if (integralPart == 0 && molecule > 0) {
   
                    totalFraction[i] = molecule + "/" + denominator;
                    hasFraction = true;
                }
                else if (molecule == 0)
                    totalFraction[i] = String.valueOf(integralPart);
                else {
   
                    totalFraction[i] = integralPart + "'" + molecule + "/" + denominator;
                    hasFraction = true;
                }
            }
        }
        for (int i=0;i < totalOperator.length;i++) {
   
            if (hasFraction)
                totalOperator[i] = operator[random.nextInt(2)];
            else
                totalOperator[i] = operator[random.nextInt(4)];
        }
        int choose = totalFraction.length;
        if (totalFraction.length != 2 )
            choose &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT结对编程是一种将两个程序员合作编写代码的技术。这种技术可以提高编写代码的效率和质量,同时也可以提高两位程序员的技能水平。以下是ChatGPT结对编程的步骤: 1. 首先,找到一个合适的编程伙伴。最好是一个有一定编程经验的人,但如果你是新手,也可以与另一个新手合作。 2. 确定你们编写的代码项目。你们可以选择一个共同感兴趣的项目或者一个有挑战性的项目。确保你们都对项目有一定的理解。 3. 确定你们的角色。一个人可以担任主要代码编写者,另一个人可以担任代码审核者。这样可以确保代码的质量。 4. 确定编程环境。你们可以使用一个共同的编程环境,如Visual Studio Code或者Atom。也可以使用在线编程环境,如CodePen或JSFiddle。 5. 开始编写代码。一个人负责编写代码,另一个人负责审核代码。在编写代码的过程中,你们可以随时通过聊天工具进行交流和讨论。 6. 定期进行代码审核。定期进行代码审核可以确保代码的质量。你们可以定期的分享代码,并相互审核对方的代码。 7. 完成项目并进行总结。完成项目后,你们可以总结你们的经验和教训,并提出改进建议。这将有助于你们以后更好的编写代码。 总之,ChatGPT结对编程是一种非常有用的技术,可以提高编写代码的效率和质量。通过合作编写代码,你们可以相互学习,相互支持,以及增强你们的编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值