结对项目

小学四则运算

这个作业属于哪个课程 软件工程
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade21-34/homework/13025
这个作业的目标 1、尝试结对编程 2、深入熟悉开发过程 3、设计一个能自动生成小学四则运算题并批改题目的程序

合作者

姓名 学号
黄勇进 3121005169
陆俊聪 3121005177
GitHub仓库地址 https://github.com/sssscccchhhh/jieduixiangmu.git

PSP表格

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

效能分析

设计实现过程
本次设计程序我们采取了面向对象的方法进行编程,对于整个程序进行分析,我们以生成题目、计算答案、校对答案三个功能把它分为了三个模块构造了四个类,其中BinaryTree类主要服务于Product类实现生成题目的功能

第一个类: BinaryTree类

该类有两个功能:生成二叉树和检查两颗二叉树是否相同

生成二叉树: 是将传入的后缀表达式列表用二叉树进行存储

检查两颗二叉树是否相同:实现的方法是基于递归的方法进行遍历结点

本类是为了Product类的def isRepeat(self, express_set, expression)函数服务的,在Product类为了避免生成重复的表达式,采用了基于二叉树的形式进行查重!

第二个类: SuffixExpression类

该类的功能如下:

1、将中缀表达式转化为后缀表达式(def toSuffix(self))

2、 计算后缀表达式的值( def suffixToValue(self): )

第三个类:Product类

功能是生成要求的四则运算式子。

对于实现生成式子功能,我们把式子的各个要素分别构建方法进行生成,式子可能包含的要素分别为:整数、分数、括号、运算符。

其中分数的生成是较为复杂的,因为题目要求生成的都是真分数,所以在生成分数后我们有构建了一个方法把假分数转换为带分数

第四个类:Answer类

功能是:调用SuffixExpression类进行计算得出答案文档
校对提交的答案

代码说明
生成题目
实现思路:

代码:

计算
实现思路

代码:

测试运行

项目小结
1.开发前二人进行多次讨论,交流各自的想法,最终确定项目总体的思路,然后确定各种的任务和合作内容,
两人合作可以发现各自无法发现的bug,并互相促进更进进度。

2.遇到的困难主要是数组越界,通过严谨的检查以及步步验证的方式找出了错误并解决了。

3.总的来说,这次的结对项目对我们的帮助很大,令我们受益匪浅。

posted @ 2023-09-28 17:07  雪之月  阅读(23)  评论(0编辑  收藏  举报