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