faber222 / Quick-Read-CSV-File

um programa para consultas em arquivo CSV
MIT License
2 stars 0 forks source link

Diário de Bordo - Faber Bernardo #2

Open faber222 opened 2 years ago

faber222 commented 2 years ago

Como atividade inicial, fiz a criação do github, irei cuidar também dos pull requests para o github, irei corrigir o problema da biblioteca de Arvore descoberta pelo @IgorSVieira. Como ideia inicial para o código, em suma, está definido assim:

faber222 commented 2 years ago

Após o envio do esqueleto do código, eu fiz a correção da biblioteca libs, e também adicionei um arquivo CSV para testes. Verifiquei que no primeiro esqueleto tinha um erro que retornava sempre a mensagem de coluna inválida:

Fechando assim a captura correta da coluna

faber222 commented 2 years ago

Feito também a correção do contador de colunas, no qual demonstrava um erro, quando era solicitado do arquivo csv, chamado arquivo.csv, o nome Idade, ele retornava a posição 4, porém Idade estava na 3, que coincidentemente era a posição final. O código havia dentro do while(true), um if para pos2 string::npos, que somava o contador de colunas, esse contador estava indevido, e após a remoção dele, o código fez a contagem correta.

faber222 commented 2 years ago

Todos os testes mencionados acima, foram feitos no dia 16/06, por isso os comentários são apresentados todos juntos, pois foram feitos na mesma hora.

faber222 commented 2 years ago

Aula do dia 17/06: No dia de hoje, fizemos reformulação do código para recriar as funções que fazem a separação do arquivo .csv. Visto que utilizávamos dentro da função main.cpp, na função indexar_dados, para cada busca, uma separação individual, aumentando o trabalho do código e deixando ele necessitado daquela função. O que fizemos foi separar isso em duas funções separadas, chamadas de separa e separa_coluna, cada função recebia o separador de strings e retornava o valor correto desejado, fazendo assim com que o código ficasse utilizando uma função separada global, que pode ser acessada por todos, caso necessário. Porém atualmente, apesar de global, ela recebe parâmetros que só servem para um uso único, mas pretendemos mudar para deixar ela usando apenas uma função separadora. Fiz também a alteração das posições, aonde o código antes retornava o valor de cada linha incorretamente para a indexação, mas agora com o incremento da função int pos = arquivo.tellg(), dentro de um while(true), está nos retornando a cada loop, o valor inicial de cada linha, finalizando assim a nossa função de indexar_dados.

faber222 commented 2 years ago

No fim da tarde do dia 17/06. O @IgorSVieira fez a finalização do código, incluindo a função que armazenava os dados obtidos do indexar_dados e armazenava em uma arvore para fazer a consulta com o obter_dados. Após o envio dessa parte simples, eu fiz a estruturação do arquivo para separar ele em diversos subarquivos contendo funções separadas em cada um. Criei os seguintes arquivos:

O separa.cpp contem o arquivo de função que executa as duas funções que separa o arquivo csv, primeiro definindo a coluna do index, e o segundo separador, capturando os dados da coluna definida no primeiro separador, exemplo: O primeiro captura CPF, na coluna 2. O segundo vai capturar todos os dados da coluna 2 que são pertencentes ao CPF.

Já o separa.h tem todos os includes que interligam ele a bliblioteca de c++ e a de arvore, e no main.cpp fiz um include de separa.h, e também dentro do separa.cpp. Para que ambos tivessem acesso ao arquivo.h.

O obtem_dados é a mesma ideia, porém ele faz a captura do arquivo passado em argv[1] e separa para ser consultado baseado na fila criada a partir do indexador anterior. Finalizando assim a consulta rápida do arquivo csv sem necessitar consultar toda a tabela. E o obtem_dados.h contem os includes da biblioteca c++ e da arvore, e no main.cpp e obtem_dados.cpp tem um include para o arquivo obtem_dados.h.

Para finalizar, fiz a função que entra em loop quando o valor1 é teclado apenas enter, e a função de valor2 ficou para como desafio para o dia seguinte.

faber222 commented 2 years ago

No inicio da manhã do dia 19/06 Hoje fiz a produção e criação dos comentários do código, tais quais fazem e trazem o passo a passo de como funciona o código.

Os comentários foi um processo demorado porém nada trabalhoso, pois se trata de um código simples mas funcional. A alteração dos while(), foi feita dentro do arquivo obter_linhas.cpp e no main.cpp. No obter_linhas.cpp:

No main.cpp:

faber222 commented 2 years ago

No fim da tarde do dia 19/06 Nos reunimos eu e o @IgorSVieira , para finalizar o código, visando o problema que perdurou do dia 17/06 até hoje, que era o parametro nulo de valor2, que necessitava consultar apenas uma linha do arquivo csv, usando como base o valor1. Foi criado uma nova passagem de parametro na funcao indexar_dados, que é uma referencia a uma struct, chamada de ultimo_item, que tal valor é usado na função para quando valor2 for vazio, valor2 assumir o valor dessa struct para ser obtido o intervalo. Porém o que fiz foi mais a chamada da função quando depois de tudo executado, se algo na lista printar fosse vazio, iria disparar um evento informando que a lista estaria vazia. Após a reunião que fizemos, decidimos que o código estaria finalizado. Todos os bugs foram corrigidos, e até o momento, ja foi feito tudo de acordo com o que se pede para a entrega em grupo 1.