Qual è il modo migliore devo fare per creare un programma per memorizzare le informazioni in un file, modificare le informazioni in quel file, e aggiungere nuove informazioni

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

Domanda

Sto per iniziare un piccolo progetto che sto cercando di fare, dove creo un ++ programma per memorizzare i dati di inventario in un file C (immagino un file .txt farà)

  • • Descrizione di articolo • Quantità a portata di mano • all'ingrosso Costo • costo al dettaglio • Data In aggiunta a Spazio pubblicitario

Ho bisogno di essere in grado di:

• Aggiungere nuovi record al file • Visualizzare ogni record nel file • Modificare qualsiasi record nel file

C'è qualcosa che dovrei sapere di prima di iniziare questo che potrebbe rendere questo molto più facile ed efficiente ...

Come per esempio, dovrei cercare di utilizzare XML o quello che essere troppo difficile da lavorare tramite C ++?

Non ho mai veramente capito il modo più efficace di fare questo.

Come dovrei cercare attraverso il file e cercare le cose tra parentesi o qualcosa del genere?

Modifica

Il datasize non dovrebbe essere troppo grande. E 'per compiti a casa penso che si potrebbe dire. Voglio scrivere il contenuto della struct in percorso di un file, come dovrei fare per fare che?

È stato utile?

Soluzione

Ci sono molti approcci. E 'questo per i compiti o per l'uso reale? Se è per i compiti, ci sono probabilmente alcune restrizioni su ciò che si può usare.

In caso contrario, vi suggerisco alcuni DBMS embedded come SQLite . Ci sono anche altri, ma questo sarà la soluzione più potente, e avranno anche il più facile implementazione.

XML è anche accettabile, e ha molte implementazioni riutilizzabili disponibili, ma inizierà a perdere le prestazioni una volta che si entra in migliaia di record. Lo stesso vale per JSON. E si potrebbe ancora debat che uno è più semplice -. JSON o XML

Un'altra possibilità è quella di creare un struct e scrivere il suo contenuto direttamente al file. Otterrà difficile però se la dimensione record non è costante. E, se il formato di registrazione cambia, dovrà essere ricostruito il file. In caso contrario, questa soluzione potrebbe essere una delle migliori prestazioni-saggio -. Se attuate con attenzione

Altri suggerimenti

La prego di illuminarci perché non si desidera utilizzare un motore di database per questo?

Se è solo per l'apprendimento poi .... si prega di darci una dimensione stimata dei dati memorizzati in quel file e il modello di accesso (il numero di utenti, quanto spesso lo fanno, ecc.)?

La sfida sarà quella di creare una ricerca e la modifica efficiente codice.

Per la ricerca, si tratta di strutture e organizzazione dei dati. Per la modifica, è come si dovrebbe scrivere gli aggiornamenti al file senza leggerlo completamente in memoria, l'aggiornamento lì e poi a scrivere di nuovo completamente indietro al file.

Se questo è un progetto che saranno effettivamente utilizzati, con la possibilità di avere funzionalità aggiunte nel corso del tempo, andare per una soluzione di database fin dall'inizio, anche se sembra eccessivo. Sono stato su questa strada prima, piccole caratteristiche vengono aggiunti nel corso del tempo, e prima ci si rende conto che è stato implementato un database. Male. Ingoiare il rospo e utilizzare un database.

Se questo è un esercizio di apprendimento, dipende dalla quantità di dati che si desidera memorizzare. Se è piccolo, la cosa più facile da fare è leggere l'intero file in memoria e operano su di esso là. Quando vengono apportate modifiche, scrivere l'intero file indietro sul disco. Se i dati è troppo grande per farlo, la cosa migliore da fare è quella di aver risolto i record di dimensioni. Creare una struttura POD che contiene tutti i dati (cioè, senza puntatori, contenitori STL, ecc). Poi si può riscrivere i singoli record, senza bisogno di riscrivere l'intero file. Se nessuna di queste funziona, la soluzione migliore è una soluzione di database.

Se si insiste a farlo manualmente, suggerisco JSON invece di XML.

Inoltre, in considerazione SQLite.

Questo suona come un lavoro perfetto per SQLite . Piccolo, veloce, flessibile e facile da usare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top