1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
|
'''
用户视图层
'''
from interface import user_interface, bank_interface, shop_interface
from lib import common
from core import admin
# 1、注册功能
'''def register():
while True:
# 1 让用户输入用户名称和密码进行校验
username = input('请输入用户:').strip()
if username.strip()=='':
print("请输入正确的用户名")
continue
user_path = os.path.join(setting.USER_DATE, f"{username}.json")
if os.path.exists(user_path):
print(f"您输入的用户名:{username}已经存在")
continue
password = input("请输入密码:").strip()
re_password = input("请确认密码:").strip()
# 判断密码是否一致
if password == re_password:
# 2 查看用户是否存在
# 3 如用户存在,则让用户重新输入
# 4 如用户不存在,则保存用户数据
# 4.1 组织用户的数据的字典信息
user_dic = {
'username': username,
'password': password,
'balance': 15000,
# 用于记录用户的流水类表
'flow': [],
# 用于记录用户购物车
'shop_car': [],
# locaked :用于记录用户是否冻结
# false:未冻结 True:已经被冻结
'locaked': False
}
# 用户数据tank.json
user_path = os.path.join(setting.USER_DATE, f"{username}.json")
with open(user_path, 'w', encoding='utf-8') as f:
json.dump(user_dic, f)
else:
print('您的两次密码不一致,请重新输入')'''
login_user = None
# 分层版
def register():
while True:
# 1 让用户输入用户名称和密码进行校验
username = input('请输入用户:').strip()
if username.strip() == '':
print("请输入正确的用户名")
continue
password = input("请输入密码:").strip()
re_password = input("请确认密码:").strip()
# 判断密码是否一致
if password == re_password:
# 2 调用接口层的注册结果。将用户名和密码传到接口层
# (True, 用户注册成功), (False, 注册失败)
flag, msg = user_interface.register_interface(
username, password
)
# 3) 根据flag判断用户注册是否成功,flag控制break的结束
if flag:
print(msg)
break
else:
print(msg)
else:
print('您的两次密码不一致,请重新输入')
# 2、登录功能
def login():
# 登录视图层
while True:
username = input('请输入用户名:').strip()
password = input('请输入用户名密码:').strip()
flag, msg = user_interface.longin_interface(username, password)
if flag:
global login_user
login_user = username
print(msg)
break
else:
print(msg)
# 3、查看余额
@common.login_auth
def check_balance():
# 直接调用查看用户接口,获取用余额
balance = user_interface.check_balance_interface(login_user)
print(f'用户:{login_user}账号余额为:{balance}')
# 4、提现功能
@common.login_auth
def withdraw():
while True:
# 让用户输入体现金额
input_money = input('请输入提现金额:').strip()
# 判断用户输入的金额是否是数字
if not input_money.isdigit():
print('请重新输入:')
continue
# 用户提现,将金额提交接口处理
flag, msg = bank_interface.withdraw_interface(login_user, int(input_money))
if flag:
print(msg)
break
else:
print(msg)
# 5、还款功能
@common.login_auth
def repay():
while True:
# 让用户输入体现金额
repay_money = input('请输入还款金额:').strip()
# 判断用户输入的金额是否是数字
if not repay_money.isdigit():
print('请重新输入')
continue
# 用户提现,将金额提交接口处理
if int(repay_money) > 0:
flag, msg = bank_interface.repay_interface(login_user, int(repay_money))
if flag:
print(msg)
break
else:
print('不能输入小于0的数字')
# 6、转账功能
@common.login_auth
def transfer():
'''
接收用户的转账金额
接收用户输入的转账目标
:return:
'''
while True:
user_money = input('请输入转账目标用户:').strip()
money = input('请输入转账金额:').strip()
if not money.isdigit():
print('请输入正确的金额!')
continue
money = int(money)
if money > 0:
# 转账接口
flag, msg = bank_interface.transfer_interface(login_user, user_money, money)
if flag:
print(msg)
break
else:
print(msg)
else:
print('请输入正确的金额!')
# 7、查看流水
@common.login_auth
def check_flow():
# 直接调用查看流水的列表
flow_list = bank_interface.check_flow_interface(login_user)
if flow_list:
for flow in flow_list:
print(flow)
else:
print('当前用户没有流水记录')
# 8、购物功能
@common.login_auth
def shopping():
'''
{
'0':{'name':'包子','price':30},
'0': {'name': '包子', 'price': 30},
'0': {'name': '包子', 'price': 30},
}
:return:
'''
shop_list = [
['包子', 30],
['衣服', 150],
['安全套', 25],
['情趣内衣', 520],
['cosplay', 250],
]
shopping_car = {}
while True:
# 先打印商品的信息,让用户选择
print('===================欢迎来到情趣商城================')
for index, shop in enumerate(shop_list):
shop_name, shop_price = shop
print(f'商品编号:{index}, 商品名称:{shop_name},商品单价:{shop_price}')
print('========================end======================')
shop_choice = input("请输入你要选购的商品编号(是否结账y or n):").strip()
if shop_choice.upper() == 'Y':
if not shopping_car:
print('购物车是空的,不能支付,请重新输入')
continue
# 调用支付接口进行支付
flag,msg=shop_interface.shopping_interface(login_user,shopping_car)
if flag:
print(msg)
break
else:
print(msg)
elif shop_choice.upper() == 'N':
# 判断当前用户是否添加过购物车
if not shopping_car:
print('购物车是空的,不能添加,请重新输入')
continue
flag,msg=shop_interface.add_shop_car_interface(login_user,shopping_car)
if flag:
print(msg)
break
if not shop_choice.isdigit():
print('请输入正确的编号!')
continue
shop_choice = int(shop_choice)
if shop_choice not in range(len(shop_list)):
print('请输入正确的编号!')
continue
shop_name, shop_price = shop_list[shop_choice]
if shop_name in shopping_car:
shopping_car[shop_name][1] += 1
else:
shopping_car[shop_name] = [shop_price, 1]
print("当前购物车:",shopping_car)
# 9、查看购物车
@common.login_auth
def check_shop_car():
shop_list = shop_interface.check_shop_car_interface(login_user)
if shop_list:
for shop_name,print_number in shop_list.items():
print(f'商品:[{shop_name}],数量:[{print_number[1]}]')
else:
print('当前用户没有流水记录')
@common.login_auth
def admin_spuer():
admin.admin_run()
# 创建函数功能字典
func_dic = {
'1': register,
'2': login,
'3': check_balance,
'4': withdraw,
'5': repay,
'6': transfer,
'7': check_flow,
'8': shopping,
'9': check_shop_car,
'10': admin_spuer,
}
def run():
while True:
print('''
==========ATM+购物车==========
1、注册功能
2、登录功能
3、查看余额
4、提现功能
5、还款功能
6、转账功能
7、查看流水
8、购物功能
9、查看购物车
10、管理员功能
========== end ==========
''')
choice = input("请输入功能编号:").strip()
if choice not in func_dic:
print("请输入正确的功能编号")
continue
func_dic.get(choice)()
|