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("请输入你想进行的操作:\n 输入'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("请重新输入:\n输入'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()







posted @ 2018-08-04 16:18  初遇如故  阅读(2778)  评论(0编辑  收藏  举报