From 44abff730a8ac5c101d661289d9fe7193cc08793 Mon Sep 17 00:00:00 2001 From: orange Date: Thu, 26 Jan 2017 15:01:20 +0100 Subject: [PATCH] Biblioteca --- src/Temi d'esame/Biblioteca/Biblioteca.java | 64 +++++++++++++ src/Temi d'esame/Biblioteca/BookNotFound.java | 7 ++ src/Temi d'esame/Biblioteca/Libro.java | 85 ++++++++++++++++ src/Temi d'esame/Biblioteca/Prestito.java | 96 +++++++++++++++++++ src/Temi d'esame/Biblioteca/Test.java | 20 ++++ src/Temi d'esame/Biblioteca/libri.dat | 26 +++++ src/Temi d'esame/Biblioteca/prestiti.dat | 45 +++++++++ 7 files changed, 343 insertions(+) create mode 100644 src/Temi d'esame/Biblioteca/Biblioteca.java create mode 100644 src/Temi d'esame/Biblioteca/BookNotFound.java create mode 100644 src/Temi d'esame/Biblioteca/Libro.java create mode 100644 src/Temi d'esame/Biblioteca/Prestito.java create mode 100644 src/Temi d'esame/Biblioteca/Test.java create mode 100644 src/Temi d'esame/Biblioteca/libri.dat create mode 100644 src/Temi d'esame/Biblioteca/prestiti.dat diff --git a/src/Temi d'esame/Biblioteca/Biblioteca.java b/src/Temi d'esame/Biblioteca/Biblioteca.java new file mode 100644 index 0000000..fa24304 --- /dev/null +++ b/src/Temi d'esame/Biblioteca/Biblioteca.java @@ -0,0 +1,64 @@ +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Scanner; +import java.io.PrintStream; + +public class Biblioteca{ + + public Biblioteca(Scanner scP, Scanner scL){ + prestiti=new ArrayList(); + libri= new ArrayList(); + + // Lettura libri + Libro l=Libro.read(scL); + while(l!=null){ + libri.add(l); + l=Libro.read(scL); + } + + // Lettura prestiti + Prestito p=Prestito.read(scP); + while(p!=null){ + try{ + l=libroSearch(p.getID()); // ricerca del libro + p.setLibro(l); // se il libro esiste viene linkato al prestito + l.addPrestito(p); // il prestito viene linkato al libro + prestiti.add(p); // il orestito viene agginto alla lista dei prestiti + } + // Cosa fare se il libro non esiste + catch(BookNotFound e){ + System.err.println(e.getMessage()); + System.err.println("Prestito saltato"); + } + p=Prestito.read(scP); + } + } + + private Libro libroSearch(String id){ + Iterator iter = libri.iterator(); + boolean trovato=false; + Libro l=null; + while(iter.hasNext() && !trovato){ + l=iter.next(); + if(l.getID().equals(id)) + trovato=true; + } + + if(trovato) + return l; + throw new BookNotFound("Il libro: "+id+" non รจ stato trovato"); + } + + public void printStoricoPrestiti(PrintStream ps){ + for(Libro l: libri){ + ps.println(l.toString()); + l.printPrestiti(ps); + ps.println("*****"); + } + } + + + + private ArrayList prestiti; + private ArrayList libri; +} \ No newline at end of file diff --git a/src/Temi d'esame/Biblioteca/BookNotFound.java b/src/Temi d'esame/Biblioteca/BookNotFound.java new file mode 100644 index 0000000..a3799c0 --- /dev/null +++ b/src/Temi d'esame/Biblioteca/BookNotFound.java @@ -0,0 +1,7 @@ +public class BookNotFound extends RuntimeException { + public BookNotFound() {} + + public BookNotFound(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Biblioteca/Libro.java b/src/Temi d'esame/Biblioteca/Libro.java new file mode 100644 index 0000000..6ecb58b --- /dev/null +++ b/src/Temi d'esame/Biblioteca/Libro.java @@ -0,0 +1,85 @@ +import java.util.ArrayList; +import java.io.PrintStream; +import java.util.Scanner; + +public class Libro { + + public Libro(String id, String titolo, int nAutori, ArrayList autori) { + this.id = id; + this.titolo = titolo; + this.nAutori = nAutori; + this.autori = autori; + prestiti=new ArrayList(); + } + + public String getID() { + return id; + } + + public void setID(String id) { + this.id = id; + } + + public String getTitolo() { + return titolo; + } + + public int getnAutori() { + return nAutori; + } + + public ArrayList getAutori() { + return autori; + } + + public void addPrestito(Prestito p){ + prestiti.add(p); + } + + public static Libro read(Scanner sc){ + String id, titolo; + int nAutori; + ArrayList autori = new ArrayList(); + + if(!sc.hasNextLine()) return null; + id=sc.nextLine(); + if(!sc.hasNextLine()) return null; + titolo=sc.nextLine(); + if(!sc.hasNextLine()) return null; + nAutori=Integer.parseInt(sc.nextLine()); + for(int i=0;i autori; + private ArrayList prestiti; +} diff --git a/src/Temi d'esame/Biblioteca/Prestito.java b/src/Temi d'esame/Biblioteca/Prestito.java new file mode 100644 index 0000000..9957336 --- /dev/null +++ b/src/Temi d'esame/Biblioteca/Prestito.java @@ -0,0 +1,96 @@ +import java.util.Date; +import java.util.Scanner; +import java.io.PrintStream; +import java.text.SimpleDateFormat; +import java.text.ParseException; + +public class Prestito{ + + public Prestito(String nome, String cnome, String id, Date start, Date end){ + this.nome=nome; + this.cnome=cnome; + this.id=id; + this.start=start; + this.end=end; + this.libro=null; + } + + public String getNome(){ + return nome; + } + + public String getCnome(){ + return cnome; + } + + public String getID(){ + return id; + } + + public Date getStart(){ + return start; + } + + public Date getEnd(){ + return end; + } + + public void setEnd(Date end){ + this.end=end; + } + + public void setLibro(Libro libro){ + this.libro=libro; + } + + public static Prestito read(Scanner sc){ + + String nome, cnome, id; + Date start, end; + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + + if(!sc.hasNextLine()) return null; + nome=sc.nextLine(); + if(!sc.hasNextLine()) return null; + cnome=sc.nextLine(); + if(!sc.hasNextLine()) return null; + id=sc.nextLine(); + if(!sc.hasNextLine()) return null; + try{ + start=sdf.parse(sc.nextLine()); + } + catch(ParseException exception){ + start=new Date(); + } + if(!sc.hasNextLine()) return null; + try{ + end=sdf.parse(sc.nextLine()); + } + catch(ParseException exception){ + end=new Date(); + } + + return new Prestito(nome, cnome, id, start, end); + } + + public void print(PrintStream ps){ + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + ps.println(nome); + ps.println(cnome); + ps.println(id); + ps.println(sdf.format(start)); + ps.println(sdf.format(end)); + } + + public String toString(){ + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + return nome+" "+cnome+" "+id+" "+sdf.format(start)+"-"+sdf.format(end); + } + + private String nome; + private String cnome; + private String id; + private Date start; + private Date end; + private Libro libro; +} \ No newline at end of file diff --git a/src/Temi d'esame/Biblioteca/Test.java b/src/Temi d'esame/Biblioteca/Test.java new file mode 100644 index 0000000..7104418 --- /dev/null +++ b/src/Temi d'esame/Biblioteca/Test.java @@ -0,0 +1,20 @@ +import java.util.Scanner; +import java.io.File; +import java.io.FileNotFoundException; + +public class Test{ + public static void main(String [] args){ + Scanner scP=null, scL=null; + try{ + scP = new Scanner(new File("prestiti.dat")); + scL = new Scanner(new File("libri.dat")); + } + catch(FileNotFoundException e){ + System.err.println("Impossibile trovare uno dei due file"); + System.exit(1); + } + + Biblioteca bl1 = new Biblioteca(scP, scL); + bl1.printStoricoPrestiti(System.out); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Biblioteca/libri.dat b/src/Temi d'esame/Biblioteca/libri.dat new file mode 100644 index 0000000..d6ae67f --- /dev/null +++ b/src/Temi d'esame/Biblioteca/libri.dat @@ -0,0 +1,26 @@ +LB01 +1984 +1 +George Orwell +LB02 +La Fattoria degli Animali +1 +George Orwell +LB03 +Fight Club +1 +Chuck Palahniuk +LB04 +La Gaia Scienza +2 +Friedrich Nietzsche +Carlo Gentili +LB05 +Noi Siamo Infinito +1 +Stephen Chbosky +LB06 +Il Lato Positivo +1 +Matthew Quick + diff --git a/src/Temi d'esame/Biblioteca/prestiti.dat b/src/Temi d'esame/Biblioteca/prestiti.dat new file mode 100644 index 0000000..bc2ea47 --- /dev/null +++ b/src/Temi d'esame/Biblioteca/prestiti.dat @@ -0,0 +1,45 @@ +Raffaele +Mignone +LB01 +10/05/2014 +27/06/2014 +Raffaele +Mignone +LB02 +10/05/2014 +27/06/2014 +Raffaele +Mignone +LB05 +15/04/2012 +20/04/2012 +Raffaele +Mignone +LB06 +02/07/2015 +12/07/2015 +Raffaele +Mignone +LB03 +20/01/2017 +00/00/0000 +Noemi +Mincolelli +LB04 +24/01/2017 +00/00/0000 +Noemi +Mincolelli +LB05 +12/10/2014 +20/10/2014 +Luigi +Quarantiello +LB03 +03/11/2015 +17/11/2015 +Luigi +Quarantiello +LB04 +27/09/2016 +05/11/2016