仓库地址:https://git.coding.net/zhangq896/week2-2.git
一、需求分析
(1) 随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间
(2)输入:随机产生n道练习题
(2)包含至少两种运算符(判断优先级)(递归算法)
(3)输出:学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中
注意:运算过程不许出现负数、分数
二、功能设计
输入:整数n(n道算术题)
输出:自己的学号以及生成的n道练习题以及对应的正确答案——存于“result.txt”中
实现:(1)至少两种运算符
(2)数字0至100,运算符3至五个
三、设计实现
(1)获取表达式:public static String fun();
(2) 获取因子:public static int getYin(int a);(除法中运用)
(3) 四则混合运算:public static float opt(Stirng s);(递归算法)
(4)主函数
四、算法详情
(1)获取表达式:首先任意生成0至100的整数int a=(int)(Math.random()*101); 存入表达式字符str中,然后将运算符进行抽选char f=fu[(int) (Math.random()*4)];
形成简单的表达式 str.
(2)四则混合运算:使用了逆波兰表达式来判断运算符的优先级
(3)主函数中生成n道算术。先获取所有的运算符,放进set中重复。set里的大小就是不同运算符的个数。
五、总结
在这个项目中,主要的难点有判断优先级运用了逆波兰表达式,还有其中判断至少有两个运算符的表达式使用到的set。这两点对于我来说是比较新的知识。但是有点缺憾的是我并没有写出附加题的部分。我只能在课下的时候借鉴一下其它同学的代码。总的来说,我对于自己这一次的作业很是满意,虽然没有做到最好,附加题也没有做出,但是这一次我做出了巨大的努力,希望以后还可以自学一些有用的知识,这比老师教授的更令自己满足。
六、部分代码展示
逆波兰表达式
七、PSP
PSP |
任务内容 |
计划时间(min) |
完成时间(min) |
Planning |
计划 |
30 |
20 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
40 |
36 |
Development |
开发 |
700 |
2200 |
Analysis |
需求分析 |
15 |
25 |
Design Spec |
生成文档 |
0 |
0 |
Design Review |
设计复审 |
0 |
0 |
Coding Standard |
代码规范 |
10 |
7 |
Design |
具体设计 |
90 |
180 |
Coding |
具体编码 |
300 |
900 |
Code Review |
代码复审 |
50 |
700 |
Test |
测试 |
5 |
80 |
Reporting |
报告 |
180 |
450 |
Test Report |
测试报告 |
200 |
390 |
Size Measurement |
计算工作量 |
5 |
10 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
20 |
15 |
八、测试