This commit is contained in:
orange 2017-03-02 12:24:49 +01:00
parent 0a6515898b
commit e2dcf5bc89
38 changed files with 978 additions and 0 deletions

20
src/Noemi/Gestore.java Normal file
View File

@ -0,0 +1,20 @@
public class Gestore{
public Gestore filtroautore(String autore){
for(Opera o: opere){
if(o.getAutore().equals(autore))
ADD
}
}
public Gestore filtroautore(String autore){
for(Opera o: opere){
if(o instanceof Libro)
Libro l=(Libro) o;
if(l.getCasaEd().equals(autore))
ADD
}
}
private ArrayList<Opera> opere;
}

11
src/Noemi/Libro.java Normal file
View File

@ -0,0 +1,11 @@
public class Libro{
public String getAutore(){
return autore;
}
private String autore;
private String titolo;
private int anno;
private String casaEd;
}

5
src/Noemi/Opera.java Normal file
View File

@ -0,0 +1,5 @@
public interface Opera{
String getTitolo();
String getAutore();
int getAnno();
}

View File

@ -0,0 +1,25 @@
ct01
Mario
Rossi
10/11/1990
ct02
Guido
Bianchi
13/09/1993
ct03
Luca
Verdi
14/01/1950
ct04
Lucia
Bianchi
17/03/1960
ct05
Matilde
Rossi
13/07/1991
ct06
Luca
Rossi
09/09/2009

Binary file not shown.

View File

@ -0,0 +1,84 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.io.PrintStream;
public class Cittadino{
public Cittadino(String codiceFiscale, String nome, String cnome, Date dataNascita){
this.codiceFiscale=codiceFiscale;
this.nome=nome;
this.cnome=cnome;
this.dataNascita=dataNascita;
this.famiglia=new ArrayList<Parentela>();
}
public static Cittadino read(Scanner sc){
String codiceFiscale, nome, cnome;
Date dataNascita;
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
if(!sc.hasNextLine()) return null;
codiceFiscale=sc.nextLine();
if(!sc.hasNextLine()) return null;
nome=sc.nextLine();
if(!sc.hasNextLine()) return null;
cnome=sc.nextLine();
if(!sc.hasNextLine()) return null;
try{
dataNascita=sdf.parse(sc.nextLine());
}
catch(ParseException e){
System.err.println("Data non inserita correttamente.");
dataNascita=new Date(0);
}
return new Cittadino(codiceFiscale, nome, cnome, dataNascita);
}
public String getNome(){
return nome;
}
public String getCodice(){
return codiceFiscale;
}
public Date getDataNascita(){
return dataNascita;
}
public void addFamigliare(Cittadino c, String parentela){
Parentela p=new Parentela(c, parentela);
famiglia.add(p);
}
public String toString(){
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(dataNascita);
}
public void printFamigliari(PrintStream ps){
for(Parentela p: famiglia)
ps.println(p.toString());
}
public boolean hasConiuge(){
for(Parentela p: famiglia)
if(p.getRelazione().equals("coniuge"))
return true;
return false;
}
private String codiceFiscale;
private String nome;
private String cnome;
private Date dataNascita;
private ArrayList<Parentela> famiglia;
}

Binary file not shown.

View File

@ -0,0 +1,5 @@
public class CittadinoNonTrovato extends RuntimeException{
public CittadinoNonTrovato(){
}
}

Binary file not shown.

View File

