201571030310/201571030329《小学四则运算训练软件》结对项目报告

一.项目源码。

Github地址:https://github.com/lucky6991/SoftWareTest/tree/master/SoftWareTest3

二.项目报告。

1.需求分析:

 (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不       计分,20道题测试结束后给出测试总分;

 (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:

     

    (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;

  (4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:

 

     (5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;

  (6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。

  (7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体。

2.软件设计:

  (1)设计流程图:  

                     

 (2)设计类图

                 

  1> ReadFile类是读取所有文件,将生成的算式全部读出来,以栈的形式放入数组内;

  2> Fraction类是关于分数的计算,分为真分数和假分数;

  3> Calculate类是百内整数的加减乘除运算;

  4> Textview就是显示最终运算结果,以及显示分数,计时等功能。

 

(3)核心代码:

  1>读取生成的文件:

                 

2>分数的运算:

public int getNumerator()  
        {  
            return c;  
        }  
        public int getDinominator()  
        {  
            return d;  
        }  
      
        public void selfTrim()  
        {  
            int maxCommon=commonDivisor(c,d);       //求出两个数的最大公约数。  
            c=c/maxCommon;                  //分式为最简。  
            d=d/maxCommon; //整理正负号。 if((c>0&&d<0)||(c<0&&d<0)) { c=-c; d=-d; } } public String toString() //重写tostring().  { if(c==0||d==1) //分母为1 直接输出分子.  { return Integer.toString(c); } return Integer.toString(c)+"/"+Integer.toString(d); //输出c/d.  } //----- plus public Fraction minus(Fraction f2) { int newNumerator=c*f2.getDinominator()-d*f2.getNumerator(); int newDinominator=d*f2.getDinominator(); int maxCommon=commonDivisor(newNumerator,newDinominator); return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon); } //---- minus public Fraction plus(Fraction f2) { int newNumerator=c*f2.getDinominator()+d*f2.getNumerator(); int newDinominator=d*f2.getDinominator(); int maxCommon=commonDivisor(newNumerator,newDinominator); return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon); } //----- mutiply public Fraction multiply(Fraction f2) //两个分数相乘。  { int newNumerator=c*f2.getNumerator(); int newDinominator=d*f2.getDinominator(); int maxCommon=commonDivisor(newNumerator,newDinominator); return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon); } //----- divide public Fraction divide(Fraction f2) { if(f2.getNumerator()==0) { System.out.println("0不能做除数!"); System.exit(0); } Fraction result=new Fraction(c,d); return result.multiply(new Fraction(f2.getDinominator(),f2.getNumerator())); } //计算2个数的最大公约数。按绝对值计算。 

 

 (4)运行结果:                            

                                                                    

 测试结果统计:

   (5)本次设计的PSP:

PSP2.1

任务内容

计划共完成需要的时间(天)

实际完成需要的时间(天)

Planning

计划

9

14

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

0.5

1.5

Development

开发

9

10.5

Analysis

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

1

0.5

 Design Spec

生成设计文档

0.5

0.5

Design Review

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

0.5

0.5

Coding Standard

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

0.5

0.5

 Design

  具体设计

1

1

Coding

具体编码

4

6

Code Review

代码复审

1

1

 Test

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

0.5

0.5

Reporting

报告

1.5

1.25

Test Report

·  测试报告

0.5

0.5

Size Measurement

  计算工作量

0.5

0.25

Postmortem & Process Improvement Plan

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

0.5

0.5

(6)请使用汉堡评价法给你的小伙伴一些点评。

 

  

        我的小伙伴很认真,对待每一件事都有一个积极的态度,能很积极主动的和我交流意见,提出他的想法与观点,在本次项目开发中他主要负责计算器和分数统计,能够很认真的做开发,对我设计界面开发和计时器的设计提出了很多建议,我俩做了充分的交流和研究,最终分析利弊,用更完善的方式完成了这次的作业,我们互相删减代码中的冗余部分;和他合作我感觉到很越快,我们的合作很成功,我也期待下次和他继续合作开发项目。在此过程中我们也遇到很多问题,但是我们都没有推卸责任,而是积极探讨、一起解决,解决问题后两个人就特别激动。

(7)结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。

         通过本次项目,我体会到结对编程真的能够带来1+1>2的效果,本次项目的规模相比于上一次大了不少。所以结队编程的好处也就是提高了编码和效率,减轻了工作量;也能够更好地了解他人的想法和思路,对于自己做程序开发也是有很大的积极作用,而且当自己一个人遇到困难的时候,很容易轻易放弃。两个人一起编程,就会感觉不到编程的枯燥与乏味,反而是很轻松,能彼此讨论自己想法的过程。

 

 

     

 

转载于:https://www.cnblogs.com/code8890/p/8709700.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值