复利计算测试(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 ...
随机推荐
- 当使用了相对路径 <base href="<%= basePath %>" /> 后,全局都只能使用相对路径
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" ...
- VB.NET 仿Edge风格的TabControl控件
原本是想写个Chrome内核的浏览器,但是.net语言下比较好用类库的并不多,尝试过CefSharp.Xilium.CefGlue,都发现很多坑,所以这个项目就烂尾了,现在将还有点用的代码发出来给大家 ...
- 用Micro:bit控制遥控车
很多遥控车是用Arduino来控制,同样也可以用Micro:bit来控制.这篇文章我们就来做个测试. 这次需要用到扩展板,管脚比较多,请参考下图 一.材料: •micro:bit 二片 •micro: ...
- 大数据中HBase的Java接口封装
该文前提为已经搭建好的HBase集群环境,参见 HBase集群搭建与配置 ,本文主要是用Java编写一个Servlet接口,部署在Tomcat服务器上,用于提供http的接口供其他地方调用,接口中集成 ...
- Qt-网易云音乐界面实现-6 迷你个人中心实现
这个界面除了麻烦耗时,没有啥技术含量.暂时我也就把它称为迷你个人中心,因为后面还有一个个人中心了. 先看下完成品 左侧是我的,右侧是原生 个人感觉还可以吧,哈哈哈.给我自己奖励一个鸡腿. 看下头文件 ...
- JMeter的__threadGroupName使用注意事项
JMeter从4.1版本开始引入了一个新函数"${__threadGroupName}",这个函数的作用是返回当前线程组的名字.${__threadGroupName}的用途也较为 ...
- 阿里云服务器ECS上ubuntu安装nginx后默认站点页面打开错误,显示无法访问此网站
问题:在新买的阿里云服务器ECS上安装nginx后打开默认页面失败,如下图所示. 系统环境:Ubuntu 16.04.4 LTS64版本. 步骤回顾: root用户下运行命令 apt-get inst ...
- Halcon中循环的相关算子
条件<condition> ,<condition> 内为计算成an integer or boolean value的表达式. 表达式的值1则条件为真,否则为假. 1.if( ...
- oracle数据库数据字典应用
oracle数据字典 数据字典是由oracle服务器创建和维护的一组只读的系统表.数据字典分为两类:一是基表,二是数据字典视图. 数据字典视图包括用户名.用户权限.对象名.约束和审计等信息,是通过运行 ...
- 如何布局您的PC站和移动站,并表达两者之间内容的对应关系
如何布局您的PC站和移动站,并表达两者之间内容的对应关系 目前较流量的PC站与移动站配置方式有三种,百度站在搜索引擎角度将这三种分别称为跳转适配.代码适配和自适应,以下为这三种配置方式的名词解释及 ...