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

有哪些场景?

期待的返回值

写测试程序。

运行测试。

测试模块 测试输入 预期结果 运行结果 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. msserver的update or insert语句

    方案1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS (SELECT 1 FROM dbo.ta ...

  2. 20155236 2016-2017-2 《Java程序设计》第九周学习总结

    20155236 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标 ...

  3. PostgreSQL的xlog实验一

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页 一,从initdb开始,initdb执行结束 ...

  4. P3592 [POI2015]MYJ

    P3592 [POI2015]MYJ 一道比较烦的区间dp.. 昨天上课讲到了这题,然后就在lg翻到了 然后调了很久很久..... 设\(f[l][r][k]\)为区间\([l,r]\)中,最小值\( ...

  5. 用 Python 给程序加个进度条,让你的看起来更炫酷?

    对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步 ...

  6. flag -- 诡异的memcache标记

    引子     打从去年一路北漂,进入无人货架行业,业务需求漫天飘,最近总算把工作都规划齐整.回望过去一年多的时间里,诸多东西值得整理,memcache就是其中一个.  看到java的工资高些,队伍中好 ...

  7. Using the Console[译]

    由于最近的项目需要大量用到浏览器端的js编码和调试,所以仔细阅读了一下Chrome对于开发者工具中js部分的说明.虽然原来也用这个工具,但读后仍然觉得受益匪浅.于是抽空翻译一下,与大家分享. 本人英文 ...

  8. OpenCV颜色转换和皮肤检测

    本笔记重点记录OpenCV中的颜色转换和利用色彩空间的特性进行皮肤检测 颜色转换 实现原理 之所以要引入色调/饱和度/亮度的色彩空间概念,是因为人们喜欢凭直觉分辨各种颜色,而它与这种方式吻合.实际上, ...

  9. [C++]值传递和引用传递

    概念 在定义函数时函数括号中的变量名成为形式参数,简称形参或虚拟参数: 在主调函数中调用一个函数时,该函数括号中的参数名称为实际参数,简称实参,实参可以是常量.变量或表达式. 注意: C语言中实参和形 ...

  10. 004 --Mysql中的锁的问题

    死锁 死锁是指两个或多个事务在同一个资源上相互占用, 并请求锁定对方占用的资源, 从而导致恶性循环的现象. 当多个事务试图以不同顺序锁定资源时, 就可能产生死锁.死锁发生以后, 只有部分或者完全回滚其 ...