以下是一个基于面向对象思想的 ATM 系统的 C++ 程序设计与实现:

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

class Account {
private:
    string accountNumber;
    string pin;
    double balance;

public:
    Account(string num, string pin, double balance) {
        accountNumber = num;
        this->pin = pin;
        this->balance = balance;
    }

    string getAccountNumber() {
        return accountNumber;
    }

    double getBalance() {
        return balance;
    }

    bool validatePin(string pin) {
        return this->pin == pin;
    }

    void withdraw(double amount) {
        balance -= amount;
    }

    void deposit(double amount) {
        balance += amount;
    }
};

class ATM {
private:
    Account* currentAccount;

public:
    void login() {
        string accountNumber, pin;
        cout << 'Enter account number: ';
        cin >> accountNumber;
        cout << 'Enter PIN: ';
        cin >> pin;

        // Validate account and pin
        currentAccount = validateAccount(accountNumber, pin);
        if (currentAccount == nullptr) {
            cout << 'Invalid account number or PIN.' << endl;
        }
        else {
            showMenu();
        }
    }

    Account* validateAccount(string accountNumber, string pin) {
        // In a real system, this method would validate the account details against a database
        // For simplicity, a hardcoded account is used here
        if (accountNumber == '123456' && pin == '1234') {
            return new Account(accountNumber, pin, 1000.0);
        }
        return nullptr;
    }

    void showMenu() {
        int choice;
        double amount;
        do {
            cout << endl;
            cout << '1. Check Balance' << endl;
            cout << '2. Withdraw' << endl;
            cout << '3. Deposit' << endl;
            cout << '4. Exit' << endl;
            cout << 'Enter choice: ';
            cin >> choice;

            switch (choice) {
                case 1:
                    cout << 'Current balance: ' << currentAccount->getBalance() << endl;
                    break;
                case 2:
                    cout << 'Enter amount to withdraw: ';
                    cin >> amount;
                    if (amount > currentAccount->getBalance()) {
                        cout << 'Insufficient balance.' << endl;
                    }
                    else {
                        currentAccount->withdraw(amount);
                        cout << 'Amount withdrawn successfully.' << endl;
                    }
                    break;
                case 3:
                    cout << 'Enter amount to deposit: ';
                    cin >> amount;
                    currentAccount->deposit(amount);
                    cout << 'Amount deposited successfully.' << endl;
                    break;
                case 4:
                    cout << 'Exiting ATM...' << endl;
                    break;
                default:
                    cout << 'Invalid choice. Please try again.' << endl;
                    break;
            }
        } while (choice != 4);
    }
};

int main() {
    ATM atm;
    atm.login();

    return 0;
}

在这个程序中,我们定义了两个类:AccountATMAccount 类表示一个银行账户,包含账号、PIN 和余额等属性,以及验证 PIN、取款和存款等方法。ATM 类表示一个 ATM 机,包含登录、验证账户、显示菜单等方法。在 ATM 类的 login 方法中,我们通过调用 validateAccount 方法来验证账号和 PIN 是否正确,如果验证成功,则调用 showMenu 方法显示 ATM 菜单。

main 函数中,我们创建一个 ATM 对象,并调用 login 方法来开始 ATM 系统的运行。


原文地址: https://www.cveoy.top/t/topic/pkUL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录