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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Programmazione Doc Gest, Codifica

310

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
310
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

×