educoder银行管理系统python

from admin import Admin
from atm import ATM
import time
class HomePage:
    def __init__(self):
        self.allUserD = {}    # 使用字典存储数据
        self.atm = ATM(self.allUserD)
        self.admin = Admin()  # 管理员开机界面
    def saveUser(self):
        self.allUserD.update(self.atm.alluser)
        print("数据存盘成功")
# 程序的入口
    def main(self):
        self.admin.printAdminView()
        resL = self.admin.adminOption()
        if not resL:
            while True:
                self.admin.printsysFunctionView()
                option = input("请输入您的操作:\n")
                if option not in ("1", "2", "3", "4", "5",
                                  "6", "7", "S", "Q", "q"):
                    print("输入操作项有误,请仔细确认!")
                    time.sleep(1)

                #********** Begin **********
# 开户
                if option == "1": 
                    self.atm.creatUser()               
                # 查询
                elif option == "2": 
                    self.atm.searchUser()
                # 取款
                elif option == "3": 
                    self.atm.getMoney()
                # 存储
                elif option == "4":
                    self.atm.saveMoney()
                # 转账
                elif option == "5": 
                    self.atm.transferMoney()
                # 锁定
                elif option == "6": 
                    self.atm.lockCard() 
                # 解锁
                elif option == "7": 
                    self.atm.unlockCard()


                #********** End **********
                elif option.upper() == "Q":
                    if not (self.admin.adminOption()):
                        self.saveUser()
                        print('退出系统')
                        return -1

                        
if __name__ == "__main__":
    homepage = HomePage()
    homepage.main()
class Card:
    def __init__(self,cardId,cardPwd,money):
    # 根据类设计图, 编写Card类
    #********** Begin **********
        self.cardId = cardId
        self.cardPwd = cardPwd
        self.money = money
        self.cardLock = False



    #********** End **********

from user import User
from card import Card

import random
class ATM:
    def __init__(self, alluser):
        self.alluser = alluser
        
    def randomiCardId(self):     # 随机生成开户卡号
        while True:
            str_data = ''          # 存储卡号
            for i in range(6):    # 随机生成6位卡号
                ch = chr(random.randrange(ord('0'), ord('9') + 1))
                str_data += ch
            if not self.alluser.get(str):  # 判断卡号是否重复
                str_data = '836095'
                return str_data
    def creatUser(self):
        # 目标向用户字典中添加一个键值对(卡号、用户对象)
        name = input("请输入姓名:\n")
        Uid = input("请输入身份证号:\n")
        phone = input("请输入手机号:\n")
        prestMoney = float(input("请输入预存金额:\n"))
        if prestMoney <= 0:
            print("预存款输入有误,开户失败")
            return -1
        oncePwd = input("请输入密码:\n")
        passWord = input("请再次输入密码:\n")
        if passWord != oncePwd:
            print("两次密码输入不同......")
            return -1
        print("密码设置成功,请牢记密码:  %s" % passWord)
        #********** Begin **********
        cardId = self.randomiCardId()
        card = Card(cardId, oncePwd, prestMoney)
        # 创建卡
        user = User(name, Uid, phone, card)
        # 创建用户
        self.alluser[cardId] = user
        # 存入用户字典
        
        #********** End **********
        print("您的开户已完成,请牢记开户账号: %s" % cardId)
    def checkpwg(self, realPwd):
        for i in range(3):
            psd2 = input("请输入密码:\n")
            if realPwd == psd2:
                return True
        print("密码输错三次,系统自动退出......")
        return False
    def checkpwg(self, realPwd):
        for i in range(3):
            psd2 = input("请输入密码:\n")
            if realPwd == psd2:
                return True
        print("密码输错三次,系统自动退出......")
        return False
    def searchUser(self, base=1):
        if base == 2:
            inptcardId = input("请输入转出主卡号:\n")
        elif base == 3:
            inptcardId = input("请输入转入卡号:\n")
        elif base == 1:
            inptcardId = input("请输入您的卡号:\n")
        user = self.alluser.get(inptcardId)
        # 如果卡号不存在,下面代码就会执行
        if not self.alluser.get(inptcardId):
            print("此卡号不存在...查询失败!")
            return -1
        if user.card.cardLock:
            print("该用户已经被锁定...请解卡后使用!")
            return -1
        if not self.checkpwg(user.card.cardPwd):  # 验证密码
            print("密码错误过多...卡已经被锁定,请解卡后使用!")
            user.card.cardLock = True
            return -1
        if not base == 3:  # 查询转入账户   不打印余额
            print("账户: %s   余额: %.2f" % (user.card.cardId, user.card.money))
        return user
    #********** Begin **********
    def getMoney(self):
        # 实现取款方法
        userTF = self.searchUser()
        if userTF != -1:
            if userTF.card.cardId != '':
                inptMoney = float(input("请输入取款金额:\n"))
                if inptMoney > int(userTF.card.money):
                    print("输入的金额大于余额,请先查询余额!")
                    return -1
                userTF.card.money = float(userTF.card.money) - inptMoney
                print("取款成功!  账户: %s   余额: %.2f" % (userTF.card.cardId, userTF.card.money))
        else:
            return -1

    def saveMoney(self):
        # 实现存款方法
        userTF = self.searchUser()
        if userTF != -1:
            if not userTF.card.cardLock == True:
                if userTF.card.cardId != '':
                    inptMoney = float(input("请输入要存入得金额:\n"))
                    if inptMoney < 0:
                        print("请输入正确金额")
                    else:
                        userTF.card.money += inptMoney
                        print("存款成功!  账户: %s   余额: %.2f" %(userTF.card.cardId,userTF.card.money))
        else:
            return -1

    def transferMoney(self):
        # 实现转账方法
        MasterTF = self.searchUser(base=2)
        if (MasterTF == -1):
            return -1
        userTF = self.searchUser(base=3)
        if (userTF == -1):
            return -1
        in_tr_Money = float(input("请输入转账金额:"))
        if MasterTF.card.money >= in_tr_Money:
            str = input("您确认要继续转账操作吗(y/n)?:")
            if str.upper() == "Y":
                MasterTF.card.money -= in_tr_Money
                userTF.card.money += in_tr_Monney
                print("转账成功!账户:%s 余额:%.2f" %(MasterTF.card.cardId, MasterTF.card.money))
            else:
                print("转账失败,中止了操作")
        else:
            print("转账失败,余额不足!账户:%s 余额:%.2f"%
                  (MasterTF.card.cardId, MasterTF.card.money))

    #********** End **********
    def unlockCard(self):
        inptcardId = input("请输入您的卡号:\n")
        user = self.alluser.get(inptcardId)
        while 1:
            if not self.alluser.get(inptcardId):
                print("此卡号不存在...解锁失败!")
                return -1
            elif not user.card.cardLock:
                print("该卡未被锁定,无需解锁!")
                break
            elif not self.checkpwg(user.card.cardPwd):
                print("密码错误...解锁失败!!")
                return -1
                user.card.cardLock = False  # 解锁
            print("该卡 解锁 成功!")
            break
