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