Python_购物商城ATM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\\log\\water_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(\\n).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()

 














以上是关于Python_购物商城ATM的主要内容,如果未能解决你的问题,请参考以下文章

Python_购物商城ATM

Python__模拟实现一个ATM+购物商城程序

6_python之路之atm购物

python实例_模拟ATM取款机+购物商城

python练习_购物车(简版)

python 改良购物车