8-BT7Tz6YA20nvp0M.png

高手可以从代码推导出语言的一般语法规则,我们尝试从这个Chatgpt提供的ATM实现,学习C++一些基础概念

使用C++ 实现ATM模拟程序

ChatGPT快速给出了一个很简单的模拟程序,可以显示余额,存款,取款基本操作,当然没有很华丽的程序界面,纯粹是命令行的操作
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    class ATM {
    private:
        double balance;
    
    public:
        ATM(double initialBalance) : balance(initialBalance) {}
    
        double getBalance() const {
            return balance;
        }
    
        void deposit(double amount) {
            if (amount > 0) {
                balance += amount;
                cout << "存款成功。当前余额为 $" << fixed << setprecision(2) << balance << endl;
            } else {
                cout << "无效的存款金额。" << endl;
            }
        }
    
        void withdraw(double amount) {
            if (amount > 0 && amount <= balance) {
                balance -= amount;
                cout << "取款成功。当前余额为 $" << fixed << setprecision(2) << balance << endl;
            } else {
                cout << "无效的取款金额或余额不足。" << endl;
            }
        }
    };
    
    int main() {
        double initialBalance;
        cout << "欢迎使用ATM模拟程序!" << endl;
        cout << "请输入您的初始余额: $";
        cin >> initialBalance;
    
        ATM atm(initialBalance);
    
        int choice;
        double amount;
    
        while (true) {
            cout << "请选择操作:" << endl;
            cout << "1. 查询余额" << endl;
            cout << "2. 存款" << endl;
            cout << "3. 取款" << endl;
            cout << "4. 退出" << endl;
            cin >> choice;
    
            switch (choice) {
                case 1:
                    cout << "当前余额为 $" << fixed << setprecision(2) << atm.getBalance() << endl;
                    break;
                case 2:
                    cout << "请输入存款金额: $";
                    cin >> amount;
                    atm.deposit(amount);
                    break;
                case 3:
                    cout << "请输入取款金额: $";
                    cin >> amount;
                    atm.withdraw(amount);
                    break;
                case 4:
                    cout << "感谢使用ATM模拟程序,再见!" << endl;
                    return 0;
                default:
                    cout << "无效的选项,请重新选择。" << endl;
                    break;
            }
        }
    
        return 0;
    }

这个简单的ATM模拟程序允许用户查询余额、存款、取款以及退出。用户可以根据菜单中的选项进行操作,并得到相应的反馈。请注意,这只是一个基本的示例程序,实际的ATM系统会更复杂,包括更多的功能和安全性考虑。希望这个示例有助于你理解如何编写一个简单的ATM模拟程序。

代码解释

这段代码是一个简单的C++程序,它模拟了一个基本的ATM(自动取款机)程序。ATM程序允许用户查询余额、存款、取款和退出。下面是对这段代码的解释:

  • 引入头文件和命名空间:

      #include <iostream>
      #include <iomanip>
      
      using namespace std;

    这里引入了两个C++标准库的头文件, 用于输入和输出, 用于格式化输出。using namespace std; 语句是为了简化代码,允许在代码中直接使用标准命名空间 std 中的函数和对象,而无需前缀 std::。

  • 定义ATM

      class ATM {
      private:
          double balance;
      
      public:
          ATM(double initialBalance) : balance(initialBalance) {}
      
          double getBalance() const {
              return balance;
          }
      
          void deposit(double amount) {
              if (amount > 0) {
                  balance += amount;
                  cout << "存款成功。当前余额为 $" << fixed << setprecision(2) << balance << endl;
              } else {
                  cout << "无效的存款金额。" << endl;
              }
          }
      
          void withdraw(double amount) {
              if (amount > 0 && amount <= balance) {
                  balance -= amount;
                  cout << "取款成功。当前余额为 $" << fixed << setprecision(2) << balance << endl;
              } else {
                  cout << "无效的取款金额或余额不足。" << endl;
              }
          }
      };

这里定义了一个 ATM 类,该类包含了账户余额(balance)和三个公有成员函数:ATM 构造函数,getBalance 函数用于查询余额,deposit 函数用于存款,withdraw 函数用于取款。构造函数初始化账户余额。

  • main函数
    int main() {
        double initialBalance;
        cout << "欢迎使用ATM模拟程序!" << endl;
        cout << "请输入您的初始余额: $";
        cin >> initialBalance;
        ATM atm(initialBalance);
    
        int choice;
        double amount;
    
        while (true) {
            cout << "请选择操作:" << endl;
            cout << "1. 查询余额" << endl;
            cout << "2. 存款" << endl;
            cout << "3. 取款" << endl;
            cout << "4. 退出" << endl;
            cin >> choice;
    
            switch (choice) {
                case 1:
                    cout << "当前余额为 $" << fixed << setprecision(2) << atm.getBalance() << endl;
                    break;
                case 2:
                    cout << "请输入存款金额: $";
                    cin >> amount;
                    atm.deposit(amount);
                    break;
                case 3:
                    cout << "请输入取款金额: $";
                    cin >> amount;
                    atm.withdraw(amount);
                    break;
                case 4:
                    cout << "感谢使用ATM模拟程序,再见!" << endl;
                    return 0;
                default:
                    cout << "无效的选项,请重新选择。" << endl;
                    break;
            }
        }
    
        return 0;
    }
  • main函数首先询问用户输入初始余额,并根据用户输入创建一个 ATM 对象。
  • 然后,使用一个无限循环来提供菜单选项,用户可以选择查询余额、存款、取款或退出。
  • 用户的选择由 cin 输入获取,并使用 switch 语句进行相应的处理。
  • 如果用户选择查询余额,ATM 对象的 getBalance 函数会被调用并显示当前余额。
  • 如果用户选择存款或取款,程序会要求用户输入金额,并调用相应的 deposit 或 withdraw 函数来更新余额。
  • 如果用户选择退出,程序会显示感谢消息并退出。
  • 如果用户输入无效的选项,程序会输出相应的错误消息。
这个程序模拟了一个简单的ATM功能,用户可以进行基本的查询和交易操作

拓展?

如果我们要给这个程序增加操作历史的查询功能该怎么搞?

标签: none