diff --git a/src/AziendaExtends/Azienda.java b/src/AziendaExtends/Azienda.java new file mode 100644 index 0000000..752e420 --- /dev/null +++ b/src/AziendaExtends/Azienda.java @@ -0,0 +1,43 @@ +import java.util.Scanner; +import java.io.PrintStream; +import java.util.ArrayList; + +public class Azienda{ + + public Azienda(Scanner scDipendenti, Scanner scOreLavoro) throws Exception{ + Dipendente dip=read(scDipendenti); + ArrayList oreLavoro = new ArrayList(); + dipendenti = new ArrayList(); + OreLavoro ol=OreLavoro.read(scOreLavoro); + while(ol!=null){ + oreLavoro.add(ol); + ol=OreLavoro.read(scOreLavoro); + } + while(dip!=null){ + for(OreLavoro ore: oreLavoro) + if(dip.getCodiceFiscale().equals(ore.getCodiceFiscale())) + dip.setOreLavoro(ore.getOreLavoro()); + + dipendenti.add(dip); + dip=read(scDipendenti); + } + } + + private Dipendente read(Scanner sc) throws Exception{ + String id; + + if(!sc.hasNext()) return null; + id=sc.next(); + if(id.equals("OP")) + return Operaio.read(sc); + else + return Dirigente.read(sc); + } + + public void print(PrintStream ps){ + for(Dipendente dip: dipendenti) + ps.println(dip.getCodiceFiscale()+" "+dip.getNome()+" "+dip.getCnome()+" "+dip.calcoloPaga()); + } + + private ArrayList dipendenti; +} \ No newline at end of file diff --git a/src/AziendaExtends/Dipendente.java b/src/AziendaExtends/Dipendente.java new file mode 100644 index 0000000..9ef8219 --- /dev/null +++ b/src/AziendaExtends/Dipendente.java @@ -0,0 +1,83 @@ +import java.util.Scanner; +import java.io.PrintStream; + +public class Dipendente{ + + public Dipendente(String codiceFiscale, String nome, String cnome, double paga){ + + this.codiceFiscale=codiceFiscale; + this.nome=nome; + this.cnome=cnome; + this.paga=paga; + this.oreLavoro=0; + } + + public double calcoloPaga(){ + return oreLavoro*getPaga(); + } + + //METODI GET + + public String getCodiceFiscale(){ + return codiceFiscale; + } + + public String getNome(){ + return nome; + } + + public String getCnome(){ + return cnome; + } + + public double getPaga(){ + return paga; + } + + public int getOreLavoro(){ + return oreLavoro; + } + + public void setOreLavoro(int ore){ + oreLavoro=ore; + } + + + + //I/O + + public String toString(){ + return codiceFiscale+" "+nome+" "+cnome+" "+paga; + } + + public void print(PrintStream ps){ + ps.println(codiceFiscale); + ps.println(nome); + ps.println(cnome); + ps.println(paga); + } + + public static Dipendente read(Scanner sc) throws Exception{ + String codiceFiscale, nome, cnome; + double paga; + + if(!sc.hasNext()) return null; + codiceFiscale=sc.next(); + if(!sc.hasNext()) return null; + nome=sc.next(); + if(!sc.hasNext()) return null; + cnome=sc.next(); + if(!sc.hasNextDouble()) return null; + paga=sc.nextDouble(); + + return new Dipendente(codiceFiscale, nome, cnome, paga); + } + + + private String codiceFiscale; + private String nome; + private String cnome; + private double paga; + private int oreLavoro; + +} diff --git a/src/AziendaExtends/Dipendenti b/src/AziendaExtends/Dipendenti new file mode 100644 index 0000000..edcd306 --- /dev/null +++ b/src/AziendaExtends/Dipendenti @@ -0,0 +1,10 @@ +OP GFYDFG67J15A789M Paperino Duck Operaio I 120 +OP GDRSFG67B12Y456Y Pippo Goofy Operaio I 120 +DIR HJKDTF34G11G134G Topolino Mouse R&D 600 +OP GFHHHH56U77U894G Pluto Pluto Operaio I 120 +DIR GSDHBG12H34H765F Eta Beta Approvvigionamento 1000 +OP MFGTYG12F44H897Y Qui Duck Operaio II 220 +OP MGRFGH16J0JU908M Quo Duck Operaio II 220 +OP GSDHBG12H34H765F Qua Duck Operaio II 220 +DIR XDDHBG12Y84H767J Paperino Fauntleroy Contabilità 330 +DIR GSDTGB12H31E764Y Goku Son Personale 1000 diff --git a/src/AziendaExtends/Dirigente.java b/src/AziendaExtends/Dirigente.java new file mode 100644 index 0000000..bf08e92 --- /dev/null +++ b/src/AziendaExtends/Dirigente.java @@ -0,0 +1,34 @@ +import java.io.PrintStream; +import java.util.Scanner; + +public class Dirigente extends Dipendente{ + + public Dirigente(String codiceFiscale, String nome, String cnome, double paga, String areaResponsabilità){ + super(codiceFiscale, nome, cnome, paga); + this.areaResponsabilità=areaResponsabilità; + } + + public void print(PrintStream ps){ + super.print(ps); + ps.println(areaResponsabilità); + } + + public static Dirigente read(Scanner sc) throws Exception{ + String nome, cnome, areaResponsabilità, codiceFiscale; + double paga; + if(!sc.hasNext()) return null; + codiceFiscale=sc.next(); + if(!sc.hasNext()) return null; + nome=sc.next(); + if(!sc.hasNext()) return null; + cnome=sc.next(); + if(!sc.hasNext()) return null; + areaResponsabilità=sc.next(); + if(!sc.hasNextDouble()) return null; + paga=sc.nextDouble(); + + return new Dirigente(codiceFiscale, nome, cnome, paga, areaResponsabilità); + } + + private String areaResponsabilità; +} \ No newline at end of file diff --git a/src/AziendaExtends/Operaio.java b/src/AziendaExtends/Operaio.java new file mode 100644 index 0000000..622b925 --- /dev/null +++ b/src/AziendaExtends/Operaio.java @@ -0,0 +1,52 @@ +import java.io.PrintStream; +import java.util.Scanner; + +public class Operaio extends Dipendente{ + + public Operaio(String codiceFiscale, String nome, String cnome, double paga, String funzione, String livello){ + super(codiceFiscale, nome, cnome, paga); + this.funzione=funzione; + this.livello=livello; + } + + public void print(PrintStream ps){ + super.print(ps); + ps.println(funzione); + ps.println(livello); + } + + public String toString(){ + return super.toString()+" "+funzione+" "+livello; + } + + public double calcoloPaga(){ + int oreLavoro=super.getOreLavoro(); + if(oreLavoro>165) + return ((oreLavoro-165)*0.3+165)*super.getPaga(); + else + return oreLavoro*super.getPaga(); + } + + public static Operaio read(Scanner sc) throws Exception{ + String nome, cnome, livello, funzione, codiceFiscale; + double paga; + + if(!sc.hasNext()) return null; + codiceFiscale=sc.next(); + if(!sc.hasNext()) return null; + nome=sc.next(); + if(!sc.hasNext()) return null; + cnome=sc.next(); + if(!sc.hasNext()) return null; + funzione=sc.next(); + if(!sc.hasNext()) return null; + livello=sc.next(); + if(!sc.hasNextDouble()) return null; + paga=sc.nextDouble(); + + return new Operaio(codiceFiscale, nome, cnome, paga, funzione, livello); + } + + private String livello; + private String funzione; +} \ No newline at end of file diff --git a/src/AziendaExtends/OreLavoro b/src/AziendaExtends/OreLavoro new file mode 100644 index 0000000..dacbc25 --- /dev/null +++ b/src/AziendaExtends/OreLavoro @@ -0,0 +1,10 @@ +GFYDFG67J15A789M 100 +GDRSFG67B12Y456Y 100 +HJKDTF34G11G134G 1000 +GFHHHH56U77U894G 200 +GSDHBG12H34H765F 300 +MFGTYG12F44H897Y 400 +MGRFGH16J0JU908M 100 +GSDHBG12H34H765F 100 +XDDHBG12Y84H767J 100 +GSDTGB12H31E764Y 1000 \ No newline at end of file diff --git a/src/AziendaExtends/OreLavoro.java b/src/AziendaExtends/OreLavoro.java new file mode 100644 index 0000000..5f7d1ba --- /dev/null +++ b/src/AziendaExtends/OreLavoro.java @@ -0,0 +1,32 @@ +import java.util.Scanner; + +public class OreLavoro{ + + public OreLavoro(int oreLavoro, String codiceFiscale){ + this.oreLavoro=oreLavoro; + this.codiceFiscale=codiceFiscale; + } + + public static OreLavoro read(Scanner sc) throws Exception{ + String codiceFiscale; + int oreLavoro; + + if(!sc.hasNext()) return null; + codiceFiscale=sc.next(); + if(!sc.hasNextInt()) return null; + oreLavoro=sc.nextInt(); + + return new OreLavoro(oreLavoro, codiceFiscale); + } + + public int getOreLavoro(){ + return oreLavoro; + } + + public String getCodiceFiscale(){ + return codiceFiscale; + } + + private int oreLavoro; + private String codiceFiscale; +} \ No newline at end of file diff --git a/src/AziendaExtends/Test.java b/src/AziendaExtends/Test.java new file mode 100644 index 0000000..1612f3e --- /dev/null +++ b/src/AziendaExtends/Test.java @@ -0,0 +1,11 @@ +import java.util.Scanner; +import java.io.File; + +public class Test{ + public static void main(String [] args) throws Exception{ + Scanner scDipendenti = new Scanner(new File("Dipendenti")); + Scanner scOreLavoro = new Scanner(new File("OreLavoro")); + Azienda azienda = new Azienda(scDipendenti, scOreLavoro); + azienda.print(System.out); + } +} \ No newline at end of file