Concetti Chiave

  • Il file PITTORI utilizza un'organizzazione sequenziale per gestire i record, che includono informazioni sui pittori.
  • I record contengono CodPittore, CognomePittore, DataNascita e Genere, con specifiche di formato per ciascun campo.
  • Il programma mostra.c permette operazioni come inserimento, ricerca e aggiornamento dei record, senza controlli sulla chiave primaria.
  • La cancellazione dei pittori avviene in modo logico, impostando CodPittore a 0, seguita da una cancellazione fisica dei record.
  • Le funzioni devono gestire anche la stampa di tutti i record e di quelli appartenenti a un certo genere, fornendo messaggi adeguati se non trovati.

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:

Struttura del record PITTORI

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

Funzioni del programma mostra.c

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.

Domande da interrogazione

  1. Qual è la struttura del record nel file PITTORI e quali sono i suoi campi principali?
  2. Il record nel file PITTORI è composto da quattro campi principali: CodPittore (chiave primaria, numero intero), CognomePittore (stringa di 25 caratteri), DataNascita (struct di 3 interi: giorno, mese e anno) e Genere (stringa di 15 caratteri).

  3. Come viene gestita la cancellazione di un pittore nel programma mostra.c?
  4. La cancellazione di un pittore nel programma mostra.c avviene in due fasi: cancellazione logica, dove il CodPittore viene impostato a 0, e cancellazione fisica, che rimuove definitivamente i record cancellati logicamente dall'archivio.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community