Python_购物商城ATM

需求:
模拟实现一个ATM+购物商城程序
1.额度1500或者自定义
2.实现购物商城,买东西加入购物车,调用信用卡接口
3.可以提现,手续费5%
4.支持账户登录
5.支持账户间转账
6.记录每日日常消费流水
7.提供还款接口
8.ATM记录操作日志
9.提供管理接口,包括添加账户,用户额度,冻结账户等
10.用户认证用装饰

  1 #Author wangmengzhu
  2 from auth import *
  3 from creditcard import *
  4 from shopping import *
  5 from user import *
  6 '''
  7 主页面列表
  8 '''
  9 def main_list():
 10     msg = ['atm','购物商城','管理系统']
 11     index = 0
 12     for i in msg:
 13         print(index + 1,i)
 14         index += 1
 15 
 16 '''
 17 atm页面列表
 18 '''
 19 def atm_list():
 20     msg = ['信用卡信息','查看信用卡流水','信用卡还款','信用卡取现','信用卡转账','信用卡绑定']
 21     index = 0
 22     for i in msg:
 23         print(index + 1,i)
 24         index += 1
 25 
 26 '''
 27 购物车列表
 28 '''
 29 def cat():
 30     msg = ['购物商城','查看购物记录','购物结算']
 31     index = 0
 32     for i in msg:
 33         print(index + 1,i)
 34         index += 1
 35 
 36 '''
 37 管理员列表
 38 '''
 39 def admin():
 40     print('冻结信用卡')
 41 
 42 '''
 43 主函数
 44 '''
 45 def main():
 46     print('购物商城atm系统'.center(20,'*'))
 47     while True:
 48         print('欢迎来到atm购物系统'.center(20,'*'))
 49         main_list()
 50         choice = input('请输入选择购物的ID号: ').strip()
 51         if choice == 'q':
 52             print('欢迎下次继续登录')
 53             exit()
 54         if choice.isdigit():
 55             choice = int(choice)
 56             if choice >= 1 and choice <= 3:
 57                 while True:
 58                     if choice == 1:
 59                         print('欢迎来到信用卡管理中心'.center(20,'*'))
 60                         atm_list()
 61                         atm_choice = input('请选择atm的ID号: ').strip()
 62                         if atm_choice.isdigit():
 63                             atm_choice = int(atm_choice)
 64                             if atm_choice >= 1 and atm_choice <= 6:
 65                                 while True:
 66                                     if atm_choice == 1:
 67                                         creditcard_data()
 68                                         break
 69                                     elif atm_choice == 2:
 70                                         look_record()
 71                                         break
 72                                     elif atm_choice == 3:
 73                                         repayment()
 74                                         break
 75                                     elif atm_choice == 4:
 76                                         take_money()
 77                                         break
 78                                     elif atm_choice == 5:
 79                                         transfer()
 80                                         break
 81                                     elif atm_choice == 6:
 82                                         link_creditcard()
 83                                         break
 84                             else:
 85                                 print('请输入正确的ID号')
 86                         else:
 87                             print('输入的ID号不是数字,请重新输入')
 88                     elif choice == 2:
 89                         print('欢迎来到购物中心'.center(20,'*'))
 90                         cat()
 91                         shopping_choice = input('请输入购物商城的ID号: ').strip()
 92                         if shopping_choice.isdigit():
 93                             shopping_choice = int(shopping_choice)
 94                             if shopping_choice >= 1 and shopping_choice <= 3:
 95                                 while True:
 96                                     if shopping_choice == 1:
 97                                         shopping_mall()
 98                                         break
 99                                     elif shopping_choice == 2:
100                                         cat_record()
101                                         break
102                                     elif shopping_choice == 3:
103                                         pay()
104                                         break
105                             else:
106                                 print('输入的ID号不正确,请重新输入')
107                         else:
108                             print('输入的ID号应该为数字')
109                     elif choice == 3:
110                         admin()
111                         admin_auth()
112                         link_creditcard()
113             else:
114                 print('请输入正确的ID号')
115         else:
116             print('输入的不是数字,请重新输入')
117 
118 main()
 1 #Author wangmengzhu
 2 #用户认证,信用卡认证,管理员认证
 3 import os
 4 import json
 5 import sys
 6 BASE_PATH = os.path.dirname(os.path.dirname(__file__))
 7 user_dic = BASE_PATH + r'/db/user_data.txt'
 8 creditcard_dic = BASE_PATH + r'/db/creditcard_data.txt'
 9 
