使用面向对象编程来定义表示ATM本身以及与之交互的用户的类。这种方法有助于我们高效地组织代码,封装数据和功能。
创建ATM类
首先,让我们创建一个表示ATM本身的类。这个类将具有ATM编号和位置等属性,这些属性是每个ATM实例特有的。
class ATM():
bank = "中国银行"
def __init__(self, no, location):
self.NO = no
self.location = location
print(f"当前机器为{self.location}编号{self.NO}")
在这里,我们定义了ATM类,其中包含了一个类属性bank(对所有实例都通用)和一个初始化方法__init__,用于设置实例特定的属性,如NO(ATM编号)和location。
创建用户类
接下来,让我们创建一个User类,表示ATM系统的用户。每个用户将具有用户名、密码和余额。
class User():
data = {"阿华": {"password": "123456", "balance": "1000000"},
"阿武": {"password": "654321", "balance": "500000"},
"老6": {"password": "666666", "balance": "250000"},
"cali": {"password": "123456", "balance": "999999"}}
def __init__(self):
self.auth = False
self.login()
在这个类中,我们定义了一个类属性data,它是一个包含用于身份验证的用户数据的字典。__init__方法初始化用户对象并调用login方法进行身份验证。
实现用户操作
现在,让我们实现用户可以在ATM系统中执行的操作,如检查余额、存款、取款和退出登录等。
class User():
# ...
def get_money(self, Money):
if self.auth:
int(Money)
self.balance -= Money
print(f"已取出:{Money}元,余额为:{self.balance}")
def save_money(self, mount):
if self.auth:
int(mount)
self.balance += mount
print(f"已存入:{mount},余额为:{self.balance}")
def login(self):
# ...
def get_balance(self):
print(f"当前余额:{self.balance}")
def logout(self):
if self.auth:
self.auth = False
str(self.balance)
self.data[self.username]["balance"] = self.balance
del self.username
del self.password
del self.balance
print("成功退出")
else:
print("您还未登录")
self.login()
在这里,我们添加了诸如get_money、save_money、get_balance和logout等方法到User类中。这些方法允许用户执行交易、检查余额并安全退出登录。
构建ATM界面
现在,我们已经定义了我们的类及其功能,让我们创建一个ATM的界面,用户可以在其中与系统交互。
class ATM():
# ...
def start(self):
menu_data = """
1.登录
2.余额
3.存钱
4.取钱
5.退出
"""
user = None
while True:
print(menu_data)
choice = input("请输入您的操作:")
if choice == "1":
user = User()
elif choice == "2":
if user:
user.get_balance()
else:
print("请先登录")
elif choice == "3":
if user:
mount = int(input("请输入要存储的金额:"))
user.save_money(mount)
else:
print("请先登录")
elif choice == "4":
if user:
Money = int(input("请输入要取出的金额:"))
user.get_money(Money)
else:
print("请先登录")
elif choice == "5":
if user:
user.logout()
break
else:
print("请先登录")
else:
print("输入错误,请重新输入!")
在ATM类的start方法中,向用户显示一个菜单并处理他们的选择。用户可以登录、检查余额、存款、取款和退出。创建并使用User对象来执行这些操作,确保每个用户的数据是分开和安全的。
结论
本文演示了如何使用Python和面向对象编程构建一个简单的ATM系统。通过为ATM和用户定义类以及封装它们的功能,我们创建了一个模块化和有组织的系统。这个示例为更复杂和功能丰富的ATM系统奠定了基础,并突显了面向对象编程在软件开发中的强大之处。