使用面向对象编程创建Python ATM系统

使用面向对象编程来定义表示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系统奠定了基础,并突显了面向对象编程在软件开发中的强大之处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值