@ -0,0 +1,106 @@
import java.util.Scanner;
import java.util.ArrayList;
import java.io.PrintStream;
import java.util.Date;
import java.util.Iterator;
public class Gestore{
public Gestore(Scanner scC, Scanner scR){
ArrayList<Cittadino> cittadini=new ArrayList<Cittadino>();
Cittadino c, famigliare;
c=Cittadino.read(scC);
while(c!=null){
cittadini.add(c);
c=Cittadino.read(scC);
}
Relazione r=Relazione.read(scR);
while(r!=null){
try{
c=searchCittadino(r.getCodiceCapo());
famigliare=searchCittadino(r.getCodiceFamigliare());
c.addFamigliare(famigliare, r.getRelazione());
if(r.getRelazione().equals("Figlio")) //Se sono padre figlio va cambiato il tipo di parentela
famigliare.addFamigliare(c, "Padre");
else //Se sono cognugi no
famigliare.addFamigliare(c, r.getRelazione());
}
catch(CittadinoNonTrovato e){
System.err.println("Cittadino non trovato");
}
r=Relazione.read(scR);
}
}
private Gestore(ArrayList<Cittadino> cittadini){
this.cittadini=cittadini;
}
public Cittadino searchCittadino(String codice){
Iterator<Cittadino> iter = cittadini.iterator();
boolean trovato = false;
Cittadino c=null;
while(!trovato && iter.hasNext()){
c=iter.next();
if(c.getCodice().equals(codice))
trovato=true;
}
if(trovato)
return c;
throw new CittadinoNonTrovato();
}
public void printStatoFamiglia(PrintStream ps, String codice){
Cittadino c;
try{
c=searchCittadino(codice);
ps.println(c.toString());
c.printFamigliari(ps);
}
catch(CittadinoNonTrovato e){
System.err.println("Cittadino non trovato");
}
}
public void printStatoFamiglia(PrintStream ps){
for(Cittadino c: cittadini){
ps.println(c.toString());
c.printFamigliari(ps);
}
}
public Gestore filtroNome(String nome){
ArrayList<Cittadino> cittadiniFilter=new ArrayList<Cittadino>();
for(Cittadino c: cittadini){
if(c.getNome().equals(nome))
cittadiniFilter.add(c);
}
return new Gestore(cittadiniFilter);
}
public Gestore filtroDataSposati(Date data){
ArrayList<Cittadino> cittadiniFilter=new ArrayList<Cittadino>();
for(Cittadino c: cittadini){
if(c.getDataNascita().before(data) && c.hasConiuge())
cittadiniFilter.add(c);
}
return new Gestore(cittadiniFilter);
}
public void print(PrintStream ps){
for(Cittadino c: cittadini)
ps.println(c.toString());
}
private ArrayList<Cittadino> cittadini;
}

Binary file not shown.

View File

@ -0,0 +1,18 @@
public class Parentela{
public Parentela(Cittadino c, String relazione){
this.parente=c;
this.relazione=relazione;
}
public String toString(){
return parente.toString()+" "+relazione;
}
public String getRelazione(){
return relazione;
}
private Cittadino parente;
private String relazione;
}

View File

@ -0,0 +1,9 @@
ct01
ct05
Coniuge
ct01
ct06
Figlio
ct03
ct01
figlio

Binary file not shown.

View File

@ -0,0 +1,41 @@
import java.util.Scanner;
public class Relazione{
public Relazione(String codiceCapo, String codiceFamigliare, String relazione){
this.codiceCapo=codiceCapo;
this.codiceFamigliare=codiceFamigliare;
this.relazione=relazione;
}
public static Relazione read(Scanner sc){
String codiceCapo, codiceFamigliare, relazione;
if(!sc.hasNextLine()) return null;
codiceCapo=sc.nextLine();
if(!sc.hasNextLine()) return null;
codiceFamigliare=sc.nextLine();
if(!sc.hasNextLine()) return null;
relazione=sc.nextLine();
return new Relazione(codiceCapo, codiceFamigliare, relazione);
}
public String getCodiceCapo(){
return codiceCapo;
}
public String getCodiceFamigliare(){
return codiceFamigliare;
}
public String getRelazione(){
return relazione;
}
private String codiceCapo;
private String codiceFamigliare;
private String relazione;
}

Binary file not shown.

View File

@ -0,0 +1,18 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test{
public static void main(String [] args){
Scanner scC=null, scP=null;
try{
scC=new Scanner(new File("Cittadini.txt"));
scP=new Scanner(new File("RelFam.txt"));
}catch(FileNotFoundException e){
System.exit(1);
}
Gestore g=new Gestore(scC, scP);
g.print(System.out);
}
}

View File

@ -0,0 +1,53 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class Cittadino{
public Cittadino(String codiceFiscale, String nome, String cnome, Date dataNascita){
this.codiceFiscale=codiceFiscale;
this.nome=nome;
this.cnome=cnome;
this.dataNascita=dataNascita;
this.famiglia=null;
}
public static Cittadino read(Scanner sc){
String codiceFiscale, nome, cnome;
Date dataNascita;
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
if(!sc.hasNextLine()) return null;
codiceFiscale=sc.nextLine();
if(!sc.hasNextLine()) return null;
nome=sc.nextLine();
if(!sc.hasNextLine()) return null;
cnome=sc.nextLine();
if(!sc.hasNextLine()) return null;
try{
dataNascita=sdf.parse(sc.nextLine());
}
catch(ParseException e){
System.err.println("Data non inserita correttamente.");
dataNascita=new Date(0);
}
return new Cittadino(codiceFiscale, nome, cnome, dataNascita);
}
public String toString(){
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(dataNascita);
}
private String codiceFiscale;
private String nome;
private String cnome;
private Date dataNascita;
private Famiglia famiglia;
}

