zoukankan      html  css  js  c++  java
  • 03-c#入门(简易存款利息计算器v1.0)

    本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈。之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙。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("
    ");
                            }
                            break;
                        default:
                            if (cmdOrder != 0) Console.WriteLine("请输入有效的命令序号(1 - 9):");
                            break;
                    }
                    if (cmdOrder != 0) Console.WriteLine("请输入操作指令(1 - 9):");
                } while (cmdOrder != 0);
                Console.WriteLine("
    ");
                Console.WriteLine("感谢使用^_^,按任意键退出……");
                Console.ReadKey();
    
    • 结语

    程序写完后,回头去看书上的switch一节,才发现自己理解错了一个概念,书上说“执行完一个case后,再执行第二个case是非法的”,自己把case理解成switch了,哈哈,怪不得这个程序可以调试通过。

    最后,说好的简易哈,很多地方还可以完善(其实BUG更多,哈),随着后面的深入学习,相信可以把这个工具完善得很好。例如:封装每个功能项为函(对)数(象),在使用时,只需传入相关参数即可返(输)回(出)结果。

    大家多多指教哈~~~~

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/sfrost/p/3657290.html
Copyright © 2011-2022 走看看