测试要求:

  对我们和复利计算程序,写单元测试。 

  有哪些场景?

  期待的返回值

  写测试程序

  运行测试

 

场景测试:

  1、测试输入值是否为空

  2、测试输入值是否为负数

  3、输出结果是否正确?

期待值:

  1、提示输入错误

  2、提示输入错误,重新输入

  3、提示输出正确

 

功能模块  数据类型  具体数据  运行结果
 复利计算  (本金,利率,年限)  (100,0.03,5)  115.9274
 测试输入值为空  (本金,利率,年限)  (0,0,0)  错误
测试输入值为负数 (本金,利率,年限) (-100,-0.03,-5) 错误
测试输出结果 (本金,利率,年限) (100,0.03,5) 正确
........ ..... ..... ......

 

 运行结果:

 

 

 

  1 #include<stdio.h>
  2 #include<math.h>
  3 void Jisuan();
  4 double p,i,f;
  5 int n;
  6 
  7 void Danli()
  8 {
  9     while(1)
 10     {
 11         printf("请输入本金:");
 12         scanf("%lf",&p);
 13         if(p<=0)
 14             printf("本金输入错误,请重新输入!\n");
 15         else
 16             break;
 17     }
 18     while(1)
 19     {
 20         printf("请输入年利率(百分比):");
 21         scanf("%lf",&i);
 22         if(i<=0 || i>=1)
 23             printf("年利率输入错误,请重新输入!\n");
 24         else
 25             break;
 26     }
 27     while(1)
 28     {
 29         printf("请输入存储年限:");
 30         scanf("%d",&n);
 31         if(n<=0)
 32             printf("存储年限输入错误,请重新输入!\n");
 33         else
 34             break;
 35     }
 36     f = p+p*i*n;
 37     printf("单利终值为:%0.2lf\n",f);
 38 }
 39 
 40 double Fuli()
 41 {
 42     
 43     while(1)
 44     {
 45         printf("请输入本金:");
 46         scanf("%lf",&p);
 47         if(p<=0)
 48             printf("本金输入错误,请重新输入!\n");
 49         else
 50             break;
 51     }
 52     while(1)
 53     {
 54         printf("请输入年利率(百分比):");
 55         scanf("%lf",&i);
 56         if(i<=0 || i>=1)
 57             printf("年利率输入错误,请重新输入!\n");
 58         else
 59             break;
 60     }
 61     while(1)
 62     {
 63         printf("请输入存储年限:");
 64         scanf("%d",&n);
 65         if(n<=0)
 66             printf("存储年限输入错误,请重新输入!\n");
 67         else
 68             break;
 69     }
 70     f = p*(pow(1+i,n));
 71     printf("复利终值为:%lf\n",f);
 72     return(f); 
 73 }
 74 
 75 void Need()
 76 {
 77     while(1)
 78     {
 79         printf("请输入目标金额:");
 80         scanf("%lf",&f);
 81         if(f<=0)
 82             printf("目标金额输入错误,请重新输入!\n");
 83         else
 84             break;
 85     }
 86     while(1)
 87     {
 88         printf("请输入年利率(百分比):");
 89         scanf("%lf",&i);
 90         if(i<=0 || i>=1)
 91             printf("年利率输入错误,请重新输入!\n");
 92         else
 93             break;
 94     }
 95     while(1)
 96     {
 97         printf("请输入目标年限:");
 98         scanf("%d",&n);
 99         if(n<=0)
100             printf("目标年限输入错误,请重新输入!\n");
101         else
102             break;
103     }
104     p = f/pow(1+i,n);
105     printf("需要投入的本金为:%0.2lf\n",p);
106 }
107 
108 void Year()
109 {
110     while(1)
111     {
112         printf("请输入本利和:");
113         scanf("%lf",&f);
114         if(f<=0)
115             printf("本利和输入错误,请重新输入!\n");
116         else
117             break;
118     }
119     while(1)
120     {
121         printf("请输入年回报率(百分比):");
122         scanf("%lf",&i);
123         if(i<=0 || i>=1)
124             printf("年回报率输入错误,请重新输入!\n");
125         else
126             break;
127     }
128     while(1)
129     {
130         printf("请输入本金:");
131         scanf("%lf",&p);
132         if(p<=0)
133             printf("本金输入错误,请重新输入!\n");
134         else
135             break;
136     }
137     for(n=1;;n++) //穷举法求满足的计息期数
138     {
139         if((p*(pow((1+i),n)))>=f)
140         {
141             printf("最低年限为:%d\n\n",n);
142             break;
143         }
144     }
145 }
146 
147 void YearRate()
148 {
149     while(1)
150     {
151         printf("请输入本利和:");
152         scanf("%lf",&f);
153         if(f<=0)
154             printf("本利和输入错误,请重新输入!\n");
155         else
156             break;
157     }
158     while(1)
159     {
160         printf("请输入本金:");
161         scanf("%lf",&p);
162         if(p<=0)
163             printf("本金输入错误,请重新输入!\n");
164         else
165             break;
166     }
167     while(1)
168     {
169         printf("请输入目标年限:");
170         scanf("%d",&n);
171         if(n<=0)
172             printf("目标年限输入错误,请重新输入!\n");
173         else
174             break;
175     }
176     i = pow((f/p),1.0/n)-1;
177     printf("年回报率为:%0.2lf\n",i);
178 }
179 
180 void Getgains()
181 {
182     while(1)
183     {
184         printf("请输入每年定投金额:");
185         scanf("%lf",&p);
186         if(p<=0)
187             printf("每年定投金额输入错误,请重新输入!\n");
188         else
189             break;
190     }
191     while(1)
192     {
193         printf("请输入年收益(百分比):");
194         scanf("%lf",&i);
195         if(i<=0 || i>=1)
196             printf("年收益输入错误,请重新输入!\n");
197         else
198             break;
199     }
200     while(1)
201     {
202         printf("请输入定投年数:");
203         scanf("%d",&n);
204         if(n<=0)
205             printf("定投年数输入错误,请重新输入!\n");
206         else
207             break;
208     }
209     f = p*(1+i)*(pow((1+i),n)-1)/i;
210     printf("基金定投收益为:%0.2lf\n",f);
211 }
212 
213 void Text1(double f)  //测试复利计算
214 {
215     double a = 115;
216     double n =(int)f;
217     if(n==a)
218         printf("正确\n");
219     else
220         printf("错误\n");
221 }
222 
223 main()
224 {
225     
226     int num=0;
227     double f;
228     while(1){
229         printf("\t\t\t|************复利计算器************|\n");
230         printf("\t\t\t|------------1.单利----------------|\n");
231         printf("\t\t\t|------------2.复利----------------|\n");
232         printf("\t\t\t|------------3.计算本金------------|\n");
233         printf("\t\t\t|------------4.年限估算------------|\n");
234         printf("\t\t\t|------------5.估算年回报率--------|\n");
235         printf("\t\t\t|------------6.定额定投收益计算----|\n");
236         printf("\t\t\t|----------------------------------|\n");
237         printf("请输入选择:");
238         scanf("%d",&num);
239         switch(num)
240         {
241         case 1:
242             Danli();
243             break;
244         case 2:
245             f=Fuli();
246             Text1(f);
247             break;
248         case 3:
249             Need();
250             break;
251         case 4:
252             Year();
253             break;
254         case 5:
255             YearRate();
256             break;
257         case 6:
258             Getgains();
259             break;
260         default:
261             return 0;
262         }
263     }
264 }

 

posted on 2016-03-30 22:51  55冯铭杰  阅读(177)  评论(1编辑  收藏  举报