| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/networkengineering1934-Softwareengineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/networkengineering1934-Softwareengineering/homework/12138 |
| 这个作业的目标 | 实现一个自动生成小学四则运算题目的命令行程序 |
队员:3118005326 愚蠢的黄汉源和他的天才舍友
Github:https://github.com/SsazieLuith/3118005326/blob/main/Pair Project/src/caculator/Main.java
一.PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 1440 | 1000 |
| Development | 开发 | ||
| · Analysis | · 需求分析 (包括学习新技术) | 60 | 300 |
| · Design Spec | · 生成设计文档 | 40 | 0 |
| · Design Review | · 设计复审 | 120 | 210 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
| · Design | · 具体设计 | 40 | 120 |
| · Coding | · 具体编码 | 220 | 240 |
| · Code Review | · 代码复审 | 60 | 180 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 120 | 240 |
| Reporting | 报告 | ||
| · Test Repor | · 测试报告 | 40 | 180 |
| · Size Measurement | · 计算工作量 | 100 | 1 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
| · 合计 | 1440 | 1000 |
二.项目需求
(1)使用 -n 参数控制生成题目的个数。
(2)使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围。
(3)过程无负数,运算符不超过3个,全程真分数,不能重复,一万道题。
(4)题目,答案,核对结果的数据需要写入txt。
三.实现
1.设计思路
参考了不认识的师兄的部分代码(直接照搬是无法实现功能的) 附师兄github地址:https://github.com/xiaobaot/wordcount/tree/master/sizeyusuan

根据需求确立了随机函数和限制范围的函数,之后设计算法和存储。

2.运行
文件生成位置:

Run键入数据后:

生成txt文件

数据展示

四.效能分析


本次分析采用了10000以内,100个数的逐次键入结果的方式,通过看图可以知道从100次生成题目到输入答案比较答案并且写入txt,cpu用了7.703秒的时间,倘若是10000道题,则可能需要大约770秒的时间,因为没有数据比较,尚且不清楚它的效率如何,但我觉得还是太慢了。所幸cpu占用率从始至终维持在1.5%上下,这也为项目提供了持续运行的可能。
五.小结
这次项目没有找到队友,所以只好自己动手干了。作为一个代码外行,拾人牙慧的过程中渐渐体会到了代码的美丽————前人的奇思妙想启迪了思维方式;室友的严谨逻辑给予了正确方程;代码的书写顺序规范了层级链接。尚且还在牙牙学语,他人早已健步如飞,但最终的目的都是拓展自身的视野。
有些遗憾的是运算符个数只实现了单个运算符,查重功能也尚未实现,一万道题的功能虽然可以实现,但是键入一万个答案的过程过于繁琐,或许以后有能力了能够改进吧。