结对项目

这个作业属于哪个课程 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/3122004951MathQuestionGenerator.git
这个作业的目标 与搭档合作实现一个自动生成小学四则运算题目的命令行程序

PSP表格

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

设计实现过程

效能分析



代码说明

ArithmeticGenerator 类中各个函数的说明:

generateExpression(Random rand, int range, int complexity):
功能: 生成一个随机的数学表达式。

findClosingParenthesis(String[] tokens, int start):
功能: 找到与给定起始位置匹配的右括号的位置。

isOperator(String token):
功能: 检查给定的字符串是否是运算符。

hasPrecedence(String op1, String op2):
功能: 检查两个运算符的优先级。

applyOperator(Fraction left, Fraction right, String operator):
功能: 对两个分数应用指定的运算符并返回结果。

parseFraction(String operand):
功能: 将操作数字符串解析为 Fraction 对象。

Fraction 类中各个函数的说明:

Fraction(int numerator, int denominator):
功能: 构造一个具有指定分子和分母的分数对象。

add(Fraction other):
功能: 将当前分数与另一个分数相加。

subtract(Fraction other):
功能: 将当前分数与另一个分数相减。

multiply(Fraction other):
功能: 将当前分数与另一个分数相乘。

divide(Fraction other):
功能: 将当前分数与另一个分数相除。

compareTo(Fraction other):
功能: 比较当前分数与另一个分数的大小。

toString():
功能: 返回分数的字符串表示形式。

reduce():
功能: 将分数化简为最简形式。

gcd(int a, int b):
功能: 计算两个整数的最大公约数。

Calculate 类中各个函数的说明:

calculateAnswer(String expression):
功能: 计算给定数学表达式的结果。

parseExpression(String expression):
功能: 将数学表达式解析为令牌列表。

evaluateTokens(List tokens):
功能: 评估解析后的令牌列表,计算表达式的结果。

applyOperator(Fraction left, Fraction right, String operator):
功能: 对两个分数应用指定的运算符并返回结果。

parseFraction(String operand):
功能: 将操作数字符串解析为 Fraction 对象。

isOperator(String token):
功能: 检查给定的字符串是否是运算符。

hasPrecedence(String op1, String op2):
功能: 检查两个运算符的优先级。

findClosingParenthesis(String[] tokens, int start):
功能: 找到与给定起始位置匹配的右括号的位置。

FileUtil 类中各个函数的说明:

writeToFile(String filename, List data):
功能: 将数据写入指定的文件。

readFromFile(String filename):
功能: 从指定的文件读取数据。

checkAnswers(String exerciseFile, String answerFile):
功能: 检查练习文件中的题目和答案文件中的答案,并生成评分结果。

测试运行

测试用例1:测试生成10个题目,范围为10

java -jar main.jar -n 10 -r 10


测试用例2:测试生成20个题目,范围为20

java -jar main.jar -n 20 -r 20

测试用例3:测试生成100个题目,范围为100

java -jar main.jar -n 100 -r 100

测试用例4:测试生成1000个题目,范围为10

java -jar main.jar -n 1000 -r 10

测试用例5:测试生成20个题目,范围为10并判定答案中的对错并进行数量统计

java -jar main.jar -n 20 -r 10
java -jar main.jar -e <题目文件路径> -a <答案文件路径>

测试用例6:输入无效的数值范围1

java -jar main.jar -n 10 -r 1

测试用例7:输入的题目数量为0

java -jar main.jar -n 0 -r 10

测试用例8:输入的题目数量不规范(小数)

java -jar main.jar -n 1.5 -r 10

测试用例9:输入的参数数量不正确(缺少或多出)

java -jar main.jar -n 10 -r

测试用例10:判定答案中的对错并进行数量统计时给出的文件路径找不到该文件

java -jar main.jar -n <错误的题目文件路径> -a <错误的答案文件路径>

项目小结

我们都是第一次组队写项目,互相都有些不是很适应,但经历一段时间的磨合后,我们俩之间对项目的交流也变得频繁,码字在出现bug时能够一起讨论bug的一些解决方法,逐渐对项目合作得心应手,通过这次组队项目,我们意识到团队合作不仅能够提高效率,还能够获得更好的结果,在合作过程中,互相学习和交流,共同解决问题,能够让我们取得更好的成果

posted @ 2024-09-28 19:13  第七片海梦  阅读(10)  评论(0编辑  收藏  举报