第五次作业

from interface import user_interface

from interface import bank_interface

from interface import shoping_interface

from lib import common

from interface import admin_interface

import datetime

user_info = {

    'user': None

}


def register():
    while True:

        print("---注册---")

        user_name = input('请输入用户名:').strip()

        passwd = input('请输入密码:').strip()

        passwd_d = input('确认密码:').strip()

        # 接口

        flat = user_interface.check_user_interface(user_name)

        if flat:

            print('用户已存在,重新输入!')

            continue

        elif passwd == passwd_d:

            # 接口

            user_interface.register_inerface(user_name, passwd)

            print('注册成功!')

            break


def login():
    while True:

        print("---登录---")

        user = input('输入用户名:').strip()

        passwd = input('输入密码:').strip()

        flag, msg = user_interface.login_interface(user, passwd)

        if flag:

            print(msg)

            user_info['user'] = user

            break

        else:

            print(msg)

            break


@common.outter
def transfer():
    while True:

        print("---转账---")

        to_name = input('输入转账目标用户:')

        to_user = user_interface.check_user_interface(to_name)

        if to_user:

            money = input('请输入转账金额:').strip()

            if money.isdigit():

                money = int(money)

                flaw, msg = bank_interface.transfer_interface(to_name, money, user_info['user'])

                if flaw:

                    print(msg)

                    break

                else:

                    print(msg)

                    break

            else:

                print('输入不正确!!')

                continue



        else:

            print('用户不存在,重新输入!')

            continue


@common.outter
def check_balance():
    print("---查询余额---")

    bank_interface.select_money(user_info['user'])


@common.outter
def repayment():
    print("---还款---")

    money = input('输入还款金额:').strip()

    if money.isdigit():

        money = int(money)

        bank_interface.repayment_interface(user_info['user'], money)

    else:

        print('输入不正确!')


@common.outter
def withdraw_money():
    print("---取款---")

    money = input('输入取款金额:').strip()

    if money.isdigit():

        money = int(money)

        if money >= 0:

            bank_interface.withdraw_interface(user_info['user'], money)

        else:

            print('必须大于0')

    else:

        print("输入不正确!")


@common.outter
def view_pipelining():
    print("---查看流水---")

    bank_interface.see_worter_interface(user_info['user'])


@common.outter
def shopping():
    # 购买过的商品

    pay_list = []

    num_money = 0

    while True:

        print("---购物---")

        shopping_list = [

            ['鞋子', 999],

            ['卫衣', 999],

            ['袜子', 99],

            ['T恤', 299],

            ['短裤', 199],

            ['奔驰', 5000000],

            ['奇瑞', 1000000]

        ]

        # 打印商品列表

        for index, i in enumerate(shopping_list):
            print(index, i)

        print('q.退出 w.结账 e.查看已选商品')

        choice = input('请快速配置你的装备:').strip()

        if choice == 'q':

            break



        elif choice == 'w':

            yes = input('是否结账?y/n:')

            if yes == 'y':

                # 调用接口结账

                bank_interface.payment(num_money, user_info['user'])

                # 调用接口保存购买商品

                shoping_interface.save_car(pay_list, user_info['user'])

                break

            elif yes == 'n':

                continue

        elif choice == 'e':

            print('---已选商品---')

            for index, i in enumerate(pay_list):
                print(index, i)

            continue

        # 1.判断输入是否为数字

        if not choice.isdigit():
            print('输入不合法!!!你还有两次机会')

            continue

        # 2.输入的为字符串,转成int数字型

        choice = int(choice)

        # 3.判断选择是否再范围内

        if 0 <= choice <= len(shopping_list):

            name, money = shopping_list[choice]

            # 4.添加到已选商品

            now_time = datetime.datetime.today()

            now_time = str(now_time)

            # 时间处理操作  2019-11-21 18:45:18.803910  处理为2019-11-21 18:45:18

            now_time = now_time[0:19]

            # 添加时间

            shopping_list[choice].append(now_time)

            pay_list.append(shopping_list[choice])

            # 计价

            num_money += money

            print('添加成功')

            continue

        else:

            print('请选择正确的范围!!!')

            continue


@common.outter
def shopping_cat():
    while True:
        print("---查看购买商品---")

        shoping_interface.select_car(user_info['user'])

        break


def admin():
    while True:

        print('''

        1:冻结用户

        2:解冻用户

        q:退出

        ''')

        dict = {

            '1': lock,

            '2': unlock

        }

        choice = input('请输入你的功能:').strip()

        if choice == 'q':

            break

        elif not choice.isdigit():

            print('请输入数字!!')

            continue

        elif choice in dict:

            dict[choice]()

        else:

            print("你的输入有误,重新输入!!!")

            continue


def lock():
    print('---冻结用户---')

    user_name = input('请输入你要冻结的用户名:').strip()

    yes = input('确认冻结该用户?  y/n:')

    if yes == 'y':

        res = admin_interface.lock_interface(user_name)

        print(res)

    elif yes == 'n':

        print('已取消冻结!')

    else:

        print('输入有误,重新输入!')


def unlock():
    print('---解冻用户---')

    user_name = input('请输入你要解冻的用户名:').strip()

    yes = input('确认解冻该用户?  y/n:')

    if yes == 'y':

        res = admin_interface.unlock_interface(user_name)

        print(res)

    elif yes == 'n':

        print('已取消解冻!')

    else:

        print('输入有误,重新输入!')


