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()

时间: 2024-12-24 19:26:11

Python_购物商城ATM的相关文章

day5作业购物商城+ATM

模拟实现一个ATM + 购物商城程序 1.额度 15000或自定义 2.实现购物商城,买东西加入购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额万分之5每日计息 5,支持多账户登录 6.支持账户间转账 7.记录每月日常消费流水 8.提供还款接口 9.ATM记录操作日志 10.提供管理接口,包括添加账户.用户额度,冻结账户等...

购物商城+ATM

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

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

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

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

流程图: 需求: ATM:模拟实现一个ATM + 购物商城程序额度 15000或自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接口ATM记录操作日志提供管理接口,包括添加账户.用户额度,冻结账户等...用户认证用装饰器 程序目录结构 ../module2-ATM ├── ATM流程图.png #流畅图 ├── bin #atm执行程序目录 │   ├── ATM_start.py │   └── __init

Python学习day5作业-ATM和购物商城

Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用户间转帐 支持多用户 管理员可添加账户.指定用户额度.冻结用户等 购物车: 商品信息- 数量.单价.名称 用户信息- 帐号.密码.余额 用户可充值 购物历史信息 允许用户多次购买,每次可购买多件 余额不足时进行提醒 用户退出时 ,输出当次购物信息 用户下次登陆时可查看购物历史 商品列表分级显示 1

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

额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款接口 ATM记录操作日志 提供管理接口,包括添加账户.用户额度,冻结账户等... 用户认证用装饰器

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

作业需求: 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息 5.支持多账户登录 6.支持账户间转账 7.记录每月日常消费流水 8.提供还款接口 9.ATM记录操作日志 10.提供管理接口,包括添加账户.用户额度,冻结账户等 11.用户认证用装饰器 ATM交易中心: def make_transaction(arg, tran_type, amoun

python基础作业------模拟实现一个ATM + 购物商城程序

模拟实现一个ATM + 购物商城程序 作业需求: 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款接口 ATM记录操作日志 提供管理接口,包括添加账户.用户额度,冻结账户等... 用户认证用装饰器 ## ATM信用卡购物模拟程序 ### 作者介绍: * author:高原 ### 功能介绍: 模拟实现一

Python开发程序:ATM+购物商城

一.需求 1.模拟实现一个ATM + 购物商城程序 1).实现功能 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息 5.支持多账户登录 6.支持账户间转账 7.记录每月日常消费流水 8.提供还款接口 9.ATM记录操作日志 10.提供管理接口,包括添加账户.用户额度,冻结账户等... 11.用户认证用装饰器 二.程序code 程序说明: ## AT