class Admin:
    adminU = '1'  # 管理员的账号
    adpwd = '1'  # 管理员的密码
    def printAdminView(self):
        print("******************************************")
        print("***                                    ***")
        print("***                                    ***")
        print("***         欢迎登录银行系统            ***")
        print("***                                    ***")
        print("***                                    ***")
        print("******************************************")
    def printsysFunctionView(self):
        print("***********************************************")
        print("***                                         ***")
        print("***    1.开户(1)                2.查询(2)   ***")
        print("***    3.取款(3)                4.存款(4)   ***")
        print("***    5.转账(5)                6.锁定(6)   ***")
        print("***    7.解锁(7)                            ***")
        print("***                                         ***")
        print("***    退出(Q)                              ***")
        print("***                                         ***")
        print("***********************************************")
    def adminOption(self):
        adminInput = input("请输入管理员账户:\n")
        if self.adminU != adminInput:
            print("管理员账户输入错误......")
            return -1
        passwordInput = input("请输入密码:\n")
        if self.adpwd != passwordInput:
            print("输入密码有误......")
            return -1
        else:
            print("操作成功,请稍后......")
            return 0
class User:
    def __init__(self, name, id, phone, card):
    # 根据类设计图, 编写User类
    #********** Begin **********
        self.name = name
        self.id = id
        self.phone = phone
        self.card = card

    #********** End **********

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
银行管理系统是一个比较复杂的系统,它需要支持客户开户、存款、取款、转账等操作,同时需要保证数据的安全性和可靠性。因此,使用面向对象的方式来实现银行管理系统是比较合适的。 下面是一个简单的银行管理系统Python代码示例,它包括两个类:Account和Bank。 ```python class Account: def __init__(self, name, balance): self.name = name self.balance = balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): if amount <= self.balance: self.balance -= amount return True else: return False def get_balance(self): return self.balance class Bank: def __init__(self): self.accounts = {} def add_account(self, account): self.accounts[account.name] = account def remove_account(self, name): if name in self.accounts: del self.accounts[name] return True else: return False def transfer(self, from_name, to_name, amount): if from_name in self.accounts and to_name in self.accounts: if self.accounts[from_name].withdraw(amount): self.accounts[to_name].deposit(amount) return True else: return False else: return False ``` 其中,Account类表示一个账户,包含账户名和余额两个属性,以及存款、取款、查询余额等操作方法。Bank类表示一个银行,包含一个账户字典,以及添加账户、删除账户、转账等操作方法。 示例代码较为简单,仅供参考,真正的银行管理系统需要考虑更多的细节和安全性问题。如果您需要更详细的银行管理系统代码实现,可以在网上搜索相关资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值