• python 银行系统


    目前代码只写到这 主要部分已经实现 功能部分展现

    首先我们需要五个类

    用户类  : 成员属性 name  id  以及 card

    卡类: 成员属性 卡号  密码  余额   锁

    界面类:   管理员界面 用户操作界面

    银行类 : 操作功能

    ATM: 实现功能

    用户类:

    class User():    
    def __init__(self, name, IDnum, card): #传入名字,id, 以及card
    self.name = name
    self.IDnum = IDnum
    self.card = card

    卡类:

    class Card():                       
    def __init__(self, cardid, money, passwd,): #传入卡号 余额 密码
    self.cardid = cardid
    self.money = money
    self.passwd = passwd
    self.lock = False #卡在刚创建时候默认无锁

    界面类:

    import time

    class Admin():
    passaccount = "1"
    passwrad = "1"

    def printadmin_view(self): #管理员界面以及管理员输入账号密码
            print("**********************************************************")
    print("* *")
    print("* *")
    print("* 欢迎使用银行 *")
    print("* *")
    print("* *")
    print("* *")
    print("**********************************************************")
    intaccount = input("请输入账号:") #管理员操作验证密码
    if intaccount != self.passaccount:
    print('账号输入有误')
    return -1
    intpasswrad = input("请输入密码:")
    if intpasswrad != self.passwrad:
    print('密码输入有误')
    return -1
    print('欢迎')
    time.sleep(2)
    return 0

    def printuser_view(self): #用户操作时候的界面
    print("***********************************************************")
    print("* *")
    print("* 开户(open) 查询(search) *")
    print("* 改密(change) 锁定(locking) *")
    print("* 存钱(deposit) 取钱(withdraw) *")
    print("* 转账(transfer) 补卡(ressiue) *")
    print("* 解锁(unlocking) 销卡(destory) *")
    print("* *")
    print("***********************************************************")

    银行类:

    from admin import Admin  # 导入我们自己写入的界面类以及ATM类
    from atm import ATM
    import pickle
    def main():
    admin1 = Admin()
    atm = ATM()
    if admin1.printadmin_view():
    return -1
    while True:
    admin1.printuser_view()
    i = input("请输入你想进行的操作: 输入'quit'退出")
    if i == 'quit':
    atm.quit()
    return -1
    elif i == 'open':
    atm.open_account()
    elif i == 'search':
    atm.search_account()
    elif i == 'locking':
    atm.locking_account()
    elif i == 'unlocking':
    atm.unlocking_account()


    if __name__ == '__main__':
    main()

    ATM:

    import random,pickle
    from user import User #导入我们自己写的卡类以及用户类
    from card import Card
    class ATM():
    def __init__(self):
    self.all_users = {} #准备空字典存储用户信息
    self.fp = open("alluser.txt", 'r+b') #打开文件存储 字节流 写入时候将覆盖 所以下面将会读出文件内容保存在字典中
    try:
    self.all_users = pickle.load(self.fp) #捕捉异常 当文件类容为空时pickle会报异常 没有异常的话将会从文件读取信息
    except EOFError:
    print("文件内容为空")
    print(self.all_users)
    def open_account(self): #开户功能
    name = input("请输入你的名字:")        
    IDnum = input("请输入你的ID:")
    card_id = self.random_acount() #调用下面的卡号生成方法 生成卡号
    passwd = input("请输入密码:")
    passwd_rp = input("请重复密码:")

    if self.verify_passwd(passwd_rp,passwd)==-1: #调用方法如经过两次密码不对 重新输入三次不对退出操作
    return -1

    money = input("存入的金额:")
    if int(money) < 0 : #判断存入金额是否大于0
    print("金额有误,操作失败")
    return -1
      
    card = Card(card_id,money,passwd) #生成卡对象
    user = User(name,IDnum,card)      #生成用户对象
    self.all_users[card_id] = user     #存入字典 键为卡号 值为生成的用户对象
          print("开卡成功您的卡号是:%s"%card_id)



    def search_account(self): #搜索功能 利用键值卡号 搜索到对应的用户
    sch_card = input("请输入要查询的卡号:")
    if not self.all_users.get(sch_card) : #判断卡号是否存在
    print("输入的卡号错误")
    sch_card = input("请重新输入: 输入'q'退出:")
    sch_user = self.all_users[sch_card]
    intpass_wd = input("请输入密码:")
    passwd = sch_user.card.passwd

    if self.verify_passwd(intpass_wd,passwd) == -1: #输错密码重复三次 否则退出操作(完善功能可以进行锁卡)
    return -1

    print("余额:{}".format(sch_user.card.money)) #输出余额
    return 0


    def change_pw(self):
    pass

    def locking_account(self): #锁卡 也是输入卡号 为键值 搜索用户 得到用户信息
    lock_card = input("请输入卡号:")
    if self.whether_cardid(lock_card) == -1: #判断卡号是否存在
    return -1
    if self.all_users[lock_card].card.lock: #判断卡是否被锁 (完善功能后开户搜索都可以进行判断)
    print("卡已经锁定")
    return -1
    lock_user = self.all_users[lock_card]
    lock_passwd = input("请输入密码:") #输入密码 确认是否是本人操作
    passwd = lock_user.card.passwd
    if self.verify_passwd(lock_passwd,passwd) == -1: #输入密码错误重复密码
    print("密码错误退出操作")
    return -1
    lock_user.card.lock = True #将卡对象的成员属性锁设为True 锁卡成功
    print("此卡已被锁定")
    return 0
    def deposit_money(self):
    pass

    def withdraw_money(self):
    pass

    def transfer_money(self):
    pass

    def ressiue_card(self):
    pass

    def unlocking_account(self): #解锁
    unlock_card = input("请输入卡号:")
    if self.whether_cardid(unlock_card) == -1: 判断卡号是否存在 不存在退出操作
    return -1
    if not self.all_users[unlock_card].card.lock:
    print("卡未被锁定")
    return -1
    unlock_user = self.all_users[unlock_card]
    unlock_passwd = input("请输入密码:")
    passwd = unlock_user.card.passwd
    if self.verify_passwd(unlock_passwd,passwd) == -1: #输错密码时 重复密码
    print("密码错误退出操作")
    unlock_user.card.lock = False
    print("卡已解锁")
    def destory_account(self):
    pass

    def quit(self):
    pickle.dump(self.all_users, self.fp) #退出时将字典写进文件
    self.fp.close() #关闭文件通道
    def random_acount(self): #生成卡号
    cardnum = ""
    while True:
    for i in range(6):
    num = random.randint(0, 9)
    cardnum += str(num)
    if not self.all_users.get(cardnum):
    return cardnum

    def verify_passwd(self, passwd_rp, passwd):# 输入错误时 验证密码
    index = 2
    while passwd_rp != passwd:
    passwd_rp = input("密码输入错误请重新输入:")
    print("%d次机会"%index)
    print("机会使用完毕将操作失败")
    index -= 1
    if index == 0:
    print("操作失败 退出操作")
    return -1
    return 0

    def whether_cardid(self,card_id): #判断是否存在卡号
    if self.all_users.get(card_id):
    return 0
    print("卡号不存在")
    return -1

    def main(): #测试代码
    atm = ATM()
    atm.locking_account()
    atm.unlocking_account()


    if __name__ == '__main__':
    main()







  • 相关阅读:
    合并两个有序数组
    删除排序数组中的重复项 II
    对称二叉树
    相同的树
    二叉树的最大深度
    从前序与中序遍历序列构造二叉树
    vue简单案例_动态添加删除用户数据
    对vue的初步学习(一)
    关于java for循环常见练习题
    关于java中循环的学习
  • 原文地址:https://www.cnblogs.com/cocoa-cq/p/9418956.html
Copyright © 2020-2023  润新知