예제 #1
0
파일: operacao.c 프로젝트: mahcoder/lab2
lista_t* operacao_remove_cliente(lista_t* operacoes, lista_t* contas, cliente_t* cliente)
{
	operacao_t *operacao;
	lista_t *item;
	lista_t *item_operacao;
	conta_t *conta;
	bool teste_transferencia = false;

	item = contas;
	while (!lista_vazia(item))
	{
		conta = (conta_t*)item->dado;
		if (strcmp(conta->cliente_cpf, cliente->cpf) == 0)
		{
			item_operacao = operacoes;
			while (!lista_vazia(item_operacao))
			{
				operacao = (operacao_t*)item_operacao->dado;
				// Se a conta recebeu uma transferencia, a operação também é removida.
				teste_transferencia = (operacao->tipo == Transferencia) && (operacao->conta_destino_numero == conta->numero);
				if (teste_transferencia || (operacao->conta_numero == conta->numero))
				{
					printf("Aviso: A operacao %d do cliente %s sera removida.\n", operacao->codigo, cliente->cpf);
					operacoes = lista_remove(operacoes, operacao, compara_operacao);
				}
				item_operacao = item_operacao->prox;
			}
		}
		item = item->prox;
	}
	return operacoes;
}
예제 #2
0
파일: operacao.c 프로젝트: mahcoder/lab2
lista_t* operacao_remove(lista_t *operacoes)
{
	bool done = false;
	char *str;
	operacao_t *operacao = (operacao_t*)malloc(sizeof(operacao_t));

	printf("--- Remover Operacao ---\n");
	while (!done)
	{
		printf("Informe o codigo da operacao que deseja remover:\n");
		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("O operacao nao existe, codigo: %d\n", operacao->codigo);
		}
		else
		{
			done = true;
		}
	}
	operacoes = lista_remove(operacoes, operacao, compara_operacao);
	printf("Operacao %d removida.\n", operacao->codigo);
	free(operacao);
	return operacoes;
}
예제 #3
0
파일: cliente.c 프로젝트: mahcoder/lab2
lista_t* cliente_remove(lista_t *clientes, cliente_t *cliente)
{
	lista_t* novo;

	novo = lista_remove(clientes, cliente, compara_cliente);
	printf("Cliente %s removido.\n", cliente->cpf);
	free(cliente);
	return novo;
}
예제 #4
0
파일: conta.c 프로젝트: mahcoder/lab2
lista_t* conta_remove(lista_t *contas, conta_t *conta)
{
	lista_t* novo;

	novo = lista_remove(contas, conta, compara_conta);
	printf("Conta %d removida.\n", conta->numero);
	free(conta);
	return novo;
}
예제 #5
0
파일: thash.c 프로젝트: diacus/lavadero
void *thash_remove( thash *t, unsigned int *sz, char *key ) {

	unsigned int index = hash( key, t->size, SHIFT );
	lista *selected = *(t->table + index);
	void *res = lista_find( selected, sz, key );

	if( res )
		selected = lista_remove( selected, key );

	return res;
}
예제 #6
0
파일: operacao.c 프로젝트: mahcoder/lab2
lista_t* operacao_remove_agencia(lista_t* operacoes, agencia_t* agencia)
{
	operacao_t *operacao;
	lista_t *item;

	item = operacoes;

	while (!lista_vazia(item))
	{
		operacao = (operacao_t*)item->dado;
		if (operacao->agencia_codigo == agencia->codigo)
		{
			printf("Aviso: A operacao %d da agencia %d sera removida.\n", operacao->codigo, agencia->codigo);
			operacoes = lista_remove(operacoes, operacao, compara_operacao);
		}
		item = item->prox;
	}
	return operacoes;
}
예제 #7
0
파일: conta.c 프로젝트: mahcoder/lab2
lista_t* conta_remove_cliente(lista_t* contas, cliente_t* cliente)
{
	conta_t *conta;
	lista_t *item;

	item = contas;

	while (!lista_vazia(item))
	{
		conta = (conta_t*)item->dado;
		if (strcmp(conta->cliente_cpf, cliente->cpf) == 0)
		{
			printf("Aviso: A conta %d do cliente %s sera removida.\n", conta->numero, cliente->cpf);
			contas = lista_remove(contas, conta, compara_conta);
		}
		item = item->prox;
	}
	return contas;
}
예제 #8
0
파일: conta.c 프로젝트: mahcoder/lab2
lista_t* conta_remove_agencia(lista_t* contas, agencia_t* agencia)
{
	conta_t *conta;
	lista_t *item;

	item = contas;

	while (!lista_vazia(item))
	{
		conta = (conta_t*)item->dado;
		if (conta->agencia_codigo == agencia->codigo)
		{
			printf("Aviso: A conta %d da agencia %d sera removida.\n", conta->numero, agencia->codigo);
			contas = lista_remove(contas, conta, compara_conta);
		}
		item = item->prox;
	}
	return contas;
}
예제 #9
0
파일: operacao.c 프로젝트: mahcoder/lab2
lista_t* operacao_remove_conta(lista_t* operacoes, conta_t *conta)
{

	operacao_t *operacao;
	lista_t *item;
	bool teste_transferencia = false;

	while (!lista_vazia(item))
	{
		operacao = (operacao_t*)item->dado;
		// Se a conta recebeu uma transferencia, a operação também é removida.
		teste_transferencia = (operacao->tipo == Transferencia) && (operacao->conta_destino_numero == conta->numero);
		if (teste_transferencia || (operacao->conta_numero == conta->numero))
		{
			printf("Aviso: A operacao %d da conta %d sera removida.\n", operacao->codigo, conta->numero);
			operacoes = lista_remove(operacoes, operacao, compara_operacao);
		}
		item = item->prox;
	}
	return operacoes;
}