第三次作业:个人项目-小学四则运算 “软件”之初版
作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
Github地址:https://github.com/P-and-A/learningGit
一、题目要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:
23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
初步拟定要实现的功能后,估计一下自己需要花多长时间。编程过程中记录自己实际用了多长时间。
然后和同学们比较一下各自程序的功能、实现方法的异同等等。
二、构思
这个程序主要有两大模块组成
1)出题模块
这个模块主要是生成运算式,我决定用读取文件,把预先写好的运算式全部读取出来,再采用随机选取题目。
2)运算模块
这个模块主要采用栈和运算符优先级表来进行运算式计算。
三、设计
1.先在txt文件上写一些运算式以#号结尾,程序运行时全部读取到运算式数组中。
2.在运算数组中随机抽取题目
3.将抽取的题目放进运算模块中进行计算
4.打分模块
5.统计模块
6.运算模块
四、遇到的问题及解决方案
1.随机选题选中相同的题目
有两个原因,一个是题库太少题目,二是没有去重算法,适当增加题目,写个去重算法(类似java的set)可避免重复。
五、不足之处
1.还没实现分数计算
2.有时会出现相同的题目
3.题目还需要自己录入(如果需要的话也可以实现自动生成题目)
六、亮点
1.可以计算带有括号的运算式
2.可以不限运算符号的数量
3.计算结果可以是小数
4.可以通过更换题目文件调整题目难度
七、运行效果图
项目过程预估与耗时记录
PSP2.1 |
Personal Software Process Stages |
Time Senior Student |
Time |
Planning |
计划 |
0.5h |
1h |
· Estimate |
估计这个任务需要多少时间 |
0.5h |
1h |
Development |
开发 |
18h |
26h |
· Analysis |
需求分析 (包括学习新技术) |
2h |
3h |
· Design Spec |
生成设计文档 |
3h |
5h |
· Design Review |
设计复审 |
0.5h |
0.5h |
· Coding Standard |
代码规范 |
0.5h |
1h |
· Design |
具体设计 |
8h |
12h |
· Coding |
具体编码 |
4h |
5h |
· Code Review |
代码复审 |
0.5h |
0.5h |
· Test |
测试(自我测试,修改代码,提交修改) |
1.5h |
2h |
Reporting |
报告 |
2h |
1h |
· |
计算工作量 |
1h |
0.5h |
· |
并提出过程改进计划 |
1h |
0.5h |