定义一个账 户类,可以创建账户、存款、取款 、查询余额、以及销户等操作

需求:定义一个账户类,可以创建账户、存款、取款 、查询余额、以及销户等操作
分析:
    类的组成:属性(描述信息)和方法【成员】
    定义类的关键字-class
    创建账户、存款、取款 、查询余额、以及销户 功能,行为,动作,对应的是类里面的方法
        存款:余额加上要存储的金额
    属性:姓名,卡号,密码,余额

优化:一个完整的功能应该包含的内容,1.校验,2操作
    校验:正确校验,错误校验,边界校验
        如果输出正确应该怎么样?
        如果输入错误应该怎么样?
        如果刚刚好是临界值怎么样?
"""
import time,random
from decimal import Decimal

class Account:
    def __init__(self,name:str,password:str,money=0):
        """
            创建账户,自动生成卡号
            @parame name:持卡人姓名
            @parame password:账户密码
            @parame money:账户余额
        """
        self.name = name
        self.password = password
        self.money = Decimal(str(money))

        t = int(time.time()*100)
        r = random.randint(10,99)
        self.number = '%s%s'%(t,r)

    def setMoney(self,money):
        """
            存款
            @parame money:要存入的金额
        """
        if not isinstance(money,(int,float)):
            print('输入的数据类型错误')
            return False
        elif money < 0:
            print('金额不能小于0')
            return False
        else:
            self.money += Decimal(str(money))
        return True
    
    def getMoney(self,money):
        """
            取款
            @parame money:要取的金额
        """
        if not isinstance(money,(int,float)):
            print('输入的数据类型错误')
            return False
        elif money > self.money:
            print('余额不足')
            return False
        else:
            self.money -= Decimal(str(money))
        return True
    
    def selectMoney(self):
        """
            查询余额
            @return Decimal:余额
        """
        return self.money
    
    def __del__(self):
        print(f'卡号:{self.number},持有人:{self.name}。销户成功!')
       
if __name__ == '__main__':
    # 界面 测试
    # 加载所有账户信息 文件保存的,进阶存在数据库当中
    accounts = []
    print('*'*10,'欢迎使用PythonATM机','*'*10)

    def func(i):
        while True:
            menu = input('菜单:\n1.存款\n2.取款\n3.查询余额\n4.销户\n输入exit退出:')
            if menu == '1':
                money = float(input('请输入你要存入的金额:'))
                res = i.setMoney(money)
                if res:
                    money_i = i.selectMoney()
                    print(f'存入成功,卡上余额为:{money_i}')
            elif menu == '2':
                money = float(input('请输入你要取出的金额:'))
                res = i.getMoney(money)
                if res:
                    money_i = i.selectMoney()
                    print(f'取出成功,卡上余额为:{money_i}')
            elif menu == '3':
                print(f'卡号:{i.number}。持卡人:{i.name}。卡上余额为:{i.selectMoney()}')
            elif menu == '4':
                accounts.remove(i) # 把列表里面的账户清除
                del i # 把当前登陆的账户清除
                return True
            elif menu == 'exit':
                break
            else:
                print('输入的信息有误,请确认后重新输入')
        return False
    while True:
        menu = input('菜单:\n1.开户\n2.登陆\n输入exit退出:')
        if menu == '1':
            
            name = input('请输入您的姓名:')
            password = input('请输入您的密码:')
            password_re = input('请再次输入您的密码进行确认:')
            
            while password != password_re:# 一直输入密码,直到输入的密码和确认的密码一致才结束循环,不继续输入
                password = input('请输入您的密码:')
                password_re = input('请再次输入您的密码进行确认:')
                
            account = Account(name,password)
            accounts.append(account)
            print(f'开卡成功,尊敬的{name},您的卡号为:{account.number}')
            del account # 注意,开户之后需要把account清除
            
        elif menu == '2':
            number = input('请输入您的卡号:')
            password = input('请输入您的密码:')
            for i in accounts:
                if i.number == number and i.password == password:
                    print(f'登陆成功!欢迎{i.name}')
                    res = func(i)
                    if res:
                        del i # 注意
                    break
            else:
                print('输入的信息有误,请确认后重新输入')
        elif menu == 'exit':
            break
        else:
            print('请进行正确的操作')

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叽里呱啦呱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值