结对项目(与陈超国)

1.Github项目地址:https://github.com/inimble/calculate.git

2.估算耗费的时间(如右表)

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 10

 5

· Estimate

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

 600

Development

开发

 20

 20

· Analysis

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

 60

 70

· Design Spec

· 生成设计文档

 10

 15

· Design Review

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

 10

 15

· Coding Standard

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

 5

 5

· Design

· 具体设计

 10

 10

· Coding

· 具体编码

 500

 550

· Code Review

· 代码复审

 30

20

· Test

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

 100

 120

Reporting

报告

 30

 25

· Test Report

· 测试报告

 10

 20

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

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

 15

 20

合计

 840

 935

3.解题思路

   运用随机数来生成一个四则运算的算式,然后将算式改为后缀表达式,并利用栈完成四则运算的计算,考虑到结果需要用真分数的形式表示,所以专门定义了一个结构体用于存储结果。最后再对结果进行约分。

4.设计实现过程

   首先设计一个函数进行随机函数的生成,这里面用到了函数rand()进行随机数的生成,然后先将生成的结果分为数字和运算符分别存入了两个数组中,接着进行了对生成的算式进行分析是否符合题目的要求,如计算结果是否为负数,如果是则改变其中的运算符。用另一个函数进行计算,然后把结果放到存储答案的结构体中。最后再设计一个用于约分结果的函数。

5.代码说明

    

   用于存放结果的结构体,分别是带分数的整数部分以及分数部分的分子和分母。

   

   此函数用于约分最终结果。

  

   

   这个循环利用随机数生成随机的算式并且存放到两个数组中,生成符号的部分也是用生成随机数字,并使用switch()语句来转化为字符串。

  

   

   该循环判断了生成的式子是否正确,如减号前面的数如果小于后面的数,则减号前后两个数对调。这部分更主要用于把随机生成的四则运算算式用fprintf()打开并写入到对应的文件中。

  

   

   这部分用于计算,方法比较低级,因为考虑到结果必须存放在result结构体中,所以计算的时候只能采用逐个判断的方法。遇到不同符号需要不同的处理方式,并且同一符号中也有一些细节的处理,如除号除完后若能与上面的数整除则删除分数部分增加整数部分。

6.测试运行

  (1)正确运行的结果:

    计算部分:

     

    对答案部分:

     

  (2)输入指令错误

  

7.实际耗费的时间(如上表)

8.项目小结

   本次结对项目属于双方的第一次结对,感觉有点陌生,同时又有点新奇。我们主要采用一人编译同时讲解,然后换另一人编译和讲解的方式来完成本次的结对项目。在进行结对项目的过程中,双方都有所学习,有所收获,最主要的是体现在一些常用函数方面的学习,如and()等。当然也会出现两个人同时不会的情况,这时候就借用到了百度等工具进行学习和了解。本次的结对项目完成过程比较顺利,一些不会的点在询问对方或网上学习后都能有所突破。但是还是存在一些不足之处,比如程序的完整性仍然不够,可能还存在一些未被我们发现的bug,这主要来源于我们对于做项目的经验不足,对项目的分析能力还有待提升。总体来说,结对项目确实会比个人项目更加轻松,如果双方使用的语言和编译器相同那会更加方便。同时结对项目也能让我们学习到一个人工作时学习不到的知识。

原文地址:https://www.cnblogs.com/inimble/p/12682572.html