python实现银行实战系统
本文实例为大家分享了python实现银行实战系统的具体代码,供大家参考,具体内容如下
先附上源代码:
│admin.py 管理员界面
│alluser.txt 保存用户信息
│atm.py 银行的各部分操作方法(存钱取钱等等)
│card.py 定义卡的类
│main.py 主程序whileTrue
│user.py 用户的类
main.py的源代码
""" 人 类名:User 属性:姓名身份证号电话号卡 行为: 卡 类名:Card 属性:卡号密码余额 行为: 提款机 类名:ATM 属性:用户字典 行为:开户查询取款存款转账改密锁定解密补卡销户退出 管理员 类名:Admin 属性: 行为:管理员界面管理员验证系统功能界面 """ importos importpickle importadmin fromatmimportATM defmain(): #管理员对象 admin1=admin.Admin() #管理员开机 admin1.printAdminView() ifadmin1.adminOption(): return-1 #提款机对象 filepath=os.path.join(os.getcwd(),"alluser.txt") f=open(filepath,"rb") allUsers=pickle.load(f) f.close() atm=ATM(allUsers) whileTrue: admin1.printFunctionView() #等待用户的操作 option=input("请输入您的操作:") ifoption=="1"oroption=="开户": atm.creatUser() elifoption=="2"oroption=="查询": atm.searchUserInfo() elifoption=="3"oroption=="取款": atm.withdrawals() elifoption=="4"oroption=="存款": atm.saveMoney() elifoption=="5"oroption=="转账": atm.transferMoney() elifoption=="6"oroption=="改密": atm.changePasswd() elifoption=="7"oroption=="锁定": atm.lockUser() elifoption=="8"oroption=="解锁": atm.unlockUser() elifoption=="9"oroption=="补卡": atm.newCard() elifoption=="0"oroption=="销户": atm.killUser() elifoption=="t"oroption=="退出": ifnotadmin1.adminOption(): #将当前系统中的用户信息保存到文件中 f=open(filepath,"wb") pickle.dump(atm.allUsers,f,2) f.close() return-1 else: print("指令错误,请重新输入!!") admin.timeFlush() if__name__=='__main__': main()
admin.py的源代码
importtime deftimeFlush(): sum=2#设置倒计时时间 timeflush=0.25#设置屏幕刷新的间隔时间 foriinrange(0,int(sum/timeflush)): list=["\\","|","/","—"] index=i%4 print("\r操作成功!请稍等{}".format(list[index]),end="") time.sleep(timeflush) classAdmin(object): admin="1" passwd="1" defprintAdminView(self): print("*****************************************************************") print("**") print("**") print("*欢迎登录csdn银行*") print("**") print("**") print("*****************************************************************") defprintFunctionView(self): print("\r*****************************************************************") print("*开户(1)查询(2)*") print("*取款(3)存款(4)*") print("*转账(5)改密(6)*") print("*锁定(7)解锁(8)*") print("*补卡(9)销户(0)*") print("*退出(t)*") print("*******************************************************************") defadminOption(self): inputAdmin=input("请输入管理员账号:") ifself.admin!=inputAdmin: print("账号输入有误!!") return-1 inputPasswd=input("请输入管理员密码:") ifself.passwd!=inputPasswd: print("密码输入有误!!") return-1 #能执行到这里说明账户密码正确!! timeFlush() return0
user.py的源代码
classUser(object): def__init__(self,name,idCard,phone,card): self.name=name self.idCard=idCard self.phone=phone self.card=card
card.py的源代码
classCard(object): def__init__(self,cardId,cardPasswd,cardMoney): self.cardId=cardId self.cardPasswd=cardPasswd self.cardMoney=cardMoney self.cardLock=False
atm.py的源代码
importrandom fromcardimportCard fromuserimportUser classATM(object): def__init__(self,allUsers): self.allUsers=allUsers #开户 defcreatUser(self): #向用户字典中添加一对键值对(卡号--用户) name=input("请输入您的姓名:") idCard=input("请输入您的身份证号码:") phone=input("请输入您的电话号码:") prestoreMoney=int(input("请输入预存储金额:")) ifprestoreMoney<0: print("预存储金额有误!!开户失败") return-1 onePasswd=input("请设置密码:") #验证密码 ifnotself.checkPasswd(onePasswd): print("密码输入错误!!开户失败") return-1 #生成随机的卡号 cardId=self.randomCardId() #生成卡的信息 card=Card(cardId,onePasswd,prestoreMoney) #生成用户信息 user=User(name,idCard,phone,card) #存到字典里面 self.allUsers[cardId]=user print("您的卡号是%s,请牢记卡号!!"%cardId) #查询 defsearchUserInfo(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 print("账号:%s余额:%d"%(user.card.cardId,user.card.cardMoney)) #取款 defwithdrawals(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 #进行到这一步说明卡号信息都正确,进行取款操作 theMoney=int(input("请输入您需要取款的金额:")) iftheMoney>user.card.cardMoney: print("余额不足!!") return-1 eliftheMoney<0: print("您输入金额有误!!") else: user.card.cardMoney-=theMoney print("取款成功!!余额为:%d"%user.card.cardMoney) #存款 defsaveMoney(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 #进行到这一步说明卡号信息都正确,进行存款操作 theMoney=int(input("请输入您需要存款的金额:")) iftheMoney<0: print("您输入金额有误!!") else: user.card.cardMoney+=theMoney print("存款成功!!余额为:%d"%user.card.cardMoney) #转账 deftransferMoney(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 #到这里说明卡号信息正确,进行转账操作 theOtherCardId=input("请输入您需要转账的卡号:") #验证是否存在该卡号 otheruser=self.allUsers.get(theOtherCardId) ifnototheruser: print("该卡号不存在!!转账失败") return-1 ifotheruser.card.cardLock: print("该卡已被锁定!!") return-1 theOtherCardName=input("请输入您需要转账人的姓名:") #验证转账人的姓名是否正确 ifotheruser.name!=theOtherCardName: print("转账人姓名输入错误") return-1 print("您的账户为%s您的余额为%d"%(user.card.cardId,user.card.cardMoney)) #开始转账 theMoney=int(input("请输入您需要转账的金额:")) iftheMoney<0: print("您输入金额有误!!") else: user.card.cardMoney-=theMoney otheruser.card.cardMoney+=theMoney print("转账成功!!您的余额为%d"%user.card.cardMoney) return-1 #改密 defchangePasswd(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 #下面进行改密操作 newPasswd=input("请输入新密码:") ifnewPasswd==user.card.cardPasswd: print("新旧密码不能一致!!操作失败") return-1 #验证密码 ifnotself.checkPasswd(newPasswd): print("密码输入错误!!") return-1 user.card.cardPasswd=newPasswd print("密码修改成功!!请牢记您的密码") #锁定 deflockUser(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!输入错误") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后再使用其他功能") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!锁定失败") return-1 tempIdCard=input("请输入您的身份证号码") iftempIdCard!=user.idCard: print("身份证输入错误!!锁定失败") return-1 #进行到这一步说明信息输入成功,锁定开始 user.card.cardLock=True print("锁定成功") #解锁 defunlockUser(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!输入错误") return-1 ifnotuser.card.cardLock: print("该卡没有被锁定!!无需解锁") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!锁定失败") return-1 tempIdCard=input("请输入您的身份证号码") iftempIdCard!=user.idCard: print("身份证输入错误!!锁定失败") return-1 #进行到这一步说明信息输入成功,解锁开始 user.card.cardLock=False print("解锁成功") #补卡 defnewCard(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 CardName=input("请输入您的姓名:") #验证姓名是否正确 ifuser.name!=CardName: print("姓名输入错误!!") return-1 useridCard=input("请输入您的身份证号码:") #验证身份证是否正确 ifuser.idCard!=useridCard: print("身份证号码输入错误!!") return-1 #进行到这一步说明信息都正确,下面进行补卡操作,只换卡号,其他信息都不换 newIdCard=self.randomCardId() self.allUsers[newIdCard]=self.allUsers.pop(user.card.cardId) user.card.cardId=newIdCard print("您的新卡号为:%s请牢记!!"%user.card.cardId) #销户 defkillUser(self): cardNum=input("请输入您的卡号:") #验证是否存在该卡号 user=self.allUsers.get(cardNum) ifnotuser: print("该卡号不存在!!查询失败") return-1 ifuser.card.cardLock: print("该卡已被锁定!!请解锁后在进行其他操作!") return-1 #验证密码 ifnotself.checkPasswd(user.card.cardPasswd): print("密码输入错误!!该卡已被锁定!!请解锁后在进行其他操作!") user.card.cardLock=True return-1 CardName=input("请输入您的姓名:") #验证姓名是否正确 ifuser.name!=CardName: print("姓名输入错误!!") return-1 useridCard=input("请输入您的身份证号码:") #验证身份证是否正确 ifuser.idCard!=useridCard: print("身份证号码输入错误!!") return-1 answer=input("请问您确定要销户吗?确定(1)取消(2)") ifanswer=="1"oranswer=="确定": delself.allUsers[cardNum] print("已销户") return-1 elifanswer=="2"oranswer=="取消": print("取消成功!!") return-1 else: print("输入错误!!") return-1 #验证密码 defcheckPasswd(self,realPasswd): foriinrange(3): tempPasswd=input("请再次输入密码:") iftempPasswd==realPasswd: returnTrue returnFalse defrandomCardId(self): whileTrue: str="" foriinrange(6): #随机生成一个数字 ch=chr(random.randrange(ord("0"),ord("9")+1)) str+=ch #判断是否重复 ifnotself.allUsers.get(str): returnstr
alluser.txt源代码
�}qX123456qcuser User q)�q}q(XnameqX1qXidCardqhXphoneqhXcardqccard Card q )�q}q(XcardIdq hX cardPasswdqhXcardMoneyqKXcardLockq�ububs.
因为运用pickle库,要持久化存储用户信息(字典),故打开读取写入会乱码,第一排中的123456是卡号,其他信息全部是1,不要试图pycharm中修改这个allUsers。txt文件,否则会产生无法启动程序的bug,这个笔者也不知道该如何改进乱码现象,希望读者能优化
如果遇到因为alluser.txt而无法运行的情况:请往下看:
因为pickle库的原因,开始我们是要读取这个文件的,读的到程序顺利,读不到程序凉凉,故我们必须要在alluser.txt里面有pickle库可以识别的源代码。如果您是在pycharm里面复制粘贴的因为alluser.txt代码,故pycharm会自动转化为utf-8或者其他
我们要先把alluser.txt删除,让pickle库先不读取,创建一个空字典,我们先开户,然后退出程序是会自动创建一个新的alluser.txt文件,会把我们刚刚创建好的用户信息全部保存在txt文件中,这样我们再恢复,达到持久化保存的目的
filepath=os.path.join(os.getcwd(),"alluser.txt") #把之前的给注释掉,不让程序读取 #f=open(filepath,"rb") #allUsers=pickle.load(f) #f.close() #创建一个新的空字典 allUsers={} atm=ATM(allUsers)
然后我们进行开户操作,最后退出,会自动创建一个全新的alluser.txt文件
filepath=os.path.join(os.getcwd(),"alluser.txt") f=open(filepath,"rb") allUsers=pickle.load(f) f.close() #然后我们恢复它 #allUsers={} atm=ATM(allUsers)
ok,完成了
运行结果:
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。