下面是一个基于面向对象思想的 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 著作权归作者所有。请勿转载和采集!

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