View File

@ -0,0 +1,8 @@
import java.util.ArrayList;
public class Famiglia{
private Cittadino capo;
private Cittadino cognuge;
private ArrayList<Cittadino> figli;
}

View File

@ -0,0 +1,29 @@
import java.util.ArrayList;
import java.util.Scanner;
public class Gestore{
public Gestore(Scanner scC, Scanner scP){
ArrayList<Cittadino> cittadini=new ArrayList<Cittadino>();
ArrayList<Famiglia> famiglie=new ArrayList<Famiglia>();
Cittadino famiglare;
Cittadino c=Cittadino.read(scC);
while(c!=null){
cittadini.add(c);
c=Cittadino.read(scC);
}
Parentella p = Parentella.read(scP);
while(p!=null){
try{
c=searchCapo(p.getCodiceCapo());
famiglare=searchFamigliare(p.getCodiceFamigliare());
}
}
}
private ArrayList<Cittadino> cittadini;
private ArrayList<Famiglia> famiglie;
}

View File

@ -0,0 +1,29 @@
import java.util.Scanner;
public class Parentela{
public Parentela(String codiceCapo, String codiceFamigliare, String relazione){
this.codiceCapo=codiceCapo;
this.codiceFamigliare=codiceFamigliare;
this.relazione=relazione;
}
public static void read(Scanner sc){
String codiceCapo, codiceFamigliare, relazione;
if(!sc.hasNextLine()) return null;
codiceFiscale=sc.nextLine();
if(!sc.hasNextLine()) return null;
nome=sc.nextLine();
if(!sc.hasNextLine()) return null;
cnome=sc.nextLine();
return new Parentela(codiceCapo, codiceFamigliare, relazione);
}
private String codiceCapo;
private String codiceFamigliare;
private String relazione;
}

Binary file not shown.

View File

@ -0,0 +1,93 @@
import java.util.Scanner;
import java.io.PrintStream;
public class Giacenza {
public Giacenza(String codeM, String codeP, int quantità) {
this.codeM = codeM;
this.codeP = codeP;
this.quantità = quantità;
magazino=null;
prodotto=null;
}
// GET&&SET
public String getCodeM() {
return codeM;
}
public void setCodeM(String codeM) {
this.codeM = codeM;
}
public String getCodeP() {
return codeP;
}
public void setCodeP(String codeP) {
this.codeP = codeP;
}
public int getQuantità() {
return quantità;
}
public void setQuantità(int quantità) {
this.quantità = quantità;
}
public Magazzino getMagazzino(){
return magazino;
}
public void setMagazzino(Magazzino m){
this.magazino=m;
}
public Prodotto getProdotto(){
return prodotto;
}
public void setProdotto(Prodotto p){
this.prodotto=p;
}
// I/O
public static Giacenza read(Scanner sc){
String codeM, codeP;
int quantità;
if(!sc.hasNextLine()) return null;
codeM=sc.nextLine();
if(!sc.hasNextLine()) return null;
codeP=sc.nextLine();
if(!sc.hasNextLine()) return null;
quantità=Integer.parseInt(sc.nextLine());
return new Giacenza(codeM, codeP, quantità);
}
public void print(PrintStream ps){
ps.println(codeM);
ps.println(codeP);
ps.println(quantità);
}
public String toString(){
return codeM+" "+codeP+" "+quantità;
}
private String codeM;
private String codeP;
private int quantità;
private Magazzino magazino;
private Prodotto prodotto;
}

Binary file not shown.

View File

