GestioneFiliali.java
Created with JBuilder |
class GestioneFiliali {
// Attributi costanti per la gestione del riepilogo a livello di filiale
public static final int RACCOLTA = 0;
public static final int ESPOSIZIONE = 1;
public static final int GIACENZA = 2;
// Attributi della gestione filiali
private Filiale[] elencoFiliali;
private int numeroFiliali;
// Costruttore
public GestioneFiliali(int numeroMaxFiliali) {
elencoFiliali = new Filiale[numeroMaxFiliali];
++numeroFiliali;
}
// La filiale viene aperta (e il relativo oggetto restituito) solo
// se c'è ancora spazio nell'elenco; altrimenti restituisce null
public Filiale apriFiliale(String indirizzo) {
if (numeroFiliali < elencoFiliali.length) {
Filiale filiale = new Filiale(indirizzo);
elencoFiliali[numeroFiliali++] = filiale;
return filiale;
} else {
return null;
}
}
public Filiale chiudiFiliale(String indirizzo) {
for (int i = 0; i < numeroFiliali; ++i) {
String indirizzoTrovato =
elencoFiliali[i].restituisciIndirizzo();
if (indirizzoTrovato.equals(indirizzo)) {
Filiale filiale = elencoFiliali[i];
elencoFiliali[i] = elencoFiliali[numeroFiliali - 1];
--numeroFiliali;
return filiale;
}
}
return null;
}
public double[] calcolaSituazioneFiliali() {
double[] riepilogo = {0.0, 0.0, 0.0};
for (int i = 0; i < numeroFiliali; ++i) {
riepilogo[RACCOLTA] += elencoFiliali[i].calcolaRaccolta();
riepilogo[ESPOSIZIONE] += elencoFiliali[i].calcolaEsposizione();
riepilogo[GIACENZA] += elencoFiliali[i].calcolaGiacenzaMedia();
}
riepilogo[GIACENZA] = riepilogo[GIACENZA] / numeroFiliali;
return riepilogo;
}
public int calcolaTotaleConti() {
int n = 0;
for (int i = 0; i < numeroFiliali; ++i) {
n += elencoFiliali[i].restituisciNumeroConti();
}
return n;
}
// Questo metodo conteggia tutte le filiali per cui l'esposizione
// supera la raccolta
public Filiale[] elencoFilialiEsposte() {
Filiale[] elenco = new Filiale[numeroFiliali];
int k = 0;
for (int i = 0; i < numeroFiliali; ++i) {
if (elencoFiliali[i].calcolaEsposizione() >
elencoFiliali[i].calcolaRaccolta()) {
elenco[k++] = elencoFiliali[i];
}
}
return elenco;
}
// Questo metodo calcola tutte le filiali per cui i conti con esposizione
// superiore al 90% del fido superano il 50% dei conti della filiale
public Filiale[] elencoFilialiProblematiche() {
Filiale[] elenco = new Filiale[numeroFiliali];
int k = 0;
for (int i = 0; i < numeroFiliali; ++i) {
if (elencoFiliali[i].numeroContiProblematici() >
(elencoFiliali[i].restituisciNumeroConti() / 2)) {
elenco[k++] = elencoFiliali[i];
}
}
return elenco;
}
}
GestioneFiliali.java
Created with JBuilder |