def run():
    while True:

        print('''

        1.注册

        2.登录

        3.转账

        4.查询余额

        5.还款

        6.取款

        7.查看流水

        8.购物

        9.查看购买商品

        10.管理员

        q.注销    

        ''')

        list_dic = {

            '1': register,

            '2': login,

            '3': transfer,

            '4': check_balance,

            '5': repayment,

            '6': withdraw_money,

            '7': view_pipelining,

            '8': shopping,

            '9': shopping_cat,

            '10': admin

        }

        choice = input('前选择功能编号:').strip()

        if choice == 'q':

            break



        elif choice in list_dic:

            list_dic.get(choice)()



        else:

            print('选择功能有误,请重新输入:')

            continue
核心业务逻辑
from db import db_hander

import datetime

 

# 转账接口

def transfer_interface(to_name, money, user):

    to_user_dict = db_hander.select_user(to_name)

    user_dict = db_hander.select_user(user)

 

    if to_name != user:

        # 判断转账的钱是否大于余额

        if 0 <= money <= user_dict['balance']:

            # 加减钱的操作

            user_dict['balance'] -= money

            to_user_dict['balance'] += money

 

            # 拼接

            my = user_dict['balance']

            to = to_user_dict['balance']

            time = datetime.datetime.today()

            msg = f'【{user}】用户给【{to_name}】用户转账【{money}】元,当前余额【{my}】元    {time}'

            flg = f'【{to_name}】用户给收到【{user}】用户转账【{money}】元,当前余额【{to}】元    {time}'

            # 添加到流水信息

            user_dict['worter'].append(msg)

            to_user_dict['worter'].append(flg)

 

            # 保存数据

            db_hander.save(user_dict)

            db_hander.save(to_user_dict)

 

 

            return True, msg

        else:

            msg = '余额不足'

            return False, msg

    else:

        return False, '不允许给自己账户转账!'

 

# 查看余额

def select_money(user):

    user_dict = db_hander.select_user(user)

    money = user_dict['balance']

    return print('当前余额为【%s】元' % money)

 

 

# 还款接口

def repayment_interface(user, money):

    user_dict = db_hander.select_user(user)

    # 加钱操作

    user_dict['balance'] += money

 

    a = user_dict['balance']

    time = datetime.datetime.today()

    msg = f'【{user}】用户还款【{money}】元成功,当前余额【{a}】元   {time}'

    # 添加到流水信息

    user_dict['worter'].append(msg)

    # 保存更新

    db_hander.save(user_dict)

 

 

    return print(msg)

 

 

# 取款接口

def withdraw_interface(user, money):

    while True:

        user_dict = db_hander.select_user(user)

        # 判断余额是否足够

        if money <= user_dict['balance']*1.05:

            # 减钱操作,手续费

            money_s = money*0.05

            user_dict['balance'] -= money*1.05

 

            a = user_dict['balance']

            time = datetime.datetime.today()

            msg = f'【{user}】用户取款【{money}】元成功,手续费5%【{money_s}】元,当前余额【{a}】元   {time}'

 

            # 添加到流水信息

            user_dict['worter'].append(msg)

 

            # 保存更新

            db_hander.save(user_dict)

            return print(msg)

        else:

            print('余额不足!!')

            break

 

 

# 查看流水

def see_worter_interface(user):

    user_dict = db_hander.select_user(user)

    worter = user_dict['worter']

    for i in worter:

        print(i)

 

# 结账接口

def payment(num_money,user):

    while True:

        user_dict = db_hander.select_user(user)

        if num_money <= user_dict['balance']:

            # 减钱的操作

            user_dict['balance'] -= num_money

 

            a = user_dict['balance']

            time = datetime.datetime.today()

            msg = f'【{user}】用户购买商品成功,消费【{num_money}】元,当前余额【{a}】元    {time}'

            # 记录流水

            user_dict['worter'].append(msg)

            # 保存信息

            db_hander.save(user_dict)

            print(msg)

            break

        else:

            print('余额不足,请充值!!!')

            break

 
银行接口
from db import db_hander

 

# 保存购物车

def save_car(shopping_list, user):

    user_dict = db_hander.select_user(user)

    # 添加到字典

    user_dict['shop_car'].append(shopping_list)

    # 保存

    db_hander.save(user_dict)

 

# 查看购物车

def select_car(user):

    user_dict = db_hander.select_user(user)

    car_list = user_dict['shop_car']

    # for index, i in enumerate(car_list):

    #     print(index, i)

    for line in car_list:

        for index, i in enumerate(line):

            print(index, i)

 
购物接口
from db import db_hander

from lib import common

 

 

# 查看用户是否存在接口,存在返回Turn和字典,不存在返回False

def check_user_interface(user):

    user_dict = db_hander.select_user(user)

    if user_dict:

        return user_dict

    else:

        return False

 

 

# 注册接口

def register_inerface(user, passwd):

    # 调用接口,加密

    pwd = common.get_md5(passwd)

 

    # 把用户所有信息做成一个字典,然后调用接口保存

    user_dict = {

        'user': user,

        'pwd': pwd,

        'balance': 10000,

        'worter': [],

        'shop_car': [],

        'lock': True

    }

 

    db_hander.save(user_dict)

 

    return f'{user_dict["user"]}用户注册成功!'

 

 

# 登录接口

def login_interface(user, passwd):

    user_dict = db_hander.select_user(user)

    passwd = common.get_md5(passwd)

    # 如果用户存在

    if user_dict:

        # 如果用户没有被锁

        if user_dict['lock'] == True:

            # 如果密码正确

            if passwd == user_dict['pwd']:

                return True, '登录成功!'

            else:

                return False, '用户名或密码不正确,重新输入!'

        else:

            return False, '用户已被解冻,请联系管理员!'

    else:

        return False, '用户名或密码不正确,重新输入!'
用户接口
原文地址:https://www.cnblogs.com/datatool/p/13501206.html