python实现简单银行管理系统
本文为大家分享了python银行管理系统的具体代码,供大家参考,具体内容如下
自己写的练手小程序,练习面向对象的概念,代码中都有注释,刚学的同学也可以很容易看懂(需要自己用pickle模块新建一个database.txt文件,用来存储用户数据信息)。
#atm.py
#各种操作类
importrandom
fromcardimportCard
fromuserimportUser
importtime
classATM(object):
#初始化
def__init__(self,allUsersInfo):
#将所有用户信息传递过来,以便后续操作
self.allUsersInfo=allUsersInfo#卡号:用户
#确认密码
defcheckPwd(self,realPwd):
myList=[3,2,1,0]
foriinmyList:
#如果密码输入错误超过三次
ifi==0:
returnFalse
rePass=input('请再次输入密码:')
ifrealPwd==rePass:
returnTrue
elif(i-1)!=0:
print('输入错误,你还有%d次输入的机会!'%(i-1))
#随机生成开户卡号
defrandomId(self):
whileTrue:
#存储卡号
str=''
#随机生成6位卡号
foriinrange(6):
ch=chr(random.randrange(ord('0'),ord('9')+1))
str+=ch
#判断卡号是否重复
ifnotself.allUsersInfo.get(str):
returnstr
#开卡操作
defcreateUser(self):
try:
name=input('请输入姓名:')#用户姓名
idCard=input('请输入身份证号码:')#用户身份证号
phone=input('请输入电话号码:')#用户的电话号码
preMoney=int(input('请输入预存金额:'))#用户的预存金额
#预存金额少于0则开户失败
ifpreMoney<0:
print('预存金额有误,开户失败!')
return-1
#设置密码
onePwd=input('请输入密码:')#第一次密码
twoPwd=self.checkPwd(onePwd)
ifnottwoPwd:
print('确认密码错误,开户失败!')
return-1
#以上全部完成,则开户所需的信息准备齐全,开户成功
#系统生成开户卡号
#生成卡号
cardStr=self.randomId()
#创建一个卡的实例,用于存储卡的信息
card=Card(cardStr,onePwd,preMoney)
#创建一个用户实例,用于存储用户的信息
user=User(name,idCard,phone,card)
#按卡号:用户信息键值对的形式存入字典中
self.allUsersInfo[cardStr]=user
#提示用户,已经开户成功
time.sleep(1)
print('开户成功,请牢记卡号({})...'.format(cardStr))
exceptExceptionase:
print('抱歉,系统出现故障,暂时无法操作!')
return
#判断卡号是否存在
defisExistence(self,cardStrInp):
#卡号不存在,直接退回到选项界面
ifself.allUsersInfo.get(cardStrInp):
returnTrue
#卡号不存在的情况下
else:
print('卡号不存在!')
returnFalse
#做查询等操作时,输入密码
defsecretOption(self,cardStrInp):
myList=[3,2,1,0]
foriinmyList:
#如果密码输入错误超过三次
ifi==0:
returnFalse
passInp=input('请输入密码:')
ifpassInp==self.allUsersInfo[cardStrInp].cardInfo.cardPwd:
returnTrue
elif(i-1)!=0:
print('输入错误,你还有%d次输入的机会!'%(i-1))
#查询用户信息
defsearchUserInfo(self):
cardStrInp=input('请输入卡号:')#用户想要查询的卡号
#判断卡号的状态
isExist=self.isExistence(cardStrInp)
#卡号存在
ifisExist:
#是否被锁定
ifnotself.allUsersInfo[cardStrInp].cardInfo.isLock:
#输入密码并判断
#密码正确则输出余额
ifself.secretOption(cardStrInp):
print('账号:%s余额:%d'%(cardStrInp,self.allUsersInfo[cardStrInp].cardInfo.cardMoney))
return0
#密码错误则锁定卡号
else:
print('密码输入错误超过3次,卡号已被锁定,请先解锁!')
self.allUsersInfo[cardStrInp].cardInfo.isLock=True
return-1
else:
print('该卡号已被锁定,请先解锁!')
return-1
#取钱
defgetMoney(self):
cardStrInp=input('请输入卡号:')
isExist=self.isExistence(cardStrInp)
#print(isExist)
#如果卡号存在
ifisExist:
#如果没被锁定
ifnotself.allUsersInfo[cardStrInp].cardInfo.isLock:
#如果密码正确
ifself.secretOption(cardStrInp):
getMoney=int(input('请输入取款金额:'))
#如果取款金额超出余额
ifgetMoney>self.allUsersInfo[cardStrInp].cardInfo.cardMoney:
print('余额不足,取款失败!')
return-1
#余额足够的情况,取款成功
else:
self.allUsersInfo[cardStrInp].cardInfo.cardMoney-=getMoney
print('取款成功,卡上余额:%d'%self.allUsersInfo[cardStrInp].cardInfo.cardMoney)
return0
else:
print('密码输入错误超过3次,卡号已被锁定,请先解锁!')
self.allUsersInfo[cardStrInp].cardInfo.isLock=True
return-1
else:
print('该卡号已被锁定,请先解锁!')
return-1
#存钱
defsaveMoney(self):
cardStrInp=input('请输入卡号:')
isExist=self.isExistence(cardStrInp)
ifisExist:
#如果没被锁定
ifnotself.allUsersInfo[cardStrInp].cardInfo.isLock:
#如果密码正确
ifself.secretOption(cardStrInp):
saveMoney=int(input('请输入存款金额:'))
ifsaveMoney<=0:
print('无效的存款金额!')
return-1
else:
#存款成功
self.allUsersInfo[cardStrInp].cardInfo.cardMoney+=saveMoney
print('存款成功,卡内余额为%d!'%self.allUsersInfo[cardStrInp].cardInfo.cardMoney)
else:
print('密码输入错误超过3次,卡号已被锁定,请先解锁!')
self.allUsersInfo[cardStrInp].cardInfo.isLock=True
return-1
else:
print('该卡号已被锁定,请先解锁!')
return-1
#转账
deftransMoney(self):
cardInp=input('请输入卡号:')
isExist=self.isExistence(cardInp)
#卡号存在
ifisExist:
#没被锁定
ifnotself.allUsersInfo[cardInp].cardInfo.isLock:
#密码正确
ifself.secretOption(cardInp):
transCardInp=input('请输入要转账的卡号:')
isExistTrans=self.isExistence(transCardInp)
#要转账的卡号存在
ifisExistTrans:
#要转账的卡号没被锁定
ifnotself.allUsersInfo[transCardInp].cardInfo.isLock:
#要转账的卡号不是自己的卡号
iftransCardInp!=cardInp:
transMoneyInp=int(input('请输入要转账的金额:'))
#判断转账金额是否大于卡内余额
iftransMoneyInp>self.allUsersInfo[cardInp].cardInfo.cardMoney:
print('余额不足,转账失败!')
return-1
else:
self.allUsersInfo[cardInp].cardInfo.cardMoney-=transMoneyInp
self.allUsersInfo[transCardInp].cardInfo.cardMoney+=transMoneyInp
print('转账成功,卡内余额为%d!'%self.allUsersInfo[cardInp].cardInfo.cardMoney)
else:
print('无法转入自己的账户!')
return-1
else:
print('对方卡号已被锁定,无法转账,请先解锁!')
return-1
else:
print('密码输入错误超过3次,卡号已被锁定,请先解锁!')
self.allUsersInfo[cardInp].cardInfo.isLock=True
return-1
else:
print('该卡号已被锁定,请先解锁!')
return-1
#改密
defchangePwd(self):
cardStrInp=input('请输入卡号:')
isExist=self.isExistence(cardStrInp)
ifisExist:
#如果没被锁定
ifnotself.allUsersInfo[cardStrInp].cardInfo.isLock:
#如果密码正确
ifself.secretOption(cardStrInp):
#输入修改后的密码
changePwd=input('请输入新密码:')
#不允许新密码和旧密码相同
ifchangePwd!=self.allUsersInfo[cardStrInp].cardInfo.cardPwd:
myList=[3,2,1,0]
foriinmyList:
#如果密码输入错误超过三次
ifi==0:
print('确认密码错误次数超过3次,修改密码失败!')
return-1
passInp=input('请确认新密码:')
#如果新密码确认成功,则修改密码
ifpassInp==changePwd:
print('密码修改成功!')
self.allUsersInfo[cardStrInp].cardInfo.cardPwd=changePwd
return0
elif(i-1)!=0:
print('输入错误,你还有%d次输入的机会!'%(i-1))
#新密码和旧密码相同,不允许修改,提示并退出
else:
print('新密码不允许和旧密码相同!')
return-1
#密码不正确
else:
print('密码输入错误超过3次,卡号已被锁定,请先解锁!')
self.allUsersInfo[cardStrInp].cardInfo.isLock=True
return-1
else:
print('该卡号已被锁定,请先解锁!')
return-1
#解锁
defunlockUser(self):
cardStrInp=input('请输入卡号:')
isExist=self.isExistence(cardStrInp)
#存在
ifisExist:
#被锁定
ifself.allUsersInfo[cardStrInp].cardInfo.isLock:
#如果密码正确
ifself.secretOption(cardStrInp):
#输入身份证号信息做确认
idCardInp=input('请输入身份证号:')
#身份证号信息匹配
ifidCardInp==self.allUsersInfo[cardStrInp].idCard:
#解锁成功
print('解锁成功!')
self.allUsersInfo[cardStrInp].cardInfo.isLock=False
return0
else:
print('身份证号信息不匹配,解锁失败!')
return-1
#密码不正确
else:
print('密码输出错误,解锁失败!')
return-1
else:
print('该卡号未被锁定,无需解锁!')
return-1
#card.py #卡类 classCard(object): def__init__(self,cardStr,cardPwd,cardMoney): self.cardStr=cardStr#卡号 self.cardPwd=cardPwd#卡密 self.cardMoney=cardMoney#卡中余额 self.isLock=False#卡号是否被锁
#main.py
#主函数
fromviewimportView
importpickle
fromatmimportATM
importtime
defmain():
#定义管理员对象
admin=View()
#管理员登录界面
admin.printAdminView()
#如果管理员账号、密码输入错误则退出
ifadmin.adminOption():
return-1
#读取存储在文件中的所有用户的信息
file=open('database.txt','rb')
allUsersInfo=pickle.load(file)#将所有用户信息存储到allUsersInfo中去
file.close()#关闭文件
#打印所有用户信息,以便验证
print('*'*10)
print('usersInfo:',allUsersInfo)
#创建atm实例,并将所有用户信息传递过去,进行初始化
atm=ATM(allUsersInfo)
#循环进行操作选项
whileTrue:
#调用功能显示方法,显示功能选项
admin.printSysFunctionView()
#提示用户输入功能选项进行操作
option=input('请输入操作选项(数字):')
#对用户的操作选项进行判断
ifoption=="1":#开户操作
atm.createUser()
elifoption=="2":#查询余额操作
atm.searchUserInfo()
elifoption=="3":#取钱操作
atm.getMoney()
elifoption=="4":#存钱操作
atm.saveMoney()
elifoption=="5":#转账操作
atm.transMoney()
elifoption=="6":#改密码操作
atm.changePwd()
elifoption=="7":#解锁操作
atm.unlockUser()
#以下操作暂时未写
#elifoption=="q":#退出操作
##atm.quitSys()
#print('退出')
#elifoption=="9":#补卡操作
#print("补卡")
#
#elifoption=="0":#销户操作
#print("销户")
elifoption=="8":#退出系统
return0
#如果用户输入的不是上述操作
else:
print('无效的操作选项!')
return-1
#将新信息写入文件
#将当前系统中的用户信息保存到文件中
f=open('database.txt',"wb")
pickle.dump(allUsersInfo,f)
f.close()
if__name__=='__main__':
main()
#user.py #用户信息类 classUser(object): def__init__(self,name,idCard,phone,cardInfo): self.name=name#用户姓名 self.idCard=idCard#用户身份证号 self.phone=phone#用户的手机号码 self.cardInfo=cardInfo#用户的卡的信息(卡号、密码、余额)
#view.py
#视图类
importtime
classView(object):
admin='1'
pwd='1'
#管理员登录界面
defprintAdminView(self):
print("*****************************************************************")
print("**")
print("**")
print("*欢迎登陆丹丹的银行*")
print("**")
print("**")
print("*****************************************************************")
defprintSysFunctionView(self):
print("*****************************************************************")
print("*开户(1)查询(2)*")
print("*取款(3)存款(4)*")
print("*转账(5)改密(6)*")
print("*解锁(7)退出(8)*")
#print("*补卡(9)销户(0)*")
#print("*退出(t)*")
print("*****************************************************************")
defadminOption(self):
inputAdmin=input('请输入管理员账号:')
ifinputAdmin!=self.admin:
print('账号错误!')
return-1
inputPwd=input('请输入管理员密码:')
ifinputPwd!=self.pwd:
print('密码错误!')
return-1
#管理员账号和密码全部正确
print('操作成功,请稍后...')
time.sleep(2)
return0
#view=View()
#view.printAdminView()
#view.adminOption()
#view.printSysFunctionView()
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。