您的位置:首页 > 其它

软工个人项目

2015-09-23 00:31 260 查看
  由于之前请假一个星期,没能及时提交作业。。。这个个人项目主要实现一个关于小学四则运算的程序,这个程序有两个功能,一个是自动生成表达式和答案,分别存到两个文件中,另一个是读取两个文件,一个是表达式文件,另外一个是答案文件,并且判断对应条目的答案是否正确,控制台输出正确的个数与错误的个数,还有编号。具体要求详见:http://www.cnblogs.com/jiel/p/4810756.html

  个人觉得这个项目有两个关键点,一个是判断表达式是否重复,另外一个是运算。对于查重我采用的方法是,将表达式中的数字抽取出来按照从小到大排序,将他们拼成一个字符串再将运算符按照先后顺序接在其后面,这样就生成了一个伪ID(有可能是不同表达式,但是id相同,这种情况的概率是比较小的),判断是否重复只需判断id是否相等。对于运算,我构建了一个分数类,封装了加减乘除四种操作,再采用调度场算法就能计算了。

  项目开始前psp估计

  

PSP2.1

Personal Software Process Stages

Time

Planning

计划

· Estimate

· 估计这个任务需要多少时间

Development

开发

25小时

· Analysis

· 需求分析 (包括学习新技术)

1小时

· Design Spec

· 生成设计文档

1小时

· Design Review

· 设计复审 (和同事审核设计文档)

0.5小时

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0.5小时

· Design

· 具体设计

2小时

· Coding

· 具体编码

15小时

· Code Review

· 代码复审

1小时

· Test

· 测试(自我测试,修改代码,提交修改)

4小时

Reporting

报告

5小时

· Test Report

· 测试报告

1小时

· Size Measurement

· 计算工作量

1小时

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

3小时

合计

30小时

  项目完成后psp

PSP2.1

Personal Software Process Stages

Time

Planning

计划

· Estimate

· 估计这个任务需要多少时间

0小时

Development

开发

20.5小时

· Analysis

· 需求分析 (包括学习新技术)

2小时

· Design Spec

· 生成设计文档

0小时

· Design Review

· 设计复审 (和同事审核设计文档)

0小时

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0小时

· Design

· 具体设计

0.5小时

· Coding

· 具体编码

9小时

· Code Review

· 代码复审

0小时

· Test

· 测试(自我测试,修改代码,提交修改)

9小时

Reporting

报告

1小时

· Test Report

· 测试报告

0.5小时

· Size Measurement

· 计算工作量

0小时

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

0.5小时

合计

21.5小时

  性能测试

     通过vs2015的性能分析工具可以看出,执行生成10000个范围在30以内的表达式耗时6.235秒,其中最耗时的方法是Expression.newInstance()即产生一个表达式。


测试

运行 personal_work.exe -r 30 -n 10 的结果:

exercisefile.txt中的内容为

1. 27 - 17 =
2. 22 - 20 + 14 =
3. 20 / 15 * 14 + 9 =
4. 19 - 16 + 22 =
5. 26 - 10 =
6. 10 / 21 + 25 - 23 =
7. 3 + 16 - 2 - 10 =
8. 29 - 4'3/7 =
9. 3 * 10 - 29 =
10. 28 / 6 =

answerfile.txt中的内容为

1. 10
2. 16
3. 27'2/3
4. 25
5. 16
6. 2'10/21
7. 7
8. 24'4/7
9. 1
10. 4'2/3

e.txt中的内容为

1. 27 - 17 =
2. 22 - 20 + 14 =
3. 20 / 15 * 14 + 9 =
4. 19 - 16 + 22 =
5. 26 - 10 =
6. 10 / 21 + 25 - 23 =
7. 3 + 16 - 2 - 10 =
8. 29 - 4'3/7 =
9. 3 * 10 - 29 =
10. 28 / 6 =

a.txt中的内容为

1. 10
2. 16
3. 27'2/3
4. 25
5. 16
6. 2
7. 6
8. 24'4/7
9. 1
10. 4'2/3

运行 personal_work.exe -a a.txt -e e.txt的结果为

Correct: 8(1,2,3,4,5,8,9,10)
Wrong: 2(6,7)

总结

这个项目是我第一次用c#开发,感觉跟java很像用起来也很顺手,在开发中很多小细节耽误了很长时间,比如随机数的生成、调度场算法中判断符号优先级等,我觉得假如能够在编码过程中仔细认真些,想全所有的可能性,尽量把这些小bug扼杀在摇篮里就不用在测试投入那么多时间和精力了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: