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 Azienda(Scanner scDipendenti, Scanner scPresenze) throws Exception{
ArrayList<Presenze> presenze = new ArrayList<Presenze>();
public Azienda(Scanner scDipendenti) throws Exception{
dipendenti = new ArrayList<Dipendente>();
Presenze pres=Presenze.read(scPresenze);
while(pres!=null){
presenze.add(pres);
pres=Presenze.read(scPresenze);
}
Dipendente dip=read(scDipendenti);
while(dip!=null){
for(Presenze p: presenze)
if(dip.getCodiceFiscale().equals(p.getCodiceFiscale())){
dip.setOreLavoro(p.getOreLavoro());
break;//non è molto ortodosso
}
dipendenti.add(dip);
dip=read(scDipendenti);
}
}
private Azienda(ArrayList<Dipendente> dipendenti){
this.dipendenti=dipendenti;
}
private Dipendente read(Scanner sc) throws Exception{
String id;
@ -34,13 +24,65 @@ public class Azienda{
id=sc.next();
if(id.equals("OP"))
return Operaio.read(sc);
else
else if(id.equals("DIR"))
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){
for(Dipendente dip: dipendenti)
ps.println(dip.getCodiceFiscale()+" "+dip.getNome()+" "+dip.getCnome()+" "+dip.calcoloPaga());
dip.print(ps);
}
private ArrayList<Dipendente> dipendenti;

View File

@ -1,7 +1,7 @@
import java.util.Scanner;
import java.io.PrintStream;
public class Dipendente{
public abstract class Dipendente{
public Dipendente(String codiceFiscale, String nome, String cnome, double paga){
@ -9,13 +9,9 @@ public class Dipendente{
this.nome=nome;
this.cnome=cnome;
this.paga=paga;
this.oreLavoro=0;
}
public double calcoloPaga(){
return oreLavoro*getPaga();
}
public abstract double calcoloPaga(int oreLavoro);
//METODI GET
public String getCodiceFiscale(){
@ -34,13 +30,6 @@ public class Dipendente{
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;
}
public void print(PrintStream ps){
ps.println(codiceFiscale);
ps.println(nome);
ps.println(cnome);
ps.println(paga);
}
public abstract void print(PrintStream ps);
/*
public static Dipendente read(Scanner sc) throws Exception{
String codiceFiscale, nome, cnome;
double paga;
@ -71,13 +55,12 @@ public class Dipendente{
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;
protected String codiceFiscale;
protected String nome;
protected String cnome;
protected double paga;
}

View File

@ -9,8 +9,11 @@ public class Dirigente extends Dipendente{
}
public void print(PrintStream ps){
super.print(ps);
ps.println(areaResponsabilità);
ps.print(getCodiceFiscale()+" ");
ps.print(getNome()+" ");
ps.print(getCnome()+" ");
ps.print(areaResponsabilità+" ");
ps.println(getPaga());
}
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à);
}
public String getAreaResponsabilità(){
return areaResponsabilità;
}
public double calcoloPaga(int oreLavoro){
return oreLavoro*getPaga();
}
private String areaResponsabilità;
}

View File

@ -10,21 +10,23 @@ public class Operaio extends Dipendente{
}
public void print(PrintStream ps){
super.print(ps);
ps.println(funzione);
ps.println(livello);
ps.print(getCodiceFiscale()+" ");
ps.print(getNome()+" ");
ps.print(getCnome()+" ");
ps.print(funzione+" ");
ps.print(livello+" ");
ps.println(getPaga());
}
public String toString(){
return super.toString()+" "+funzione+" "+livello;
}
public double calcoloPaga(){
int oreLavoro=super.getOreLavoro();
public double calcoloPaga(int oreLavoro){
if(oreLavoro>165)
return ((oreLavoro-165)*0.3+165)*super.getPaga();
else
return super.calcoloPaga();
return oreLavoro*getPaga();
}
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);
}
public String getLivello(){
return livello;
}
public String getFunzione(){
return funzione;
}
private String livello;
private String funzione;
}

View File

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