帅兰
import os
import sys
base_path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(base_path)
from core import src
if __name__ == '__main__':
src.run()
import json
import os
import time
login_user = [None, None]
user_info = {}
user_info1 = {}
def outter4(func):
def wrapper(*args, **kwargs):
res = func(*args, **kwargs)
a = time.strftime('%Y-%m-%d %X')
b = __name__
c = f'用户{login_user[1]}于{a}使用了{b}功能;\n'
user_file_path = r'D:\ATM\log\log1%s.json' % user_info['name']
with open(user_file_path, 'a', encoding='utf-8')as f:
json.dump(c, f)
return res
return wrapper
def outter3(func):
def wrapper(*args, **kwargs):
if user_info is None:
return
a = user_info['bal']
res = func(*args, **kwargs)
b = user_info['bal']
if a > b:
c = a - b
user_file_path = r'D:\ATM\log\%s.json' % user_info['name']
d = time.strftime('%Y-%m-%d %X')
e = f'用户{login_user[1]}于{d}用了{c}元;\n'
with open(user_file_path, 'a', encoding='utf-8')as f:
json.dump(e, f)
elif a < b:
c = b - a
user_file_path = r'D:\ATM\log\%s.json' % user_info['name']
d = time.strftime('%Y-%m-%d %X')
e = f'用户{login_user[1]}于{d}增加了{c}元;\n'
with open(user_file_path, 'a', encoding='utf-8')as f:
json.dump(e, f)
else:
user_file_path = r'D:\ATM\log\%s.json' % user_info['name']
d = time.strftime('%Y-%m-%d %X')
e = f'用户{login_user[1]}于{d}触发了该日志;\n'
with open(user_file_path, 'a', encoding='utf-8')as f:
json.dump(e, f)
return res
return wrapper
def outter(func):
def wrapper(*args, **kwargs):
if login_user[0] is None:
print('请前往道具城解锁')
return
res = func(*args, **kwargs)
return res
return wrapper
def outter2(func):
def wrapper(*args, **kwargs):
if int(user_info['bal']) < 1000:
print('请保证欠款少于1000,快还钱')
print('正在跳转')
time.sleep(0.5)
repayment()
res = func(*args, **kwargs)
return res
return wrapper
def outter1(func):
def wrapper(*args, **kwargs):
if login_user[1] is None:
print('该功能需要先登入,即将跳转登入')
time.sleep(0.5)
login()
res = func(*args, **kwargs)
return res
return wrapper
@outter4
def login():
while 1:
print('登入')
name_ = input('请输入您的用户名:').strip()
password = input('请输入您的密码:').strip()
user_file_path = r'D:\ATM\db\%s.json' % name_
if not os.path.exists(user_file_path):
print('账号不存在,请先注册')
break
with open(user_file_path, 'r', encoding='utf-8')as f:
global user_info
user_info = json.load(f)
if name_ == user_info['name'] and user_info['pwd'] == password:
print('登入成功')
global login_user
login_user = [None, name_]
break
else:
print('账号密码错误')
def register():
print('注册')
while 1:
username = input('请输入您的用户名:').strip()
password = input('请输入您的密码:').strip()
re_password = input('请再次输入密码以确认:').strip()
if password == re_password:
user_file_path = r'D:\ATM\db\%s.json' % username
if os.path.exists(user_file_path):
print('用户名已存在!!!')
continue
user_info = {'name': username, 'pwd': password, 'bal': 1, 'shop_car': [], 'bank_flow': [], 'locked': False}
with open(user_file_path, 'a', encoding='utf-8')as f:
json.dump(user_info, f)
print(f'注册成功少年,快点充钱吧,这边送了你一个Q币,可以购买会员,用于解锁新功能')
break
else:
print('两次输入不一致,少年')
@outter1
@outter4
def balance():
if login_user[1] is None:
return
print('查询QB余额')
a = user_info['bal']
print(f'亲爱的{login_user[1]}先生/女生,您的账号余额为{a}元')
@outter1
@outter3
@outter4
def recharge():
if login_user[1] is None:
return
print('充钱')
while 1:
rec = input('请输入要充值的金额:').strip()
if rec == '0':
break
elif rec.isdigit():
a = int(rec)
user_info['bal'] += a
print(f'{login_user[1]}您已充值{rec}元')
print('亲爱的这边感觉您还想充,输入0退回主页')
else:
print('请输入正确的类型')
@outter1
@outter4
@outter2
@outter
@outter3
def transfer():
print('转账')
username = input('请输入对方用户名:')
user_file_path = r'D:\ATM\db\%s.json' % username
if not os.path.exists(user_file_path):
print('对方账号不存在')
return
with open(user_file_path, 'r', encoding='utf-8')as f:
global user_info1
user_info1 = json.load(f)
while 1:
num = input('请输入转账金额:').strip()
if num.isdigit():
a = int(num)
user_info1['bal'] += a
user_info['bal'] -= a
with open(user_file_path, 'w+', encoding='utf-8')as f1:
json.dump(user_info1, f1)
print(f'已向{username}转账{num}元')
break
else:
print('请输入正确的类型')
@outter1
@outter
@outter4
@outter3
def repayment():
print('还钱')
while 1:
num = input('请输金额:').strip()
if num.isdigit():
a = int(num)
user_info['bal'] += a
print(f'亲爱的{login_user[1]}这边已为您充值{a}元')
return
else:
print('请输入正确的类型')
@outter1
@outter
@outter2
@outter4
@outter3
def withdraw():
print('取钱')
num = input('请输入您要的取的金额:').strip()
if num.isdigit():
a = int(num)
if user_info['bal'] < a:
print('亲亲您的账号余额不足')
return
else:
user_info['bal'] -= a
@outter1
@outter4
@outter2
@outter3
def shopping():
print('道具城')
tag = True
while tag:
dic = {'1': ['临时会员', 1],
'2': ['火麒麟', 888],
'3': ['雷神', 888]}
for i in dic:
print(f'{i}、{dic[i][0]} ==> 价格{dic[i][1]}')
num = input('请输入商品对应的数字,可以查看属性功能,0:退出:').strip()
if num in dic:
if num == '1':
print('''开通会员即可开启全部功能,临时会员退出失效,特价一元:
确认购买输入’1‘
退回输入’0‘
''')
num1 = input('请输入数字:').strip()
if num1 == '1':
user_info['bal'] -= dic[num][1]
global login_user
login_user[0] = True
print('购买成功')
continue
elif num == '0':
continue
else:
print('请输入正确数字')
continue
elif num == '2':
print('''火麒麟 想要变强吗?:
确认购买输入’1‘
退回输入’0‘
''')
num2 = input('请输入数字:').strip()
if num2 == '1':
user_info['bal'] -= dic[num][1]
print('购买成功')
user_info['shop_car'].append(dic[num][0])
continue
elif num == '0':
continue
else:
print('请输入正确数字')
continue
elif num == '3':
print('''雷神 想要变强吗?:
确认购买输入’1‘
退回输入’0‘
''')
num3 = input('请输入数字:').strip()
if num3 == '1':
user_info['bal'] -= dic[num][1]
print('购买成功')
user_info['shop_car'].append(dic[num][0])
continue
elif num == '0':
continue
else:
print('请输入正确数字')
continue
elif num == '0':
print('已退出')
return
else:
print('请输入正确的数字')
@outter1
@outter4
@outter
def shopping_info():
print('购物及操作信息')
while 1:
print('''
1:查看账号金钱流水流水日志
2: 查看购物车''')
num = input('请输入功能对应的编号, 0 :退出:').strip()
if num == '1':
user_file_path = r'D:\ATM\log\%s.json' % user_info['name']
with open(user_file_path, 'r', encoding='utf-8')as f:
for i in f:
print(i)
elif num == '2':
print(user_info['shop_car'])
elif num == '0':
print('已退出')
return
else:
print('请输入正确的数字')
dic = {'1': [login, '登入'],
'2': [register, '注册'],
'3': [balance, '余额'],
'4': [recharge, '充值'],
'5': [transfer, '转账'],
'6': [repayment, '还款'],
'7': [withdraw, '取款'],
'8': [shopping, '道具城'],
'9': [shopping_info, '购物及操作信息']}
def run():
while 1:
print('''欢迎您来到七鹅商城
1: 登入 6: 还款
2: 注册 7: 取款
3: 余额 8: 道具城
4: 充值 9: 购买信息
5: 转账 ''')
num = input('请输入数字对应的功能,输入0 退出:')
if num == '0':
print('已退出')
if login_user[0] is None:
return
else:
user_file_path = r'D:\ATM\db\%s.json' % user_info['name']
with open(user_file_path, 'w', encoding='utf-8')as f:
json.dump(user_info, f)
return
elif num in dic:
dic[num][0]()
else:
print('请输入正确的指令')