天天看点

复利计算测试(C语言)

对我们和复利计算程序,写单元测试。 

   有哪些场景?

   期待的返回值

   写测试程序。

   运行测试。

测试模块 测试输入 预期结果 运行结果 bug跟踪
计算终值 (本金,年限,利率) 终值
1 (1000,10,0,.3) 13785.85
2 (0,10,0.3) 提示输入错误,重新输入 0.00 已修改,弹出提示:输入错误!!重新输入
3 (-1000,10,0.3) -13785.85
4 (1000,0,0.3) 1000.00
5 (1000,10,0)
计算本金 (年限,利率,终值) 本金
(10,0.3,30000) 7500.00
(0,0.3,30000) 30000.00
(-10,0.3,30000) -15000.00
(10,0,30000)
(10,0.3,-3000) -7500.00
计算时间 (本金,利率,终值) 时间
(1000,0.3,3000)
(0,0.3,3000)
(-1000,0.3,3000) -1
(1000,0,3000)
(1000,-0.3,3000) -3
计算利率 (本金,年限,终值) 利率
(1000,10,30000) 0.41
(0,10,30000) 乱码
(-1000,10,30000)
(1000,0,30000)
计算等额本息还款 (贷款,年限,利率) 本息还款
(10000,10,0.3) 15.04 13.04
(10000,0,0.3)
(10000,10,0)
(-10000,10,0.3) -15.04

以上是对功能的测试,几乎都是出现同样的问题,本金、利率、时间等输入负值,程序还是会继续运行,没有提示错误。

以下是修改前和修改后的结果:

以函数A()为例子:

原代码:

void A()//一次投入复利计算

 {

     int n;//时间n

     double p,i,sum1;//总金额p,利率i,本利和sum1

     printf("\n\t*请输入存款金额:");

     scanf("%lf",&p);

     printf("\t*请输入利率:");

     scanf("%lf",&i);

     printf("\t*请输入存储时间(年):");

     scanf("%d",&n);

     sum1=p*pow((1+i),n);//复利的计算公式

     printf("\t**本利和为:%.2lf\n\n",sum1);//输出复利计算的结果

 }

运行结果:

复利计算测试(C语言)

修改后的代码:

void A()//一次投入复利计算

 {

     int n;//时间n

     double p,i,sum1;//总金额p,利率i,本利和sum1

     printf("\n\t*请输入存款金额:");

          while(scanf("%lf",&p)!=1||p<=0)

          {

                   printf("\t输入错误!!!\n\n\t*请重新输入存款金额:");

             getchar();  

          }

     printf("\t*请输入利率:");

     while(scanf("%lf",&i)!=1||i<=0)

                   printf("\t输入错误!!!\n\n\t*请重新输入利率:");

             getchar();   

          } 

     printf("\t*请输入存储时间(年):");

     while(scanf("%d",&n)!=1||n<=0||n>100)

                   printf("\t输入错误!!!\n\n\t*请重新输入存储时间(年):");

          } ;

     sum1=p*pow((1+i),n);//复利的计算公式

     printf("\t**本利和为:%.2lf\n\n",sum1);//输出复利计算的结果

复利计算测试(C语言)

除了复利计算的功能出现问题以外,选择功能这一模块也有问题

while(scanf("%d",&sel)!=1||sel<0||sel>7)//防止输入的是字符以及输入的数字不是整数0-7

        {

             printf("\t输入错误!!!\n\n\t请重新选择:");

             getchar();      

        }

复利计算测试(C语言)

                             while(getchar() != '\n');         //  处理回车键

复利计算测试(C语言)

通过这次测试,我发现了以上的问题,也对代码做了修改,但我知道我目前的程序还是有问题的,我会继续测试,继续完善代码。