DOMANDA Interagire con un file dai metodi di una classe

Pubblicità

davicos

Utente Attivo
Messaggi
226
Reazioni
11
Punteggio
43
Buonasera,
in pratica nel main apro il file e poi avrei bisogno di aggiornare i dati che sono all'interno del file mediante un metodo di una classe apposita che ho chiamato Aggiornamento o Modifica. Praticamente ho il mio database di persone salvate come file testuale .txt dove ogni riga del file contiene le informazioni della persona (codice fiscale, Nome, Cognome e data di nascita;). Dopo aver creato una classe Persona vorrei, attraverso i suoi metodi, riuscire a modificare il file in maniera permanente quindi sovrascriverlo, in base a cosa viene passato a questi metodi.
Vorrei capire quale sia il metodo più veloce e più intuitivo per gestire al meglio il programma.
Una idea che mi era venuta era quella di prendere ogni riga del file e salvarle in un vettore però in ogni riga sono presenti dati diversi tra loro e avrei bisogno di modificare solo alcuni di questi dati.

Ad esempio:

riga 1 codice fiscale; Nome; Cognome; anno di nascita;
riga 2 codice fiscale; Nome; Cognome; anno di nascita;
|
|
|
etc..

Vorrei riuscire a modificare il Cognome di una persona tramite il codice fiscale. Cioè il codice fiscale della persona nella riga 2 è corretto ma il cognome è stato riportato male. Si tenga presente che i dati vengono inseriti nel file in maniera indipendente. Quindi il codice fiscale non viene scritto in maniera automatica dall'anagrafdica della persona.

Grazie!
 
Beh, non hai altra scelta essendo un file di testo, lo devi riscriverlo da zero.
Leggi ogni riga del file, modifica quello che devi modificare e scrivila in un file temporaneo. Quando hai finito cancella il file originale e cambia nome al file temporaneo. È il metodo più veloce e così facendo non devi tenere tutto il file in memoria.
Questi esercizi, che sono utili a farsi, fanno capire l’importanza dei database. E se si deve per forza usare un file, quanto meglio sia avere righe di lunghezza costante (perché in quel caso devi riscrivere solo una riga invece che tutto il file).
Prova a buttare giù qualcosa, come richiesto dal regolamento. Ma la tua idea di avere il lavoro fatto dalla classe Persona non ha senso, in quanto la classe persona non è responsabile dell’intero file di testo. Hai quindi bisogno di un’altra classe. Che poi per un problema del genere usare classi serve a poco, ma capisco che lo si faccia a scopo di esercizio.
 
Grazie di aver risposto. Assolutamente scriverò il codice come da regolamento. Il codice è già in corso e la classe Persona è solo una delle tante altre classi che mi servono per fare il progetto. Certo, impostate le cose come le ho scritte non si vede l'utilità dell'utilizzo delle classi. Si tenga presente però che occorre che debba fare altre classi simili in quanto vi sono altri file simili ed altre classi simili che seguono lo stesso comportamento, o simile, della classe Persona.
 
occorre che debba fare altre classi simili in quanto vi sono altri file simili
di che linguaggio stiamo parlando?
è un esercizio o il database ti serve per uso reale?
se ti serve per uso reale usare dei file di testo all'inizio ti sembra più semplice ma alla lunga ti incatenena mani e piedi non appena fosse necessario eseguire operazioni più complicate
 
Immagino si tratti di un esercizio, nessuno memorizzerebbe dati personali “in chiaro” in un semplice file di testo.
 
di che linguaggio stiamo parlando?
è un esercizio o il database ti serve per uso reale?
se ti serve per uso reale usare dei file di testo all'inizio ti sembra più semplice ma alla lunga ti incatenena mani e piedi non appena fosse necessario eseguire operazioni più complicate
Il linguaggio è C++ ed è un progetto universitario
--- i due messaggi sono stati uniti ---
Immagino si tratti di un esercizio, nessuno memorizzerebbe dati personali “in chiaro” in un semplice file di testo.

Sì sì è un esercizio/progetto
 
compiti per casa insomma :) dovresti farli tu, prima

ci sono alciuni metodi

- apri il file, caricalo in memoria, in un array di strutture, modifica quando serve, e salva a ogni modifica.
- apri il file, caricalo in memoria, invalida vecchio ogetto con un flag, e aggiungi un oggetto nuovo alla fine.
- memory mapped file
...
 
Pubblicità
Pubblicità
Indietro
Top