Python 面向对象实现 ATM 系统设计与代码示例(三级项目)
下面是一个基于面向对象思想的 ATM 系统设计与实现的 Python 代码示例:
class Account:
def __init__(self, account_number, pin, balance):
self.account_number = account_number
self.pin = pin
self.balance = balance
def validate_pin(self, pin):
return self.pin == pin
def get_balance(self):
return self.balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if self.balance >= amount:
self.balance -= amount
return amount
else:
return 0
class ATM:
def __init__(self):
self.accounts = {}
def add_account(self, account):
self.accounts[account.account_number] = account
def remove_account(self, account_number):
del self.accounts[account_number]
def authenticate(self, account_number, pin):
if account_number in self.accounts:
account = self.accounts[account_number]
if account.validate_pin(pin):
return account
return None
def deposit(self, account, amount):
account.deposit(amount)
def withdraw(self, account, amount):
return account.withdraw(amount)
def main():
atm = ATM()
# 创建账户
account1 = Account('123456789', '1234', 1000)
account2 = Account('987654321', '4321', 500)
# 添加账户到ATM系统
atm.add_account(account1)
atm.add_account(account2)
# 验证账户和PIN
account_number = input('请输入账号:')
pin = input('请输入PIN码:')
account = atm.authenticate(account_number, pin)
if account:
print('验证成功!')
while True:
# 显示菜单
print('1. 查询余额')
print('2. 存款')
print('3. 取款')
print('4. 退出')
choice = int(input('请选择操作:'))
if choice == 1:
balance = account.get_balance()
print('当前余额为:', balance)
elif choice == 2:
amount = float(input('请输入存款金额:'))
atm.deposit(account, amount)
print('存款成功!')
elif choice == 3:
amount = float(input('请输入取款金额:'))
withdrawn_amount = atm.withdraw(account, amount)
if withdrawn_amount > 0:
print('取款成功,取出金额为:', withdrawn_amount)
else:
print('余额不足,取款失败!')
elif choice == 4:
print('退出系统...')
break
else:
print('无效的选择!')
else:
print('账户或PIN码错误!')
if __name__ == '__main__':
main()
在上面的程序中,Account类表示一个账户,包含账号、PIN码和余额等属性,以及验证PIN码、查询余额、存款和取款等方法。
ATM类表示一个ATM系统,包含账户的集合,可以添加和删除账户,以及验证账户和PIN码、存款和取款等操作。
在main()函数中,首先创建了两个账户,并将它们添加到ATM系统中。然后通过输入账号和PIN码进行身份验证,如果验证成功,就显示一个菜单供用户选择操作。用户可以选择查询余额、存款、取款或退出系统。
这个程序使用了面向对象的思想,将账户和ATM系统的功能封装成类,并通过对象之间的交互来实现整个ATM系统的功能。这样可以提高代码的可读性和可维护性,并且可以方便地扩展和修改系统的功能。
原文地址: https://www.cveoy.top/t/topic/pkUq 著作权归作者所有。请勿转载和采集!