@ -0,0 +1,126 @@
import java.util.Scanner;
import java.util.LinkedList;
import java.io.PrintStream;
public class Magazzino {
public Magazzino(String codeM, String indirizzo, String città, String nazione, String telefono, String fax) {
this.codeM = codeM;
this.indirizzo = indirizzo;
this.città = città;
this.nazione = nazione;
this.telefono = telefono;
this.fax = fax;
giacenze=new LinkedList<Giacenza>();
prodotti=new LinkedList<Prodotto>();
}
public Magazzino() {
this.codeM = "DEF";
giacenze=new LinkedList<Giacenza>();
prodotti=new LinkedList<Prodotto>();
}
public String getCodeM() {
return codeM;
}
public void setCodeM(String codeM) {
this.codeM = codeM;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getIndirizzo() {
return indirizzo;
}
public String getCittà() {
return città;
}
public String getNazione() {
return nazione;
}
public LinkedList<Giacenza> getGiacenze(){
return giacenze;
}
public void addGiacenza(Giacenza g){
giacenze.add(g);
}
public LinkedList<Prodotto> getProdotti(){
return prodotti;
}
public void addProdotto(Prodotto p){
prodotti.add(p);
}
public static Magazzino read(Scanner sc){
String codeM, indirizzo, città, nazione, telefono, fax;
if(!sc.hasNext()) return null;
codeM=sc.nextLine();
if(!sc.hasNext()) return null;
indirizzo=sc.nextLine();
if(!sc.hasNext()) return null;
città=sc.nextLine();
if(!sc.hasNext()) return null;
nazione=sc.nextLine();
if(!sc.hasNext()) return null;
telefono=sc.nextLine();
if(!sc.hasNext()) return null;
fax=sc.nextLine();
return new Magazzino(codeM, indirizzo, città, nazione, telefono, fax);
}
public void print(PrintStream ps){
ps.println(codeM);
ps.println(indirizzo);
ps.println(città);
ps.println(nazione);
ps.println(telefono);
ps.println(fax);
}
public void printGiacenze(PrintStream ps){
for(Giacenza g: giacenze)
ps.println(g.toString());
}
public void printProdotti(PrintStream ps){
for(Prodotto p: prodotti)
ps.println(p.toString());
}
public String toString(){
return codeM+" "+indirizzo+" "+città+" "+nazione;
}
private String codeM;
private String indirizzo;
private String città;
private String nazione;
private String telefono;
private String fax;
private LinkedList<Giacenza> giacenze;
private LinkedList<Prodotto> prodotti;
}

Binary file not shown.

View File

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

Binary file not shown.

View File

@ -0,0 +1,90 @@
import java.util.Scanner;
import java.util.LinkedList;
import java.io.PrintStream;
public class Prodotto {
public Prodotto(String codeP, String descrizione, double prezzo) {
this.codeP = codeP;
this.descrizione = descrizione;
this.prezzo = prezzo;
giacenze=new LinkedList<Giacenza>();
magazzini=new LinkedList<Magazzino>();
}
public String getCodeP() {
return codeP;
}
public void setCodeP(String codeP) {
this.codeP = codeP;
}
public double getPrezzo() {
return prezzo;
}
public void setPrezzo(double prezzo) {
this.prezzo = prezzo;
}
public String getDescrizione() {
return descrizione;
}
public LinkedList<Giacenza> getGiacenze(){
return giacenze;
}
public void addGiacenza(Giacenza g){
giacenze.add(g);
}
public LinkedList<Magazzino> getMagazzini(){
return magazzini;
}
public void addMagazzino(Magazzino m){
magazzini.add(m);
}
public static Prodotto read(Scanner sc){
String codeP, descrizione;
double prezzo;
if(!sc.hasNext()) return null;
codeP=sc.nextLine();
if(!sc.hasNext()) return null;
descrizione=sc.nextLine();
if(!sc.hasNext()) return null;
prezzo=Double.parseDouble(sc.nextLine());
return new Prodotto(codeP, descrizione, prezzo);
}
public void print(PrintStream ps){
ps.println(codeP);
ps.println(descrizione);
ps.println(prezzo);
}
public void printGiacenze(PrintStream ps){
for(Giacenza g: giacenze)
ps.println(g.toString());
}
public void printMagzzini(PrintStream ps){
for(Magazzino m: magazzini)
ps.println(m.toString());
}
public String toString(){
return codeP+" "+descrizione+" "+prezzo;
}
private String codeP;
private String descrizione;
private double prezzo;
private LinkedList<Giacenza> giacenze;
private LinkedList<Magazzino> magazzini;
}

Binary file not shown.

View File

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

Binary file not shown.

View File

@ -0,0 +1,116 @@
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Scanner;
import java.io.PrintStream;
public class Store {
public Store(Scanner scM, Scanner scP, Scanner scG){
giacenze=new LinkedList<Giacenza>();
prodotti=new LinkedList<Prodotto>();
magazzini=new LinkedList<Magazzino>();
Magazzino m=Magazzino.read(scM);
while(m!=null){
magazzini.add(m);
m=Magazzino.read(scM);
}
Prodotto p=Prodotto.read(scP);
while(p!=null){
prodotti.add(p);
p=Prodotto.read(scP);
}
Giacenza g=Giacenza.read(scG);
while(g!=null){
try{
m=searchMagazzino(g.getCodeM());
}
catch(MagazzinoNonTrovato e){
System.err.println(e.getMessage());
System.err.println("Impostato a default.");
m=new Magazzino();
}
try{
p=searchProdotto(g.getCodeP());
g.setMagazzino(m);
g.setProdotto(p);
p.addGiacenza(g);
p.addMagazzino(m);
m.addGiacenza(g);
m.addProdotto(p);
giacenze.add(g);
}
catch(ProdottoNonTrovato e){
System.err.println(e.getMessage());
System.err.println("Giacenza saltata");
}
g=Giacenza.read(scG);
}
}
private Store(LinkedList<Magazzino> magazzini, LinkedList<Prodotto> prodotti, LinkedList<Giacenza> giacenze){
this.magazzini=magazzini;
this.prodotti=prodotti;
this.giacenze=giacenze;
}
private Magazzino searchMagazzino(String codeM){
boolean trovato=false;
ListIterator<Magazzino> iter = magazzini.listIterator();
Magazzino m=null;
while(iter.hasNext() && !trovato){
m=iter.next();
if(m.getCodeM().equals(codeM))
trovato=true;
}
if(trovato)
return m;
throw new MagazzinoNonTrovato("Il Magazzino con codice: "+codeM+" non è stato trovato");
}
private Prodotto searchProdotto(String codeP){
boolean trovato=false;
ListIterator<Prodotto> iter = prodotti.listIterator();
Prodotto p=null;
while(iter.hasNext() && !trovato){
p=iter.next();
if(p.getCodeP().equals(codeP))
trovato=true;
}
if(trovato)
return p;
throw new ProdottoNonTrovato("Il Prodotto con codice: "+codeP+" non è stato trovato");
}
public Store filtroPrezzoMaggiore(double prezzo){
LinkedList<Giacenza> giacenzeFilter=new LinkedList<Giacenza>();
LinkedList<Prodotto> prodottiFilter=new LinkedList<Prodotto>();
LinkedList<Magazzino> magazziniFilter=new LinkedList<Magazzino>();
for(Prodotto p: prodotti)
if(p.getPrezzo()>prezzo){
prodottiFilter.add(p);
giacenzeFilter.addAll(p.getGiacenze());
magazziniFilter.addAll(p.getMagazzini());
}
return new Store(magazziniFilter, prodottiFilter, giacenzeFilter);
}
public void printReportProdotti(PrintStream ps){
for(Prodotto p: prodotti){
ps.println("Descrizione: "+p.getDescrizione()+" Prezzo: "+p.getPrezzo());
for(Giacenza g: p.getGiacenze())
ps.println(g.getMagazzino().toString()+" "+g.getQuantità());
ps.println("*****");
}
}
private LinkedList<Giacenza> giacenze;
private LinkedList<Prodotto> prodotti;
private LinkedList<Magazzino> magazzini;
}

Binary file not shown.

View File

@ -0,0 +1,20 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test{
public static void main(String [] args){
Scanner scM=null, scP=null, scG=null;
try{
scM=new Scanner(new File("magazzini.dat"));
scP=new Scanner(new File("prodotti.dat"));
scG=new Scanner(new File("giacenze.dat"));
}
catch(FileNotFoundException e){
System.err.println("Uno dei file non esiste");
System.exit(1);
}
Store store=new Store(scM, scP, scG);
store.filtroPrezzoMaggiore(15).printReportProdotti(System.out);
}
}

View File

@ -0,0 +1,28 @@
MG01
PR01
50
MG01
PR02
20
MG01
PR05
60
MG02
PR01
20
MG02
PR03
30
MG02
PR04
20
MG02
PR05
40
MG03
PR03
30
MG03
PR05
40

View File

@ -0,0 +1,18 @@
MG01
via delle rose
Benevento
Italia
123456
123456
MG02
via Traiano
Benevento
Italia
1234567
1234567
MG03
Via Traiano
Roma
Italia
12345678
12345678

View File

@ -0,0 +1,16 @@
PR01
Scarpe da calcio
23.90
PR02
Scarpe da tennis
45.95
PR03
Pallone da basket
25
PR04
Pallina da tennis
4.99
PR05
trx
20