• 软工个人项目


      由于之前请假一个星期,没能及时提交作业。。。这个个人项目主要实现一个关于小学四则运算的程序,这个程序有两个功能,一个是自动生成表达式和答案,分别存到两个文件中,另一个是读取两个文件,一个是表达式文件,另外一个是答案文件,并且判断对应条目的答案是否正确,控制台输出正确的个数与错误的个数,还有编号。具体要求详见: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扼杀在摇篮里就不用在测试投入那么多时间和精力了。

  • 相关阅读:
    AutoMapper 模型转换
    HttpClient Post请求
    C#根据中文description获取enum枚举值
    SQLserver链接字符串MySql链接字符串区别
    EF+Linq分组 多条件
    netcore导入 取Excel中的数据做操作
    net core文件流导出文件
    V-IF 使用包含判断条件
    Vue 使用mounted 或created自动调用函数,遇到的第一个问题 this 指针指向
    VUE 属性绑定
  • 原文地址:https://www.cnblogs.com/Terminator1306/p/4831013.html
Copyright © 2020-2023  润新知