Ajuda para a funcionalidade de importação de dados
Em todos os projectos, existe uma componente que é semelhante: a importação de dados. Esta funcionalidade é essencial para a maioria dos projectos, pois permite a importação de dados de um ficheiro para a base de dados. A ideia é que a vossa base de dados (em formato binário para ser fácil de aceder com fread e fwrite) seja persistente e que possa ser facilmente carregada no início do programa. Contudo, uma base de dados não é preenchida com dados magicamente. É necessário haver introdução de dados na base de dados. Uma das formas de introduzir dados é como já fizeram em vários exercícios, nomeadamente, ao pedir ao utilizador para introduzir os dados (e.g. com scanf, fgets, etc.). Contudo, esta não é a única forma de introduzir dados. Outra forma é através da importação de dados de um ficheiro.
No caso dos projectos, a origem dos dados devem ser ficheiros de texto. Depois de importados para a base de dados, estes ficheiros de texto podem ser eliminados, pois a base de dados é persistente e já contém os dados relevantes. Considerem o seguinte cenário. O vosso programa é um sistema para centralizar a gestão de todas as frotas. Semanalmente, recebem um ficheiro de texto com os dados dos novos voos. O gestor de frota recebe esse ficheiro de alguma forma, e solicita ao vosso programa que os novos dados recebidos sejam incorporados na base de dados. O gestor de frota não quer saber como é que vocês fazem isso, ele só quer que os dados sejam importados, para depois os poder trabalhar no programa (estatísticas, listas, filtros, etc.). Estas funcionalidades operam todas sobre a base de dados, mas a origem inicial dos dados são estes ficheiros de texto.
Considerem outro cenário: desenvolver um programa que permita ter uma lista atualizada dos novos alunos que vão chegando à Academia. Cada vez que o programa é executado, ele carrega os dados dos alunos da base de dados binária, e mostra esta lista na consola. Posteriormente, o programa questiona o utilizador se pretende importar novos alunos. Se o utilizador responder afirmativamente, o programa solicita o nome do ficheiro de texto que contém os dados dos novos alunos. O programa lê o ficheiro de texto, e importa os novos alunos para a base de dados. No final, o programa guarda a base de dados atualizada num ficheiro binário para que os dados estejam disponíveis na próxima execução do programa. Exemplo de execução:
O programa é executado pela primeira vez, e o utilizador responde afirmativamente à questão de importação de dados. Neste exemplo o
s
e o nome do ficheiroimport1.txt
foram escritos pelo utilizador. O programa mostra a seguinte mensagem:Na segunda vez que o programa é executado, a base de dados já contém os alunos importados anteriormente. O programa mostra a seguinte mensagem:
Na terceira vez que o programa é executado, a base de dados já contém os alunos importados anteriormente. O utilizador escolhe não importar mais dados. O programa mostra a seguinte mensagem:
Uma implementação do programa mencionado acima está disponível nos seguintes ficheiros: