Qual é a melhor maneira que eu deveria ir sobre a criação de um programa para armazenar informações em um arquivo, editar as informações nesse arquivo e adicionar novas informações

StackOverflow https://stackoverflow.com/questions/704892

Pergunta

Estou prestes a começar em um pequeno projeto que eu estou tentando fazer onde eu criar um programa C ++ para armazenar dados de inventário em um arquivo (eu acho uma .txt vai fazer)

  • • Item Descrição • Quantidade na mão • Custo Atacado • Custo Retail • Data Adicionado ao inventário

Eu preciso ser capaz de:

• Adicione novos registros para o arquivo • exibir qualquer registro no arquivo • Alterar qualquer registro no arquivo

Existe alguma coisa que eu deveria saber antes de começar esta que poderia fazer isso muito mais fácil e eficiente ...

Como por exemplo, eu deveria tentar e uso XML ou o que seja muito difícil de trabalhar com via C ++?

Eu nunca entendi a maneira mais eficiente de fazer isso.

Como eu iria pesquisar o arquivo e olhar para as coisas entre parênteses ou algo assim?

Editar

O datasize não deve ser muito grande. É para casa eu acho que você poderia dizer. Eu quero escrever o conteúdo do struct em rota de um arquivo, como eu iria fazer sobre isso?

Foi útil?

Solução

Existem muitas abordagens. É este para casa ou para o uso real? Se é para casa, provavelmente há algumas restrições sobre o que você pode usar.

Caso contrário, eu sugiro algumas DBMS embutidos como SQLite . Há outros também, mas esta será a solução mais poderosa, e também terá a implementação mais fácil.

XML também é aceitável, e tem muitas implementações reutilizáveis ??disponíveis, mas vai começar a perder desempenho uma vez que você entrar em milhares de registros. O mesmo vale para JSON. E pode-se ainda debat qual deles é mais simples -. JSON ou XML

Outra possibilidade é criar uma struct e escrever o seu conteúdo diretamente para o arquivo. Vai ficar complicado que se o tamanho do registro não é constante. E, se as mudanças de formato de registro, o arquivo terá de ser reconstruída. Caso contrário, esta solução poderia ser um dos melhores em termos de performance -., Se implementada com cuidado

Outras dicas

Você poderia por favor esclarecer-nos por que você não quer usar um motor de banco de dados para ele?

Se é apenas para aprender, então .... dá-nos por favor um tamanho estimado de dados armazenados no arquivo e o padrão de acesso (como muitos usuários, quantas vezes eles fazem isso etc.)?

O desafio será o de criar um código de pesquisa e modificação eficiente.

Para a pesquisa, é sobre estruturas e organização de dados. Para a modificação, é como você escrever atualizações para o arquivo sem lê-lo completamente na memória, atualizá-lo lá e, em seguida, escrevê-lo novamente completamente de volta para o arquivo.

Se este é um projecto que vai ser realmente utilizado, com o potencial de ter recursos adicionados ao longo do tempo, ir para uma solução de banco de dados desde o início, mesmo que pareça um exagero. Eu estive nessa estrada antes, pequenos recursos são adicionados ao longo do tempo, e antes que você perceba você implementou um banco de dados. Mal. Morder a bala e usar um banco de dados.

Se este é um exercício de aprendizagem, isso depende da quantidade de dados que você deseja armazenar. Se ele é pequeno, a melhor coisa a fazer é ler o arquivo inteiro na memória e operá-lo lá. Quando são feitas alterações, escrever toda a volta ficheiro para o disco. Se os dados é muito grande para fazer isso, a próxima melhor coisa é ter corrigido registros de tamanho. Criar uma estrutura POD que contém todos os dados (isto é, não há ponteiros, recipientes stl, etc). Depois, você pode reescrever registros individuais, sem necessidade de reescrever o arquivo inteiro. Se nenhum destes trabalhos vontade, a sua melhor aposta é uma solução de banco de dados.

Se você insistir para fazê-lo manualmente, sugiro JSON em vez de XML.

Além disso, considere sqlite.

Isso soa como um trabalho perfeito para SQLite . Pequeno, rápido, o uso flexível e fácil de.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top