Python3 银行业务模拟

小项目----银行业务操作(管理员的操作)

要求实现十个功能     编号:0~9
类名:   person
属性:   name
    userid
    phone
    card

类名:   card
属性:   cardid
    password
    money

类名:   view
方法:   login view
方法:   oparation view

类名:oparation
        开户(1)            查询(2)            
        存钱(3)            取钱(4)           
        转账(5)            改密(6)            
        锁卡(7)            解卡(8)           
        补卡(9)            退出(0)  

#view.py
class View:

    def login(self):
        i = 1
        while i <= 3:
            name = input("请输入管理员账号:")
            pwd = input("请输入管理员密码:")
            if name == "admin" and pwd == "admin":
                print("欢迎管理员登录")
                i = 4
                return True
            else :
                print("账号或密码输入不正确!,还有%s次机会" % (3 - i))
                i += 1



    def login_view(self):
        print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
        print("$                                             $")
        print("$                                             $")
        print("$           Welcome To MHG Bank               $")
        print("$                                             $")
        print("$                                             $")
        print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")


    def oparation_view(self):
        print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
        print("$       开户(1)            查询(2)             $")
        print("$       存钱(3)            取钱(4)             $")
        print("$       转账(5)            改密(6)             $")
        print("$       锁卡(7)            解卡(8)             $")
        print("$       补卡(9)            退出(0)             $")
        print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")



if __name__ == '__main__':
    v = View()
    v.login()

#person.py
class Person:
    def __init__(self,name,userid,phone,cardid):
        self.name = name
        self.userid = userid
        self.phone = phone
        self.cardid = cardid
#card.py
class Card:
    def __init__(self,cardid,password,money):
        self.cardid = cardid
        self.password = password
        self.money = money
        self.islock = True
#main.py
from day12.bank.view import View  #路径
from day12.bank.operation import Operation
import time

v = View()
def main():
    while not v.login():
        print("账号冻结!等5秒后再操作!")
        time.sleep(5)

    v.login_view()
    v.oparation_view()
    o = Operation()
    while True:
        choice = input("请选择需要的服务项目:")
        if choice == "1": # 开户
            o.register()
        elif choice == "2": # 查询
            o.query()
        elif choice == "3": # 存钱
            o.save_money()
        elif choice == "4": # 取钱
            o.get_money()
        elif choice == "5": # 转账
            o.trans_money()
        elif choice == "6": # 改密
            o.change_password()
        elif choice == "7": # 锁卡
            o.lock()
        elif choice == "8": # 解锁
            o.unlock()
        elif choice == "9": # 补卡
            o.mend_card()
        elif choice == "0": # 退出
            o.exit_Bank()
            print("欢迎下次光临!")
            break

if __name__ == '__main__':
    main()

#operation.py

from day12.bank.person import Person #路径
from day12.bank.card import Card
import pickle
import os
import random

