import random
import time
##定义一个类,用来存放用户的属性,并且加以控制
class usersinfo(object):
# 禁止外界添加属性
__slots__ = '_name', '_age', '_money', '_account_number', '_password', '_isworker', '_isonline', '_lock', '_idcard'
def __init__(self, name, age, account_number, password, id_card):
"""设置私有属性,不允许别人修改,只能固定人员通过get,set方法设置"""
self._name = name
self._age = age
self._money = 0 # '余额默认设置为0'
self._account_number = account_number
self._password = password
self._isworker = False # 将所有注册的用户的标记为非工作人员
self._isonline = False # 判断是否登录
self._lock = False
self._idcard = id_card
def getName(self):
return self._name
def setName(self, name):
self._name = name
def getMoney(self):
'''
获取余额
:return:
'''
return self._money
def setMoney(self, money):
'''
存钱
:param money:
:return:
'''
self._money = money
def setPassword(self, password):
'''用于设置密码,或者重置密码'''
self._password = password
def getPassword(self):
'''
:return:
'''
return self._password
def getAccount_number(self):
'''
获取银行账号
:return:
'''
return self._account_number
def setAccount_number(self, account_number):
self._account_number = account_number
def getIsonline(self, isonline):
'''获取是否在线'''
return self._isonline
def setIsonline(self, isonline):
'''设置状态是否在线'''
self._isonline = isonline
def setLock(self, lock):
self._lock = lock
def getLock(self):
return self._lock
def getIdcard(self):
return self._idcard
def setIdcard(self, idcard):
self._idcard = idcard
#定义一个公共类,里面存放写公共方法
class commonFunction(object):
'''
定义用户和银行人员一些公共的功能
注册账户,存钱,取钱,转账,修改密码,查看余额
'''
# ui=usersinfo()
def saveMoney(self, name):
'''
存钱不需要密码及其他信息
:return:
'''
while True:
money = int(input("请输入存钱金额,金额必须为50的倍数"))
if money % 50 == 0 and money / 50 != 0:
user[name].setMoney(str(int(user[name].getMoney()) + money))
print("恭喜你,存钱成功,您当前余额为{}".format(user[name].getMoney()))
break
else:
print("对不起,您的输入有误,请再次输入")
continue
def register(self):
name = input("您已经进入了注册页面,首先请输入用户名:")
while True:
password1 = (input("请输入你的密码,密码必须为6位数字"))
password2 = (input("请再次输入你的密码"))
if password1 == password2 and len(password1) == 6:
break
else:
print("对不起你两次密码不一致")
continue
age = input("请输入你的年龄:")
while True:
idcard = input("情输入你的身份证号")
if idcard.isdigit():
if len(idcard) == 16:
break
else:
print("你输入的身份证号格式错误")
else:
print("你的身份证格式错误")
continue
print("您已经输入完毕请,等待目前正在生成你的账号")
account = '61'
for i in range(14):
# global num
num = random.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])
account += num
print("恭喜你,你的账号已经生成完毕,请您记住: {}".format(account))
names = usersinfo(name, age, account, password1, idcard)
user[name] = names
return True
def checkMoney(self, name):
print("欢迎你,进入查询余额页面,请按照指示操作")
while True:
idcard = input("请您输入身份证号")
print(user[name].getIdcard)
if user[name].getIdcard() == idcard:
time.sleep(1)
print("验证成功")
print("您当前余额为{}".format(user[name].getMoney()))
break
else:
print("您输入的身份证号有误,请您再次输入")
continue
def drawMoney(self, name):
print("欢迎您,进入取款页面,请您按照指示操作")
while True:
idcard = input("请您输入身份证号")
password = input("情输入你的密码,你只有三次机会,请小心输入")
if user[name].getIdcard() == idcard:
time.sleep(1)
if password == user[name].getPassword():
print("验证成功")
print("您当前余额为{}".format(user[name].getMoney()))
while True:
m = input("请输入你的取款金额,金额为50或者50的倍数,并且应该大于你的账户余额")
if int(m) % 50 == 0 and int(m) // 50 != 0 and int(m) >= int(user[name].getMoney()):
user[name].setMoney(str(int(user[name].getMoney()) - int(m)))
print("正在取款,请稍等")
time.sleep(1)
print("存款成功,当前余额为{}".format(user[name].getMoney()))
break
else:
print("你输入的金额有误,请重新输入")
continue
else:
print("您输入的密码错误,请您重新输入信息")
continue
else:
print("您输入的身份证号有误,请您再次输入")
continue
break
def transferMoney(self, name):
print("欢迎您进入转账页面,请按照只是操作")
while True:
'''
transferName 为转账对方的姓名
'''
transferName = input("请输入对方的姓名")
if transferName in user.keys():
transferAccount = input("请输入对方的账号")
if user[name].getAccount == transferAccount:
while True:
money = input('情输入你的转账金额,请务必大于等于你的余额')
if int(money) >= user[name].getMoney():
print("正在转账,请稍等")
time.sleep(1)
user[name].setMoney(str(int(user[name].getMoney()) - int(money)))
user[transferName].setMoney(str(int(user[transferName].getMoney()) - int(money)))
print("您已经转账成功,目前您的余额为{}".format(user[name].getMoney()))
break
else:
print("你输入的金额大于你的余额,请重新输入")
continue
else:
print("你输入的账号有误,请重新输入信息")
continue
else:
print("你输入的账号不存在,请重新输入")
continue
break
def ifexit(self):
exit('再见')
#定义一个银行人员的类,继承公共方法类,再加自己独有的几个功能
class bank_Worker_Function(commonFunction):
'''继承公共的功能,再添加自己独有的功能'''
"""销户 解锁 用户信息 修改用户信息
"""
def __init__(self):
super().__init__()
def destroyAccount(self, name):
print("你已经进入了销户页面,请小心操作")
while True:
bankcard = input("请输入销户的银行卡号")
if user[name].getAccount() == bankcard:
choices4 = input("即将销户,确定请输入,yes否则就退出该页面")
if choices4 == 'yes':
del user[name]
else:
break
else:
print("对不起,你所输入的账号有误,请重新输入")
continue
def unLock(self):
print("欢迎你进入,解锁页面")
while True:
name = input("请输入你要解锁的用户名")
if name in user.keys():
while True:
account = input("请输入你的账号名")
if account == user[name].getAccount():
print("输入完毕,正在确认信息")
time.sleep(1)
print("确认信息完毕,正在解锁,请稍等")
time.sleep(2)
user[name].setLock(False)
break
else:
print("对不起,你输入的用户不存在,请重新输入")
continue
break
def userinfomation(self):
while True:
name = input("请输入需要查询的用户名")
if name in user.keys():
print("姓名:{},年龄:{},账号:{},身份证号{},是否锁定{}".format(user[name].getName(),
user[name].getAge(), user[name].getAccount(),
user[name].getIdcard()
, user[name].getLock()))
choices5 = input("是否退出,退出请输入yes")
if choices5 == 'yes':
break
else:
print("对不起,你所输入的用户不存在,请重新输入")
continue
def changeUserInformation(self):
print("欢迎进入更改信息页面")
while True:
name = input("请输入需要更改的信息的账户名")
if name in user.keys():
password = input("请输入密码")
if password == user[name].getPassword():
while True:
choice6 = input("情选择你要修改的项 1.年龄 2.密码 3. 身份证号 4. 性别(还没写) 其他:退出")
if choice6 == '1':
age = input("请输入你要修改的内容")
user[name].setAge(age)
print("正在修改,请稍等")
time.sleep(1)
print("修改完毕,修改完后的年龄为:{}".format(user[name].getAge()))
elif choice6 == '2':
password = input("情输入你要修改的密码")
user[name].setPassword(password)
print("正在修改,请稍等")
time.sleep(1)
print("修改完毕,修改完后的密码为{}".format(user[name].getPassword()))
elif choice6 == '3':
idcard = input("情输入你要修改的身份证号")
user[name].setIdcard(idcard)
print("正在修改,请稍等")
time.sleep(1)
print("修改完毕,修改完后的密码为{}".format(user[name].setIdcard()))
else:
print("")
break
user = {"zly": usersinfo('zly', '18', '1' * 16, '123', '2' * 16)}
bankworker = {"遥遥哥": '123'} # 新建一个银行人员的字典 ,key为银行人员的用户名,value为密码,银行人员不可注册,以后只能通过数据库插入
“”"
bug:
1.由于用户是字典,且用户名为key,所以用户名不能重复,且用户和银行人员的账户不通
“”"
#主程序入口
if __name__ == '__main__':
print("欢迎来到银行管理系统")
func = commonFunction()
bwf = bank_Worker_Function()
count = 0 # 计数用,如果密码输错三次,就给账户上锁
while True:
name = input("""请输入用户名""")
if name in user.keys():
for i in user.values():
if not user[name].getLock(): # 判断账户是否上锁
password = input("请输入你的密码,输错三次就会锁定,目前还剩下{}次".format(3 - count))
if i.getPassword() == password:
print("*****登录成功,尊敬的用户******")
while True:
choices3 = input("""请选择功能,1.查看余额 ,2.存款, 3.取款, 4.转账, 5.退出登录""")
if choices3 == '1':
func.checkMoney(name)
if choices3 == '2':
func.saveMoney(name)
if choices3 == '3':
func.drawMoney(name)
if choices3 == '4':
func.transferMoney(name)
if choices3 == '5':
func.ifexit()
else:
print("您输入的密码有误,请你再次输入")
count += 1
if count >= 3: # 当计数器大于等于三次时,给账户上锁,并且提醒用户
user[name].setLock(True)
print("对不起,由于密码输错三次,您的账户已经被锁,请您去办理解锁业务")
continue
else:
print("对不起,由于密码输错三次,您的账户已经被锁,请您去办理解锁业务")
break
elif name in bankworker:
print("系统检测到,你是银行人员,请按照指示输入信息登录")
while True:
password = input("请输入你的密码")
if bankworker[name] == password:
print("欢迎你,请选择你的功能")
while True:
choices3 = input("""建户【0】 销户【1】 查看余额【2】 存款【3】 取款【4】
转账【5】 解锁【6】 用户信息【7】 修改用户信息【8】
退出登录【9】""")
if choices3 == '0':
bwf.register() # 通过子类调用父类方法
elif choices3 == '1':
name = input("情输入需要注销的账户名,然后继续操作")
bwf.destroyAccount(name)
elif choices3 == '2':
name = input("情输入要查看的账户名")
bwf.checkMoney(name)
elif choices3 == '3':
name = input("情输入要存款的账户名")
bwf.saveMoney(name)
elif choices3 == '4':
name = input("请输入取款的用户名")
bwf.drawMoney(name)
elif choices3 == '5':
name = input("请输入用于转账的用户名")
bwf.drawMoney(name)
elif choices3 == '6':
bwf.unLock()
elif choices3 == '7':
bwf.userinfomation()
elif choices3 == '8':
bwf.changeUserInformation()
elif choices3 == '9':
bwf.ifexit()
else:
print("你的密码输入错误,请重新输入")
continue
else:
choices2 = input("""检测到你并不是我银行的用户,如果你需要办理业务请你注册一个账号,确实请输入yes,否则那就再见吧""")
if choices2 == 'yes':
if func.register() == True:
print("恭喜你,已经注册成功,请重新登录")
continue
else:
break
print("欢迎您的下次使用,再见")
break
print("感谢您的使用,下次再见")