复利计算测试(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 ...
随机推荐
- 2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java ...
- Ruby 装pg的坑
sudo apt-get install libpq-devsudo gem install pg -v '0.21.0'
- Circuit Breaker模式
Circuit Breaker模式会处理一些需要一定时间来重连远程服务和远端资源的错误.该模式可以提高一个应用的稳定性和弹性. 问题 在类似于云的分布式环境中,当一个应用需要执行一些访问远程资源或者是 ...
- JavaWeb总结(二)
Web服务器的缺陷 Web服务器是被设计用来向客户端提供HTTP服务的,它只能向客户端提供静态网页内容.静态页面是原封不动的待在Web服务器目录中,服务器找到静态网页,并把它原样传回到客户端.每个客户 ...
- Currency Exchange POJ - 1860 (spfa)
题目链接:Currency Exchange 题意: 钱的种类为N,M条命令,拥有种类为S这类钱的数目为V,命令为将a换成b,剩下的四个数为a对b的汇率和a换成b的税,b对a的汇率和b换成a的税,公式 ...
- javaweb 解决jsp中${}传递中文值到后端以及get请求中文乱码的问题
首先,不要用get传中文,我试了一些方法发现不行,所以果断决定用post传参, 这里用 encodeURI 进行一次编码传入后端 注意:${tplname} 要加 ' $.ajax({ url: '/ ...
- html5新特性data_*自定义属性使用
HTML5规范里增加了一个自定义data属性. 这个自定义data属性的用法非常的简单, 就是你可以往HTML标签上添加任意以 "data-"开头的属性, 这些属性页面上是不显示的 ...
- Jenkins部署资料
http://www.cnblogs.com/gaohongchen01/p/5058928.html https://www.javacodegeeks.com/2015/04/jenkins-ho ...
- pygrib学习
pygrib-2.0.3/docs/index.html 导入pygrib模块 >>> import pygrib 打开grib文件,获取grib消息迭代器 >>> ...
- 开始试用Dynamics 365
1. 访问地址: https://trials.dynamics.com/Dynamics365/Signup/ ,默认选择第一个应用,也可以选择其他的,不影响,之后还可以添加更多的应用程序. 2. ...