2 Fork me on GitHub 6

结对项目

结对编程

| 成员 | 3118005406 杜维佳; 3118005407 杜仲谋 |
| ---- | ---- | ---- |
| 软件工程 | https://edu.cnblogs.com/campus/gdgy/informationsecurity1812 |
| 作业要求 | https://edu.cnblogs.com/campus/gdgy/informationsecurity1812/homework/11157 |
| 作业目标 | 实现一个自动生成小学四则运算题目的命令行程序,以及对给定的题目文件、答案文件有统计对错功能。 |
| github | https://github.com/Sdream1/Four_Operation |

PSP表格

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

设计实现(java)

1. 项目有分数类Fraction(含分数的加、减、乘、除方法,将分数转化成带分数方法)、表达式类Expression(含表达式中的分数和符号,返回表达式字符串的方法,返回表达式答案的方法)

、数学工具类MathTool(含随机生成运算符、随机生成运算符的方法,将字符串转化为表达式的方法);

2. 调用Fraction、MathTool类构造表达式并计算答案,主函数根据输入参数生成题目数量和相应分数的范围

根据符号数的不同(随机)创建相应数量操作数(Fraction类对象)和运算符的Expression对象,通过分类讨论分别计算1个运算符、2个运算符、3个运算符的表达式的答案(表达式不含括号,单纯的先乘除后加减)

3. 对答案功能设计:逐行读入题目文件字符串存入集合,清除格式后(题号、=号、空格)通过split方法在运算符出现的地方进行切割,切割出的分数(字符串形式)

调用MathTool中的toFractiocn方法转化为Fraction对象;再读入答案文件字符串清除格式后转化为分数,两者进行比较,最后统一数据输出

关键代码

Expression类中计算表达式答案:


运行结果(测试)

1. 生成题目和答案
java -jar main.jar -n 10 -r 10


生成1w道range=10的题目

2. 对答案
java -jar main.jar -e 题目文件路径 -a 文件文件路径
传入的题目文件和答案文件(系统生成的正确答案):

结果

把1,3,7,9题的答案改成错误的:

结果

效能分析

类的内存消耗

方法的耗时操作情况

项目小结

杜维佳:

通过这次结对项目,我认识到结对编程讨论过程中可以改善自身的思路;并且在查阅资料时,我们可以彼此指出适合的文章,这样可以节约设计时的时间;在编码出错时,搭档也能帮助自身排错;

通过这次项目我也认识到自身的编程能力仍有较大不足,知识积累不够深,对一些数据结构不熟悉,今后要再在这方面下加强。

杜仲谋:

最开始看到题目的时候,我们觉得虽然这个项目给的需求很多,但是因为列的比较详细,所以方便我们动手。由于需求较多,我们分开了两个大方向开始行动,期间不断的进行探讨互相改进,最终完成了项目。

相比起个人项目,结对项目分担了很多压力,分开方向行动也让我们的思绪更加集中,相互改进也让我们的成果更完善。通过这次的结对编程,我对软件工程四个字有了更深的理解。

posted @ 2020-10-12 23:55  友人D  阅读(131)  评论(0编辑  收藏  举报