Ejemplo n.º 1
0
int comparaCoringa(const char *str1, char *str2) {
	int i, tam, pos_asterisco;

	
	pos_asterisco = compara_string(str1,"*");
	
	return pos_asterisco;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}