复利计算测试(C语言)
对我们和复利计算程序,写单元测试。
有哪些场景?
期待的返回值
写测试程序。
运行测试。
| 测试模块 | 测试输入 | 预期结果 | 运行结果 | 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语言)的更多相关文章
- 复利计算4.0单元测试(c语言)
——————————复利计算程序单元测试报告—————————— ————————————4.0 单元测试—————————————— ————————————————要求—————————————— ...
- 简单复利计算c语言实现
#include<stdio.h>#include<math.h>float i; //利率 float p; //期初金额 float F; //未来值 int n; //期 ...
- 复利计算--结对项目<04-11-2016> 1.0.0 lastest 阶段性完工~
结对项目:Web复利计算 搭档博客地址:25江志彬 http://www.cnblogs.com/qazwsxedcrfv/ 个人摘要: (2016-04-09-12:00)补充:之前传送门没做好, ...
- 复利计算--4.0 单元测试之JAVA版-软件工程
复利计算--4.0 单元测试-软件工程 前言:由于本人之前做的是C语言版的复利计算,所以为了更好地学习单元测试,于是将C语言版的复利计算修改为JAVA版的. 一.主要的功能需求细分: 1.本金为100 ...
- 复利计算5.0(改成Java版本)与 单元测试
//由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...
- <更新日期03-31-2016> 复利计算5.0 <已改进>
作业要求: 1.客户说:帮我开发一个复利计算软件. 完成复利公式计算程序,并成功PUSH到github上. 客户提出: 2.如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养 ...
- 测试c语言函数调用性能因素之测试三
函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1, 调用函数帧指针 ...
- 简单复利计算java板
一.要求: 1.客户说:帮我开发一个复利计算软件. 2如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? 4.利 ...
- 复利计算软件v3
#include <windows.h> #include<stdio.h> #include<math.h> void count(){ int a,b; dou ...
随机推荐
- JavaWeb基础—JS学习小结
JavaScript是一种运行在浏览器中的解释型的编程语言 推荐:菜鸟教程一.简介js:javascript是基于对象[哪些基本对象呢]和和事件驱动[哪些主要事件呢]的语言,应用在客户端(注意与面向对 ...
- Flash Player调试器版本的解决办法Flash Builder 找不到所需的Adobe
Flash Player调试器版本的解决办法Flash Builder 找不到所需的Adobe Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adob ...
- Oracle单节点_Grid_Infrastructure_DB_安装过程图解(二/三)
接上文 Oracle单节点_Grid_Infrastructure_DB_安装过程图解(一/三) 接下来,进行Grid Infrastructure 部分的安装:
- 【转载】D3DXMatrixLookAtLH视图变换函数详解
原文:D3DXMatrixLookAtLH视图变换函数详解 /*D3DXMatrixLookAtLH函数返回的是世界->视图变换矩阵. 视图坐标系和局部坐标系是一样的,都是世界坐标系转换为指定的 ...
- CF13E Holes LCT
CF13E Holes LG传送门 双倍经验题,几乎同[HNOI2010]弹飞绵羊,LCT练手题,LG没有LCT题解于是发一波. 从当前点向目标点连边,构成一棵树,带修改就用LCT动态维护答案,由于不 ...
- jmeter汉化
测试需要许多工具辅助工作,我们在使用这些工具之前需要对工具有一定的了解,第一步就是需要安装特定的软件. 因为工具基本上都是英文版的,所以菜鸟使用就面临汉化的问题,下面介绍几种汉化的办法: 一.万事不决 ...
- 编码 解码 python
之前一直对python文件中编码解码糊里糊涂,今天看到一篇文章,觉得把我讲的有点明白了.写个心得吧. 1.编码解码是怎么一回事? Python 里面的编码和解码也就是 unicode 和 str 这两 ...
- [egret]白鹭引擎打包安卓包体积太大减小
萌新第一次用egret打安卓包,发现裸包22M+,吃惊到吃手手. 上网搜查无果. 可能原因是egret优化过一波打包,变得更便利了,网上对新版本打包比较少讨论. 解决方法: egret-android ...
- oracle数据库之子查询
子查询也叫内部查询,在主查询之前执行一次并得到结果,此结果一般情况下,是用来当做是主查询的条件. -- 在 emp 表中,找出工资比 ALLEN 的高? -- 先查出 ALLEN 的工资是多少? ...
- 如何布局您的PC站和移动站,并表达两者之间内容的对应关系
如何布局您的PC站和移动站,并表达两者之间内容的对应关系 目前较流量的PC站与移动站配置方式有三种,百度站在搜索引擎角度将这三种分别称为跳转适配.代码适配和自适应,以下为这三种配置方式的名词解释及 ...