class Operation:

    def __init__(self):
        self.users()
        self.cards()
        print(self.user_dict)
        print(self.card_dict)


    # 用户信息
    def users(self):
        if os.path.exists("user.txt"):
            with open("user.txt","rb") as f:
                self.user_dict = pickle.load(f)
        else:
            self.user_dict = {}


    # 卡的信息
    def cards(self):
        if os.path.exists("card.txt"):
            with open("card.txt", "rb") as f:
                self.card_dict = pickle.load(f)
        else:
            self.card_dict = {}


    # 设置密码
    def get_password(self):
        while True:
            password = input("请输入您的六位数字密码:")
            if password.isdigit() and len(password) == 6:
                rpassword = input("请确认您的六位数字密码:")
                if password == rpassword:
                    return password
                else:
                    print("您输入的两次密码不一致,请重新输入!")
            else:
                print("密码格式错误,请重新输入!")


    # 设置手机号
    def get_phone(self):
        while True:
            phone = input("请输入您的十一位手机号:")
            if phone.isdigit() and len(phone) == 11 and phone.startswith("1"):
                return phone
            else:
                print("请输入正确手机号!")


    # 设置身份证号
    def get_userid(self):
        while True:
            userid = input("请输入您的十八位身份证号:")
            if userid.isdigit() and len(userid) == 18 and not userid.startswith("0"):
                return userid
            else:
                print("请输入正确身份证号")


    # 设置初始存款
    def get_initial_money(self):
        while True:
            money = input("请输入初始存款金额:")
            if money.isdigit() :
                return  money
            else:
                print("请输入正确存款金额!")


    # 生成六位卡号
    def get_cardid(self):
        while True:
            # 随机生成一个卡号
            cardid = random.randint(100000,999999)
            if cardid not in self.user_dict:
                return cardid


    # 获取卡信息
    def get_card_info(self):
        # 用户先输入卡号
        while True :
            try:
                cardid = int(input("请输入您的六位数字卡号:"))
                break
            except Exception:
                print("请输入您的“六位数字”卡号!")
        # 判断卡号是否存在
        if cardid not in self.user_dict:
            return False
        else:
            # 通过卡号找到用户 存储的格式为:self.user_dict[cardid] = user
            user = self.user_dict[cardid]
            # 然后通过用户找到卡
            card = self.card_dict[user.userid]
            # 返回用户的卡
            return card


    # 检测密码
    def check_password(self,card):
        i = 1
        while i < 4:
            # 让用户输入卡密码
            while True:
                try:
                    password = int(input("请输入你的密码:"))
                    break
                except Exception:
                    print("请输入您的“六位数字”密码!")
            # 如果用户输入的密码和卡的密码一致
            if card.password == str(password):
                return True
            else:
                print("账号或密码输入不正确!,还有%s次机会" % (3 - i))
                i += 1
                if i == 4:
                    card.islock = True
                    print("密码输入三次失败,卡已经被锁定!")


    # 锁卡
    def lock(self):
        card = self.get_card_info()
        if card:
            if card.islock:
                user = self.user_dict[card.cardid]
                print("解锁需要核对您的身份信息!")
                print("@".join(user.userid))
                while True:
                    userid = input("请输入您的身份证号:")
                    if user.userid == userid:
                        lock = input("确认锁卡请按 1:")
                        if lock == "1":
                            card.islock = False
                            print("锁卡成功!")
                            break
            else:
                print("卡已被锁定!")
        else:
            print("卡号错误!")



    # 解锁
    def unlock(self):
        card = self.get_card_info()
        if not card:
            print("卡号错误!")
        else:
            if  card.islock:
                print("卡未锁定!")
            else:
                if self.check_password(card):
                    card.islock = True
                    print("解卡成功!")
                else:
                    user = self.user_dict[card.cardid]
                    print("解锁需要核对您的身份信息!")
                    print("@".join(user.userid))
                    while True:
                        userid = input("请输入您的身份证号:")
                        if user.userid == userid:
                            print("请输入新的密码!")
                            password = self.get_password()
                            card.password = str(password)
                            card.islock = True
                            print("解卡成功!")
                            break
                        else:
                            print("身份证号码不正确,请重新输入!")


    # 开卡功能
    def register(self):

        name = input("请输入您的姓名:")

        password = self.get_password()

        phone = self.get_phone()

        userid = self.get_userid()

        cardid = self.get_cardid()

        money = self.get_initial_money()

        card = Card(cardid,password,money)

        self.card_dict[userid] = card

        user = Person(name,userid,phone,cardid)

        self.user_dict[cardid] = user
        print("恭喜%s开卡成功,卡号%s,卡内余额%s元"%(user.name,cardid,card.money))
        self.exit_Bank()


    # 余额查询
    def query(self):
        card = self.get_card_info()
        if card:
            if card.islock:
                lock = self.check_password(card)
                if lock:
                    print("卡内余额为%s元"%(card.money))
                else:
                    pass
            else:
                print("您的卡被锁定了!")
        else:
            print("卡号错误!")


    # 改密
    def change_password(self):
        card = self.get_card_info()
        if card:
            if card.islock:
                if self.check_password(card):
                    while True:
                        while True:
                            try:
                                password = int(input("请输入六位数字新密码:"))
                                break
                            except Exception:
                                print("请输入您的“六位数字”密码!")
                        while True:
                            try:
                                rpassword = int(input("请确认六位数字新密码:"))
                                break
                            except Exception:
                                print("请确认您的“六位数字”密码!")
                        if password == rpassword:
                            card.password = str(password)
                            print("修改成功!")
                            break
                        else:
                            print("两次密码不一致!")
            else:
                print("您的卡已经被锁定,请先解卡!")
        else:
            print("卡号错误!")


    # 存钱
    def save_money(self):
        card = self.get_card_info()
        if card:
            if card.islock:
                money = int(input("请输入存款金额:"))
                if money < 0:
                    print("输入的金额不正确!")
                else:
                    initial_money = int(card.money)
                    initial_money += money
                    card.money = str(initial_money)
                    print("卡内余额为%s元" % (card.money))
            else:
                print("您的卡已被锁定,请先解卡")
        else:
            print("卡号错误!")


    # 取钱
    def get_money(self):
        card = self.get_card_info()
        if card:
            if card.islock:
                if self.check_password(card):
                    money = int(input("请输入取款金额:"))
                    if money < int(card.money) and money > 0:

                        initial_money = int(card.money)
                        initial_money -= money
                        card.money = str(initial_money)

                        print("卡内余额为%s元" % (card.money))
                    else:
                        print("输入的金额有误,请重新输入!")
                else:
                    pass
            else:
                print("您的卡已被锁定,请先解卡")
        else:
            print("卡号错误!")


    # 转账
    def trans_money(self):
        card = self.get_card_info()
        user = self.user_dict[card.cardid]
        if card:
            if card.islock:
                if self.check_password(card):
                    # 输入收款方的账号
                    otherid = int(input("请输入对方账号:"))
                    if otherid not in self.user_dict:
                        print("卡号不存在!")
                    else:
                        # 通过收款方的账号找到收款人
                        other_user = self.user_dict[otherid]
                        # 通过收款人找到卡
                        other_card = self.card_dict[other_user.userid]
                        if not other_card.islock:
                            print("对方卡已经被锁定,请先解卡!")
                        else:
                            money = int(input("请输入转账金额:"))
                            if money > 0 and money <= int(card.money):

                                initial_money = int(card.money)
                                initial_money -= money
                                card.money = str(initial_money)

                                other_initial_money = int(other_card.money)
                                other_initial_money += money
                                other_card.money = str(other_initial_money)

                                print("%s向%s成功转账%s元"%(user.name,other_user.name,money))
                            else:
                                print("转账金额不正确!")
            else:
                print("您的卡已经被锁定,请先解卡!")
        else:
            print("卡号错误!")


    # 补卡
    def mend_card(self):
        userid = input("请输入身份证号:")
        if userid in self.card_dict:

            card = self.card_dict[userid]
            # 生成一个新的卡号
            new_cardid = self.get_cardid()
            # 修改老用户对应的卡号
            self.user_dict[new_cardid] = self.user_dict.pop(card.cardid)
            # 修改卡号
            card.cardid = new_cardid

            print("新卡已开出,请输入新卡密码!")
            new_password = self.get_password()
            card.password = new_password
            # 通过新卡号找到新用户
            new_user = self.user_dict[new_cardid]
            new_user.cardid = new_cardid
            print("尊敬的用户%s,新卡号为%s,手机号:%s,身份证号:%s,卡内余额:%s"%(new_user.name,card.cardid,new_user.phone,new_user.userid,card.money))
        else:
            print("身份证号不存在!")


    # 退出保存
    def exit_Bank(self):
        with open("user.txt","wb") as f:
            pickle.dump(self.user_dict,f)
        with open("card.txt","wb") as f:
            pickle.dump(self.card_dict,f)


if __name__ == '__main__':
    o = Operation()
    # o.register()
    # o.exit_Bank()
    # o.save_money()
    # o.query()
    # o.get_money()
    # o.change_password()
    # o.mend_card()
    # o.trans_money()
    # o.lock()

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容