Exemple #1
0
def transfer(transfer_card,recipient_card):
    db_global_path = data_handler.get_db_global_path('card_num.txt')
    public_file=open(db_global_path,'r')
    public_info=public_file.read()
    public_file.close()
    if recipient_card in public_info:
        transfer_amount=input('请输入您想转账的金额>>>')
        transfer_card_info=accounts.read_info(transfer_card)
        recipient_card_info=accounts.read_info(recipient_card)
        if transfer_card_info['limit']<float(transfer_amount):
            logger.public_operation_log(transfer_card_info,'转账失败')
            logger.private_access_log(transfer_card_info,'转账失败')
            print('余额不足!')
        else:
            print('接受账户开户人:%s****%s'%(recipient_card_info['account_id'][0],recipient_card_info['account_id'][-1]))
            user_choice=input('请确认是否转账(输入任意值以继续或输入b以取消)>>>')
            if user_choice=='b':
                logger.public_operation_log(transfer_card_info, '取消转账')
                logger.private_access_log(transfer_card_info, '取消转账')
                print('您已取消转账!')
                return False

            else:
                transfer_card_info['limit']=transfer_card_info['limit']-float(transfer_amount)
                recipient_card_info['limit']=recipient_card_info['limit']+float(transfer_amount)
                accounts.write_info(transfer_card,transfer_card_info)
                accounts.write_info(recipient_card,recipient_card_info)
                logger.public_operation_log(transfer_card_info, '成功转账 %s 元至账号 %s'%(transfer_amount,recipient_card))
                logger.private_access_log(transfer_card_info, '')
                print('转账成功')
                return True
    else:
        print('账户不存在,请检查输入是否正确!')
        return False
Exemple #2
0
def repay(card_num):
    repay_amount=input('请输入还款金额:')
    modified_info=accounts.read_info(card_num)
    modified_info['limit']=round(modified_info['limit']+float(repay_amount),2)
    accounts.write_info(card_num,modified_info)
    logger.public_operation_log(modified_info,'还款%s元'%(repay_amount))
    logger.private_access_log(modified_info,'还款%s元'%(repay_amount))
    print('还款成功!')
    return repay_amount
Exemple #3
0
def creat_account():
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    new_path = BASE_DIR + '\\data\\accounts_info\\card_num.txt'
    sys.path.append(BASE_DIR)

    card_num_record = open(new_path, 'r+', encoding='utf-8')

    num_data = card_num_record.read()
    user_choice = 'none'
    while True:
        user_choice = input('\033[32;1m请输入任意值以继续,或输入b返回上一级>>>\033[0m')

        if user_choice == 'b':
            exit('\033[31;1m取消创建账户!\033[0m')
        account_id = input('\033[32;1m请输入您的姓名>>>\033[0m')
        card_num = input(
            '\033[32;1m请输入一个合法的卡号(卡号为8位纯数字),此卡号以后将成为您的信用卡账户:\033[0m')
        password = input('\033[32;1m请输入您的密码>>>\033[0m')
        password_confirm = input('\033[32;1m请再次输入您的密码以确定>>>\033[0m')
        user_limit = input('\033[32;1m请输入您想申请的信用卡额度>>>\033[0m')

        if card_num in num_data or len(card_num) != 8 or card_num.isdigit(
        ) == False:
            print('\033[31;1m账号已存在!\033[0m')
            continue
        elif password != password_confirm:
            print('\033[31;1m两次密码输入不一致\033[0m')
            continue
        elif user_limit.isdigit() != True:
            print('\033[31;1m信用额度只能为数字!\033[0m')
            continue
        elif int(user_limit) < 0:
            print('\033[31;1m额度不合法!\033[0m')
            continue
        else:

            card_num_record.write('%s\n' % (card_num))
            card_num_record.close()
            time_stamp = time.mktime(time.gmtime()) + 172800
            info = {
                'account_id': account_id,
                'card_num': card_num,
                'password': password,
                'limit': float(user_limit),
                'expired_time': time_stamp,
                'state': True
            }
            real_path = data_handler.get_db_private_path(info)
            accounts.write_info(card_num, info)

            print('\033[32;1m成功创建账户!\033[0m')
            logger.public_operation_log(info, '创建账户')

            break
Exemple #4
0
def withdrawls(card_num):
    withdrawls_amount=input('请输入取款金额:')
    modified_info = accounts.read_info(card_num)
    if float(withdrawls_amount)>modified_info['limit']:
        print('余额不足!')
        return '取款失败,余额不足'
    else:
        modified_info['limit']=round(modified_info['limit']-float(withdrawls_amount)*1.05,2)
        accounts.write_info(card_num, modified_info)
        logger.public_operation_log(modified_info, '取款%s元' % (withdrawls_amount))
        logger.private_access_log(modified_info, '取款%s元' % (withdrawls_amount))
        print('取款成功')
        return '取款 %s 元'%withdrawls_amount
