This commit is contained in:
Orange 2016-11-21 13:07:30 +01:00
parent f5d4e736c1
commit 6233b5086a
5 changed files with 103 additions and 53 deletions

View File

@ -4,29 +4,19 @@ import java.util.ArrayList;
public class Azienda{ public class Azienda{
public Azienda(Scanner scDipendenti, Scanner scPresenze) throws Exception{ public Azienda(Scanner scDipendenti) throws Exception{
ArrayList<Presenze> presenze = new ArrayList<Presenze>();
dipendenti = new ArrayList<Dipendente>(); dipendenti = new ArrayList<Dipendente>();
Presenze pres=Presenze.read(scPresenze);
while(pres!=null){
presenze.add(pres);
pres=Presenze.read(scPresenze);
}
Dipendente dip=read(scDipendenti); Dipendente dip=read(scDipendenti);
while(dip!=null){ while(dip!=null){
for(Presenze p: presenze)
if(dip.getCodiceFiscale().equals(p.getCodiceFiscale())){
dip.setOreLavoro(p.getOreLavoro());
break;//non è molto ortodosso
}
dipendenti.add(dip); dipendenti.add(dip);
dip=read(scDipendenti); dip=read(scDipendenti);
} }
} }
private Azienda(ArrayList<Dipendente> dipendenti){
this.dipendenti=dipendenti;
}
private Dipendente read(Scanner sc) throws Exception{ private Dipendente read(Scanner sc) throws Exception{
String id; String id;
@ -34,13 +24,65 @@ public class Azienda{
id=sc.next(); id=sc.next();
if(id.equals("OP")) if(id.equals("OP"))
return Operaio.read(sc); return Operaio.read(sc);
else else if(id.equals("DIR"))
return Dirigente.read(sc); return Dirigente.read(sc);
else
return null;
}
public void calcolaPrint(Scanner scPresenze, PrintStream ps) throws Exception{
Dipendente dip;
Presenze pres = Presenze.read(scPresenze);
while(pres!=null){
dip=ricercaDipendentePerCodice(pres.getCodiceFiscale());
if(dip!=null){
double paga=dip.calcoloPaga(pres.getOreLavoro());
dip.print(ps);
ps.println("paga mensile: "+paga);
}
pres=Presenze.read(scPresenze);
}
}
public Dipendente ricercaDipendentePerCodice(String codiceFiscale){
boolean trovato=false;
int i=0;
while(i<dipendenti.size() && !trovato){
if(dipendenti.get(i).getCodiceFiscale().equals(codiceFiscale)){
trovato=true;
}else
i++;
}
if(trovato)
return dipendenti.get(i);
return null;
}
public Azienda filtroCnome(String cnome){
ArrayList<Dipendente> dipendentiFilter = new ArrayList<Dipendente>();
for(Dipendente dip: this.dipendenti)
if(dip.getCnome().equals(cnome))
dipendentiFilter.add(dip);
return new Azienda(dipendentiFilter);
}
public Azienda filtroOP(){
ArrayList<Dipendente> dipendentiFilter = new ArrayList<Dipendente>();
for(Dipendente dip: this.dipendenti)
if(dip instanceof Operaio)
dipendentiFilter.add(dip);
return new Azienda(dipendentiFilter);
} }
public void print(PrintStream ps){ public void print(PrintStream ps){
for(Dipendente dip: dipendenti) for(Dipendente dip: dipendenti)
ps.println(dip.getCodiceFiscale()+" "+dip.getNome()+" "+dip.getCnome()+" "+dip.calcoloPaga()); dip.print(ps);
} }
private ArrayList<Dipendente> dipendenti; private ArrayList<Dipendente> dipendenti;

View File

@ -1,7 +1,7 @@
import java.util.Scanner; import java.util.Scanner;
import java.io.PrintStream; import java.io.PrintStream;
public class Dipendente{ public abstract class Dipendente{
public Dipendente(String codiceFiscale, String nome, String cnome, double paga){ public Dipendente(String codiceFiscale, String nome, String cnome, double paga){
@ -9,13 +9,9 @@ public class Dipendente{
this.nome=nome; this.nome=nome;
this.cnome=cnome; this.cnome=cnome;
this.paga=paga; this.paga=paga;
this.oreLavoro=0;
}
public double calcoloPaga(){
return oreLavoro*getPaga();
} }
public abstract double calcoloPaga(int oreLavoro);
//METODI GET //METODI GET
public String getCodiceFiscale(){ public String getCodiceFiscale(){
@ -34,13 +30,6 @@ public class Dipendente{
return paga; return paga;
} }
public int getOreLavoro(){
return oreLavoro;
}
public void setOreLavoro(int ore){
oreLavoro=ore;
}
@ -50,13 +39,8 @@ public class Dipendente{
return codiceFiscale+" "+nome+" "+cnome+" "+paga; return codiceFiscale+" "+nome+" "+cnome+" "+paga;
} }
public void print(PrintStream ps){ public abstract void print(PrintStream ps);
ps.println(codiceFiscale); /*
ps.println(nome);
ps.println(cnome);
ps.println(paga);
}
public static Dipendente read(Scanner sc) throws Exception{ public static Dipendente read(Scanner sc) throws Exception{
String codiceFiscale, nome, cnome; String codiceFiscale, nome, cnome;
double paga; double paga;
@ -71,13 +55,12 @@ public class Dipendente{
paga=sc.nextDouble(); paga=sc.nextDouble();
return new Dipendente(codiceFiscale, nome, cnome, paga); return new Dipendente(codiceFiscale, nome, cnome, paga);
} }*/
private String codiceFiscale; protected String codiceFiscale;
private String nome; protected String nome;
private String cnome; protected String cnome;
private double paga; protected double paga;
private int oreLavoro;
} }

View File

@ -9,8 +9,11 @@ public class Dirigente extends Dipendente{
} }
public void print(PrintStream ps){ public void print(PrintStream ps){
super.print(ps); ps.print(getCodiceFiscale()+" ");
ps.println(areaResponsabilità); ps.print(getNome()+" ");
ps.print(getCnome()+" ");
ps.print(areaResponsabilità+" ");
ps.println(getPaga());
} }
public static Dirigente read(Scanner sc) throws Exception{ public static Dirigente read(Scanner sc) throws Exception{
@ -30,5 +33,13 @@ public class Dirigente extends Dipendente{
return new Dirigente(codiceFiscale, nome, cnome, paga, areaResponsabilità); return new Dirigente(codiceFiscale, nome, cnome, paga, areaResponsabilità);
} }
public String getAreaResponsabilità(){
return areaResponsabilità;
}
public double calcoloPaga(int oreLavoro){
return oreLavoro*getPaga();
}
private String areaResponsabilità; private String areaResponsabilità;
} }

View File

@ -10,21 +10,23 @@ public class Operaio extends Dipendente{
} }
public void print(PrintStream ps){ public void print(PrintStream ps){
super.print(ps); ps.print(getCodiceFiscale()+" ");
ps.println(funzione); ps.print(getNome()+" ");
ps.println(livello); ps.print(getCnome()+" ");
ps.print(funzione+" ");
ps.print(livello+" ");
ps.println(getPaga());
} }
public String toString(){ public String toString(){
return super.toString()+" "+funzione+" "+livello; return super.toString()+" "+funzione+" "+livello;
} }
public double calcoloPaga(){ public double calcoloPaga(int oreLavoro){
int oreLavoro=super.getOreLavoro();
if(oreLavoro>165) if(oreLavoro>165)
return ((oreLavoro-165)*0.3+165)*super.getPaga(); return ((oreLavoro-165)*0.3+165)*super.getPaga();
else else
return super.calcoloPaga(); return oreLavoro*getPaga();
} }
public static Operaio read(Scanner sc) throws Exception{ public static Operaio read(Scanner sc) throws Exception{
@ -47,6 +49,14 @@ public class Operaio extends Dipendente{
return new Operaio(codiceFiscale, nome, cnome, paga, funzione, livello); return new Operaio(codiceFiscale, nome, cnome, paga, funzione, livello);
} }
public String getLivello(){
return livello;
}
public String getFunzione(){
return funzione;
}
private String livello; private String livello;
private String funzione; private String funzione;
} }

View File

@ -5,7 +5,11 @@ public class Test{
public static void main(String [] args) throws Exception{ public static void main(String [] args) throws Exception{
Scanner scDipendenti = new Scanner(new File("dipendenti.dat")); Scanner scDipendenti = new Scanner(new File("dipendenti.dat"));
Scanner scOreLavoro = new Scanner(new File("presenze.dat")); Scanner scOreLavoro = new Scanner(new File("presenze.dat"));
Azienda azienda = new Azienda(scDipendenti, scOreLavoro); Azienda azienda = new Azienda(scDipendenti);
azienda.print(System.out); azienda.calcolaPrint(scOreLavoro, System.out);
System.out.println("******");
scOreLavoro = new Scanner(new File("presenze.dat"));
Azienda az1= azienda.filtroOP();
az1.calcolaPrint(scOreLavoro, System.out);
} }
} }