int comparaCoringa(const char *str1, char *str2) { int i, tam, pos_asterisco; pos_asterisco = compara_string(str1,"*"); return pos_asterisco; }
bool conta_busca_cliente_agencia(lista_t *contas, cliente_t *cliente, agencia_t *agencia) { lista_t *item = NULL; conta_t *conta; item = contas; while (!lista_vazia(item)) { conta = (conta_t*)item->dado; if ((conta->agencia_codigo == agencia->codigo) && (compara_string(cliente->cpf, conta->cliente_cpf))) { return true; } item = item->prox; } return false; }
lista_t* operacao_inclui(lista_t *operacoes, lista_t *agencias, lista_t *contas) { operacao_t *operacao = NULL; agencia_t *agencia; conta_t *conta; bool done = false; bool operacao_tipo_ok = false; bool operacao_ok = false; bool agencia_ok = false; bool conta_ok = false; bool confirmar = false; char *str = NULL; operacao = (operacao_t*)malloc(sizeof(operacao_t)); operacao->montante = 0.0; operacao->conta_destino_numero = 0; agencia = (agencia_t*)malloc(sizeof(agencia_t)); conta = (conta_t*)malloc(sizeof(conta_t)); printf("--- Realizando nova tranzacao ---\n"); while (!done) { if (!operacao_ok) { printf("Codigo: "); str = string_get(OPERACAO_CODIGO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } operacao->codigo = (unsigned int)atoi(str);; free(str); str = NULL; if (lista_busca(operacoes, operacao, compara_operacao)) { printf("A operacao de codigo %d ja existe. Use um numero diferente.\n", operacao->codigo); continue; } operacao_ok = true; } if (!agencia_ok) { printf("Agencia codigo: "); str = string_get(AGENCIA_CODIGO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } agencia->codigo = (unsigned int)atoi(str); free(str); str = NULL; if (!lista_busca(agencias, agencia, compara_agencia)) { printf("A agencia de codigo %d nao existe.\n", agencia->codigo); continue; } agencia_ok = true; } if (!conta_ok) { printf("Numero da conta: "); str = string_get(CONTA_NUMERO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } conta->numero = (unsigned int)atoi(str); free(str); str = NULL; if (!lista_busca(contas, conta, compara_conta)) { printf("A conta de numero %d nao existe.\n", conta->numero); continue; } conta_ok = true; operacao->agencia_codigo = agencia->codigo; } if (!operacao_tipo_ok) { printf("Tipo de operacao (saldo, pagamento, saque, transferencia): "); str = string_get(OPERACAO_TIPO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } string_to_lower(str); if (compara_string("saldo", str)) operacao->tipo = Saldo; else if (compara_string("pagamento", str)) operacao->tipo = Pagamento; else if (compara_string("saque", str)) operacao->tipo = Saque; else if (compara_string("transferencia", str)) operacao->tipo = Transferencia; else { printf("Operacao desconhecida: %s. Tente novamente.\n", str); free(str); str = NULL; continue; } operacao_tipo_ok = true; operacao->conta_numero = conta->numero; } if ((operacao_tipo_ok) && (operacao->tipo == Transferencia)) { printf("Numero da conta de destino da transferencia: "); str = string_get(CONTA_NUMERO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } conta->numero = (unsigned int)atoi(str); free(str); str = NULL; if (!lista_busca(contas, conta, compara_conta)) { printf("A conta de numero %d nao existe.\n", conta->numero); continue; } conta_ok = true; operacao->conta_destino_numero = conta->numero; } operacao->data = get_time(); printf("---\nDados fornecidos:\n"); operacao_imprime(operacao); if (true == confirmar_opcao()) { done = true; } else { done = false; operacao_ok = false; agencia_ok = false; conta_ok = false; operacao_tipo_ok = false; } } confirmar = false; if (operacao->tipo == Saldo) { operacao_saldo(operacao, contas); confirmar = true; } else if (operacao->tipo == Pagamento) { if (operacao_pagamento(operacoes, operacao, contas)) confirmar = true; } else if (operacao->tipo == Saque) { if (operacao_saque(operacoes, operacao, contas)) confirmar = true; } else if (operacao->tipo == Transferencia) { if (operacao_transferencia(operacoes, operacao, contas)) confirmar = true; } if (confirmar == true) return lista_insere(operacoes, operacao); else return operacoes; }