Exemple #5
0
def acc_auth(card_num, password, mode, count=1):
    db_private_path = data_handler.get_db_private_path(card_num)
    private_info = accounts.read_info(card_num)
    if mode == 'r':
        time_stamp = time.mktime(time.gmtime())
        if count < 4:
            if private_info['password'] == password and private_info[
                    'state'] == True and time_stamp <= private_info[
                        'expired_time']:
                print('登录成功!')
                logger.public_operation_log(private_info, '成功登录')
                return True
            elif time_stamp >= private_info['expired_time']:
                print('您的账户已过期,请前往管理端口处理!')
                logger.public_operation_log(private_info, '登录失败')
                return False
            elif private_info['state'] == False:
                print('您的账户已被冻结,请前往管理端口处理!')
                logger.public_operation_log(private_info, '登录失败')
                return False
            else:
                print('密码错误!')
                logger.public_operation_log(private_info, '登录失败')
                count = count + 1
                return count
        else:
            print('密码输错次数过多,您的账户已被冻结!')
            private_info['state'] = False
            accounts.write_info(private_info)
            logger.public_operation_log(private_info, '账户被冻结')
            logger.private_access_log(private_info, '账户被冻结')
            return False

    if mode == 'm':
        if private_info['password'] == password:
            print('登录成功!')
            logger.public_operation_log(private_info, '成功登录')
            return True
        else:
            print('密码错误!')
            logger.public_operation_log(private_info, '登录失败')
            return False
Exemple #6
0
def manage():
    while True:
        choice = input('\033[32;1m请输入任意值以继续,或输入q退出管理系统>>>\033[0m')
        if choice == 'q':
            print('您已退出ATM管理系统')
            break
        print('----请选择一种服务----')
        print('1 %s' % management['1'])
        print('2 账户管理')
        print('3 %s' % management['5'])
        user_choice = input('请输入对应服务序号以继续>>>')
        if user_choice == '1':
            account_sample.creat_account()
            continue
        elif user_choice == '2':
            while True:
                choice = input('\033[32;1m请输入任意值以继续,或输入b返回>>>\033[0m')
                if choice == 'b':
                    print('您已退出,即将返回初始界面')
                    for i in range(10):
                        print('. ', end='')
                        time.sleep(0.5)
                    print('\n')
                    break
                card_num = input('请输入您的信用卡账号>>>')
                password = input('请输入密码>>>')
                if auth.is_exist(card_num) == False:
                    print('账户不存在,请检查输入是否正确!')
                    continue
                jud = auth.acc_auth(card_num, password, 'm')
                while jud == True:
                    print('1 %s' % management['2'])
                    print('2 %s' % management['3'])
                    print('3 %s' % management['4'])
                    print('4 %s' % management['5'])
                    print('5 %s' % management['6'])

                    user_choice2 = input('请输入对应服务序号以继续>>>')
                    if user_choice2 == '1':
                        new_limit = input('请输入您想申请的额度>>>')
                        present_info = accounts.read_info(card_num)
                        present_info['limit'] = float(new_limit)
                        accounts.write_info(card_num, present_info)
                        logger.public_operation_log(present_info,
                                                    '申请额度 %s 元' % new_limit)
                        logger.private_access_log(present_info,
                                                  '申请额度 %s 元' % new_limit)
                        print('审核中')
                        for i in range(10):
                            print('. ', end='')
                            time.sleep(0.5)

                        print('\n申请成功')
                        continue
                    elif user_choice2 == '2':
                        present_info = accounts.read_info(card_num)
                        present_info['state'] = True
                        accounts.write_info(card_num, present_info)
                        logger.public_operation_log(present_info, '解冻账户')
                        logger.private_access_log(present_info, '解冻账户')
                        print('审核中')
                        for i in range(10):
                            print('. ', end='')
                            time.sleep(0.5)

                        print('\n您的账户已解冻')
                        continue

                    elif user_choice2 == '3':
                        confirm = input('您确认要冻结您的账号吗?输入任意值以确认,输入b以取消>>>')
                        if confirm == 'b':
                            continue
                        else:
                            present_info = accounts.read_info(card_num)
                            present_info['state'] = False
                            accounts.write_info(card_num, present_info)
                            logger.public_operation_log(present_info, '冻结账户')
                            logger.private_access_log(present_info, '冻结账户')
                            print('审核中')
                            for i in range(10):
                                print('. ', end='')
                                time.sleep(0.5)

                            print('\n您的账户已冻结')
                            continue

                    elif user_choice2 == '4':
                        present_info = accounts.read_info(card_num)
                        present_info['expired_time'] = time.mktime(
                            time.gmtime()) + 172800
                        accounts.write_info(card_num, present_info)
                        logger.public_operation_log(present_info, '更新账户')
                        logger.private_access_log(present_info, '更新账户')
                        print('审核中')
                        for i in range(10):
                            print('. ', end='')
                            time.sleep(0.5)
                        print('\n您的账户已更新')
                        continue
                    elif user_choice2 == '5':
                        print('您的账户已登出!')
                        break
                    else:
                        print('不合法的输入,请再次输入')
                        continue
        elif user_choice == '3':
            print('您已登出')
            break
        else:
            print('不合法的输入,请重新输入!')
            continue