zoukankan      html  css  js  c++  java
  • python基础之ATM-7

    import os
    import sys
    import json
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    from conf import settings
    import accounts
    import logger
    import db_handler
    '''
    本模块是transaction,商城、记账、还钱、取钱等所有与账户金额相关的操作

    '''

    def transaction(type,user_data):
    '''
    该函数实现根据配置文件去判断操作类型
    :param type: 接收操作类型
    :param user_data: 接收用户数据
    :return:
    '''
    if user_data["is_auth"]:
    for temp in settings.ALGORITHM:
    if type == "exit":
    exit("退出成功")
    if temp == type:
    eval(type)(user_data,type)
    else:
    print("用户未登录,请重新登录")

    def account(user_data,*agrs):
    '''
    该函数实现打印账户信息
    :param user_data:
    :param agrs:
    :return:
    '''
    info2 = '''
    ------------------------------------账户信息------------------------------------

    姓名:{_name} , 信用卡额度:{_limit} , 当前未还金额:{_used} ,可取现金额:{_cash}
    '''.format(_name = user_data["account_data"]["name"],
    _limit = user_data["account_data"]["limit"],
    _used = float(user_data["account_data"]["used"]),
    _cash = user_data["account_data"]["cancash"])
    print(info2)
    info = "%s查询了当前账户信息"%user_data["account_data"]["name"]
    logger.write_logger(settings.logfile1,info)

    def mall(user_data,*args):
    while True:
    print("**********欢迎进入商城**********")
    with open(r'F:myPythonAtmatmdocsmall.json','r',encoding='utf-8') as f:
    commodity = json.load(f)
    for index,temp in enumerate(commodity):
    print(index,temp)
    choise = input("请输入购买商品的编号 >>>>")
    if choise == 'q':
    break
    for index,temp in enumerate(commodity):
    if index == int(choise):
    deduct_cost(user_data,temp)


    def invok_creditCard(user_data):
    acc_acount = accounts.load(user_data["account_data"]["account"])
    return acc_acount


    def deduct_cost(user_data,commodity):
    acc_acount = invok_creditCard(user_data)
    if acc_acount["limit"] - acc_acount["used"] - commodity["价格"] > 0:
    acc_acount["used"] = acc_acount["used"] + commodity["价格"]
    acc_acount["cancash"] = (acc_acount["limit"] - acc_acount["used"])/2
    accounts.dump(acc_acount)
    accounts.dump_f(commodity,settings.MALL)
    print("33[32;1m 商品%s购买成功 33[0m"%commodity["商品"])
    else:
    print("33[31;1m 信用卡额度不够 33[0m")

    def algorithm(_key,user_cash):
    '''
    该函数实现配置文件中操作类型的金额算法,判断是否有手续费并计算
    :param _key:
    :param user_cash:
    :return:
    '''
    for temp in settings.ALGORITHM:
    if temp == _key:
    if settings.ALGORITHM[temp]["action"] == "minus":
    use = user_cash + user_cash * settings.ALGORITHM[temp]["interset"]
    return use
    elif settings.ALGORITHM[temp]["action"] == "add":
    use = user_cash + user_cash * settings.ALGORITHM[temp]["interset"]
    return use
    else:
    return 0

    def cash(user_data,type):
    '''
    该函数实现取现功能
    :param user_data:
    :param type:
    :return:
    '''
    acc_data = accounts.load(user_data["account_data"]["account"])
    user_data["account_data"] = acc_data
    user_cash = input("请输入取款金额 >>>")
    user_cash = float(user_cash)
    old_amount = user_data["account_data"]["cancash"]
    new_amount = algorithm(type,user_cash)
    if user_cash > old_amount:
    msg = "当前可取现额度不足"
    print("33[31;1m %s 33[0m"%msg)
    else:
    user_data["account_data"]["used"] = user_data["account_data"]["used"] + new_amount
    result = user_data["account_data"]["cancash"] - new_amount
    if result > 0:
    user_data["account_data"]["cancash"] = result
    else:
    user_data["account_data"]["cancash"] = 0
    msg = "取现成功"
    print("33[31;1m %s,已取现%.2f,手续费为%.2f,当前可用额度为%.2f 33[0m"%(msg,user_cash,new_amount - user_cash,user_data["account_data"]["limit"] - user_data["account_data"]["used"]))
    accounts.dump(user_data["account_data"])

    info = "%s取现操作:%s" % (user_data["account_data"]["account"], msg)
    logger.write_logger(settings.logfile1, info)
    info1 = "%s账户取现%.2f,手续费%.2f"%(user_data["account_data"]["account"],user_cash,new_amount - user_cash)
    logger.write_logger(settings.logfile, info1)


    def refund(user_data,type):
    '''
    该函数实现还款功能
    :param user_data:
    :param type:
    :return:
    '''
    acc_data = accounts.load(user_data["account_data"]["account"])
    user_data["account_data"] = acc_data
    user_refund = input("请输入你要还款金额 >>>")
    user_refund = float(user_refund)
    # old_amount = user_data["account_data"]["cancash"]
    new_amount = algorithm(type,user_refund)
    if user_refund > user_data["account_data"]["used"]:
    user_data["account_data"]["used"] = 0
    if user_data["account_data"]["cancash"] < user_data["account_data"]["limit"] / 2:
    user_data["account_data"]["cancash"] = user_data["account_data"]["limit"] / 2 + user_refund - user_data["account_data"]["used"]
    else:
    user_data["account_data"]["cancash"] = user_data["account_data"]["cancash"] + user_refund
    user_data["account_data"]["limit"] = user_data["account_data"]["limit"] + user_refund - user_data["account_data"]["used"]
    print("33[31;1m 还款成功,已还款%.2f,当前可用额度为%.2f 33[0m"%(user_refund,user_data["account_data"]["limit"]))
    accounts.dump(user_data["account_data"])
    else:
    user_data["account_data"]["used"] = user_data["account_data"]["used"] - user_refund
    result = user_data["account_data"]["cancash"] + user_refund
    user_data["account_data"]["cancash"] = result
    if user_data["account_data"]["used"] < 0:
    user_data["account_data"]["limit"] = user_data["account_data"]["limit"] - user_data["account_data"]["used"]
    accounts.dump(user_data["account_data"])
    print("33[31;1m 还款成功,已还款%.2f,当前可用额度为%.2f 33[0m" % (user_refund, user_data["account_data"]["limit"]))
    info = "%s还款成功"%user_data["account_data"]["account"]
    info1 = "%s账户还款%.2f,手续费%.2f"%(user_data["account_data"]["account"],user_refund,new_amount - user_refund)
    logger.write_logger(settings.logfile1,info)
    logger.write_logger(settings.logfile,info1)

    def transfer(user_data,type):
    '''
    该函数实现转账功能
    :param user_data:
    :param type:
    :return:
    '''
    other_account = input("请输入转入的账号 >>>")
    other_amount = float(input("请输入转账的金额 >>>"))
    acc_data = accounts.load(user_data["account_data"]["account"])
    user_data["account_data"] = acc_data
    use = algorithm(type,other_amount)
    if user_data["account_data"]["limit"] < other_amount:
    msg = "账户金额不足"
    print("33[31;1m %s 33[0m")%msg
    return
    else:
    user_data["account_data"]["limit"] = user_data["account_data"]["limit"] - use
    user_data["account_data"]["used"] = user_data["account_data"]["used"] + use
    user_data["account_data"]["cancash"] = user_data["account_data"]["cancash"] - use
    accounts.dump(user_data["account_data"])
    other_data = accounts.load(other_account)
    if other_data:
    other_data["limit"] = other_data["limit"] + other_amount
    if other_data["used"] + other_amount > 0:
    other_data["used"] = 0
    else:
    other_data["used"] = other_data["used"] + other_amount
    other_data["cancash"] = other_data["cancash"] + other_amount
    accounts.dump(other_data)
    msg = "转账成功"
    print("33[31;1m %s,转账金额%.2f,转账手续费%.2f,对方账号%s 33[0m" % (msg,other_amount,use-other_amount,other_data["account"]))
    info = "%s转账:%s" % (user_data["account_data"]["account"],msg)
    info1 = "%s账户转账%.2f,手续费%.2f,转入账户%s" % (user_data["account_data"]["account"], other_amount, use - other_amount,other_account)
    logger.write_logger(settings.logfile1, info)
    logger.write_logger(settings.logfile, info1)

    def consumption(user_data,type):
    '''
    该函数实现消费功能
    :return:
    '''
    pay = float(input("请输入刷卡金额 >>>"))
    acc_data = accounts.load(user_data["account_data"]["account"])
    use = algorithm(type,pay)
    if acc_data["limit"] > use:
    acc_data["limit"] = acc_data["limit"] - use
    acc_data["used"] = acc_data["used"] + use
    acc_data["cancash"] = acc_data["cancash"] - use
    user_data["account_data"] = acc_data
    accounts.dump(acc_data)
    msg = "消费成功"
    print("33[31;1m %s,消费金额%.2f,消费手续费%.2f 33[0m" %(msg,pay, use - pay))

    else:
    msg = "额度不足"
    print("%s")%msg
    info = "%s消费:%s" % (user_data["account_data"]["account"], msg)
    info1 = "%s账户消费%.2f,手续费%.2f" % (
    user_data["account_data"]["account"], pay, use - pay)
    logger.write_logger(settings.logfile1, info)
    logger.write_logger(settings.logfile, info1)
  • 相关阅读:
    脚本
    vim 马哥
    动态删除节点
    动态插入节点
    动态创建内容
    获取html元素内容
    设置元素的属性
    获取元素的属性
    jquery中:input和input的区别
    jQuery选择器总结
  • 原文地址:https://www.cnblogs.com/hqd2008/p/7749381.html
Copyright © 2011-2022 走看看