git地址:https://git.coding.net/aendless/Aeithtext.git
需求分析
1.接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+.-.*./来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
2.每个练习题至少要包含2种运算符。同时,不得出现负数与非整数。
3.练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
4.支持有括号的运算式,算式中存在的括号必须大于2个,但不得超过运算符的个数。
功能设计
基本功能
1.生成随机运算符以及随机数
2.接受键盘输入的数字,产生多行表达式
3.创建并输出数据到txt文件
4.输出学号
扩展功能
1.表达式中带有括号时判断优先级
2.运算过程中没有负数和分数的产生
设计实现
随机运算符以及随机数我通过random函数产生,运算符由基本数据型态转换成String 型。
在lib类我存放了数据属性以及方法,在主类里我通过随机逆波兰式然后利用它转化为带括号的运算式并计算结果。逆波兰表达式的参数通过栈来储存。
算法详解
在这里,说实话,写代码的过程中,由于自己之前基础实在是太差,所以求助了很多人,但是我还是有疑惑,所以我就在知乎上提问,希望得到大家的指导,
另外自己也查了很多资料,综合来看,在求结果的过程中几乎都是用逆波兰表达式和栈,于是我初步在网上学习了这部分,主要就是学习生成随机的逆波兰
式,前部分是随机生成的代码,后部分是逆波兰表达式:
通过switch case条件语句来对运算符进行判断,并通过if语句控制数字的出入栈。这部分真的我做的太浅了,计算到处那部分的代码是我请教别人的,我自己
没有写出来,但是以后我会努力的。对自己挺失望的。哎~
总结
这次作业中,让我深刻体会到代码的力量,虽然是边学边写,但是当运算出结果那一刻,我真的特别开心有成就感,虽然学个皮毛,但是还是有所收获,之前
我几乎没有敲过代码,以后我相信我会被这股神秘力量所吸引,在软件的路上越走越远,就像我第一次作业那样说的,《构建之法》这本书是我学习软件新的
开端我愿意在这条路上努力!
PSP2.1 |
任务内容 |
计划共完成需要的时间(h) |
实际完成需要的时间(h) |
Planning |
计划 |
5 |
6 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
5 |
6 |
Development |
开发 |
56 |
49 |
· Analysis |
· 需求分析 (包括学习新技术) |
10 |
23 |
· Design Spec |
· 生成设计文档 |
0.5 |
0.5 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0.5 |
0.5 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
3 |
3 |
· Design |
· 具体设计 |
5 |
5 |
· Coding |
· 具体编码 |
30 |
25 |
· Code Review |
· 代码复审 |
5 |
8 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
5 |
8 |
Reporting |
报告 |
3 |
3 |
· Test Report |
· 测试报告 |
1 |
1.5 |
· Size Measurement |
· 计算工作量 |
1 |
0.5 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1 |
0.5
|