Python学习笔记8:银行管理系统

这篇博客介绍了作者使用Python实现的一个银行管理系统的实践过程,旨在加深对面向对象编程的理解。代码包含详细注释,适合初学者跟随学习,通过pickle模块进行数据存储。
摘要由CSDN通过智能技术生成

自己写的练手小程序,练习面向对象的概念,代码中都有注释,刚学的同学也可以很容易看懂(需要自己用pickle模块新建一个database.txt文件,用来存储用户数据信息)。

# atm.py
# 各种操作类
import random
from card import Card
from user import User
import time


class ATM(object):
    # 初始化
    def __init__(self, allUsersInfo):
        # 将所有用户信息传递过来,以便后续操作
        self.allUsersInfo = allUsersInfo  # 卡号 :用户

    # 确认密码
    def checkPwd(self, realPwd):
        myList = [3, 2, 1, 0]
        for i in myList:
            # 如果密码输入错误超过三次
            if i == 0:
                return False
            rePass = input('请再次输入密码:')
            if realPwd == rePass:
                return True
            elif (i - 1) != 0:
                print('输入错误,你还有%d次输入的机会!' % (i - 1))

    # 随机生成开户卡号
    def randomId(self):
        while True:
            # 存储卡号
            str = ''

            # 随机生成6位卡号
            for i in range(6):
                ch = chr(random.randrange(ord('0'), ord('9') + 1))
                str += ch

            # 判断卡号是否重复
            if not self.allUsersInfo.get(str):
                return str

    # 开卡操作
    def createUser(self):
        try:
            name = input('请输入姓名:')  # 用户姓名
            idCard = input('请输入身份证号码:')  # 用户身份证号
            phone = input('请输入电话号码:')  # 用户的电话号码
            preMoney = int(input('请输入预存金额:'))  # 用户的预存金额

            # 预存金额少于0则开户失败
            if preMoney < 0:
                print('预存金额有误,开户失败!')
                return -1

            # 设置密码
            onePwd = input('请输入密码:')  # 第一次密码
            twoPwd = self.checkPwd(onePwd)

            if not twoPwd:
                print('确认密码错误,开户失败!')
                return -1

            # 以上全部完成,则开户所需的信息准备齐全,开户成功
            # 系统生成开户卡号

            # 生成卡号
            cardStr = self.randomId()

            # 创建一个卡的实例,用于存储卡的信息
            card = Card(cardStr, onePwd, preMoney)

            # 创建一个用户实例,用于存储用户的信息
            user = User(name, idCard, phone, card)

            # 按 卡号 : 用户信息 键值对的形式存入字典中
            self.allUsersInfo[cardStr] = user

            # 提示用户,已经开户成功
            time.sleep(1)
            print('开户成功,请牢记卡号({})...'.format(cardStr))

        except Exception as e:
            print('抱歉,系统出现故障,暂时无法操作!')
            return

    # 判断卡号是否存在
    def isExistence(self, cardStrInp):
        # 卡号不存在,直接退回到选项界面
        if self.allUsersInfo.get(cardStrInp):
            return True

        # 卡号不存在的情况下
        else:
            print('卡号不存在!')
            return False

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值