python实现银行管理系统
python实现银行管理系统,供大家参考,具体内容如下
有的地方用的方法的比较复杂,主要是为回顾更多的知识
test1用来存类和函数
#test1.py
importrandom#用来随机产生卡号
importpickle#序列化,用来存放和取出产生的用户数据
importos#产生文件
importre#正则表达式,用来判断身份证和手机号,其他地方也可以使用
classCard:
def__init__(self,cardId,password,money=0):
self.cardId=cardId
self.password=password
self.money=money
classUser(Card):
def__init__(self,username,phone,uid,card):
self.username=username
self.phone=phone
self.uid=uid
self.user_card=card#User继承Card对象
classBank(User):#Bank继承User,Bank是序列化的对象,所以将其变为字典
def__init__(self,user):
self.cardId=user.user_card.cardId
self.user=user
self.users={self.cardId:self.user}#键,卡号:值,User对象
defgenerate_cardid():#方法一产生卡号
list=[]
foriinrange(0,11):
n=random.randint(0,9)
n=str(n)
list.append(n)
#str="".join(list)
returnlist
#generate_cardid()
#user_cardId=input("请输入您的账号:")
defcreate_user():#方法2:开户
whileTrue:
uid=input("请输入身份证:")
realut=re.fullmatch("\d{17}[\d,X]",uid)#正则判断身份证是否合理
ifrealut:
uid=realut.group()
break
else:
print("格式不合法")
continue
username=input("请输入姓名:")
whileTrue:
phone=input("请输入手机号码:")
realut=re.fullmatch("1\d{10}",phone)#正则判断手机号是否合理,其他需要判断的地方都可以判断,我就不再使用了
ifrealut:
phone=realut.group()
#print(phone)
break
else:
print("格式不合法")
continue
list=generate_cardid()#得到卡号列表
cardId="".join(list)#将卡号变成字符串,字符串的卡号才能做成键
print(f"您的卡号为:{cardId}")
whileTrue:
password1=input("请输入密码:")
password2=input("再次输入密码确认:")
ifpassword1==password2:
password=password1
break
else:
print("两次密码不同,请重新输入!")
continue
card=Card(cardId,password)
user=User(uid,username,phone,card)
bank=Bank(user)#产生bank对象
withopen(f"data\\{cardId}.txt","ab")asfile_w:#重点:创建一个文件夹data来存放产生的bank对象,每个对象根据卡号产生一个txt文件,用来存放用户的所有数据
pickle.dump(bank,file_w)#将bank序列化保存到文档中
#create_user()
defuser_login(user_cardId):#登录
ifos.path.exists(f"data\\{user_cardId}.txt"):
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)#根据卡号取出txt文档,反序列化取出数据
ifu_data.cardId==user_cardId:#u_data是一个字典,键是卡号,值是user对象
n=1
whileTrue:
ifn<=3:
user_pw=input("请输入密码:")
ifu_data.user.user_card.password==user_pw:
returnTrue
else:
print("密码错误!")
n+=1
continue
else:
print("三次输入密码错误!")
return
else:
print("没有该用户")
#user_login(user_cardId)
defsave_money(user_cardId):#方法4:存钱
ifuser_login(user_cardId):#如果登录成功
money=int(input("请您输入存钱金额:"))
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)
u_data.user.user_card.money=u_data.user.user_card.money+money
print("您的余额为:",u_data.user.user_card.money)
withopen(f"data\\{user_cardId}.txt","wb")asfile_w:#这里要用wb,而不是ab,改变数据后,需要覆盖原来的数据,而不是添加
pickle.dump(u_data,file_w)
#save_money()
defwithdraw_money(user_cardId):#方法5:取钱
ifuser_login(user_cardId):
money=int(input("请您输入取款金额:"))
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)
ifmoney>u_data.user.user_card.money:
print("余额不足")
else:
u_data.user.user_card.money=u_data.user.user_card.money-money
print("您的余额为:",u_data.user.user_card.money)
withopen(f"data\\{user_cardId}.txt","wb")asfile_w:
pickle.dump(u_data,file_w)
#withdraw_money()
deftransfer_accounts(user_cardId):#方法6,转账
ifuser_login(user_cardId):
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)
whileTrue:
money=int(input("请您转账取款金额:"))
ifmoney>u_data.user.user_card.money:
print("余额不足")
break
else:
cardId=int(input("请您对方卡号:"))
ifos.path.exists(f"data\\{cardId}.txt"):#如果对方卡号存在
u_data.user.user_card.money=u_data.user.user_card.money-money#自己的money减
print("您的余额为:",u_data.user.user_card.money)
withopen(f"data\\{user_cardId}.txt","wb")asfile_w:
pickle.dump(u_data,file_w)
withopen(f"data\\{cardId}.txt","rb")asfile_r1:#根据对方的卡号进行查找对方的数据
u_data1=pickle.load(file_r1)
withopen(f"data\\{cardId}.txt","wb")asfile_w1:
u_data1.user.user_card.money=u_data1.user.user_card.money+money#对方money加
pickle.dump(u_data1,file_w1)
print("转账成功")
break
else:
print("该用户不存在")
break
#transfer_accounts()
defselect_user(user_cardId):#方法7:查询余额
ifuser_login(user_cardId):
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)
print("您的余额为:",u_data.user.user_card.money)
#select_user()
defupdate_password(user_cardId):#方法8:修改密码
ifuser_login(user_cardId):
whileTrue:
pw1=input("请输入新密码:")
pw2=input("请再次输入密码:")
ifpw1==pw2:
withopen(f"data\\{user_cardId}.txt","rb")asfile_r:
u_data=pickle.load(file_r)
u_data.user.user_card.password=pw1
withopen(f"data\\{user_cardId}.txt","wb")asfile_w:
pickle.dump(u_data,file_w)
break
else:
print("两次密码不相同")
continue
test2用来调用test1中的函数
importtest1
importos
T=True
whileTrue:
user_cardId=input("请输入您的账号,退出请按0,注册请按1:\n")
ifos.path.exists(f"data\\{user_cardId}.txt"):
true=True
whiletrue:
x=input("[2]查询余额[3]取款[4]存钱[5]转账[6]修改密码[7]退出系统\n"
"请选择需要的操作输入对应的数字:"
ifx=="2":#键盘输入默认是str类型
test1.select_user(user_cardId)
continue
elifx=="3":
test1.withdraw_money(user_cardId)
continue
elifx=="4":
test1.save_money(user_cardId)
continue
elifx=="5":
test1.transfer_accounts(user_cardId)
continue
elifx=="6":
test1.update_password(user_cardId)
continue
elifx=="7":
true=False
else:
print("没有对应操作")
continue
elifuser_cardId=="0":
print("欢迎再次使用")
break
elifuser_cardId=="1":
test1.create_user()
continue
else:
print("没有该账户")
T=True
whileT:
num=input("需要注册账号请按1,退出注册服务请按0:")
ifnum=="1":
test1.create_user()
elifnum=="0":
print("欢迎再次使用")
T=False
break
else:
print("没有对应操作")
continue
break
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。