1. Classe Documento
import 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 l'autore del documento preso in input
* @param nargomento Indica l'argomento 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, String
nargomento, 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 l'archivio 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 accesso
casuale in modalit lettura e scrittura
else
file=new RandomAccessFile(filename,"r");// Viene aperto un file ad accesso
casuale in modalit lettura
}
/**
*
* Restituisce il numero di documenti presenti nell'archivio
*
* @return Il numero di documenti presenti nell'archivio
*/
public int size() throws IOException
{
return(int)(file.length()/RECORD_SIZE); // Calcolo degli elementi presenti nel
file
}
/**
*
* 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 l'inserimento di un documento all'interno dell'archivio
*
* @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 l'inserimeno dei dati
dal documento
appoggio.nprogressivo =dimensione; // Assegnazione del numero progressivo
nell'oggetto di appoggio
do
{
System.out.print("DIMMI IL TITOLO: ");
appoggio.titolo=in.nextLine(); // Inserimento del titolo nell'oggetto di appoggio
}
while((appoggio.titolo.length()==0)||(appoggio.titolo.length()>=25)); // Controllo
sul titolo
do
{
System.out.print("DIMMI L'AUTORE: ");
appoggio.autore=in.nextLine(); // Inserimento autore nell'oggetto di appoggio
}
while((appoggio.autore.length()==0)||(appoggio.autore.length()>=25)); // Controllo
sull autore
do
{
System.out.print("DIMMI L'ARGOMENTO: ");
appoggio.argomento=in.nextLine(); // Inserimento argomento nell'oggetto di
appoggio
}
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 dell'anno
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 data
pubblicazione
do
{
System.out.print("DAMMI IL NOME DEL FILE=");
appoggio.nomedelfile=in.nextLine(); // Inserimento del nome del file nell'oggetto
di appoggio
}
while((appoggio.nomedelfile.length()==0)||(appoggio.nomedelfile.length()>=25));
file.seek(appoggio.nprogressivo*RECORD_SIZE); // Posizionamento del cursore nel file
ad accesso casuale
file.writeInt(appoggio.nprogressivo); // Scrittura del numero progressivo
writefixedString(appoggio.titolo,25); // Scrittura del titolo come stringa di 25
caratteri
writefixedString(appoggio.autore,25); // Scrittura del autore come stringa di 25
caratteri
writefixedString(appoggio.argomento,25); // Scrittura del argomento come stringa di
25 caratteri
writefixedString(appoggio.datapubblicazione,25); // Scrittura della data di
pubblicazione come stringa di 25 caratteri
writefixedString(appoggio.nomedelfile,25); // Scrittura del nome del file come
stringa di 25 caratteri
}
/**
*
* Effettua una elencazione di tutti i documenti presenti nel file in base ad un criterio
di scelta (in base all'autore o l'argomento) 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 l'informazione del campo da ricercare nell'archivio
*/
public void elencazione(int dimensione,String parametro)throws IOException
{
Documento appoggio=new Documento(); // Oggetto di appoggio per inserire i dati
contenuti nel file
boolean test=false; // Variabile booleana che ci permette di definire se stato
provato 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 file
ad accesso casuale
appoggio.nprogressivo=file.readInt(); // Lettura del numero progressivo
appoggio.titolo=readfixedString(25); // Lettura del titolo come stringa di 25
caratteri
appoggio.autore=readfixedString(25); // Lettura del autore come stringa di 25
caratteri
appoggio.argomento=readfixedString(25); // Lettura del argomento come stringa di
25 caratteri
appoggio.datapubblicazione=readfixedString(25); // Lettura della data di
pubblicazione come stringa di 25 caratteri
appoggio.nomedelfile=readfixedString(25); // Lettura del nome del file come
stringa di 25 caratteri
if (appoggio.argomento.equals(parametro)) // Confronto tra l'argomento e il
parametro 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 all'utente il numero progressivo
System.out.println("TITOLO: "+appoggio.titolo); // Visualizzo all'utente il
titolo
System.out.println("AUTORE: "+appoggio.autore); // Visualizzo all'utente
l'autore
System.out.println("ARGOMENTO: "+appoggio.argomento); // Visualizzo
all'utente l'argomento
System.out.println("DATA PUBBLICAZIONE: "+appoggio.datapubblicazione); //
Visualizzo all'utente la data di pubblicazione
System.out.println("NOME DEL FILE: "+appoggio.nomedelfile); // Visualizzo
all'utente il nome del file
System.out.println("");
}
}
if(!test) // Nel caso in cui non presente un documento con campo argomento uguale a
quello del campo preso in input andiamo a scandire l'archivo per quel che riguarda i
campi 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 un'eccezione 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 in
posizione 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 un'eccezione 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 i
caratteri e ci sono spazi vuoti nel file
while(more&&i<size) // Ciclo di scansione dei caratteri
{
char ch=file.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 la
variabile 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 un'eccezione 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 del
documento trovato, se eliminarlo o modificarlo
Scanner in=new Scanner(System.in);
Documento appoggio=new Documento(); // Documento di appoggio che ci aiuta nella
scansione dell' archivio
7
8. if (parametro<dimensione) // Controllo per capire se il numero progressivo e conforme
al numero di documenti presenti nell'archivio, cio se non super la sua dimensione
{
file.seek(parametro*RECORD_SIZE); // Posizioniamo il carrello sul record da
leggere
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 data
pubblicazione
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 l'utente
if (scelta.equalsIgnoreCase("M")) // Nel caso in cui ci chieda di modificarlo
deve pigiare M e nel caso di eliminazione E
modifica(parametro); // Attiva la modifica del documento
else if (scelta.equalsIgnoreCase("E"))
eliminazione(parametro); // Attiva l'eliminazione 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 dell'elemento da modificare
* @throws IOException Lancia un'eccezione in caso di mancanza del file
*/
public void modifica(int parametro)throws IOException
{
inserimento(parametro); // Andiamo a modificare l'elemento secondo il numero
progressivo utilizzando il metodo di inserimento
}
8
9. /**
*
* Effettua l' eliminazione di un documento appartenente all' archivio sapendo il suo
numero progressivo
*
* @param parametro Indica il documento con numero progressivo da eliminare
* @throws IOException Lancia un'eccezione in caso di mancanza del file
*/
public void eliminazione(int parametro)throws IOException
{
appoggio=new RandomAccessFile("appoggio.bin","rw"); // Per effettuare l' eliminazione
abbiamo bisogno di un file di appoggio
int contatore;
for(contatore=0;contatore<parametro;contatore++) // Effettuiamo al scansione completa
di tutto l'archivio fino al documento da eliminare
{
file.seek(contatore*RECORD_SIZE); // Spostiamo il carrello relativo al file
principale
appoggio.seek(contatore*RECORD_SIZE); // Spostiamo il carrello relativo al file
di appoggio
appoggio.writeInt(file.readInt()); // Scrittura numero progressivo
writefixedStringappoggio(readfixedString(25),25); // Scrittura del titolo come
stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura del autore come
stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura del argomento come
stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura della data di
pubblicazione come stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura del nome del file
come stringa di 25 caratteri
}
contatore=contatore+1; // Incrementiamo il contatore
if (!(contatore==(size()))) // Verifichiamo che il contatore non abbia superato la
dimensione dell'archivio
{
for(;contatore<size();contatore++)//copiamo gli ultimi elementi dell' archivio
principale nell archivio appoggio a partire dall'elemento 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 titolo
come stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura del autore
come stringa di 25 caratteri
9
10. writefixedStringappoggio(readfixedString(25),25); // Scrittura del argomento
come stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura della data di
pubblicazione come stringa di 25 caratteri
writefixedStringappoggio(readfixedString(25),25); // Scrittura del nome del
file 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 appoggio
nel file principale con l'avvenuta 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 come
stringa di 25 caratteri
writefixedString(readfixedStringappoggio(25),25); // Scrittura del autore come
stringa di 25 caratteri
writefixedString(readfixedStringappoggio(25),25); // Scrittura del argomento come
stringa di 25 caratteri
writefixedString(readfixedStringappoggio(25),25); // Scrittura della data di
pubblicazione come stringa di 25 caratteri
writefixedString(readfixedStringappoggio(25),25); // Scrittura del nome del file
come stringa di 25 caratteri
}
file.setLength(file.length()-RECORD_SIZE); // Diminuiamo la dimensione del file
principale 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 un'eccezione 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 in
posizione 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 un'eccezione 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 i
caratteri 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 la
variabile 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 del
campo
return b; // Fa ritornare la stringa letta dal file
}
/**
*
* Effettua la ricerca nell'archivio con in input un campo stringa che potrebbe essere o
l'autore o il titolo
*
* @param dimensione Indica il numero di documenti presenti nell'archivio
* @param parametro Indica il campo stringa da ricercare nell'archivio
* @throws IOException Lancia un'eccezione 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 dati
contenuti nel file
boolean test=false; // Variabile booleana che ci permette di definire se stato
trovato 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 ad
accesso casuale
appoggio.nprogressivo=file.readInt(); // Lettura del numero progressivo
appoggio.titolo=readfixedString(25); // Lettura del titolo come stringa di 25
caratteri
appoggio.autore=readfixedString(25); // Lettura del autore come stringa di 25
caratteri
appoggio.argomento=readfixedString(25); // Lettura del argomento come stringa di
25 caratteri
appoggio.datapubblicazione=readfixedString(25); // Lettura della data di
pubblicazione come stringa di 25 caratteri
appoggio.nomedelfile=readfixedString(25); // Lettura del nome del file come
stringa di 25 caratteri
if (appoggio.titolo.equals(parametro)) // Confronto tra l'argomento e il
parametro 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 modificarlo
deve pigiare M e nel caso di eliminazione E
modifica(appoggio.nprogressivo); // Attiva la
modifica del documento
else if (scelta.equalsIgnoreCase("E"))
eliminazione(appoggio.nprogressivo); // Attiva
l'eliminazione 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 di
modificarlo deve pigiare M e nel caso di eliminazione E
modifica(appoggio.nprogressivo); // Attiva la
modifica del documento
else if (scelta.equalsIgnoreCase("E"))
eliminazione(appoggio.nprogressivo); // Attiva
l'eliminazione 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 DocGest
import java.io.IOException;
import java.util.Scanner;
/**
*
* @author Ignazio Altomare, Sergio Centrone, Fabio Gadaleta
* Classe principale dell'archivio
*
*/
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 sono
elementi 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 nel
file
if (dimensione==0) // Se il numero di elementi e pari a 0
permetti solo l'inserimento
{
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 per
vedere se ci sono o non ci sono elementi
if (scelta==1)
{
apertura=true;
data.open("archivio.bin",apertura); // Apriamo il
file in scrittura per inserire un nuovo documento
data.inserimento(dimensione); // Inserimento di
un nuovo documento
data.close(); // Chiudiamo il file aperto in
scrittura
}
else if ((scelta==2)&&(vuoto==false))
{
apertura=false;
data.open("archivio.bin",apertura); // Apriamo il
file in lettura per l'elencazione
in.nextLine();
System.out.println("DAMMI IL CAMPO DA
TROVARE(ARGOMENTO/AUTORE): ");
campo=in.nextLine(); // Prendi in input il campo
da ricercare
data.elencazione(dimensione,campo); // Effettua
l'elencazione secondo il campo ricevuto in input
data.close(); // Chiudiamo il file aperto in
lettura
in.nextInt(); // Aspetta che l'utente riesca a
visualizzare i dati e poi prosegue
}
else if ((scelta==3)&&(vuoto==false))
{
16
17. apertura=true;
data.open("archivio.bin", apertura);//Apriamo il
file in scrittura per la mododifica o l'eliminazione
in.nextLine();
System.out.println("DAMMI IL CAMPO DA
TROVARE(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 aperto
in lettura
}
}
catch(IOException exception)//eccezione che gestisce la
mancata presenza del file all' avvio del programma
{
apertura=true;
data.open("archivio.bin", apertura);
System.out.println("RIAVVIARE PROGRAMMA PER EFFETTUARE
OPERAZIONI!");
}
finally//chiusura del file
{
data.close();
}
}
}
}
17