zoukankan      html  css  js  c++  java
  • day09作业

    conf->settings.py:
    import os
    BASE_PATH = os.path.dirname(os.path.dirname(file))
    DB_PATH = os.path.join(BASE_PATH, 'db')

    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)
    else:
    print('两次密码不一致!')

    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('必须是数字')
    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 p30pro', 5000],
    ['xiaomi9', 3000],
    ['oneplus7', 4000]
    ]
    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)()

    db->db_handler:
    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:
    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
    return False, '你个穷, 请充值或者重新输入!'
    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}元成功!'
    current_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->userinterface:
    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': 30000,
    '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:
    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')

    lib->common:
    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

    lib->start
    import os
    import sys
    from core import src
    sys.path.append(
    os.path.dirname(file)
    )
    if name == 'main':
    src.run()

  • 相关阅读:
    python 文件处理 -- 02 文件属性&标准输入输出&命令行参数&文件编码
    python 文件处理 -- 01 文件打开&读取&写入&关闭&指针
    python进阶-- 04 如何定制类
    python进阶-- 03 面向对象编程
    python进阶-- 02 如何使用模块
    python进阶-- 01 函数式编程
    python基础-- 08 迭代&列表生成式
    python基础-- 07 切片
    python基础-- 06 函数
    关于hanlp自定义词典的使用
  • 原文地址:https://www.cnblogs.com/xwjhyy/p/11551198.html
Copyright © 2011-2022 走看看