10 '''
11 认证装饰器
12 '''
13 def auth(auth_type):
14     def out_wrapper(func):
15         if auth_type == 'user_auth':#用户认证
16             def wrapper():
17                 res = func
18                 user_name = input('请输入登录用户名:').strip()
19                 user_pwd = input('请输入登录密码: ').strip()
20                 if len(user_name) > 0:
21                     with open(user_dic,'r') as f:
22                         user_data = json.loads(f.read())
23                         if user_name in user_data.keys() and user_pwd == user_data[user_name]['password']:
24                             if user_data[user_name]['locked'] == False:
25                                 print('%s认证成功'%(user_name))
26                                 return res,user_name
27                             else:
28                                 print('%s用户已经被锁定,认证失败'%(user_name))
29                         else:
30                             print('%s用户名或密码错误,认证失败'%(user_name))
31                 else:
32                     print('输入的用户名不能为空')
33             return wrapper
34         elif auth_type == 'creditcard_auth':#信用卡认证
35             def wrapper():
36                 res = func
37                 creditcard = input('请输入你的信用卡卡号(6位数字): ').strip()
38                 password = input('请输入信用卡密码: ').strip()
39                 if creditcard:
40                     with open(creditcard_dic,'r') as f:
41                         creditcard_data = json.loads(f.read())
42                         if creditcard in creditcard_data.keys() and password == creditcard_data[creditcard]['password']:
43                             if creditcard_data[creditcard]['locked'] == False:
44                                 print('信用卡%s认证成功'%(creditcard))
45                                 return res,creditcard
46                             else:
47                                 print('信用卡%s已经被锁定'%(creditcard))
48                         else:
49                             print('信用卡%s不存在'%(creditcard))
50                 else:
51                     print('信用卡号输入错误')
52             return wrapper
53         elif auth_type == 'admin_auth':
54             def wrapper():
55                 res = func()
56                 admin_dic = {'admin':'mengzhu','password':'susu0525'}
57                 admin_name = input('请输入管理员登陆名: ').strip()
58                 admin_psd = input('请输入管理员密码: ').strip()
59                 if len(admin_name) > 0:
60                     if admin_name == admin_dic['admin'] and admin_psd == admin_dic['password']:
61                         print('管理员%s登陆成功'%(admin_name))
62                         return res,admin_name
63                     else:
64                         print('输入的管理员用户名或密码出错!')
65                 else:
66                     print('输入的用户名不能为空')
67             return wrapper
68     return out_wrapper
69 @auth(auth_type = 'user_auth')
70 def user_auth():
71     print('用户登录名认证'.center(20,'*'))
72 @auth(auth_type = 'creditcard_auth')
73 def creditcard_auth():
74     print('信用卡登陆认证'.center(20,'*'))
75 @auth(auth_type = 'admin_auth')
76 def admin_auth():
77     print('管理员登陆认证'.center(20,'*'))
78 if __name__ == '__main__':
79     user_auth()
80     creditcard_auth()
81     admin_auth()
  1 #Author wangmengzhu
  2 '''
  3 信用卡信息
  4 '''
  5 from log import get_logger
  6 import json
  7 import os
  8 BASE_PATH=os.path.dirname(os.path.dirname(__file__))
  9 
 10 '''
 11 数据库绝对路径
 12 '''
 13 user_dic = BASE_PATH + r'/db/user_data.txt'
 14 creditcard_dic = BASE_PATH + r'/db/creditcard_data.txt'
 15 # print(creditcard_dic)
 16 user_water = BASE_PATH + r'/log/water_record.txt'
 17 logger = get_logger()
 18 '''
 19 信用卡信息
 20 '''
 21 def creditcard_data():
 22     while True:
 23         with open(creditcard_dic,'r') as f:
 24             creditcard_data = json.loads(f.read())
 25             choice = input('请输入你的信用卡号:').strip()
 26             if choice in creditcard_data.keys():
 27                 print('信用卡信息'.center(20,'*'))
 28                 print('信用卡号%s,个人信息%s,额度%s,可取现额度%s,可用额度%s'%(creditcard_data[choice]['creditcard'],
 29                                                     creditcard_data[choice]['personinfo'],
 30                                                     creditcard_data[choice]['deflimit'],creditcard_data[choice]['limitcash'],
 31                                                            creditcard_data[choice]['limit']))
 32             elif choice == 'q':
 33                 print('欢迎下次继续查询!')
 34                 break
 35             else:
 36                 print('%s信用卡号不存在'%(choice))
 37 
 38 # creditcard_data()
 39 
 40 '''
 41 查看信用卡流水
 42 '''
 43 def look_record():
 44     while True:
 45         choice = input('请输入你要查看流水的信用卡号(退出q): ').strip()
 46         with open(creditcard_dic,'r') as f1:
 47             core_record = json.loads(f1.read())
 48             if choice in core_record.keys():
 49                 print('流水记录'.center(20,'*'))
 50                 with open(user_water,'r') as f:
 51                     for i in f:
 52                         if choice in i:
 53                             print(i.strip())
 54             else:
 55                 print('信用卡号不存在')
 56             if choice == 'q':
 57                 break
 58 
 59 '''
 60 信用卡还款
 61 '''
 62 def repayment():
 63     while True:
 64         print('信用卡还款'.center(20,'*'))
 65         with open(creditcard_dic,'r+') as f:
 66             creditcard_data = json.loads(f.read())
 67             choice = input('请输入还款信用卡账号,退出请输入q: ').strip()
 68             if choice == 'q':
 69                 break
 70             if choice in creditcard_data.keys():
 71                 money = input('请输入还款金额: ').strip()
 72                 password = input('请输入密码: ').strip()
 73                 if password == creditcard_data[choice]['password']:
 74                     if money.isdigit():
 75                         money = int(money)
 76                         limit = creditcard_data[choice]['limit']
 77                         limitcash = creditcard_data[choice]['limitcash']
 78                         limit = limit + money
 79                         limitcash = limitcash + money
 80                         creditcard_data[choice]['limit'] = limit
 81                         creditcard_data[choice]['limitcash'] = limitcash
 82                         dic = json.dumps(creditcard_data)
 83                         repayment_data = [str(choice),'信用卡还款',str(money)]
 84                         msg = '****'.join(repayment_data)
 85                         f.seek(0)
 86                         f.write(dic)
 87                         logger.debug(msg)
 88                         print('%s还款成功'%(choice))
 89                     else:
 90                         print('输入的信用卡号错误,信用卡号需要为数字')
 91                 else:
 92                     print('输入的密码错误')
 93             else:
 94                 print('输入的信用卡号不存在')
 95 
 96 
 97 # repayment()
 98 '''
 99 信用卡取现
100 '''
101 def take_money():
102     while True:
103         print('还款'.center(20,'*'))
104         with open(creditcard_dic,'r+') as f:
105             creditcard_data = json.loads(f.read())
106             choice = input('请输入取款的账号(退出请输入q): ').strip()
107             if choice in creditcard_data.keys():
108                 limit = creditcard_data[choice]['limit']
109                 limitcash = creditcard_data[choice]['limitcash']
110                 print('卡号%s,可取现的额度为%s'%(choice,limitcash))
111                 if limit >= limitcash:
112                     print('可取的现金为%s'%(limitcash))
113                     cash = input('请输入要取现的金额(手续费5%): ').strip()
114                     if cash.isdigit():
115                         cash = int(cash)
116                         # limitcash = limitcash - cash * 0.05
117                         if cash <= limitcash:
118                             if cash > 0:
119                                 password = input('请输入信用卡号%s密码: '%(choice)).strip()
120                                 if password == creditcard_data[choice]['password']:
121                                     limitcash = int(limitcash - cash * 0.05)
122                                     limit = int(limit - cash * 0.05)
123                                     cash_money = cash * 0.05
124                                     creditcard_data[choice]['limitcash'] = limitcash
125                                     creditcard_data[choice]['limit'] = limit
126                                     dic = json.dumps(creditcard_data)
127                                     f.seek(0)
128                                     f.write(dic)
129                                     take_money = [str(choice),'信用卡取现',str(cash),'手续费',str(cash_money)]
130                                     msg = '***'.join(take_money)
131                                     logger.debug(msg)
132                                     print('取现成功'.center(20,'*'))
133                                 else:
134                                     print('信用卡号%s输入的密码错误'%(choice))
135                             else:
136                                 print('取现的金额需要为整数')
137                         else:
138                             print('取现的额度超过信用卡额度')
139                     else:
140                         print('您已经不可以再取现了')
141             else:
142                 print('信用卡号错误')
143 
144 # take_money()
145 
146 '''
147 信用卡转账
148 '''
149 def transfer():
150     while True:
151         print('转账'.center(20,'*'))
152         with open(creditcard_dic,'r+') as f:
153             creditcard_data = json.loads(f.read())
154             choice = input('请输入信用卡账号(退出请输入q):').strip()
155             if choice == 'q':break
156             if choice in creditcard_data.keys():
157                 limit = creditcard_data[choice]['limit']
158                 transfer = input('请输入你要转账的账号: ').strip()
159                 if transfer.isdigit():
160                     if transfer in creditcard_data.keys():
161                         money = input('请输入要转账的金额: ').strip()
162                         if money.isdigit():
163                             money = int(money)
164                             my_pwd = input('请输入转账的密码: ').strip()
165                             if my_pwd in creditcard_data[transfer]['password']:
166                                 if  money <= limit:
167                                     creditcard_data[choice]['limit'] -= money
168                                     creditcard_data[choice]['limitcash'] -= money
169                                     creditcard_data[transfer]['limit'] += money
170                                     creditcard_data[transfer]['limitcash'] += money
171                                     print('转账成功'.center(20,'*'))
172                                     transfer_data =[str(choice),'信用卡转账',str(money)]
173                                     msg = '***'.join(transfer_data)
174                                     logger.debug(msg)
175                                     dic = json.dumps(creditcard_data)
176                                     f.seek(0)
177                                     f.write(dic)
178                                 else:
179                                     print('转账的金额超过限额')
180                             else:
181                                 print('信用卡密码错误')
182                         else:
183                             print('输入的金额需要为数字')
184                     else:
185                         print('输入的转账账号不存在')
186                 else:
187                     print('转账的账号出错')
188             else:
189                 print('输入的信用卡号不存在')
190 
191 # transfer()
192 
193 
194 '''
195 冻结信用卡
196 '''
197 def lock_creditcard():
198     while True:
199         print('冻结信用卡'.center(20,'*'))
200         with open(creditcard_dic,'r+') as f:
201             creditcard_data = json.loads(f.read())
202             # print(type(creditcard_data))
203             for key in creditcard_data.keys():
204                 if creditcard_data[key]['locked'] == False:
205                     print('信用卡%s未冻结'%(key))
206                 else:
207                     print('信用卡%s已经冻结'%(key))
208             choice = input('请输入要进行冻结的信用卡(请回答是或者否): ').strip()
209             if choice == '':
210                 lock_card = input('请输入要冻结的信用卡号: ').strip()
211                 if lock_card in creditcard_data.keys():
212                     if creditcard_data[lock_card]['locked'] == False:
213                         creditcard_data[lock_card]['locked'] = True
214                         dic = json.dumps(creditcard_data)
215                         f.seek(0)
216                         f.write(dic)
217                     else:
218                         print('信用卡%s已经冻结'%(lock_card))
219                 else:
220                     print('要进行冻结的信用卡不存在')
221             elif choice == '':
222                 break
223 
224 # lock_creditcard()
225 '''
226 信用卡绑定
227 '''
228 def link_creditcard():
229     while True:
230         print('信用卡绑定'.center(20,'*'))
231         with open(user_dic,'r+') as f:
232             user_data = json.loads(f.read())
233             user_name = input('请输入需要绑定的信用卡的用户名: ').strip()
234             if user_name in user_data.keys():
235                 creditcard = user_data[user_name]['creditcard']
236                 if creditcard == False:
237                     print('用户当前的账号%s'%(user_name))
238                     print('用户%s未绑定信用卡'%(user_name))
239                 else:
240                     print('用户%s已经绑定信用卡'%(user_name))
241                     break
242             creditcard_new = input('请输入您的信用卡号: ').strip()
243             if creditcard_new.isdigit() and len(creditcard_new) == 6:
244                 with open(creditcard_dic,'r+') as f1:
245                     creditcard_data = json.loads(f1.read())
246                     if creditcard_new in creditcard_data.keys():
247                         user_data[user_name]['creditcard'] = creditcard_new
248                         dict = json.dumps(user_data)
249                         f.seek(0)
250                         f.write(dict)
251                         print('信用卡%s绑定成功'%(creditcard_new))
252                     else:
253                         print('输入的信用卡号不存在')
254             else:
255                 print('输入的信用卡号不符合要求')
256 # link_creditcard()
257 
258 
259 if __name__ == '__main__':
260     creditcard_data()
261     look_record()
262     repayment()
263     take_money()
264     transfer()
265     lock_creditcard()
 1 #Author wangmengzhu
 2 import logging
 3 import os
 4 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 5 user_water = BASE_PATH + r'logwater_record.txt'
 6 print(user_water)
 7 '''
 8 日志模块
 9 '''
