Especificação do Projeto 2 Fazer um programa que controle a entrada de veículos em um condomínio. Por controlar, entenda-se, a) inserir; b) alterar; c) remover; d) pesquisar Cada registro é composto por 3 campos, como apresentados na tabela TabelaInicial.txt Os campos são: - Nro da residência (tamanho fixo, de 3 dígitos) - Nome do residente ou visitante (tam. variável, mas no máximo 40 caracteres) - Modelo do veículo (tam. variável, mas no máximo 20 caracteres) IMPORTANTÍSSIMO: tudo que você tem NO INÍCIO é a tabela TabelaInicial.txt. O FORMATO DELA É EXATAMENTE COMO ESPECIFICADO no modelo que você vê aqui. Portanto, NÃO altere-o e você DEVE utilizar EXATAMENTE este modelo para iniciar o seu programa. OBSERVACAO: a TabelaInicial.txt NAO DEVE SER PASSADA COMO ARGUMENTO, ja que seu nome é imutável...... PORTANTA, NAO PRECISA USAR ARGV e ARGC ...... A partir da TabelaInicial.txt, você deve (UMA ÚNICA vez): a) construir um arquivo principal de dados, cujo nome TEM de ser: dados.txt (por favor, não vá inventar um nome diferente!) e note -> em letras minúsculas...... b) construir um arquivo de índice primário, cujo nome TEM de ser: primario.ndx note: em letras minúsculas..! IMPORTANTE: o arquivo de dados (dados.txt) tem as seguintes características: - Ele deve ser GRAVADO NO FORMATO ASCII, para o seu próprio bem.. fica mais fácil depurar e ver se o seu programa está funcionando corretamente.. - Ele pode armazenar os dados utilizando-se de registros de TAMANHO FIXO ou TAMANHO VARIÁVEL. Se for tamanho fixo, observe o tamanho máximo das strings para cada um dos campos estabelecido acima. Se for tamanho variável, utilize separadores, para distiguir um campo de outro. o arquivo de índices (primario.ndx), por sua vez, tem as seguintes características: - Também armazenado no formato ASCII. Isso vai facilitar sua vida... - Contém DOIS CAMPOS: a chave primária (o nro da residência) e o RRN do registro. - ATENÇÂO SOBRE O RRN: - se você optou por usar registros de tamanho fixo, então o seu RRN é de fato um valor relativo. Voce pode optar por colocar cada registro em uma linha diferente no arquivo e o RRN seria então um valor que permitisse apontar para o início da linha em que está o referido registro. - se você optou por utilizar registros de tamanho variado, então o RRN é de fato o valor absoluto do byte inicial ocupado pelo registro no arquivo (lembre-se do que vimos em aula). Neste caso, o seu arquivo ficaria mais "feio" de se ver, mas isso não é probelam algum, pois é apenas uma forma de organização interna, certo?! - o arquivo de índices deve armazenar as chaves em ordem crescente de valores - o campo chave, como já dito, será armazenado como uma string numérica de tamanho 3, sempre. - o campo RRN deve ser armazenado como um string numérica de tamanho 5, sempre. - Portanto, o registro do arquivo "primario.ndx" é de tamanho fixo e deve possuir o seguinte formato: 001 00000 004 00056 ou seja, o primeiro registro de chave 001 tem RRN = 00000 o segundo registro de chave 004 tem RRN = 00056 e assim por diante. IMPORTANTE: o arquivo de dados principal (dados.txt) é sempre mantido em disco. Nunca vai para memória o arquivo de indice primário é SEMPRE manipulado na memória PRIMÀRIA. Portanto, defina QUALQUER estrutura que queira para manipular este arquivo em RAM. No início do programa você deverá ler o arquivo e jogar os dados para a memória primária e, AO SAIR do programa, sobrescever o arquivo. OBSERVAÇAO:: A estrutura em RAM DEVE ESTAR ORDENADA PELA CHAVE, para se FAZER BUSCA BINARIA....... INSERÇÃO: sempre inserir um novo registro ao FINAL do arquivo. REMOÇÂO: ao remover, faça o mínimo de alteração possível no arquivo de dados. Apenas marque um caracter do registro para indicar remoção. LEMBRE-SE que uma QUARTA funcionalidade do seu programa será justamente a operação de COMPACTAÇÂO, que consiste da ELIMINAÇÃO de todos os registros marcados como removidos.. ALTERAÇÂO: pode-se alterar QUALQUER UM dos TRÊS campos do registro. Claro que chaves primárias não podem ser DUPLICADAS. POrtanto, faça as devidas verificações antes de aceitar a operação.... >>>>>>>>>> IMPORTANTE >>>>>>>>>> >>>>>>>>>> O SEU PROGRAMA DEVE TER UM MENU com as seguintes opções: 1) inserir 2) remover 3) alterar 4) procurar 5) compactar 6) sair Ao inserir o usuário passa o nro, nome e veiculo Ao remover o usuário digita apenas o nro Ao alterar o usuário digita o código, e o programa dá a chance de alterar QUALQUER um dos 3 campos.... Ao pesquisar o usuário passa o nro A compactação elimina os registros removidos e recria o arquivo de indice primário. Todas as operações acima devem vir acompanhadas das respectivas mensagens de sucesso ou erro.