Biblioteca

This commit is contained in:
orange 2017-01-26 15:01:20 +01:00
parent d4df59e483
commit 44abff730a
7 changed files with 343 additions and 0 deletions

View 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;
}

View File

@ -0,0 +1,7 @@
public class BookNotFound extends RuntimeException {
public BookNotFound() {}
public BookNotFound(String msg) {
super(msg);
}
}

View 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;
}

View 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;
}

View 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);
}
}

View 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

View 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