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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。