结对项目

四则运算

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/InformationSecurity1912-Softwareengineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/InformationSecurity1912-Softwareengineering/homework/12147
这个作业的目标 自动生成四则运算题目的命令行程序
姓名 学号 github
黄颖睿 3119005416 https://github.com/VONVINRUI/3119005416

PSP表格

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

效能分析


设计实现过程

1、ArithmeticTree类:

接口:
ArithmeticTree(int operatorNumber, int answerRange):规定运算符的个数以及生成数的范围,生成表达式
generateNode(int number):构建生成四则运算表达式的二叉树
calculate(String operator, FractionOperation leftFraction, FractionOperation rightFraction):进行两个元素的计算
print(DataNode localRootNode):中序遍历二叉树

2、FractionOperation类:

接口:
FractionOperation(int a, int b):设置分子分母
generateFraction():生成计算数
add(FractionOperation right):加法
subtract(FractionOperation right):减法
multiply(FractionOperation right):乘法
divide(FractionOperation right):除法
setAB(int a, int b):调整分子分母

3、DataNode类:

接口:
DataNode():存放数据的节点

4、OperatorNode类:

接口:
OperatorNode(DataNode left, DataNode right, String operator):存放操作符的节点

5、Main

主函数,获取数据,生成结果。

6、FileUtils类

接口:
writeTitle(PrintWriter printWriter, Map<String,String> map):将题目写入文件
writeAnswer(PrintWriter printWriter,Map<String,String> map):将答案写入文件
compare(File answerFile, File exerciseFile):对比

7、GenerateUtils类

接口:
getRandomInRange(int range):获取随机数
generateMap(int examNumber, int answerRange):随机生成四则运算

代码说明

Main


FractionOperation


FileUtils

ArithmeticTree

测试运行




项目小结

对这次的项目,开始觉得挺难的,查阅了许多资料,重新学习了二叉树的知识。

posted @ 2021-10-26 01:45  VONVINRUI  阅读(18)  评论(0编辑  收藏  举报