MateusFBL / TP_Locadora6

0 stars 0 forks source link

Implemente uma função que mostre na tela todas as locações de um determinado cliente. #6

Open MateusFBL opened 10 months ago

Vikatormfc commented 9 months ago

void mostrarLocacoesCliente(FILE arquivoLocacoes, FILE arquivoClientes, int codigoOuNomeCliente) { struct Cliente cliente; struct Locacao locacao;

// Verificar se o par�metro � um c�digo ou um nome
int isCodigo = (codigoOuNomeCliente >= 1000); // Assumindo que c�digos de cliente s�o maiores que 1000

fseek(arquivoClientes, 0, SEEK_SET);

// Encontrar o cliente pelo c�digo ou nome
while (fread(&cliente, sizeof(struct Cliente), 1, arquivoClientes) == 1)
{
    if ((isCodigo && cliente.codigo == codigoOuNomeCliente) || (!isCodigo && strcmp(cliente.nome, codigoOuNomeCliente) == 0))
    {
        // Cliente encontrado, agora mostrar suas loca�es
        fseek(arquivoLocacoes, 0, SEEK_SET);
        printf("Locacoes do cliente %s (Codigo: %d):\n", cliente.nome, cliente.codigo);

        while (fread(&locacao, sizeof(struct Locacao), 1, arquivoLocacoes) == 1)
        {
            if (locacao.codigoCliente == cliente.codigo)
            {
                // Mostrar informa�es da loca�o
                // Aqui voc� pode personalizar a exibi�o conforme necess�rio
                printf("Codigo da Locacao: %d\n", locacao.codigo);
                // ... outras informa�es da loca�o ...
            }
        }

        printf("Fim das locacoes do cliente %s.\n", cliente.nome);
        return; // Saindo da fun�o ap�s mostrar as loca�es do cliente encontrado
    }
}

// Se chegou aqui, o cliente n�o foi encontrado
printf("Cliente nao encontrado.\n");

}

EXPLICAÇÃO DO CÓDIGO: Parâmetros da Função:

FILE arquivoLocacoes: Ponteiro para o arquivo de locações. FILE arquivoClientes: Ponteiro para o arquivo de clientes. int codigoOuNomeCliente: Parâmetro que indica se o valor fornecido representa um código de cliente ou um nome. Verificação do Tipo de Identificação (Código ou Nome):

Utiliza o valor do parâmetro codigoOuNomeCliente para determinar se é um código ou um nome de cliente. Assume que valores maiores que 1000 representam códigos de cliente (pode variar dependendo da implementação). Busca do Cliente:

Itera sobre o arquivo de clientes para encontrar o cliente com base no código ou nome fornecido. Se o cliente é encontrado, exibe uma mensagem inicial com o nome e código do cliente. Exibição das Locações do Cliente Encontrado:

Itera sobre o arquivo de locações para encontrar todas as locações associadas ao cliente encontrado. Exibe as informações relevantes de cada locação, como o código da locação. A exibição das informações da locação está incompleta no código fornecido, sendo indicado onde você pode personalizar essa parte conforme necessário. Mensagem de Conclusão:

Exibe uma mensagem indicando o término das locações do cliente. Cliente Não Encontrado:

Se o cliente não é encontrado, exibe uma mensagem indicando que o cliente não foi encontrado. Retorno Antecipado:

A função retorna imediatamente após mostrar as locações do cliente encontrado, evitando continuar a busca desnecessariamente.