c#入门之实现简易存款利息计算器示例
时间:2023-12-15 06:54:36
本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈。之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙。SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识。
原理介绍
为啥叫简易呢,因为现在只能计算整存整取(只有1、2、3、5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确哈(其实是不想越写越复杂,怕写不出来,哈哈,到时候承诺了的,半天拿不出来,就有点丢人了)。
使用do循环作为程序的主体,用户不输入退出指令(0),程序会一直提示输入操作指令;
使用switch判断用户输入的指令(无效指令会继续提示输入),执行对应的操作;
由于变量是在主体do循环外声明的,所以只要不退出循环,变量的值会一直保留,符合用户的操作习惯;
当然,这还是v1.0版本哈,随着后面的不断深入学习,我会(不)尝(保)试(证)完善这个程序,尽量把所学的知识点都能够融入进去,使程序的每个版本更新时,都会有不错的变化。
详细代码
Console.WriteLine("操作指令说明:输入本金(1),输入存款年度(2),计算(3),查看利率(4),退出(0)");
double benJ=0,liV=0,shouY=0;
int cunY = 0,cmdOrder = 0;
do
{
cmdOrder=Convert.ToInt16(Console.ReadLine());
switch (cmdOrder)
{
case 1:
{
Console.WriteLine("请输入您的本金数额:");
do
{
benJ = Convert.ToDouble(Console.ReadLine());
if (benJ < 100)
Console.WriteLine("最低投资额为100,请重新输入:");
} while (benJ < 100);
shouY = benJ;
}
break;
case 2:
{
Console.WriteLine("请输入存入的年限(1、2、3、5):");
do
{
cunY = Convert.ToInt16(Console.ReadLine());
if (cunY < 1)
Console.WriteLine("存入年限最少为1年,请重新输入:");
} while (cunY < 1);
}
switch (cunY)
{
default:
case 1:
liV = 3.00;
break;
case 2:
liV = 3.75;
break;
case 3:
liV = 4.25;
break;
case 5:
liV = 4.75;
break;
}
liV = liV / 100.00;
break;
case 3:
{
for (int i = 1; i <= cunY; i++)
{
shouY += benJ * liV;
//Console.WriteLine("{0},{1}",shouY,liV);
}
Console.WriteLine("按{0}年的利率{1}计算,您的本金{2}将在{0}后增长至:{3}", cunY, liV, benJ, shouY);
Console.WriteLine("注:未启用自动转存。");
}
break;
case 4:
{
Console.WriteLine("利率表,@sfrost");
Console.WriteLine("1年:3.00%、2年:3.75%");
Console.WriteLine("3年:4.25%、5年:4.75%");
Console.WriteLine("\n");
}
break;
default:
if (cmdOrder != 0) Console.WriteLine("请输入有效的命令序号(1 - 9):");
break;
}
if (cmdOrder != 0) Console.WriteLine("请输入操作指令(1 - 9):");
} while (cmdOrder != 0);
Console.WriteLine("\n");
Console.WriteLine("感谢使用^_^,按任意键退出……");
Console.ReadKey();
结语
程序写完后,回头去看书上的switch一节,才发现自己理解错了一个概念,书上说“执行完一个case后,再执行第二个case是非法的”,自己把case理解成switch了,哈哈,怪不得这个程序可以调试通过。
最后,说好的简易哈,很多地方还可以完善(其实BUG更多,哈),随着后面的深入学习,相信可以把这个工具完善得很好。例如:封装每个功能项为函(对)数(象),在使用时,只需传入相关参数即可返(输)回(出)结果。
标签:c#,计算器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解OAuth2 Token 一定要放在请求头中吗
2022-05-01 09:43:15
![](https://img.aspxhome.com/file/2023/3/76543_0s.jpg)
C#设计模式之建造者模式生成器模式示例详解
2021-12-11 05:50:57
![](https://img.aspxhome.com/file/2023/7/83227_0s.jpg)
基于Java实现的Dijkstra算法示例
2021-09-17 02:51:13
浅谈Java中注解Annotation的定义、使用、解析
2021-07-29 04:07:52
Android基础之使用Fragment控制切换多个页面
2023-07-11 00:08:37
C# [ImportDll()] 知识小结
2022-09-15 07:42:18
Android TextView显示Html类解析的网页和图片及自定义标签用法示例
2023-06-12 04:39:41
Android 捕获错误日志的方法
2021-06-16 16:24:44
![](https://img.aspxhome.com/file/2023/1/139211_0s.png)
Java 归并排序算法、堆排序算法实例详解
2023-11-25 09:43:25
![](https://img.aspxhome.com/file/2023/6/59896_0s.jpg)
Flutter Widgets粘合剂CustomScrollView NestedScrollView滚动控件
2023-07-06 01:24:29
![](https://img.aspxhome.com/file/2023/9/120089_0s.webp)
Android自定义View实现遥控器按钮
2021-12-27 09:50:47
![](https://img.aspxhome.com/file/2023/5/125525_0s.gif)
java微信公众号开发第一步 公众号接入和access_token管理
2022-04-21 23:06:41
![](https://img.aspxhome.com/file/2023/6/88046_0s.jpg)
java高并发之线程组详解
2023-02-15 21:30:25
![](https://img.aspxhome.com/file/2023/1/108171_0s.jpg)
springboot项目快速搭建的方法步骤
2021-11-07 04:55:51
![](https://img.aspxhome.com/file/2023/4/73074_0s.png)
Java为什么基本数据类型不需要进行创建对象?
2022-03-16 08:59:03
Android中断线程的处理方法
2023-07-31 11:51:55
快速学习C# 设计模式之职责链模式
2022-03-28 17:47:45
![](https://img.aspxhome.com/file/2023/5/67565_0s.jpg)
Java使用OpenCV3.2实现视频读取与播放
2023-11-23 06:14:02
![](https://img.aspxhome.com/file/2023/5/82425_0s.jpg)
C#里SuperSocket库不能发现命令的原因
2023-05-20 20:19:37
一篇文章带你深入了解Java类加载
2023-06-11 22:12:00
![](https://img.aspxhome.com/file/2023/0/66710_0s.png)