第二次作业
套你猴子的小学计算
一、预估与实际
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
1h |
数不过来了 |
• Estimate |
• 估计这个任务需要多少时间 |
两天 |
三天熬夜都没完成 |
Development |
开发 |
一天 |
数不清了 |
• Analysis |
• 需求分析 (包括学习新技术) |
并没有很久 |
并没有太久 |
• Design Spec |
• 生成设计文档 |
1h |
1h |
• Design Review |
• 设计复审 |
15min |
15min |
• Coding Standard |
• 代码规范 (为目前的开发制定合适的规范) |
|
由于没有写完 |
• Design |
• 具体设计 |
|
半天 |
• Coding |
• 具体编码 |
|
很久很久 |
• Code Review |
• 代码复审 |
|
|
• Test |
• 测试(自我测试,修改代码,提交修改) |
一小时 |
|
Reporting |
报告 |
|
|
• Test Repor |
• 测试报告 |
|
|
• Size Measurement |
• 计算工作量 |
|
|
• Postmortem & Process Improvement Plan |
• 事后总结, 并提出过程改进计划 |
|
还没来得及 |
|
|
合计 |
四天 |
二、需求分析
我通过网络的方式了解到,小学三四年级数学有如下的几个特点:
- 运算符随机 括号的 最后的数字不能是负数和小数
…
但是我因为具体认识不足 有时候会几千不知道三四年级有没有能力计算
经过分析,我认为,这个程序应当:
最难的是应当解决括号位置
- …
三、设计
1. 设计思路
说明你如何设计这个程序
比如:
虽然最后我没有用这个方法,以结对对象的思路来写
- 这个程序有个一类,5个函数,函数之间的调用关系是怎样的?
- 算法的关键的关键是什么?
- 我觉得五个函数略显复杂但是却能够清晰调用 主要函数为加减乘除的随机判断,最后结果输出,主要算法
- 关键函数的流程图是怎样的?
关键是对算式的括号的位置
…
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地…
- 技术关键点:最主要是是数的判断
- …
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
1. 调试日志
记录编码调试的日志,请记录下开发过程中的 debug 历程
- 换了太多种方法 这个也是学习了很多算法的应用
2. 关键代码
请展示一段程序的关键代码,并解释代码的作用
static ScriptEngine js = new ScriptEngineManager().getEngineByName(“JavaScript”);
public static void creatArith() throws ScriptException, IOException{
boolean flag=true;
int num=0;
do {
System.out.print(“输入需要产生的四则运算的个数:”);
Scanner arith_num = new Scanner(System.in);
num=arith_num.nextInt();
if(num>=1) {
flag = true;
}
else {
flag=false;
System.out.println(“输入有误”);
}
}while(flag==false);
ArrayList arithList = new ArrayList();//运算式
for(int i=0;i
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条…
- 第二条…
没有很多要说的
并人工检查代码是否符合规范
五、测试
输入需要产生的四则运算的个数:10
90+80+4
90+80+4=174
34+79+22*59+88
34+79+22*59+88=1499
62*27*91*37
62*27*91*37=5636358
37+85+63*12+19
37+85+63*12+19=897
42/7+40
42/7+40=46
43+69*88
43+69*88=6115
87*54-42+82*10
87*54-42+82*10=5476
10*80*68*59+24
10*80*68*59+24=3209624
85*23+97
85*23+97=2052
31*35-0*60+21
31*35-0*60+21=1106
六、总结
这次作业因为个人能力和时间问题并没有将功能写完善,还是有很多遗憾的,导致的原因是括号的位置这个难点一直没有突破,将我的基础问题暴露的完整无疑
其实我有另外一种方法因为两人分歧问题 和时间问题和想挑战一下 只能实现一种
这种方法简单粗暴 但是却要列出18种情况
能将所有情况全部列入
由于 结果判断问题已经解决就不再解释
采用的是
当两位运算符时,有三个数字例如 1+1*1 其中数字以及符号随机都不是难点
括号情况可分为 (1+1)*1 (1+1*1) 1+(1*1)
当有三位 或者四位时同理 共有18种情况
代码虽长 但胜在简单!
由于想挑战自我 想用更难的思路或者算法 并没有采用这种方法 没有将功能实现完全实在是有些许遗憾啊!
望这门课能给我带来较大提升! 谢谢老师!