abstract
This commit is contained in:
parent
f5d4e736c1
commit
6233b5086a
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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à;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user