简易银行系统,学习Python需要走的必经之路— _ —
简易的银行系统1、需要分好创建的类,简易的银行系统分为五大块:用户的类、银行卡的类、管理的类、bank操作的类、atm类。(最好分五个文件创建 这样看着清楚好操作。)2、分好类后确定每个类的属性和方法(函数)下面就是各种源代码:### 用户类:importosimport pickleclass User():def __init__(self,name,uid,car...
·
简易的银行系统
1、需要分好创建的类,简易的银行系统分为五大块:用户的类、银行卡的类、管理的类、bank操作的类、atm类。(最好分五个文件创建 这样看着清楚好操作。)
2、分好类后确定每个类的属性和方法(函数)
下面就是各种源代码:
### 用户类:
import os
import pickle
class User():
def __init__(self,name,uid,card):
self.uid = uid # 身份证
self.name = name #用户名
self.card = card # 银行卡
def __str__(self):
return "姓名{},身份证{},卡号{},密码{}".format(self.name,self.uid,self.card.cid,self.card.pwd)
### 将用户对象保存到文件中
@staticmethod
def save_user(userinfo):
pathname = os.path.join(os.getcwd(),'userinfo.db')
with open(pathname,'wb') as fp:
pickle.dump(userinfo,fp)
### 从文件中取出用户对象
@staticmethod
def load_user():
pathname = os.path.join(os.getcwd(),'userinfo.db')
if os.path.exists(pathname):
with open(pathname,'rb') as fp:
userinfo = pickle.load(fp)
return userinfo
else:
return {}
print(os.getcwd())
#银行卡的类
class Card():
def __init__(self,cid,pwd):
self.cid= cid # 卡号
self.pwd = pwd # 密码
self.money = 0 # 余额
self.is_lock = False # 是否锁定
# 管理的类
class Admin():
def __init__(self,admin='1',password='1'):
self.admin = admin
self.password = password
## 显示欢迎页面
def welcome(self):
print("*"*30)
print(" "*6+"欢迎使用锐士银行")
print("*"*30)
## 登录界面
def login(self):
admin = input("请输入管理员账号:")
password = input("请输入管理员密码:")
if admin == '1' and password == '1':
return True
return False
## 操作菜单
def menu(self):
print("*" * 30)
print("开户[1] 销户[2] 查询[3] 存款[4]")
print("取款[5] 转账[6] 改密[7] 锁定[8]")
print("解锁[9] 退出[0] 显示所有用户[10]")
print("*" * 30)
#bank操作的类
from user import User
from admin import Admin
from atm import Atm
if __name__ == "__main__":
## 创建管理员对象
admin = Admin()
count = 0
while True:
#展示欢迎页面
admin.welcome()
# 展示登录页面
ret = admin.login()
if ret:
print('登陆成功')
userinfo = User.load_user()
# 创建atm对象
atm = Atm(userinfo)
#定义变量(为了彻底退出while循环)
is_quit = False
while True:
# 显示操作菜单
admin.menu()
num = int(input('请输入你的操作:'))
if num == 0:
print('彻底退出')
is_quit = True
break
elif num == 1:
atm.new_user()
elif num ==2:
atm.del_user()
elif num ==3:
atm.query_money()
elif num ==4:
atm.save_money()
elif num ==5:
atm.get_money()
elif num ==6:
atm.pass_money()
elif num ==7:
atm.change_pwd()
elif num ==8:
atm.lock_user()
elif num ==9:
atm.unlock_user()
elif num ==10:
atm.show_user()
if is_quit:
break
else:
print('账号或者密码错误')
count += 1
if count >2:
print('密码错误达到上限,禁止登陆')
break
ATM操作的类
from user import User
from card import Card
from 随机生成卡号和md5加密 import Help
class Atm():
def __init__(self,userinfo = {}):
self.userinfo = userinfo
def new_user(self):
name = input("请输入用户名:")
uid = input("请输入身份证:")
pwd = input("请输入密码:")
# 可以对密码加密(让密码更安全 需要用到加密模块 我会放在最后给出源代码 可以选择是否加密)
# pwd = Help.generate_password(pwd)
# 生成卡号
cid = Help.generate_cid()
card = Card(cid,pwd)
user = User(name,uid,card)
#将用户信息添加到字典里
self.userinfo[cid] = user
#保存所有用户信息
User.save_user(self.userinfo)
print("开户成功")
def del_user(self):
cid = input("请输入你的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print('该卡被锁定,请先解锁')
return
count = 0
while count < 2:
pwd = input("请输入你的密码:")
if pwd == user.card.pwd: #if Help.check_password(pwd,user.card.pwd):
del self.userinfo[cid]
User.save_user(self.userinfo)
print('销户成功')
break
else:
count+=1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误超过上限,改卡被冻结")
else:
print("该卡号不存在")
def query_money(self):
cid = input("请输入你的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡已锁定,请先解锁")
print("您的余额:¥{}".format(user.card.money))
else:
print("该卡号不存在")
def save_money(self):
cid = input("请输入你的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("请解锁")
return
count = 0
while count < 3:
pwd = input("请输入密码:")
if pwd == user.card.pwd :
money = int(input("请输入金额:"))
user.card.money += money
User.save_user(self.userinfo)
print("存款成功")
break
else:
count += 1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误超过上限,已冻结")
else:
print("该卡号不存在")
def get_money(self):
cid = input("请输入您的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡被冻结,请解锁")
return
count = 0
while count < 3:
pwd =input("请输入你的密码")
if pwd == user.card.pwd:
money = int(input("请输入你要取得金额"))
if money < user.card.money :
user.card.money -= money
User.save_user(self.userinfo)
print("取款成功,余额:{}".format(user.card.money))
break
else:
print("余额不足,请充值")
else:
count+=1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误炒作上限,改卡被冻结")
else:
print("该卡号不存在或者输入错误")
def pass_money(self):
cid = input("请输入您的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡被冻结,请解锁")
return
count = 0
while count < 3:
pwd =input("请输入你的密码")
if pwd == user.card.pwd:
dt_cid = input("请输入转账账号:")
dt_user = self.userinfo.get(dt_cid)
if dt_cid:
money = int(input("请输入转账金额:"))
if money < user.card.money:
user.card.money -= money
dt_user.card.money += money
User.save_user(self.userinfo)
print("转账成功")
break
else:
print("余额不足")
else:
print("收款人卡号错误")
else:
count+=1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误炒作上限,改卡被冻结")
else:
print("该卡号不存在或者输入错误")
def change_pwd(self):
cid = input("请输入您的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡被冻结,请解锁")
return
count = 0
while count < 3:
pwd =input("请输入你的密码")
if pwd == user.card.pwd:
new_pwd = input("请输入新密码:")
user.card.pwd = new_pwd
User.save_user(self.userinfo)
print("修改成功")
break
else:
count+=1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误炒作上限,改卡被冻结")
else:
print("该卡号不存在或者输入错误")
def lock_user(self):
cid = input("请输入您的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡被冻结,请解锁")
return
count = 0
while count < 3:
pwd = input("请输入你的密码")
if pwd == user.card.pwd:
user.card.is_lock = True
User.save_user(self.userinfo)
print("冻结成功")
break
else:
count += 1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误炒作上限,改卡被冻结")
else:
print("该卡号不存在或者输入错误")
def unlock_user(self):
cid = input("请输入您的卡号:")
user = self.userinfo.get(cid)
if user:
if user.card.is_lock:
print("改卡被冻结,请解锁")
return
count = 0
while count < 3:
pwd = input("请输入你的密码")
if pwd == user.card.pwd:
user.card.is_lock = False
User.save_user(self.userinfo)
print("解冻成功")
break
else:
count += 1
print("密码错误")
else:
user.card.is_lock = True
User.save_user(self.userinfo)
print("密码错误炒作上限,改卡被冻结")
else:
print("该卡号不存在或者输入错误")
def show_user(self):
for user in self.userinfo:
print(self.userinfo[user])
上面我提到的密码加密情况可以根据自得需要来决定:如果不需要加密直接在后面的判断密码代码里直接判断 : if pwd == user.card.pwd:。如果需要加密,在后面判断密码的代码需要改变判断:if Help.check_password(pwd,user.card.pwd):
#随机的银行卡号 和 md5加密 和 解密
from random import randint
import hashlib
class Help():
@staticmethod
#生成随机银行卡号
def generate_cid(length=8):
cid =''
for i in range(length):
cid += str(randint(0,9))
return cid
# 生成md5加密后的内容
@staticmethod
def generate_password(password):
# 创建一个md5对象
m = hashlib.md5()
#设置加密原始内容
m.update(password.encode('utf-8'))
# 返回加密后的字符串
return m.hexdigest()
# 校验使用md5加密的密码
@staticmethod
def check_password(pwd,pwd_hash):
m = hashlib.md5()
m.update(pwd.encode('utf-8'))
return m.hexdigest == pwd_hash
if __name__ == "__main__":
print(Help.generate_password('123456'))
更多推荐
已为社区贡献1条内容
所有评论(0)