我是靠谱客的博主 悦耳长颈鹿,这篇文章主要介绍用Python开发一个银行系统,现在分享给大家,希望可以做个参考。

因为类比较多,写在一个页面非常不方便,可以分成几个文件来写。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
card.py 文件 # 银行卡类 class Card: def __init__(self, cid, pwd): self.cid = cid # 卡号 self.pwd = pwd # 密码 self.money = 0 # 金额 self.is_lock = False # 是否锁定

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
user.py 文件 import os import pickle # 用户类 class User: def __init__(self, uid, name, card): self.uid = uid # 身份证 self.name = name # 姓名 self.card = card # 银行卡 def __str__(self): return '姓名:{},身份证:{},卡号:{}'.format(self.name, self.uid, self.card.cid) # 将用户信息序列化存储 @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 return {}

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
admin.py 文件 # 管理员类 class Admin: def __init__(self, account='admin', password='123456'): self.account = account self.password = password # 显示欢迎信息 def welcome(self): print('*' * 30) print(' ' * 5 + '欢迎使用XX银行管理系统') print('*' * 30) # 登录页面 def login(self): account = input('请输入账号:') password = input('请输入密码:') if account == self.account and password == self.password: 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)

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
help.py import hashlib from random import randint # 助手函数类 class Helper: # 生成银行卡号 @staticmethod def generate_cid(length=8): cid = '' for i in range(length): cid += str(randint(0, 9)) return cid # 加密密码 @staticmethod def generate_password_hash(password): # 创建加密对象 m = hashlib.md5() # 设置加密字符串 m.update(password.encode('utf-8')) # 返回加密字符串 return m.hexdigest() # 检验密码 @staticmethod def check_password_hash(pwd, pwd_hash): m = hashlib.md5() m.update(pwd.encode('utf-8')) return m.hexdigest() == pwd_hash

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
operate.py from user import User from card import Card from help import Helper # 操作类 class Operate: def __init__(self, userinfo={}): # 用户存放所有的用户信息 self.userinfo = userinfo # 开户 def new_user(self): name = input('请输入姓名:') uid = input('请输入身份证:') pwd = input('请输入密码:') # 密码加密 pwd = Helper.generate_password_hash(pwd) # 生成随机卡号 cid = Helper.generate_cid() # 创建银行卡 card = Card(cid, pwd) # 创建用户 user = User(uid, name, card) # 保存用户信息 self.userinfo[cid] = user # 保存用户信息到文件 User.save_user(self.userinfo) print('开户成功') # 销户 def del_user(self): print('销户成功') # 查询 def query_money(self): cid = input('请输入您的卡号:') user = self.userinfo.get(cid) if user: print('您的余额为:', user.card.money) else: print('无效的卡号') # 转账 def transfer_money(self): cid = input('请输入您的卡号:') user = self.userinfo.get(cid) if user: dst_cid = input('请输入对方卡号:') dst_user = self.userinfo.get(dst_cid) if dst_user: money = float(input('请输入转账金额:')) # 判断余额是否充足 if user.card.money < money: print('余额不足,转账失败') return pwd = input('请输入密码:') if Helper.check_password_hash(pwd, user.card.pwd): user.card.money -= money dst_user.card.money += money User.save_user(self.userinfo) print('转账成功') else: print('密码有误,转账失败') else: print('无效的卡号') 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 Helper.check_password_hash(pwd, user.card.pwd): money = input('请输入您的存款金额:') user.card.money += float(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): print('取款成功') # 改密 def change_pwd(self): print('密码修改成功') # 锁定 def lock_user(self): print('用户锁定') # 解锁 def unlock_user(self): cid = input('请输入卡号:') user = self.userinfo.get(cid) if user: user.card.is_lock = False User.save_user(self.userinfo) print('解锁成功') else: print('无效的卡号') # 显示所有用户信息 def show_users(self): for user in self.userinfo.values(): print(user)

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
bank.py from user import User from admin import Admin from operate import Operate if __name__ == '__main__': # 记录管理员登录失败次数,若达到3次则直接结束 count = 0 # 创建管理员对象 admin = Admin() while True: # 显示欢迎页面 admin.welcome() # 登录检查 ret = admin.login() if ret: # 记录是否退出 is_quit = False # 先从文件中加载用户信息 userinfo = User.load_user() # 创建操作对象 op = Operate(userinfo) while True: # 显示操作菜单 admin.menu() # 获取用户的操作 num = int(input('请选择操作:')) if num == 0: print('退出') is_quit = True break elif num == 1: op.new_user() elif num == 2: op.del_user() elif num == 3: op.query_money() elif num == 4: op.save_money() elif num == 5: op.get_money() elif num == 6: op.transfer_money() elif num == 7: op.change_pwd() elif num == 8: op.lock_user() elif num == 9: op.unlock_user() elif num == 10: op.show_users() else: print('操作代号有误,请重新输入') if is_quit: break else: print('账户或密码有误,登录失败') count += 1 if count >= 3: print('错误已达上限,禁止登录') break print('OVER')

通过这6个文件,一个简单的银行系统就做好了,里面有些功能自己填充即可。

最后

以上就是悦耳长颈鹿最近收集整理的关于用Python开发一个银行系统的全部内容,更多相关用Python开发一个银行系统内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部