zoukankan      html  css  js  c++  java
  • 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()







  • 相关阅读:
    python note 30 断点续传
    python note 29 线程创建
    python note 28 socketserver
    python note 27 粘包
    python note 26 socket
    python note 25 约束
    Sed 用法
    python note 24 反射
    python note 23 组合
    python note 22 面向对象成员
  • 原文地址:https://www.cnblogs.com/cocoa-cq/p/9418956.html
Copyright © 2011-2022 走看看