本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈。之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙。SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识。

  • 原理介绍

为啥叫简易呢,因为现在只能计算整存整取(只有1、2、3、5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确哈(其实是不想越写越复杂,怕写不出来,哈哈,到时候承诺了的,半天拿不出来,就有点丢人了)。

  1. 使用do循环作为程序的主体,用户不输入退出指令(0),程序会一直提示输入操作指令;
  2. 使用switch判断用户输入的指令(无效指令会继续提示输入),执行对应的操作;
  3. 由于变量是在主体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更多,哈),随着后面的深入学习,相信可以把这个工具完善得很好。例如:封装每个功能项为函(对)数(象),在使用时,只需传入相关参数即可返(输)回(出)结果。

大家多多指教哈~~~~

03-c#入门(简易存款利息计算器v1.0)的更多相关文章

  1. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

  2. 简易Servlet计算器1.0

    编写一个简易的Servlet计算器,暂时仅能实现 + - * / % 五种运算 jsp界面: <%@ page language="java" contentType=&qu ...

  3. 圆柱模板价格计算器V1.0版本

    因很多客户需求,就做了一个初始版本的产品圆柱模板面积和价格的计算器,界面非常简单,做工粗糙,但是功能是可以运行.后期会在界面和功能上进行升级,打算出一个微信小程序版本.这个程序仅供参考. 演示地址:h ...

  4. springboot学习入门简易版九---springboot2.0整合多数据源mybatis mysql8+(22)

    一个项目中配置多个数据源(链接不同库jdbc),无限大,具体多少根据内存大小 项目中多数据源如何划分:分包名(业务)或注解方式.分包名方式类似多个不同的jar,同业务需求放一个包中. 分包方式配置多数 ...

  5. springboot学习入门简易版八---springboot2.0多环境配置、整合mybatis mysql8+(19-20)

    2.11 SpringBoot多环境配置(19)  application.properties中配置 Spring.profiles.active=prd 配置环境: Application-dev ...

  6. springboot学习入门简易版六---springboot2.0整合全局捕获异常及log4j日志(12-13)

    使用Aop实现 1创建异常请求 在原有项目基础上,jspController中创建一个可能发生异常的请求: /** * 全局捕获异常测试 * @param i * @return */ @Reques ...

  7. springboot学习入门简易版五---springboot2.0整合jsp(11)

    springboot对jsp支持不友好,内部tomcat对jsp不支持,需要使用外部tomcat,且必须打包为war包. 1 创建maven项目 注意:必须为war类型,否则找不到页面. 且不要把js ...

  8. springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层

    2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static  /public  /resourc ...

  9. springboot学习入门简易版三---springboot2.0启动方式

    2.4使用@componentscan方式启动 2.4.1 @EnableAutoConfiguration 默认只扫描当前类 @EnableAutoConfiguration 默认只扫描当前类,如果 ...

随机推荐

  1. python27 windows 下三种安装第三方库的办法

    一.使用easy_install C:\Python27\Scripts 下有 easy_install.exe .例如我要安装 beautifulsoup,可以从 cmd 进入该目录,直接运行: e ...

  2. MYSQL数据库导入数据时出现乱码的解决办法

    我的一个网站在负载搞不定的情况下最终选择了数据库和程序分离的方式解决的高负载,但是再导入数据的时候出现了大量乱码,最终通过方法二解决掉导入数据的问题,后面再设计网站布局的时候数据库跟网站程序分离是个很 ...

  3. 如何配置Windows 防火墙,允许SQL Server的远程连接

    一.如何找到SQL Server正在侦听的TCP端口,可以按一下步骤: 1.打开 SQL Server 配置管理器中,从开始->所有程序-> Microsoft SQL Server 20 ...

  4. CSS3实现边框锯齿效果

    通过CSS3的linear-gradient实现的 <div class="bg"></div> .bg{ width:300px; height:50px ...

  5. Scrolliview

    package com.example.scrollview; import android.os.Bundle;import android.app.Activity;import android. ...

  6. php 添加钩子实例

    <?php/*定义钩子函数*/function add($hook,$actionFunc){    global $emHooks;    if(isset($emHooks[$hook])) ...

  7. multithreading - Reader/Writer Locks in C++

    You Only Need To Note This: only 1 single thread can acquire an upgrade_lock at one time. others are ...

  8. iOS面试题汇总

    摘要:1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通 ...

  9. FreeBSD Opera Flash问题

    环境:FreeBSD 10,Opera,kldload linux 有些地方还是需要 flash 阿,但按照 Handbook 里面安装了 linux-f10-flashplugin11 和 oper ...

  10. 2016_09_21 Russia is seriously running out of cash_CNN

    After almost two years in recession,the country's rainy day fund has shrunk to just $32.2 billlion t ...