结对项目
结对编程
| 成员 | 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题的答案改成错误的:
结果
效能分析
类的内存消耗
方法的耗时操作情况