DOMANDA Interagire con un file dai metodi di una classe

davicos

Utente Attivo
226
11
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!
 

Andretti60

Utente Èlite
6,440
5,091
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.
 

davicos

Utente Attivo
226
11
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.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,923
11,563
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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
 
  • Mi piace
Reazioni: Andretti60

Andretti60

Utente Èlite
6,440
5,091
Immagino si tratti di un esercizio, nessuno memorizzerebbe dati personali “in chiaro” in un semplice file di testo.
 
  • Mi piace
Reazioni: Mursey

davicos

Utente Attivo
226
11
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
Post unito automaticamente:

Immagino si tratti di un esercizio, nessuno memorizzerebbe dati personali “in chiaro” in un semplice file di testo.

Sì sì è un esercizio/progetto
 
U

Utente cancellato 371741

Ospite
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
...
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili