第十三讲 python学习总结-----银行案例

#admin.py模块
import time
class Admin(object):
    """docstring for Admin"""
    # 这里保存的是管理圆的账号和密码
    account = 'admin'
    password = 'admin'

    def welcome(self):
        print('*********************************')
        print('*                               *')
        print('*       欢迎使用爱心银行        *')
        print('*                               *')
        print('*********************************')

    def menu(self):
        # print('*********************************')
        print('*      开户(1)      查询(2)     *')
        print('*      取款(3)      存款(4)     *')
        print('*      转账(5)      改密(6)     *')
        print('*      锁定(7)      解锁(8)     *')
        print('*      销户(9)      退出(0)     *')
        print('*********************************')

    # 登录函数,判断是否登录成功,成功返回True,失败返回False
    def login(self):
        print('请输入账号和密码进行登录...')
        time.sleep(2)
        in_account = input('请输入账号:')
        in_password = input('请输入密码:')
        if (in_account == Admin.account) and (in_password == Admin.password):
            return True
        return False
#card.py模块
class Card(object):
    """docstring for Card"""
    def __init__(self, card_id, password):
        super(Card, self).__init__()
        self.card_id = card_id
        self.password = password
        self.money = 10
        # 默认都是没锁定
        self.is_lock = False
#user.py
class User(object):
    """docstring for User"""
    def __init__(self, name, user_id, card):
        super(User, self).__init__()
        self.name = name
        self.user_id = user_id
        self.card = card
#option.py模块
import random
from card import Card
from user import User
import time
import pickle
import os

class Option(object):
    """docstring for Option"""
    def __init__(self):
        # 这个空字典,用来保存所有的用户,键是卡号,值是用户对象
        # self.all_users = {}
        self.load_users()

    def load_users(self):
        # 判断这个文件是否存在,如果存在,读进来,如果不存在,初始化为一个空列表
        if not os.path.exists('users.txt'):
            self.all_users = {}
        else:
            fp = open('users.txt', 'rb')
            self.all_users = pickle.load(fp)

    def create_user(self):
        name = input('请输入用户名:')
        user_id = input('请输入身份证号:')
        password = self.get_password()

        # 给用户生成卡号
        card_id = self.get_cardid()
        # 创建卡和用户
        card = Card(card_id, password)
        user = User(name, user_id, card)

        # 保存起来,
        self.all_users[card_id] = user

        print('开户成功,卡号为%s,余额为10元' % card_id)
        time.sleep(1)

    # 随机生成一个6位卡号
    def get_cardid(self):
        # 判断卡号是否存在,如果存在,重新生成
        while 1:
            card_id = str(random.randint(100000, 999999))
            # 判断该卡号是否存在,如果存在,重新生成即可
            if  not card_id in self.all_users:
                return card_id

    # 判断密码
    def get_password(self):
        while 1:
            password = input('请输入密码:')
            repassword = input('请确认密码:')
            if password == repassword:
                return password
            print('两次密码不一致,请重新输入:')

    def search_money(self):
        # 输入卡号
        card_id = input('请输入卡号:')
        # 判断卡号对不对
        if not card_id in self.all_users:
            print('卡号有误,请重新操作')
            return
        # 取出这个卡
        card = self.all_users[card_id].card
        # 判断卡是否被锁定
        if card.is_lock:
            print('该卡已经锁定,请解锁后再执行操作')
            return
        # 输入密码
        if not self.check_password(card):
            print('密码输入错误3次,卡已锁定,请先解锁')
            return 
        # 显示信息 
        print('您的余额为%s' % card.money)
        time.sleep(1)

    # 给用户3次机会输入密码
    def check_password(self, card):
        count = 0
        while 1:
            # 取出原来的密码
            password = card.password
            in_password = input('请输入密码:')
            if password == in_password:
                return True
            count += 1
            if count == 3:
                # 把你的卡给锁定
                card.is_lock = True
                return False

    def get_money(self):
        pass

    def save_money(self):
        pass

    def trans_money(self):
        pass

    def change_password(self):
        pass

    def unlock_card(self):
        pass

    def lock_card(self):
        pass

    def bank_quit(self):
        # 将字典序列化保存到文件中
        fp = open('users.txt', 'wb')
        pickle.dump(self.all_users, fp)
#main.py主模块
from admin import Admin
import time
from option import Option

def main():
    guanli = Admin()
    # 判断是否登录成功,如果失败,返回
    if not guanli.login():
        print('登录失败,哥们,重来吧')
        return
    # 登录成功执行下面的操作
    print('登录成功,请稍后......')
    time.sleep(3)
    # 创建一个操作对象
    cao = Option()
    # 显示欢迎界面
    guanli.welcome()
    while 1:
        # 显示菜单界面
        guanli.menu()
        # 让用户输入操作
        num = input('请输入您要执行的操作:')
        if num == '1':
            cao.create_user()
        elif num == '2':
            cao.search_money()
        elif num == '3':
            pass
        elif num == '4':
            pass
        elif num == '5':
            pass
        elif num == '6':
            pass
        elif num == '7':
            pass
        elif num == '8':
            pass
        elif num == '9':
            pass
        elif num == '0':
            cao.bank_quit()
            print('欢迎下次登录......')
            time.sleep(2)
            break


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/weixin_41853490/article/details/81026132