C#入门实现简易存款利息计算器

纸上星河
纸上星河
发布时间:2026-10-14 | 5人浏览过
原创

通过开发一个基于命令行的简易存款利息计算器,展示C#语言中循环结构、分支判断以及变量作用域的实际应用。程序支持录入本金与存期,根据预设利率计算单利收益,旨在帮助C#初学者掌握控制台应用程序的基础逻辑。

功能概述与设计思路

本示例旨在计算不同年限(1年、2年、3年、5年)下整存整取的存款本息和。程序核心采用命令行交互模式,具体设计如下:

  • 循环主体:使用 do...while 循环包裹主逻辑,允许用户在多次计算前不退出程序,仅当输入退出指令时流程结束。
  • 状态保持:本金(benJ)、年利率(liV)等变量定义在循环体外,确保在一次会话中用户只需输入一次数值,符合操作习惯。
  • 逻辑分支:利用 switch 语句根据不同的操作指令分发任务,如输入金额、选择年限或执行计算。
  • 数据校验:在接收用户输入时加入基础校验(如最低投资额),提升程序的鲁棒性。

完整源代码

以下为实现了上述功能的 C# 控制台代码。直接复制到 .NET Console 项目中即可运行。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 初始化变量,作用域在Main内,保持跨循环状态
        double benJ = 0;      // 本金
        double liV = 0;       // 年利率小数
        double shouY = 0;     // 收益/总额
        int cunY = 0;         // 存期
        int cmdOrder = 0;     // 操作指令

        Console.WriteLine("操作指令说明:输入本金(1),输入存款年度(2),计算(3),查看利率(4),退出(0)");

        do
        {
            try
            {
                // 读取指令并进行类型转换
                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:P1}计算,您的本金{2:C}将在{0}后增长至:{3:C}", cunY, liV, benJ, shouY);
                        Console.WriteLine("注:未启用自动转存。");
                        break;

                    case 4:
                        Console.WriteLine("利率表参考:");
                        Console.WriteLine("1年:3.00%、2年:3.75%");
                        Console.WriteLine("3年:4.25%、5年:4.75%");
                        Console.WriteLine();
                        break;

                    case 0:
                        Console.WriteLine("\n感谢使用^_^,按任意键退出……");
                        break;

                    default:
                        if (cmdOrder != 0) Console.WriteLine("请输入有效的命令序号(1 - 9):");
                        break;
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("输入格式无效,请重新输入数字。");
            }

            if (cmdOrder != 0) Console.WriteLine("请输入操作指令(1 - 9):");

        } while (cmdOrder != 0);

        Console.ReadKey();
    }
}

关键知识点解析

第1步:理解变量与作用域

目的:避免重复输入本金和年限。

操作:将 double benJ 等变量声明在 do 循环之外。这样每次进入循环体时,这些变量保留上一次的计算结果,除非用户再次输入新值。

第2步:应用 Switch 语句进行路由

入口:获取用户输入的整数指令 cmdOrder。

动作:switch (cmdOrder) 精确匹配数字,执行相应的业务块。注意 case 执行完毕后必须使用 break 跳出,否则会发生“穿透”现象继续执行下一个 case。

第3步:构建输入验证循环

参数:例如要求本金 >= 100 且年限 >= 1。

动作:内部嵌套 do...while 或 while 循环,直到满足条件才跳出并赋值给外部变量,防止非法数据污染计算结果。

总结

这个简易计算器展示了结构化编程的基本形态:输入 -> 校验 -> 处理 -> 输出。虽然在现实中银行利息计算可能涉及更复杂的复利公式或税务扣减,但作为C#初学者的练手项目,它很好地融合了控制流与数据结构。以上就是使用C#实现简易存款利息计算器的详细内容,更多关于C#基础语法的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表