Your SlideShare is downloading. ×
Programmazione   Doc Gest, Codifica
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Programmazione Doc Gest, Codifica

300
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
300
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Classe Documentoimport java.util.*;import java.io.RandomAccessFile;import java.io.IOException;/**** @author Ignazio Altomare, Sergio Centrone, Fabio Gadaleta* Classe per la gestione del documento**/public class Documento{/**** Costruisce una classe Documento in grado di gestire un archivio** @param nnprogressivo Indica il numero progressivo del documento preso in input* @param ntitolo Indica il titolo del documento preso in input* @param nautore Indica lautore del documento preso in input* @param nargomento Indica largomento del documento preso in input* @param ndatapubblicazione Indica la data di pubblicazione del documento preso in input* @param nnomedelfile Indica il nome del file del documento preso in input*/ public Documento(int nnprogressivo, String ntitolo, String nautore, Stringnargomento, String ndatapubblicazione, String nnomedelfile) { nprogressivo=nnprogressivo; // Assegnazione numero progressivo titolo=ntitolo; // Assegnazione titolo argomento=nargomento; // Assegnazione argomento autore=nautore; // Assegnazione autore datapubblicazione=ndatapubblicazione; // Assegnazione data pubblicazione nomedelfile=nnomedelfile; // Assegnazione nome del file }/**** Costruttore che permette di costruire un tipo documento senza associarlo ad un file**/ 1
  • 2. public Documento() { file=null; // Non viene associato nessun file }/**** Apre il file dei documenti** * @param filename Il nome del file che contiene larchivio di documenti* * @param mode Per specificare la modalit di apertura del file*/ public void open(String filename, boolean mode) throws IOException { if(file!=null) file.close(); // Se il file gia aperto viene chiuso if (mode) file=new RandomAccessFile(filename,"rw"); // Viene aperto un file ad accessocasuale in modalit lettura e scrittura else file=new RandomAccessFile(filename,"r");// Viene aperto un file ad accessocasuale in modalit lettura }/**** Restituisce il numero di documenti presenti nellarchivio** @return Il numero di documenti presenti nellarchivio*/ public int size() throws IOException { return(int)(file.length()/RECORD_SIZE); // Calcolo degli elementi presenti nelfile }/**** Chiude il file dei dati**/ public void close()throws IOException { 2
  • 3. if(file!=null) file.close(); // Chiusura del file ad accesso casuale file=null; // Il file non punta a nessun file ad accesso casuale }/**** Effettua linserimento di un documento allinterno dellarchivio** @param dimensione Indica il numero progressivo ultimo del file archivio*/public void inserimento(int dimensione)throws IOException{ boolean confrontogiorni; boolean confrontomesi; boolean confrontoanni; Scanner in=new Scanner(System.in); Documento appoggio=new Documento(); // Oggetto di appoggio per linserimeno dei datidal documento appoggio.nprogressivo =dimensione; // Assegnazione del numero progressivonelloggetto di appoggio do { System.out.print("DIMMI IL TITOLO: "); appoggio.titolo=in.nextLine(); // Inserimento del titolo nelloggetto di appoggio } while((appoggio.titolo.length()==0)||(appoggio.titolo.length()>=25)); // Controllosul titolo do { System.out.print("DIMMI LAUTORE: "); appoggio.autore=in.nextLine(); // Inserimento autore nelloggetto di appoggio } while((appoggio.autore.length()==0)||(appoggio.autore.length()>=25)); // Controllosull autore do { System.out.print("DIMMI LARGOMENTO: "); appoggio.argomento=in.nextLine(); // Inserimento argomento nelloggetto diappoggio } while((appoggio.argomento.length()==0)||(appoggio.argomento.length()>=25)); //Controllo sull argomento 3
  • 4. do { System.out.print("DIMMI LA DATA DI PUBBLICAZIONE(GG/MM/AAAA): "); appoggio.datapubblicazione=in.nextLine(); // Inserimento data di pubblicazione String ggs=appoggio.datapubblicazione.substring(0, 2); // Estrazione del giorno String mms=appoggio.datapubblicazione.substring(3, 5); // Estrazione de mese String aaaas=appoggio.datapubblicazione.substring(6, 10); // Estrazione dellanno int gg=(int)Integer.parseInt(ggs); // Trasformazione della stringa in intero int mm=(int)Integer.parseInt(mms); // Trasformazione della stringa in intero int aaaa=(int)Integer.parseInt(aaaas); // Trasformazione della stringa in intero confrontogiorni=((gg>31)||(gg<1)); // Controllo sui giorni confrontomesi=((mm>12)||(mm<1)); // Controllo sui mesi confrontoanni=((aaaa>2007)||(aaaa<1800)); // Controllo sugli anni } while ((confrontogiorni||(confrontomesi)||confrontoanni)); // Controllo datapubblicazione do { System.out.print("DAMMI IL NOME DEL FILE="); appoggio.nomedelfile=in.nextLine(); // Inserimento del nome del file nelloggettodi appoggio } while((appoggio.nomedelfile.length()==0)||(appoggio.nomedelfile.length()>=25)); file.seek(appoggio.nprogressivo*RECORD_SIZE); // Posizionamento del cursore nel filead accesso casuale file.writeInt(appoggio.nprogressivo); // Scrittura del numero progressivo writefixedString(appoggio.titolo,25); // Scrittura del titolo come stringa di 25caratteri writefixedString(appoggio.autore,25); // Scrittura del autore come stringa di 25caratteri writefixedString(appoggio.argomento,25); // Scrittura del argomento come stringa di25 caratteri writefixedString(appoggio.datapubblicazione,25); // Scrittura della data dipubblicazione come stringa di 25 caratteri writefixedString(appoggio.nomedelfile,25); // Scrittura del nome del file comestringa di 25 caratteri}/**** Effettua una elencazione di tutti i documenti presenti nel file in base ad un criteriodi scelta (in base allautore o largomento) se ci sono campi con quei valori di ricerca** @param dimensione Indica il numero massimo di documnenti presenti nel file 4
  • 5. * @param parametro Contiene linformazione del campo da ricercare nellarchivio*/public void elencazione(int dimensione,String parametro)throws IOException{ Documento appoggio=new Documento(); // Oggetto di appoggio per inserire i daticontenuti nel file boolean test=false; // Variabile booleana che ci permette di definire se statoprovato il documento nel file for(int i=0;i<dimensione;i++) // Ciclo di scansione del file ad accesso casuale { file.seek(i*RECORD_SIZE); // Posizionamento del puntatore all interno del filead accesso casuale appoggio.nprogressivo=file.readInt(); // Lettura del numero progressivo appoggio.titolo=readfixedString(25); // Lettura del titolo come stringa di 25caratteri appoggio.autore=readfixedString(25); // Lettura del autore come stringa di 25caratteri appoggio.argomento=readfixedString(25); // Lettura del argomento come stringa di25 caratteri appoggio.datapubblicazione=readfixedString(25); // Lettura della data dipubblicazione come stringa di 25 caratteri appoggio.nomedelfile=readfixedString(25); // Lettura del nome del file comestringa di 25 caratteri if (appoggio.argomento.equals(parametro)) // Confronto tra largomento e ilparametro dato in input dall utente { test=true; // Viene posto a vero perch stato trovato il documento richiesto System.out.println("NUMERO PROGRESSIVO: "+appoggio.nprogressivo); //Visualizzo allutente il numero progressivo System.out.println("TITOLO: "+appoggio.titolo); // Visualizzo allutente iltitolo System.out.println("AUTORE: "+appoggio.autore); // Visualizzo allutentelautore System.out.println("ARGOMENTO: "+appoggio.argomento); // Visualizzoallutente largomento System.out.println("DATA PUBBLICAZIONE: "+appoggio.datapubblicazione); //Visualizzo allutente la data di pubblicazione System.out.println("NOME DEL FILE: "+appoggio.nomedelfile); // Visualizzoallutente il nome del file System.out.println(""); } } if(!test) // Nel caso in cui non presente un documento con campo argomento uguale aquello del campo preso in input andiamo a scandire larchivo per quel che riguarda icampi autore 5
  • 6. { for(int i=0;i<dimensione;i++) { file.seek(i*RECORD_SIZE); appoggio.nprogressivo=file.readInt(); appoggio.titolo=readfixedString(25); appoggio.autore=readfixedString(25); appoggio.argomento=readfixedString(25); appoggio.datapubblicazione=readfixedString(25); appoggio.nomedelfile=readfixedString(25); if (appoggio.autore.equals(parametro)) // Controllo del campo autore { test=true; System.out.println("NUMERO PROGRESSIVO: "+appoggio.nprogressivo); System.out.println("TITOLO: "+appoggio.titolo); System.out.println("ARGOMENTO: "+appoggio.argomento); System.out.println("DATA PUBBLICAZIONE:"+appoggio.datapubblicazione); System.out.println("NOME DEL FILE: "+appoggio.nomedelfile); System.out.println("AUTORE: "+appoggio.autore); System.out.println(""); } } if (!test) // Controllo se stato trovato il documento oppure no { System.out.println("IL DOCUMENTO NON E STATO TROVATO!"); } }}/**** Metodo per scrivere stringhe in un file ad accesso casuale** @param s Indica la stringa da scrivere nel file* @param size Indica la grandezza della stringa* @throws IOException Lancia uneccezione in caso di mancanza del file*/public void writefixedString(String s,int size) throws IOException{ int i; for(i=0;i<size;i++) // Ciclo per la scansione della stringa di 25 caratteri { char ch=0; // Carattere della string if (i<s.length()) ch=s.charAt(i); // Assegnazione del carattere della stringa inposizione i alla variabile ch 6
  • 7. file.writeChar(ch); // Scrittura del carattere nell file ad accesso casuale }}/**** Legge le stringhe da un file ad accesso casuale** @param size Indica la dimensione del campo stringa* @return Restituisce la stringa letta* @throws IOException Lancia uneccezione in caso di mancanza del file*/public String readfixedString(int size) throws IOException{ String b=""; // Stringa che conterr la concatenazione tra i vari caretteri int i=0; boolean more=true; // Variabile booleana che ci permette di capire se sono finiti icaratteri e ci sono spazi vuoti nel file while(more&&i<size) // Ciclo di scansione dei caratteri { char ch=file.readChar(); // Lettura dei caratteri allinterno del file i++; if(ch==0)more=false; // Se il carattere e il vuoto allora viene posta a falso lavariabile booleana else b=b+ch; // Viene concatenato il carattere letto dal file nella stringa } file.skipBytes(2*(size-i)); // Vengono saltati gli spazi vuoti rimanenti del campo return b; // Fa ritornare la stringa letta dal file}/**** Effettua la ricerca del documento secondo il numero progressivo come parametro** @param dimensione Indica il numero di documenti presenti nel archivio* @param parametro Indica il numero progressivo da ricercare* @throws IOException Lancia uneccezione in caso di mancanza del file*/public void ricerca(int dimensione, int parametro)throws IOException{ String scelta; // Variabile che ci permette di capire cosa dobbiamo farne deldocumento trovato, se eliminarlo o modificarlo Scanner in=new Scanner(System.in); Documento appoggio=new Documento(); // Documento di appoggio che ci aiuta nellascansione dell archivio 7
  • 8. if (parametro<dimensione) // Controllo per capire se il numero progressivo e conformeal numero di documenti presenti nellarchivio, cio se non super la sua dimensione { file.seek(parametro*RECORD_SIZE); // Posizioniamo il carrello sul record daleggere appoggio.nprogressivo=file.readInt(); // Leggiamo il campo numero progressivo appoggio.titolo=readfixedString(25); // Leggiamo il campo titolo appoggio.autore=readfixedString(25); // Leggiamo il campo autore appoggio.argomento=readfixedString(25); // Leggiamo il campo argomento appoggio.datapubblicazione=readfixedString(25); // Leggiamo il campo datapubblicazione appoggio.nomedelfile=readfixedString(25); // Leggiamo il nome del file System.out.println("NUMERO PROGRESSIVO: "+appoggio.nprogressivo); System.out.println("TITOLO: "+appoggio.titolo); System.out.println("ARGOMENTO: "+appoggio.argomento); System.out.println("DATA PUBBLICAZIONE: "+appoggio.datapubblicazione); System.out.println("NOME DEL FILE: "+appoggio.nomedelfile); System.out.println("AUTORE: "+appoggio.autore); System.out.println(""); System.out.println("MODIFICA O ELIMINAZIONE (M/E) "); scelta=in.nextLine(); // Prendiamo in input la scelta che deve fare lutente if (scelta.equalsIgnoreCase("M")) // Nel caso in cui ci chieda di modificarlodeve pigiare M e nel caso di eliminazione E modifica(parametro); // Attiva la modifica del documento else if (scelta.equalsIgnoreCase("E")) eliminazione(parametro); // Attiva leliminazione del documento else System.out.println("SCELTA NON VALIDA"); } else System.out.println("NON ESISTE UN DOCUMENTO CON QUESTO NUMERO PROGRESSIVO!");}/**** Effettuiamo la modifica di un elemento sapendo il suo numero progressivo** @param parametro Indica il numero progressivo dellelemento da modificare* @throws IOException Lancia uneccezione in caso di mancanza del file*/public void modifica(int parametro)throws IOException{ inserimento(parametro); // Andiamo a modificare lelemento secondo il numeroprogressivo utilizzando il metodo di inserimento} 8
  • 9. /*** * Effettua l eliminazione di un documento appartenente all archivio sapendo il suonumero progressivo** @param parametro Indica il documento con numero progressivo da eliminare* @throws IOException Lancia uneccezione in caso di mancanza del file*/public void eliminazione(int parametro)throws IOException{ appoggio=new RandomAccessFile("appoggio.bin","rw"); // Per effettuare l eliminazioneabbiamo bisogno di un file di appoggio int contatore; for(contatore=0;contatore<parametro;contatore++) // Effettuiamo al scansione completadi tutto larchivio fino al documento da eliminare { file.seek(contatore*RECORD_SIZE); // Spostiamo il carrello relativo al fileprincipale appoggio.seek(contatore*RECORD_SIZE); // Spostiamo il carrello relativo al filedi appoggio appoggio.writeInt(file.readInt()); // Scrittura numero progressivo writefixedStringappoggio(readfixedString(25),25); // Scrittura del titolo comestringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura del autore comestringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura del argomento comestringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura della data dipubblicazione come stringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura del nome del filecome stringa di 25 caratteri } contatore=contatore+1; // Incrementiamo il contatore if (!(contatore==(size()))) // Verifichiamo che il contatore non abbia superato ladimensione dellarchivio { for(;contatore<size();contatore++)//copiamo gli ultimi elementi dell archivioprincipale nell archivio appoggio a partire dallelemento succesivo da eliminare { file.seek(contatore*RECORD_SIZE); appoggio.seek((contatore-1)*RECORD_SIZE); appoggio.writeInt(file.readInt()-1); // Scrittura numero progressivo writefixedStringappoggio(readfixedString(25),25); // Scrittura del titolocome stringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura del autorecome stringa di 25 caratteri 9
  • 10. writefixedStringappoggio(readfixedString(25),25); // Scrittura del argomentocome stringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura della data dipubblicazione come stringa di 25 caratteri writefixedStringappoggio(readfixedString(25),25); // Scrittura del nome delfile come stringa di 25 caratteri } } file.close(); file=new RandomAccessFile("archivio.bin","rw"); for(int i=0;i<size()-1;i++) // Con questo ciclo andiamo a ricopiare il file appoggionel file principale con lavvenuta eliminazione del documento { file.seek(i*RECORD_SIZE); appoggio.seek(i*RECORD_SIZE); file.writeInt(appoggio.readInt()); // Scrittura numero progressivo writefixedString(readfixedStringappoggio(25),25); // Scrittura del titolo comestringa di 25 caratteri writefixedString(readfixedStringappoggio(25),25); // Scrittura del autore comestringa di 25 caratteri writefixedString(readfixedStringappoggio(25),25); // Scrittura del argomento comestringa di 25 caratteri writefixedString(readfixedStringappoggio(25),25); // Scrittura della data dipubblicazione come stringa di 25 caratteri writefixedString(readfixedStringappoggio(25),25); // Scrittura del nome del filecome stringa di 25 caratteri } file.setLength(file.length()-RECORD_SIZE); // Diminuiamo la dimensione del fileprincipale perche abbiamo eliminato un elemento appoggio.close();}/**** Effettua la scrittura di una string nel file di appoggio** @param s Indica la stringa da scrivere nel file di appoggio* @param size Indica la dimensione della stringa* @throws IOException Lancia uneccezione in caso di mancanza del file*/public void writefixedStringappoggio(String s,int size) throws IOException{ int i; for(i=0;i<size;i++) // Ciclo per la scansione della stringa di 25 caratteri { 10
  • 11. char ch=0; // Carattere della string if (i<s.length()) ch=s.charAt(i); // Assegnazione del carattere della stringa inposizione i alla variabile ch appoggio.writeChar(ch); // Scrittura del carattere nell file ad accesso casuale }}/**** Effettua la lettura di una stringa dal file di appoggio** @param size Indica la dimensione della stringa* @return La stringa letta dal file ad accesso casuale* @throws IOException Lancia uneccezione in caso di mancanza del file*/public String readfixedStringappoggio(int size) throws IOException{ String b=""; // Stringa che conterr la concatenazione tra i vari caretteri int i=0; boolean more=true; // Variabile booleana che ci permette di capire se sono finiti icaratteri e ci sono spazi vuoti nel file while(more&&i<size) // Ciclo di scansione dei caratteri { char ch=appoggio.readChar(); // Lettura dei caratteri all interno del file i++; if(ch==0) more=false; // Se il carattere e il vuoto allora viene posta a falso lavariabile booleana else b=b+ch; // Viene concatenato il carattere letto dal file nella stringa } appoggio.skipBytes(2*(size-i)); // Vengono saltati gli spazi vuoti rimanenti delcampo return b; // Fa ritornare la stringa letta dal file}/*** * Effettua la ricerca nellarchivio con in input un campo stringa che potrebbe essere olautore o il titolo** @param dimensione Indica il numero di documenti presenti nellarchivio* @param parametro Indica il campo stringa da ricercare nellarchivio* @throws IOException Lancia uneccezione in caso di mancanza del file*/ 11
  • 12. public void ricerca(int dimensione, String parametro)throws IOException{ Documento appoggio=new Documento(); // Oggetto di appoggio per inserire i daticontenuti nel file boolean test=false; // Variabile booleana che ci permette di definire se statotrovato il documento nel file String scelta; Scanner in=new Scanner(System.in); int i=0; while((i<dimensione)&&(!test)) // Ciclo di scansione del file ad accesso casuale { file.seek(i*RECORD_SIZE); // Posizionamento del puntatore all interno del file adaccesso casuale appoggio.nprogressivo=file.readInt(); // Lettura del numero progressivo appoggio.titolo=readfixedString(25); // Lettura del titolo come stringa di 25caratteri appoggio.autore=readfixedString(25); // Lettura del autore come stringa di 25caratteri appoggio.argomento=readfixedString(25); // Lettura del argomento come stringa di25 caratteri appoggio.datapubblicazione=readfixedString(25); // Lettura della data dipubblicazione come stringa di 25 caratteri appoggio.nomedelfile=readfixedString(25); // Lettura del nome del file comestringa di 25 caratteri if (appoggio.titolo.equals(parametro)) // Confronto tra largomento e ilparametro dato in input dall utente { test=true; System.out.println("NUMERO PROGRESSIVO:"+appoggio.nprogressivo); System.out.println("TITOLO:"+appoggio.titolo); System.out.println("ARGOMENTO:"+appoggio.argomento); System.out.println("DATA PUBBLICAZIONE:"+appoggio.datapubblicazione); System.out.println("NOME DEL FILE:"+appoggio.nomedelfile); System.out.println("AUTORE:"+appoggio.autore); System.out.println(""); System.out.println("MODIFICARE O ELIMINARE?(M/E) "); scelta=in.nextLine(); if (scelta.equalsIgnoreCase("M")) // Nel caso in cui ci chieda di modificarlodeve pigiare M e nel caso di eliminazione E modifica(appoggio.nprogressivo); // Attiva lamodifica del documento else if (scelta.equalsIgnoreCase("E")) eliminazione(appoggio.nprogressivo); // Attivaleliminazione del documento else System.out.println("SCELTA NON VALIDA"); 12
  • 13. } } if(!test) { i=0; while((i<dimensione)&&(!test)) { file.seek(i*RECORD_SIZE); appoggio.nprogressivo=file.readInt(); appoggio.titolo=readfixedString(25); appoggio.autore=readfixedString(25); appoggio.argomento=readfixedString(25); appoggio.datapubblicazione=readfixedString(25); appoggio.nomedelfile=readfixedString(25); if (appoggio.autore.equals(parametro)) { test=true; System.out.println("NUMERO PROGRESSIVO: "+appoggio.nprogressivo); System.out.println("TITOLO: "+appoggio.titolo); System.out.println("ARGOMENTO: "+appoggio.argomento); System.out.println("DATA PUBBLICAZIONE: "+appoggio.datapubblicazione); System.out.println("NOME DEL FILE: "+appoggio.nomedelfile); System.out.println("AUTORE: "+appoggio.autore); System.out.println(""); System.out.println("MODIFICARE O ELIMINARE?(M/E) "); scelta=in.nextLine(); if (scelta.equalsIgnoreCase("M")) // Nel caso in cui ci chieda dimodificarlo deve pigiare M e nel caso di eliminazione E modifica(appoggio.nprogressivo); // Attiva lamodifica del documento else if (scelta.equalsIgnoreCase("E")) eliminazione(appoggio.nprogressivo); // Attivaleliminazione del documento else System.out.println("SCELTA NON VALIDA"); } } if (!test) // Controllo se stato trovato il documento oppure no { System.out.println("IL DOCUMENTO NON E STATO TROVATO!!!"); } }} private RandomAccessFile appoggio; private String titolo; 13
  • 14. private String autore; private String nomedelfile; private int nprogressivo; private String datapubblicazione; private String argomento; private RandomAccessFile file; public static final int INT_SIZE=4; public static final int STRING_SIZE=50; public static final int RECORD_SIZE=(5*STRING_SIZE)+INT_SIZE;} 14
  • 15. Classe DocGestimport java.io.IOException;import java.util.Scanner;/**** @author Ignazio Altomare, Sergio Centrone, Fabio Gadaleta* Classe principale dellarchivio**/public class DocGest{ public static void main(String[]args) throws IOException { Scanner in=new Scanner(System.in); Documento data =new Documento(); boolean vuoto; boolean apertura; int scelta=0; int dimensione; String campo; while(scelta<4) { vuoto=false; // Variabile che ci permette di capire se ci sonoelementi nel file apertura=false; // Specifica il tipo di apertura del file try { data.open("archivio.bin",apertura); // Apre il file in lettura dimensione=data.size(); // Determina il numero di elementi nelfile if (dimensione==0) // Se il numero di elementi e pari a 0permetti solo linserimento { vuoto=true; System.out.println("1 - INSERIMENTO "); System.out.println(); System.out.println(); System.out.println("4 - USCITA "); } else // Altrimenti permetti altre operazioni if ((dimensione!=0)&&(dimensione<50)) { 15
  • 16. System.out.println("1 - INSERIMENTO "); System.out.println("2 - ELENCAZIONE "); System.out.println("3 - MODIFICA O ELIMINAZIONE"); System.out.println("4 - USCITA "); } else { System.out.println("1 - "); System.out.println("2 - ELENCAZIONE "); System.out.println("3 - MODIFICA O ELIMINAZIONE"); System.out.println("4 - USCITA "); } System.out.print("SCELTA= "); scelta=in.nextInt(); data.close(); // Chiudo il file aperto in lettura pervedere se ci sono o non ci sono elementi if (scelta==1) { apertura=true; data.open("archivio.bin",apertura); // Apriamo ilfile in scrittura per inserire un nuovo documento data.inserimento(dimensione); // Inserimento diun nuovo documento data.close(); // Chiudiamo il file aperto inscrittura } else if ((scelta==2)&&(vuoto==false)) { apertura=false; data.open("archivio.bin",apertura); // Apriamo ilfile in lettura per lelencazione in.nextLine(); System.out.println("DAMMI IL CAMPO DATROVARE(ARGOMENTO/AUTORE): "); campo=in.nextLine(); // Prendi in input il campoda ricercare data.elencazione(dimensione,campo); // Effettualelencazione secondo il campo ricevuto in input data.close(); // Chiudiamo il file aperto inlettura in.nextInt(); // Aspetta che lutente riesca avisualizzare i dati e poi prosegue } else if ((scelta==3)&&(vuoto==false)) { 16
  • 17. apertura=true; data.open("archivio.bin", apertura);//Apriamo ilfile in scrittura per la mododifica o leliminazione in.nextLine(); System.out.println("DAMMI IL CAMPO DATROVARE(TITOLO/AUTORE/NUMERO PROGRESSIVO): "); if(in.hasNextInt()) data.ricerca(dimensione,in.nextInt()); //Prendi in input il campo da ricercare se un intero else data.ricerca(dimensione,in.nextLine()); //Prendiamo in input il campo da ricercare se e una stringa data.close(); // Chiudiamo il file apertoin lettura } } catch(IOException exception)//eccezione che gestisce lamancata presenza del file all avvio del programma { apertura=true; data.open("archivio.bin", apertura); System.out.println("RIAVVIARE PROGRAMMA PER EFFETTUAREOPERAZIONI!"); } finally//chiusura del file { data.close(); } } }} 17