小学四则运算
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 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.总的来说,这次的结对项目对我们的帮助很大,令我们受益匪浅。
标签:结对,项目,30,Product,40,生成,二叉树 From: https://www.cnblogs.com/yongjinhuang/p/17736194.html