nikpez di nikpez
Ominide 738 punti

Esercizio file binari

Esercizio file binari
· organizzazione sequenziale
· accesso sequenziale e diretto
Scrivi un pgm C (creaPittori.c) che crea un file PITTORI avente il seguente tracciato record:
PITTORI (CodPittore, CognomePittore, DataNascita, Genere)
· CodPittore: chiave primaria, numero intero, per semplicità la inserisce l’utente da tastiera e il
sistema non fa alcun controllo. Stai attento/a a non inserire 2 record con la stessa chiave.
· CognomePittore: cognome del pittore, stringa di 25 caratteri effettivi, per semplicità
memorizziamo solo il cognome del pittore.
· DataNascita: di tipo data (struct di 3 interi: giorno, mese e anno). Non effettuare, per semplicità,
alcun controllo.
· Genere: genere del pittore, stringa di 15 caratteri effettivi. Supponiamo che ad un pittore sia

associato un unico genere.
Esempio:
CodPittore CognomePittore DataNascita Genere
001 Rossi 01/01/1945 paesaggista
002 Bianchi 12/09/1900 ritrattista
003 Verdi 02/04/1950 paesaggista
Scrivi poi un secondo pgm C (mostra.c) che gestisce l’archivio PITTORI.
Devono poter essere eseguite le seguenti funzioni (logiche):
a) Inserimento, in coda, di un nuovo record nel file. Per semplicità evita di controllare che la
chiave (CodPittore) sia già presente nell’archivio. Stai attento/a a non inserire 2 record con la
stessa chiave. La funzione ritorna 1 se il record è stato inserito, 0 altrimenti.
b) Ricerca di un record, data la chiave (CodPittore). La chiave deve essere un parametro di
ingresso della funzione. La funzione ritorna la posizione relativa del record nel file se il record è
presente (0, 1, 2 , ...) altrimenti -1.
c) Stampa delle informazioni di un pittore. Riceve come chiave il CodPittore, chiama la ricerca()
(vedi punto b)): se il record è presente lo stampa, altrimenti scrive un msg.
d) Stampa tutti i record dell’archivio.
e) Stampa tutte le informazioni dei pittori di un certo genere (parametro di ingresso, chiave
secondaria). Se nessun record viene trovato, la funzione stampa un msg.
f) Aggiorna il genere di un determinato pittore. Riceve il codice, chiama la ricerca, se il record è
presente aggiorna il record e la funzione (aggiorna()) ritorna 1, se il record non è presente la
funzione (aggiorna()) ritorna 0.
g) Cancella (logicamente) un certo pittore. Il parametro di ingresso è la chiave (CodPittore). Se il
record è presente (chiama la ricerca()), cancella logicamente il record mettendo nel campo
CodPittore il valore 0. In questo caso la funzione ritornerà 1, altrimenti 0 (se il pittore non è
presente). Modifica poi tutte le altre funzioni che hai già codificato, in quanto i record cancellati
(logicamente) non devono essere elaborati.
h) Cancellazione fisica dell’archivio: cancellare fisicamente tutti i record cancellati solo
logicamente.

Registrati via email