Biblioteca
This commit is contained in:
parent
d4df59e483
commit
44abff730a
64
src/Temi d'esame/Biblioteca/Biblioteca.java
Normal file
64
src/Temi d'esame/Biblioteca/Biblioteca.java
Normal file
@ -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<Prestito>();
|
||||||
|
libri= new ArrayList<Libro>();
|
||||||
|
|
||||||
|
// 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<Libro> 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<Prestito> prestiti;
|
||||||
|
private ArrayList<Libro> libri;
|
||||||
|
}
|
7
src/Temi d'esame/Biblioteca/BookNotFound.java
Normal file
7
src/Temi d'esame/Biblioteca/BookNotFound.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
public class BookNotFound extends RuntimeException {
|
||||||
|
public BookNotFound() {}
|
||||||
|
|
||||||
|
public BookNotFound(String msg) {
|
||||||
|
super(msg);
|
||||||
|
}
|
||||||
|
}
|
85
src/Temi d'esame/Biblioteca/Libro.java
Normal file
85
src/Temi d'esame/Biblioteca/Libro.java
Normal file
@ -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<String> autori) {
|
||||||
|
this.id = id;
|
||||||
|
this.titolo = titolo;
|
||||||
|
this.nAutori = nAutori;
|
||||||
|
this.autori = autori;
|
||||||
|
prestiti=new ArrayList<Prestito>();
|
||||||
|
}
|
||||||
|
|
||||||
|
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<String> getAutori() {
|
||||||
|
return autori;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPrestito(Prestito p){
|
||||||
|
prestiti.add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Libro read(Scanner sc){
|
||||||
|
String id, titolo;
|
||||||
|
int nAutori;
|
||||||
|
ArrayList<String> autori = new ArrayList<String>();
|
||||||
|
|
||||||
|
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<nAutori;i++){
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
autori.add(sc.nextLine());
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Libro(id, titolo, nAutori, autori);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
ps.println(id);
|
||||||
|
ps.println(titolo);
|
||||||
|
ps.println(nAutori);
|
||||||
|
for(int i=0;i<nAutori;i++)
|
||||||
|
ps.println(autori.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printPrestiti(PrintStream ps){
|
||||||
|
for(Prestito p: prestiti)
|
||||||
|
ps.println(p.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString(){
|
||||||
|
String stringa=id+" "+titolo+" ";
|
||||||
|
for(String s: autori)
|
||||||
|
stringa+=s+" ";
|
||||||
|
|
||||||
|
return stringa;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String titolo;
|
||||||
|
private int nAutori;
|
||||||
|
private ArrayList<String> autori;
|
||||||
|
private ArrayList<Prestito> prestiti;
|
||||||
|
}
|
96
src/Temi d'esame/Biblioteca/Prestito.java
Normal file
96
src/Temi d'esame/Biblioteca/Prestito.java
Normal file
@ -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;
|
||||||
|
}
|
20
src/Temi d'esame/Biblioteca/Test.java
Normal file
20
src/Temi d'esame/Biblioteca/Test.java
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
}
|
26
src/Temi d'esame/Biblioteca/libri.dat
Normal file
26
src/Temi d'esame/Biblioteca/libri.dat
Normal file
@ -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
|
||||||
|
|
45
src/Temi d'esame/Biblioteca/prestiti.dat
Normal file
45
src/Temi d'esame/Biblioteca/prestiti.dat
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user