GestioneEventi.java
Created with JBuilder |
class GestioneEventi {
// Attributi costanti
public static final int NUMERO_INIZIALE_EVENTI = 100;
// Attributi variabili
private Evento[] elencoEventi;
private int numeroEventi;
// Costruttore
public GestioneEventi( ) {
elencoEventi = new Evento[NUMERO_INIZIALE_EVENTI];
numeroEventi = 0;
}
// Metodi per aggiunta, cancellazione e ricerca di un evento
public void aggiungi(Evento e) {
if (numeroEventi == elencoEventi.length) {
espandiElenco(2);
}
elencoEventi[numeroEventi++] = e;
}
public boolean rimuovi(String nome) {
int posizione = cercaPosizione(nome);
if (posizione >= 0) {
elencoEventi[posizione] = elencoEventi[numeroEventi - 1];
elencoEventi[numeroEventi - 1] = null;
--numeroEventi;
return true;
} else {
return false;
}
}
public Evento cerca(String nome) {
int posizione = cercaPosizione(nome);
if (posizione >= 0) {
return elencoEventi[posizione];
} else {
return null;
}
}
// Metodo per la ricerca di eventi per durata e partecipanti
public Evento[] elencaEventi(int durata, int partecipanti) {
Evento[] elenco = new Evento[numeroEventi];
int j = 0;
for (int i = 0; i < numeroEventi; ++i) {
if ((elencoEventi[i].restituisciDurata() > durata) &&
(elencoEventi[i].restituisciNumeroPartecipanti() > partecipanti)) {
elenco[j++] = elencoEventi[i];
}
}
return elenco;
}
// Metodo per la ricerca di eventi in perdita
public Evento[] elencaEventiInPerdita(String luogo) {
Evento[] elenco = new Evento[numeroEventi];
int j = 0;
for (int i = 0; i < numeroEventi; ++i) {
if (luogo.equals(elencoEventi[i].restituisciLuogo())) {
double ricavo = elencoEventi[i].restituisciQuota() *
elencoEventi[i].restituisciNumeroPartecipanti();
if (ricavo < elencoEventi[i].restituisciCostoTotale()) {
elenco[j++] = elencoEventi[i];
}
}
}
return elenco;
}
// Metodo per la ricerca dei partecipanti morosi
public Partecipante[] elencaPartecipantiMorosi() {
int numeroMorosi = 0;
for (int i = 0; i < numeroEventi; ++i) {
numeroMorosi += elencoEventi[i].calcolaNumeroMorosi();
}
Partecipante[] elencoMorosi = new Partecipante[numeroMorosi];
int j = 0;
for (int i = 0; i < numeroEventi; ++i) {
Partecipante[] temp = elencoEventi[i].elencoMorosi();
for (int k = 0; k < temp.length; ++k) {
elencoMorosi[j++] = temp[k];
}
}
return elencoMorosi;
}
// Metodo per l'elencazione degli eventi in utile (perdita)
public Evento[] elencaEventiInUtile() {
Evento[] elenco = new Evento[numeroEventi];
int j = 0;
for (int i = 0; i < numeroEventi; ++i) {
double ricavo = elencoEventi[i].restituisciQuota() *
elencoEventi[i].restituisciNumeroPartecipanti();
if (ricavo > elencoEventi[i].restituisciCostoTotale()) {
elenco[j++] = elencoEventi[i];
}
}
return elenco;
}
public Evento[] elencaEventiInPerdita() {
Evento[] elenco = new Evento[numeroEventi];
int j = 0;
for (int i = 0; i < numeroEventi; ++i) {
double ricavo = elencoEventi[i].restituisciQuota() *
elencoEventi[i].restituisciNumeroPartecipanti();
if (ricavo < elencoEventi[i].restituisciCostoTotale()) {
elenco[j++] = elencoEventi[i];
}
}
return elenco;
}
// Metodo per il calcolo dell'utile (o della perdita) totale sugli eventi
public double calcolaRisultatoGlobale() {
double risultato = 0;
for (int i = 0; i < numeroEventi; ++i) {
double ricavo = elencoEventi[i].restituisciQuota() *
elencoEventi[i].restituisciNumeroPartecipanti();
risultato += (ricavo - elencoEventi[i].restituisciCostoTotale());
}
return risultato;
}
// Metodi privati per la ricerca di un evento e per l'espansione dell'elenco
private int cercaPosizione(String nome) {
for (int i = 0; i < numeroEventi; ++i) {
if (nome.equals(elencoEventi[i].restituisciNome())) {
return i;
}
}
return -1;
}
private void espandiElenco(int fattore) {
Evento[] nuovoElenco = new Evento[elencoEventi.length * fattore];
for (int i = 0; i < elencoEventi.length; ++i) {
nuovoElenco[i] = elencoEventi[i];
}
elencoEventi = nuovoElenco;
}
}
GestioneEventi.java
Created with JBuilder |