zoukankan      html  css  js  c++  java
  • 单复利软件单元测试

    1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30

    2.如果按照单利计算,本息的最终收益

    3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?

    4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 

    5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?

    6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?(定额定投收益计算办法)

    7. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

     因为为了方便测试,所以把前几次的单复利计算合起来一个程序方便测试。因为可以输入年份,本金,利率等可以输入负数,所以在每个输入都加入限制while使输入的都大于0.

    单元测试预期结果及其代码:

    测试模块

    测试输入

    预期结果

    运行结果

    bug跟踪

    复利计算

    (本金,年限,利率,次数)

    终值

       

    测试运算结果

    (1000,3,0.05,5)

    ×

     

     测试输出正数

    (1000,3,0.05,1)

     测试输入负数

     (-1000,3,-0.05,1)  输入错误请输入正确的数值  √  

    单利计算

    (利率,本金,年限)

     终值    
     测试运算结果  ("0.03","5000","3")  √   √  
     测试输入负数  ("0.03","5000","3")  输入错误请输入正确的数值   √  
    测试输出正数 ("-0.03","-5000","3") 输入错误请输入正确的数值  √  
    投资年限 (利率,本金,终值,次数)      
    测试运算结果 ("0.05","100.0","105.0","1")  
    测试输出正数 ("0.05","100.0","105.0","1")  
    测试输入负数 ("-0.05","-100.0","105.0","1") 输入错误请输入正确的数值  
    ...... 以下结果与上表一致      

    #include<stdio.h>
    #include<math.h>
    main()
    {   
        int a,f;
        double money,time,i,sum,b,c;

          printf(" ※※※※※※※※※ ");
          printf("※请输入1或2或3或4※ ");
          printf(" ※※※※※※※※※ ");
          printf("----------------------------- ");
          printf("|1复利计算收益(投资年限估算) | ");
          printf("|2.最优投资项目利率估算     | ");
          printf("|3.定投计算               | ");
          printf("|4.单利计算               | ");
          printf("----------------------------- ");

    
        scanf("%d",&a);
            if(a!=1&&a!=2&&a!=3&&a!=4)
            {
            printf("输入错误,请重新输入!");
            scanf("%d",&a);
            }
        
            if(a==1)
            {
            printf("请输入本金:");
            scanf("%lf",&money);
            while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
            printf("请输入得到金额:");
            scanf("%lf",&sum);
                while(sum<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&sum);
            }
            printf("请输入利率:");
            scanf("%lf",&i);
            while(i<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&i);
            }
            time= log(sum/money) / log(1+i);
            printf("%lf年时间完成
    ",time);
            }
            if(a==2)
            {
            printf("请输入本金:");
            scanf("%lf",&money);
            while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
            printf("请输入得到金额:");
            scanf("%lf",&sum);
            while(sum<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&sum);
            }
            printf("请输入时间:");
            scanf("%lf",&time);
            while(time<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&time);
            }
            b=pow(sum/money,1/time);
            i=(b-1)*100;
            printf("所需利率至少:%lf% 
    ",i);
            }
            if(a==3)
            {  
             b=1;
             printf("请输入每年投入金额:");
             scanf("%lf",&money);
             while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
             c=money;
             printf("请输入时间:");
             scanf("%lf",&time);
             while(time<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&time);
            }
             printf("请输入利率:");
             scanf("%lf",&i);
             while(i<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&i);
            }
             while(b<=time)
            {
                    sum=money*(1+i);
                    money=sum+c;
                    b++;
            }
            printf("所得到回报:%lf 
    ",sum);  
            }
    
            if(a==4)
               {
                  printf("1.求存年数
    ");
                  printf("2.求利率
    ");
                  printf("3.求时本利和
    ");
                  scanf("%d",&f);
                  if(f!=1&&f!=2&&f!=3) 
                    {
                      printf("输入错误,请重新输入!
    ");
                      scanf("%d",&f);
                    }
                  if(f==1)
                 {
                       printf("请输入本金:");
                       scanf("%lf",&money);
                       while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
                       printf("请输入利率:");
                       scanf("%lf",&i);
                       while(i<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&i);
            }
                       printf("请输入本利和:");
                       scanf("%lf",&sum);
                       while(sum<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&sum);
            }
                       time=(sum-money)/money*i;
                       printf("存年数为%lf
    ",time);
                  }
                    if(f==2)
                 {
                       printf("请输入本金:");
                       scanf("%lf",&money);
                       while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
                       printf("请输入本利和:");
                       scanf("%lf",&sum);
                       while(sum<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&sum);
            }
                       printf("请输入存年数:");
                       scanf("%lf",&time);
                       while(time<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&time);
            }
                       i=(sum-money)/money*time;
                       printf("利率为%lf
    ",i);
                  }
                    if(f==3)
                  {
                     printf("请输入本金:");
                     scanf("%lf",&money);
                     while(money<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&money);
            }
                     printf("请输入存年数:");
                     scanf("%lf",&time);
                     while(time<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&time);
            }
                     printf("请输入利率:");
                     scanf("%lf",&i);
                     while(i<=0)
            {
                printf("输入错误,请重新输入!
    ");
                scanf("%lf",&i);
            }
                     sum=money*time*i+money;    
                     printf("
    ");
                     printf("本利和为%lf
    ",sum);
                  }
              
                 }
    }

    在测试当中发现输入本金,时间和利率等如果输入非数字时会输出死循环“输入错误,请重新输入“。

    在测试单利计算结果正确,答案无错误。测试复利计算时发现错误,答案有很大误差,应该是计算复利的公式错了。

  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/l549023320/p/5334139.html
Copyright © 2011-2022 走看看