复利计算测试(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 ...
随机推荐
- Java基础—IO小结(一)概述与节点流
一.File类的使用 由于file类是一个基础类,所以我们从file类开始了解.(SE有完善的中文文档,建议阅读) 构造器: 常用方法:——完整方法请参见API API API!!! File做的是 ...
- Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type!
Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as ...
- c++ 预处理和多重替换
预处理概念 #include #define extern 一. 预处理概念 在源代码编译成机器指令之前,都要进行预处理. 预处理阶段一般会在编译之前处理和修改C源代码.完成预处理后预 ...
- 【转载】完成C++不能做到的事 - Visitor模式
原文: 完成C++不能做到的事 - Visitor模式 拿着刚磨好的热咖啡,我坐在了显示器前.“美好的一天又开始了”,我想. 昨晚做完了一个非常困难的任务并送给美国同事Review,因此今天只需要根据 ...
- P4198 楼房重建
P4198 楼房重建 集中写博客= = 首先把高度变成斜率 然后就比较玄学了,首先用线段树维护一个区间的斜率最大值,和只看这个区间时能看见的楼房个数ans 然后更新时先更新max,再处理神奇的ans ...
- OpenGL(1)-环境搭建
写在前面 工作几年,开始沉心做技术,对自己的知识进行梳理. OpenGL是由khronos组织制定并维护的规范,并不是API. OpenGL在3.2之前采用的是立即渲染模式(固定渲染管线),3.2之后 ...
- Unity3D Shader 学习笔记(二):ShaderLab的结构和基本属性
(一) ShaderLab: 什么是ShaderLab: Unity3D支持的Shader种类包括: 1.Surface Shader:表面着色器 2.Vertex & Fragment Sh ...
- 通过扩展方法简化UnityAPI调用
通过扩展方法简化UnityAPI调用 扩展方法unity apiapi简化 通过扩展方法简化UnityAPI调用 能省一秒是一秒,时间就是金钱,没人愿意把时间花在冗长的coding上
- 会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
我们都知道,Python 的设计哲学是「优雅」.「明确」.「简单」.这也许很多人选择 Python 的原因.但是我收到有些伙伴反馈,他写的 Python 并不优雅,甚至很臃肿,那可能是你的姿势不对 ...
- JavaScript学习笔记(七)—— 再说函数
第八章 函数 1 函数声明和函数表达式 差别一:函数声明:函数在执行代码前被创建:函数表达式是在运行阶段执行代码时创建: 差别二:函数声明创建一个与函数同名的变量,并让她指向函数:使用函数表达式,不给 ...