from helper importHelperfrom card importCardfrom user importUserimporttimeclassOperate:def __init__(self, userinfo):
self.userinfo=userinfo#开户
defnew_user(self):
name= input('请输入您的姓名:')
uid= input('请输入您的身份证号码:')whileTrue:
pwd= input('请输入您的密码:')
pwd2= input('请再次输入您的密码:')if pwd !=pwd2:print('您所输入的两次密码不一致,请重新输入:')else:
pwd=Helper.generate_password_hash(pwd)
cid=Helper.generate_cid()
card=Card(cid, pwd)
user=User(name, uid, card)
self.userinfo[cid]=user
User.save_user(self.userinfo)
time.sleep(1)print('开户成功')break
#销户
defdel_user(self):
cid= input('请输入您的卡号:')
user=self.userinfo.get(cid)ifuser:ifuser.card.is_lock:print('该卡已经锁定,请先去解锁')return
else:
count=0while count < 3:
pwd= input('请输入您的密码:')ifHelper.check_password_hash(pwd, user.card.pwd):delself.userinfo[cid]
time.sleep(1)print('销户成功')
User.save_user(self.userinfo)break
else:
count+= 1
print('密码错误,请重新输入密码')else:
user.card.is_lock=True
User.save_user(self.userinfo)print('密码错误已达上限,该卡已锁定')else:print('用户不存在')#查钱
defquery_money(self):
cid= input('请输入您的卡号:')
user=self.userinfo.get(cid)ifuser:ifuser.card.is_lock:print('该卡已经锁定,请先去解锁')return
else:
count=0while count < 3:
pwd= input('请输入您的密码:')ifHelper.check_password_hash(pwd, user.card.pwd):
time.sleep(1)print('您的余额为¥{}元'.format(user.card.money))break
else:
count+= 1
print('密码错误,请重新输入密码')else:
user.card.is_lock=True
User.save_user(self.userinfo)print('密码错误已达上限,该卡已锁定')else:print('卡号不存在')#取钱
defget_money(self):
cid= input('请输入您的卡号:')
user=self.userinfo[cid]ifuser:ifuser.card.is_lock:print('该卡已经锁定,请先去解锁')return
else:
money= int(input('请输入金额'))
count=0while count < 3:
pwd= input('请输入您的密码:')ifHelper.check_password_hash(pwd, user.card.pwd):if user.card.money >money:
user.card.money-=money
User.save_user(self.userinfo)
time.sleep(1)print('取款成功')break
else:print('余额不足,请及时充值')else:
count+= 1
print('密码错误,请重新输入密码')else:
user.card.is_lock=True
User.save_user(self.userinfo)print('密码错误已达上限,该卡已锁定')else:print('卡号不存在')#存钱
defsave_money(self):
cid= input('请输入您的卡号:')
user=self.userinfo[cid]ifuser:ifuser.card.is_lock:print('该卡已经锁定,请先去解锁')return
else:
money= int(input('请输入金额'))
count=0while count < 3:
pwd= input('请输入您的密码:')ifHelper.check_password_hash(pwd, user.card.pwd):
user.card.money+=money
User.save_user(self.userinfo)
time.sleep(1)print('存款成功')break
else:
count+= 1
print('密码错误,请重新输入密码')else:
user.card.is_lock=True
User.save_user(self.userinfo)print('密码错误已达上限,该卡已锁定')else:print('卡号不存在')#转账
defpass_money(self):
cid= input('请输入您的卡号:')
user=self.userinfo[cid]ifuser:ifuser.card.is_lock:print('该卡已经锁定,请先去解锁')return
else:
money= int(input('请输入金额'))
count=0while count < 3:
pwd= input('请输入您的密码:')ifHelper.check_password_hash(pwd, user.card.pwd):
dist_cid= input('请输入收款人的卡号:')
dist_user=self.userinfo[dist_cid]ifdist_user:if user.card.money >=money:
user.card.money-=money
dist_user.card.money+=money
User.save_user(self.userinfo)
time.sleep(1)print('转账成功')break
else:print('没钱你转个毛')else:print('收款人的卡号错误')else:
count+= 1
print('密码错误,请重新输入密码')else:
user.card.is_lock=True
User.save_user(self.userinfo)print('密码错误已达上限,该卡已锁定')else:print('卡号不存在')#修改密码
defchange_pwd(self):
cid= input('请输入您的卡号:')
user=self.userinfo.get(cid)ifuser:
count=0while count < 3:
pwd= input('请输入原密码:')ifHelper.check_password_hash(pwd, user.card.pwd):
new_pwd= input('请输入新密码:')
new_pwd2= input('请再次输入新密码:')if new_pwd ==new_pwd2:
user.card.pwd=Helper.generate_password_hash(new_pwd)
User.save_user(self.userinfo)
time.sleep(1)print('密码修改成功')else:print('您所输入的两次密码不一致')break
else:
count+= 1
print('密码错误,请重新输入密码')else:print('卡号不存在')#锁定账号
deflock_user(self):
cid= input('请输入您的卡号:')
user=self.userinfo.get(cid)ifuser:
uid= input('请出示您的身份证:')if uid ==user.uid:
user.card.is_lock=True
User.save_user(self.userinfo)
time.sleep(1)print('锁定成功')else:print('身份证是不是带错了@_@')else:print('卡是不是折了:卡号错了')#解锁账号
defunlock_user(self):
cid= input('请输入您的卡号:')
user=self.userinfo.get(cid)ifuser:
uid= input('请出示您的身份证:')if uid ==user.uid:
user.card.is_lock=False
User.save_user(self.userinfo)
time.sleep(1)print('解锁成功')else:print('身份证是不是带错了@_@')else:print('卡是不是折了:卡号错了')#查看账户信息
defshow_users(self):for user inself.userinfo:print(self.userinfo[user])
time.sleep(1)