ATM
Posted xwjhyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ATM相关的知识,希望对你有一定的参考价值。
conf->settings.py:
import os
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
DB_PATH = os.path.join(BASE_PATH, 'db')
lib-> start.py:
import os
import sys
from core import src
sys.path.append(
os.path.dirname(__file__)
)
if __name__ == '__main__':
src.run()
lib->common.py:
from functools import wraps
def login_auth(func):
from core import src
@wraps(func)
def inner(*args, **kwargs):
if src.user_info.get('user'):
res = func(*args, **kwargs)
return res
else:
print('未登录,请去登录!')
src.login()
return inner
db->db_handler.py:
import json
import os
from conf import settings
def select(username):
user_path = os.path.join(settings.DB_PATH,
f'username.json')
if os.path.exists(user_path):
with open(user_path, 'r', encoding='utf-8')as f:
user_dic = json.load(f)
return user_dic
def save(user_dic):
user_path = os.path.join(settings.DB_PATH,
f'user_dic.get("username").json')
with open(user_path, 'w', encoding='utf-8')as f:
json.dump(user_dic, f)
f.flush()
interface->bank_Interface.py:
from db import db_handler
def withdraw_interface(username, money):
user_dic = db_handler.select(username)
withdraw_money = money * 1.05
if user_dic.get('balance') >= withdraw_money:
user_dic['balance'] -= withdraw_money
msg = f'username提现money元成功!'
user_dic['bank_flow'].append(msg)
db_handler.save(user_dic)
return True, msg
def repay_interface(username, money):
user_dic = db_handler.select(username)
user_dic['balance'] += money
msg = f'username还款money成功!'
user_dic['bank_flow'].append(msg)
db_handler.save(user_dic)
return msg
def transfer_interface(current_user, to_user, money):
to_user_dic = db_handler.select(to_user)
if not to_user_dic:
return False, '目标用户不存在'
current_user_dic = db_handler.select(current_user)
if current_user_dic.get('balance') >= money:
current_user_dic['balance'] -= money
to_user_dic['balance'] += money
msg = f'current_user向to_user转账money元成功'
to_user_dic['bank_flow'].append(msg)
to_user_flow = f'to_user接收到current_user转账money元成功'
to_user_dic['bank_flow'].append(to_user_flow)
db_handler.save(current_user_dic)
db_handler.save(to_user_dic)
return True, msg
return False, '余额不足,转账失败!'
def check_flow_interface(username):
user_dic = db_handler.select(username)
return user_dic.get('bank_flow')
def check_bal_interface(username):
user_dic = db_handler.select(username)
return user_dic.get('balance')
def pay_interface(username, cost):
user_dic = db_handler.select(username)
if user_dic.get('balance') >= cost:
user_dic['balance'] -= cost
flow = f'username购物支付cost成功!'
user_dic['bank_flow'].append(flow)
db_handler.save(user_dic)
return True
return False
interface->user_interface.py:
from db import db_handler
from core import src
def register_interface(username, password):
user_dic = db_handler.select(username)
if user_dic:
return False, '用户名已存在'
user_dic =
'username': username,
'password': password,
'balance': 50000,
'bank_flow': [],
'shop_car':
db_handler.save(user_dic)
return True, f'username注册成功!'
def login_interface(username, password):
user_dic = db_handler.select(username)
if not user_dic:
return False, '用户不存在'
if user_dic.get('password') == password:
return True, f'username登录成功!'
else:
return False, '密码错误'
def logout_interface():
src.user_info['user'] = None
return '注册成功!'
interface->shop_interface.py:
from interface import bank_interface
from db import db_handler
def shop_pay_interface(username, shop_car, cost):
flag = bank_interface.pay_interface(username, cost)
user_dic = db_handler.select(username)
if flag:
user_dic['shop_car'] =
db_handler.save(user_dic)
return True, '购物并支付成功!'
else:
user_dic['shop_car'] = shop_car
db_handler.save(user_dic)
return False, '支付失败,保存购物车'
def shopping_car_interface(username, shop_car):
user_dic = db_handler.select(username)
if shop_car:
user_dic['shop_car'] = shop_car
db_handler.save(user_dic)
return True, '添加购物车成功!'
else:
return False, '购物车是空的!'
def check_shop_car_interface(username):
user_dic = db_handler.select(username)
return user_dic.get('shop_car')
core->src.py:
from interface import user_interface
from interface import bank_interface
from interface import shop_interface
from lib import common
user_info =
'user': None
def register():
while True:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
re_password = input('请确认密码:').strip()
if password == re_password:
flag, msg = user_interface.register_interface(username, password)
if flag:
print(msg)
break
else:
print(msg)
def login():
while True:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
flag, msg = user_interface.login_interface(username, password)
if flag:
print(msg)
user_info['user'] = username
break
else:
print(msg)
@common.login_auth
def check_balance():
print('查看余额')
balance = bank_interface.check_bal_interface(user_info['user'])
print(balance)
@common.login_auth
def withdraw():
while True:
money = input('请输入提现金额:').strip()
if not money.isdigit():
print('必须是数字:').strip()
continue
money = int(money)
flag, msg = bank_interface.withdraw_interface(user_info.get('user'), money)
if flag:
print(msg)
break
else:
print(msg)
@common.login_auth
def repay():
while True:
money = input('请输入还款金额:').strip()
if not money.isdigit():
print('必须是数字:')
continue
money = int(money)
msg = bank_interface.repay_interface(user_info.get('user'), money)
print(msg)
break
@common.login_auth
def transfer():
while True:
to_user = input('请输入转账目标用户:').strip()
money = input('请输入转账金额:').strip()
if not money.isdigit():
print('金额必须是数字:')
continue
money = int(money)
flag, msg = bank_interface.transfer_interface(user_info.get('user'), to_user, money)
if flag:
print(msg)
break
else:
print(msg)
@common.login_auth
def check_flow():
flow_list = bank_interface.check_flow_interface(user_info['user'])
if flow_list:
for flow in flow_list:
print(flow)
@common.login_auth
def shopping():
good_list = [
['iphone6s', 3000],
['huawei p30p', 6000],
['xiaomi9', 3000],
['onesplus7', 3000]
]
shopping_car =
cost = 0
user_bal = bank_interface.check_bal_interface(user_info.get('user'))
while True:
for index, goods in enumerate(good_list):
print(index, goods)
choice = input('请输入商品编号 or q退出购买:').strip()
if choice == 'q':
break
if not choice.isdigit():
print('必须是数字!')
continue
choice = int(choice)
good_name, good_price = good_list[choice]
if user_bal >= good_price:
if good_name in shopping_car:
shopping_car[good_name] += 1
else:
shopping_car[good_name] = 1
cost += good_price
else:
print('用户余额不足!')
if not cost:
print('没有选择商品!')
return
sure = input('是否确认购买,输入y/n:').strip()
if sure == 'y':
flag, msg = shop_interface.shop_pay_interface(
user_info.get('user'), shopping_car, cost)
if flag:
print(msg)
else:
print(msg)
elif sure == 'n':
flag, msg = shop_interface.shopping_car_interface(
user_info.get('user'), shopping_car)
if flag:
print(msg)
else:
print(msg)
@common.login_auth
def check_shop_car():
shop_car = shop_interface.check_shop_car_interface(user_info.get('user'))
print(shop_car)
def logout():
if user_info.get('user'):
msg = user_interface.logout_interface()
print(msg)
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': logout,
def run():
while True:
print('''
1.注册
2.登录
3.查看额度
4.提现
5.还款
6.转账
7.查看流水
8.购物功能
9.查看购物车
10.注销
q;退出
''')
choice = input('请输入功能编号:').strip()
if choice == 'q':
break
if choice not in func_dic:
print('输入有误,请重新输入!')
continue
func_dic.get(choice)()
以上是关于ATM的主要内容,如果未能解决你的问题,请参考以下文章