复利计算测试(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 ...
随机推荐
- 马尔可夫毯(Markov blanket)
马尔可夫毯(Markov blanket) 马尔科夫毯,是满足如下特性的一个最小特征子集:一个特征在其马尔科夫毯条件下,与特征域中所有其他特征条件独立.设特征T的马尔科夫毯为MB(T),则上述可表示为 ...
- Direct3D中 SetTextureStageState 函数
先说明几个概念: 1, Multipass(多通道) 将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计 ...
- 无聊中,写个常见的图片保护分类-iOS
当美工给出例如下面这种图的时候,但是需要拉伸的时候,就不得不做拉伸保护了. //调用代码 UIImage * img = [UIImage protectedImageWithLocalImageNa ...
- SpringMVC 异常信息ASM ClassReader failed to parse class file的问题解决
1. 环境信息: Spring 3.2.0, JDK 1.8.0 2. 运行简单的程序,出现以下错误信息: 2. 运行简单的程序,出现以下错误信息: Caused by: org.spring ...
- 用docsify快速构建文档,并用GitHub Pages展示
什么是docsify 无需构建,写完 markdown 直接发布成文档,写说明文档的极佳选择. 快速上手 安装 npm i docsify-cli -g docsify init docs 创建项目 ...
- myBatis逆向工程的使用
使用myBatis Generator可以快速生成实体类.dao类和mapper文件.有两种方式,现在说的是比较灵活的方式.本文栗子使用的是IDEA,目录结构为maven项目的结构. 1.在pom.x ...
- [学习笔记]SiftGPU入门
当有读者看到我这篇SiftGPU入门的学习笔记时,相信你已经读过了高博那篇<SLAM拾萃:SiftGPU>,那篇文章写于16年,已经过去两年的时间.在我尝试配置SiftGPU的环境时,遇到 ...
- Unity 实现一个简单的 TPS 相机
效果如下: 代码如下: public class TPSCamera : MonoBehaviour { /// <summary> /// 目标对象 /// </summary&g ...
- c++ undefinede reference to 构造函数/析构函数
g++编译器问题 把头文件"a.h"和头文件实现文件"a.cpp"都include就解决了.
- 记录一次redis故障
ResponseError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persi ...