1.Fork到自己远程仓库的码云项目地址https://gitee.com/wdongx/personal_project41656.git
2.PSP表格。表格中的任务估计花费时间以及实际花费时间。
PSP2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 30 | 50 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 50 |
Development | 开发 | 300 | 410 |
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 (和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 30 | 50 |
Coding | 具体编码 | 60 | 80 |
Code Review | 代码复审 | 60 | 120 |
est | 测试(自我测试,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 120 | 180 |
Test Report | 测试报告 | 60 | 50 |
Size Measurement | 计算工作量 | 30 | 100 |
Postmortem & Process Improvement Plan
| 事后总结 ,并提出过程改进计划 | 30 | 30 |
Summary | 合计 | 450 | 640 |
3.解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
3.1:仔细审题,看清题目要求。
3.2:确定语言比如(java,python,c#),然后我选择java语言进行编写,编辑器为myeclipse2014.
3.3:Fork 码云 项目 到自己的仓库,在码云仓库中新建一个学号为名的文件夹,然后clone到本地。
3.4:在Main.java中进行正式编写项目。
3.5:分别创建了6个类,
3.5.1其中主类中调用CalTest01()方法,实现向控制台进行录入功能,并有相应的提示.
3.5.2CalTest01()方法调用CalcAS()方法。把用户录入的算式以+/-进行切分然后存到arr数组中
3.5.3对arr进行遍历,并对算式进行优先级的判断,若含有*或/,数组进入CalcMD()方法。
3.5.4在CalcMD()方法中,遍历已处理过的字符串str,若条件为*进入CalTest02()类中,从而进入到 CalculatorMul()类中,返回x1*y1
3.5.5进行除法运算同上。
3.6:在百度上查找关于计算器方面的对字符串进行切分的方法,判断是否包括字符如contains().等等。
4.程序对表达式类型的支持程度。描述你的程序对不同类型表达式求值的支持程度
4.1能支持两个操作数,一种运算符
4.2能支持两个操作数的简单四则运算(只有一个操作符)。
4.3能支持简单混合四则运算(最多有3个操作符,没有括号)。
5.设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?
本次代码一共含有6个类:
Main():主类,与文件名一致。
CalTest03():为计算器的父类,含有x1,x2的get,set方法。
CalculatorAdd():继承CalTest03()类,返回x1+x2。
CalculatorSub():继承CalTest03()类,返回x1-x2。
同上
CalculatorMul():继承CalTest03()类,返回x1*x2。
同上
CalculatorDiv():继承CalTest03()类,返回x1/x2。
同上
本次代码一共含有5个函数:
main():对用户进行提示说明,并调用CalTest01()。
CalTest02():传值x1,s,y1。若条件为+/-/*//,分别到不同的CalculatorAdd(),CalculatorSub(), CalculatorMul(),CalculatorDiv()类中。
CalTest01():对控制台进行录入,并调用CalcAS()。
CalcMD():判断优先级,对乘或除进行切分。把*或/存到临时变量temp中,temp=x1*//y1.
CalcAS():对+/-进行切分,然后对数组arr进行遍历,判断str是否含有*//若有调用CalcMD(),若为空,返回值为 0.,对str进行遍历,为+,临时变量result= x1+y1,为-,临时变量:result=x1-y1。
6.记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。
1.程序刚开始的框架很好实现。
2.第一个计算器版本是以数组索引进行切分,这就只能是两个数进行相加,有很大的局限性。
3.有很大的弊端,这次通过+或-进行切分。成功解决此问题。
4.解决此问题,花费了较长时间,进行了大量的更改代码。
5.程序中消耗最大的函数应该是CalcAS(),需要进行切分判断,分别对arr数组进行遍历,和str进行遍历。并调用函数方法。
7.结合在构建之法中学习到的相关内容与个人项目的实践经历,撰写解决项目的心路历程与收获。
7.1.刚开始的分析太简单,有很多的不完善之处,然后直接进行代码的编写,导致后来花了更长的时间去改正。
7.2.合理全面的分析。