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

有哪些场景?

期待的返回值

写测试程序。

运行测试。

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

运行结果:

修改后的代码:

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*请重新输入存储时间(年):");

getchar();

} ;

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

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

}

运行结果:

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

原代码:

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

{

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

getchar();

}

运行结果:

修改后的代码:

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

{

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

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

}

运行结果:

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

复利计算测试(C语言)的更多相关文章

  1. 复利计算4.0单元测试(c语言)

    ——————————复利计算程序单元测试报告—————————— ————————————4.0 单元测试—————————————— ————————————————要求—————————————— ...

  2. 简单复利计算c语言实现

    #include<stdio.h>#include<math.h>float i; //利率 float p; //期初金额 float F; //未来值 int n; //期 ...

  3. 复利计算--结对项目<04-11-2016> 1.0.0 lastest 阶段性完工~

    结对项目:Web复利计算 搭档博客地址:25江志彬  http://www.cnblogs.com/qazwsxedcrfv/ 个人摘要: (2016-04-09-12:00)补充:之前传送门没做好, ...

  4. 复利计算--4.0 单元测试之JAVA版-软件工程

    复利计算--4.0 单元测试-软件工程 前言:由于本人之前做的是C语言版的复利计算,所以为了更好地学习单元测试,于是将C语言版的复利计算修改为JAVA版的. 一.主要的功能需求细分: 1.本金为100 ...

  5. 复利计算5.0(改成Java版本)与 单元测试

    //由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...

  6. <更新日期03-31-2016> 复利计算5.0 <已改进>

    作业要求: 1.客户说:帮我开发一个复利计算软件. 完成复利公式计算程序,并成功PUSH到github上. 客户提出: 2.如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养 ...

  7. 测试c语言函数调用性能因素之测试三

    函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1,               调用函数帧指针 ...

  8. 简单复利计算java板

    一.要求: 1.客户说:帮我开发一个复利计算软件. 2如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? 4.利 ...

  9. 复利计算软件v3

    #include <windows.h> #include<stdio.h> #include<math.h> void count(){ int a,b; dou ...

随机推荐

  1. fixed fluid layout

    <div id="fixed">Sidebar</div> <div id="fluid">Content</div& ...

  2. flex拖动图片

    <?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="htt ...

  3. Eclipse获取资源路径

    一.问题: 这几天做一个单机版的数据抓取项目,之前都加载了spring或者是maven 使用[this.getClass().getClassLoader().getResource("ma ...

  4. SQL Server 小数类型(float 和 decimal)

    在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值.其他小数类型,都可以使用float和decimal来替代,例如,双精度(double ...

  5. js.ajax优缺点,工作流程

    1.ajax的优点 Ajax的给我们带来的好处大家基本上都深有体会,在这里我只简单的讲几点: 1.最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好.  2.使用异步方式与服务器通信,不 ...

  6. Field 'email' doesn't have a default value

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值造成的. 或着 缺少字段.

  7. Closure Compiler应用程序使用入门[译]

    Hello World示例 Closure Compiler应用程序是一个Java 命令行工具,用来对JavaScript代码进行压缩.优化和排错.按照下面的步骤,用一个简单的JavaScript程序 ...

  8. express的web server设置流程

    对于express的设置,一直是拿来就用,只知其然,今天查了一下文档,记录详细过程如下. 1.实现基本常用功能需要的模块path 用来处理路径字符串拼接,设置模板路径和静态资源路径时使用cookie- ...

  9. java四种访问权限修饰符

    java中四个访问权限修饰符: public(公开的).protected(受保护的).default(默认的).private(私有的). 它们决定了紧跟其后被定义的东西的使用范围. 适用范围< ...

  10. docker私服搭建nexus3

    docker私服搭建有官方的registry镜像,也有改版后的NexusOss3.x,因为maven的原因搭建了nexus,所以一并将docker私服也搭建到nexus上. nexus的安装过程就单独 ...