C++ 实现ATM
高手可以从代码推导出语言的一般语法规则,我们尝试从这个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功能,用户可以进行基本的查询和交易操作
拓展?
如果我们要给这个程序增加操作历史的查询功能该怎么搞?