10 def get_logger():
11     fh = logging.FileHandler(user_water)
12     logger = logging.getLogger()
13     logger.setLevel(logging.DEBUG)
14     #写入文件中的格式
15     fm = logging.Formatter('%(asctime)s --- %(message)s')
16     logger.addHandler(fh)
17     fh.setFormatter(fm)
18     return logger
19 get_logger()
  1 #Author wangmengzhu
  2 import json
  3 import os
  4 from creditcard import link_creditcard
  5 from auth import creditcard_auth
  6 from creditcard import link_creditcard
  7 from log import get_logger
  8 BASE_PATH = os.path.dirname(os.path.dirname(__file__))
  9 '''
 10 数据库绝对路径
 11 '''
 12 shopping_car = BASE_PATH + r'/db/购物车.txt'
 13 shopping_lst = BASE_PATH + r'/db/商品列表.txt'
 14 user_water = BASE_PATH + r'/log/water_record.txt'
 15 creditcard_dic = BASE_PATH + r'/db/creditcard_data.txt'
 16 user_dic = BASE_PATH + r'/db/user_data.txt'
 17 logger = get_logger()
 18 
 19 '''
 20 购物商城
 21 '''
 22 def shopping_mall():
 23     shopping_list = []
 24     pro_list = []
 25     with open(shopping_lst,'r+') as f:
 26         for item in f:
 27             pro_list.append(item.strip('
').split())
 28     def pro_inf():
 29         for index,item in enumerate(pro_list):
 30             print('%s,%s,%s'%(index + 1,item[0],item[1]))
 31     while True:
 32         print('商店已经有的商品'.center(20,'*'))
 33         pro_inf()
 34         choice = input('请输入要购买的商品号(退出输入q): ').strip()
 35         if choice == 'q':break
 36         if choice.isdigit():
 37             choice = int(choice)
 38             if choice <= len(pro_list) and choice >= 0:
 39                 pro_item = pro_list[choice - 1]
 40                 print('商品%s加入购物车'%(pro_item[0]))
 41                 shopping_list.append(pro_item)
 42                 shopping_data = ['商品',str(pro_item[0]),'价格',str(pro_item[1])]
 43                 msg = '***'.join(shopping_data)
 44                 logger.debug(msg)
 45             else:
 46                 print('购买的商品号不存在')
 47         else:
 48             print('请输入正确的商品号')
 49 
 50 
 51 # shopping_mall()
 52 
 53 '''
 54 查看购物记录
 55 '''
 56 def cat_record():
 57     while True:
 58         with open(user_dic,'r+') as f:
 59             user_data = json.loads(f.read())
 60             choice = input('请输入你要查看购物记录的用户名: ').strip()
 61             if choice in user_data.keys():
 62                 print('购物记录'.center(20,'*'))
 63                 with open(user_water,'r') as f:
 64                     for i in f:
 65                         if choice in i:
 66                             print(i.strip())
 67             else:
 68                 print('输入的用户名不存在')
 69 
 70 # cat_record()
 71 
 72 '''
 73 购物结算
 74 '''
 75 def pay():
 76     while True:
 77         print('购物结算'.center(20,'*'))
 78         with open(shopping_car,'r+') as f:
 79             data = json.loads(f.read())
 80             if data != []:
 81                 print('购物清单'.center(20,'*'))
 82                 for index,item in enumerate(data):
 83                     print('%s,%s,%s'%(index,item[0],item[1]))
 84                 money = sum(int(i[1]) for i in data)
 85             else:
 86                 print('你还没有消费过!')
 87                 break
 88         choice = input('是否对当前购物车的商品进行结算(回答是或者否): ').strip()
 89         if choice == '':break
 90         if choice == '':
 91             creditcard_auth()
 92             user_name = input('请输入要进行结算的用户名: ').strip()
 93             with open(user_dic,'r+') as f1:
 94                 user_data = json.loads(f1.read())
 95                 if user_name in user_data.keys():
 96                     user_creditcard = user_data[user_name]['creditcard']
 97                     if user_creditcard ==False:
 98                         print('您还没有绑定信用卡,请先绑定信用卡')
 99                         link_creditcard()
100                     else:
101                         with open(creditcard_dic,'r+') as f2:
102                             creditcard_data = json.loads(f2.read())
103                             password = input('请输入支付密码: ').strip()
104                             if password == creditcard_data[user_creditcard]['password']:
105                                 limit = creditcard_data[user_creditcard]['limit']
106                                 limitcash = creditcard_data[user_creditcard]['limitcash']
107                                 limit_new = limit - money
108                                 limitcash_new = limitcash - money
109                                 if limit_new >= 0:
110                                     creditcard_data[user_creditcard]['limit'] = limit_new
111                                     creditcard_data[user_creditcard]['limitcash'] = limitcash_new
112                                     shop_data = [user_name,str(user_creditcard),'信用卡结账',str(money)]
113                                     msg = '***'.join(shop_data)
114                                     logger.debug(msg)
115                                     dict = json.dumps(creditcard_data)
116                                     f2.seek(0)
117                                     f2.write(dict)
118                                     print('支付成功')
119 
120                                 else:
121                                     print('超过支付额度')
122                             else:
123                                 print('密码错误')
124 
125                 else:
126                     print('用户名不存在')
  1 #Author wangmengzhu
  2 import os
  3 import json
  4 BASE_PATH = os.path.dirname(os.path.dirname(__file__))
  5 user_dic = BASE_PATH + r'/db/user_data.txt'
  6 user_blacklist = BASE_PATH + r'/db/黑名单.txt'
  7 '''
  8 创建新用户
  9 '''
 10 def new_user(address = 'None',locked = False,creditcard = False):
 11     while True:
 12         print('创建用户'.center(20,'*'))
 13         with open(user_dic,'r+') as f:
 14             user_data = json.loads(f.read())
 15             for key in user_data:
 16                 print('系统已经有得用户%s'%(key))
 17             choice = input('是否要创建用户(是或者否): ').strip()
 18             if choice == '':
 19                 continue
 20             if choice == '':
 21                 user_name = input('请输入你要创建得用户名: ').strip()
 22                 user_pwd = input('请输入密码: ').strip()
 23                 if user_name not in user_data.keys():
 24                     user_data[user_name] = {"status": False, "username": user_name, "password": user_pwd,
 25                                             "creditcard": creditcard, "address": address, "locked":locked }
 26                     dic = json.dumps(user_data)
 27                     # f.tell()
 28                     f.seek(0)
 29                     f.write(dic)
 30                 else:
 31                     print('用户名已经存在,请重新输入')
 32             else:
 33                 print('输入不合法,请重新输入')
 34 
 35 '''
 36 解锁用户
 37 '''
 38 def unlock_user():
 39     while True:
 40         print('解锁用户'.center(20,'*'))
 41         with open(user_dic,'r+') as f:
 42             user_data =json.loads(f.read())
 43             for key in user_data:
 44                 if user_data[key]['locked'] == False:
 45                     print('用户%s锁定状态:未锁定'%(key))
 46                 else:
 47                     print('用户%s锁定状态:已锁定'%(key))
 48             choice = input('是否要进行解锁用户(是或者否): ').strip()
 49             if choice == '':
 50                 break
 51             if choice == '':
 52                 unlock_user = input('请输入要解锁的用户名: ').strip()
 53                 if unlock_user in user_data.keys():
 54                     if user_data[unlock_user]['locked'] == True:
 55                         user_data[unlock_user]['locked'] = False
 56                         dict = json.dumps(user_data)
 57                         f.seek(0)
 58                         f.write(dict)
 59                         print('%s用户已经解锁'%(unlock_user))
 60                     else:
 61                         print('%s用户的状态没有被锁定'%(unlock_user))
 62                 else:
 63                     print('%s用户不存在'%(unlock_user))
 64 
 65 '''
 66 锁定用户
 67 '''
 68 def lock_user():
 69     while True:
 70         print('锁定用户'.center(20,'*'))
 71         with open(user_dic,'r+') as f:
 72             user_data = json.loads(f.read())
 73             for key in user_data.keys():
 74                 if user_data[key]['locked'] == False:
 75                     print('%s用户状态:没有被锁定'%(key))
 76                 else:
 77                     print('%s用户状态:已经被锁定'%(key))
 78             choice = input('是否对用户进行锁定(是或者否): ').strip()
 79             if choice == '':
 80                 break
 81             if choice == '':
 82                 lock_user = input('请输入你要进行锁定的用户名:').strip()
 83                 if lock_user in user_data.keys():
 84                     if user_data[lock_user]['locked'] == False:
 85                         user_data[lock_user]['locked'] == True
 86                         dic = json.dumps(user_data)
 87                         f.seek(0)
 88                         f.write(dic)
 89                         print('%s用户锁定成功'%(lock_user))
 90                     else:
 91                         print('%s的状态已经被锁定'%(lock_user))
 92                 else:
 93                     print('%s用户不存在'%(lock_user))
 94 
 95 '''
 96 三次锁定
 97 '''
 98 def three_lock():
 99     while True:
100         with open(user_blacklist,'r+') as f:
101             balck_user = json.loads(f.read())
102             user_name = input('请输入你的用户名: ').strip()
103             if user_name in balck_user.keys():
104                 if balck_user[user_name] == 3:
105                     print('你的%s已经在黑名单中了'%(user_name))
106                     continue
107             with open(user_dic,'r+') as f1:
108                 user_data = json.loads(f1.read())
109                 if user_name in user_data.keys():
110                     if user_data[user_name]['status'] == False:
111                         if balck_user[user_name] < 3:
112                             user_pwd = input('请用户%s输入你的登陆密码'%(user_name)).strip()
113                             if user_pwd == user_data[user_name]['password']:
114                                 user_data[user_name]['status'] = True
115                                 data = json.dumps(user_data)
116                                 f1.seek(0)
117                                 f1.write(data)
118                                 break
119                             else:
120                                 print('%s用户输入的密码错误'%(user_name))
121                                 balck_user[user_name] += 1
122                                 data = json.dumps(balck_user)
123                                 f.seek(0)
124                                 f.write(data)
125                         else:
126                             print('%s用户已经在黑名单中'%(user_name))
127                     else:
128                         print('%s用户已经在登陆状态'%(user_name))
129                 else:
130                     print('%s用户名不存在'%(user_name))
131 if __name__ == '__main__':
132     new_user(address='None', locked=False, creditcard=False)
133     lock_user()
134     three_lock()
原文地址:https://www.cnblogs.com/wangmengzhu/p/7275871.html