GestionePalestra.java
Created with JBuilder |
class GestionePalestra {
// Gestione degli elenchi iscritti e corsi
public static final int NUMERO_ISCRITTI_INIZIALE = 1;
public static final int NUMERO_CORSI_INIZIALE = 1;
// Gestione dei numeri chiusi
public static final int[] MAX_ISCRITTI = {20,15,10,40,20,20};
// Attributi
private Iscritto[] elencoIscritti;
private int numeroIscritti;
private Corso[] elencoCorsi;
private int numeroCorsi;
// Costruttore
public GestionePalestra( ) {
elencoIscritti = new Iscritto[NUMERO_ISCRITTI_INIZIALE];
elencoCorsi = new Corso[NUMERO_CORSI_INIZIALE];
numeroIscritti = numeroCorsi = 0;
}
// Iscrizione
public void iscrivi(String nome, String cognome, int anni) {
Iscritto iscritto = new Iscritto(nome, cognome, anni);
if (elencoIscritti.length == numeroIscritti) {
espandiElencoIscritti();
}
elencoIscritti[numeroIscritti] = iscritto;
++numeroIscritti;
}
// Ritiro della persona
public boolean ritira(Iscritto iscritto) {
// Verifica che l'iscritto sia in elenco
for (int i = 0; i < numeroIscritti; ++i) {
if (elencoIscritti[i].restituisciNumeroTessera() ==
iscritto.restituisciNumeroTessera()) {
// Ritira l'iscritto da tutti i corsi di cui fa parte
for (int j = 0; j < numeroCorsi; ++j) {
boolean r = elencoCorsi[j].ritira(iscritto);
}
return true;
}
}
return false;
}
// Istituzione di un nuovo corso
public void creaNuovoCorso(int tipo, Iscritto istruttore,
double costoOrario, int numeroOre) {
if (verificaIstruttore(istruttore)) {
Corso c = new Corso(tipo, istruttore, costoOrario, numeroOre,
MAX_ISCRITTI[tipo]);
if (numeroCorsi == elencoCorsi.length) {
espandiElencoCorsi();
}
elencoCorsi[numeroCorsi] = c;
++numeroCorsi;
}
}
// Cancellazione di un corso
public boolean cancellaCorso(Iscritto istruttore) {
for (int i = 0; i < numeroCorsi; ++i) {
Iscritto istruttoreTrovato =
elencoCorsi[i].restituisciIstruttore();
if (istruttore.restituisciNumeroTessera() ==
istruttoreTrovato.restituisciNumeroTessera()) {
elencoCorsi[i] = elencoCorsi[numeroCorsi - 1];
--numeroCorsi;
return true;
}
}
return false;
}
// Calcolo del ricavo complessivo della palestra
public double calcolaRicavoComplessivo( ) {
double ricavo = 0.0;
for (int i = 0; i < numeroCorsi; ++i) {
ricavo += elencoCorsi[i].calcolaRicavoComplessivo();
}
return ricavo;
}
// Elenco degli iscritti alla palestra con tipologia ed età
// superiore ad una data
// Ipotesi: una stessa persona non è iscritta a più corsi dello stesso tipo
public Iscritto[] elencoIscrittiPerTipoEdAnni( int tipo, int anni ) {
int k = 0;
Iscritto[] risultato = new Iscritto[numeroIscritti];
for (int i = 0; i < numeroCorsi; ++i){
if (elencoCorsi[i].restituisciTipo() == tipo) {
Iscritto[] temp =
elencoCorsi[i].elencoIscrittiConAnniMaggioreDi(anni);
int j = 0;
while (temp[j] != null) {
risultato[k] = temp[j];
++j;
++k;
}
}
}
return risultato;
}
// Elenco per tipologie del numero degli iscritti
public int[] calcolaNumeroIscrittiPerTipologia( ) {
int[] risultato = new int[Corso.NUMERO_TIPI];
for (int i = 0; i < numeroCorsi; ++i) {
++risultato[elencoCorsi[i].restituisciNumeroIscritti()];
}
return risultato;
}
// Elenco di tutti gli iscritti che spendono più di una certa somma
public Iscritto[] iscrittiConSpesaSuperioreA(double somma) {
Iscritto[] risultato = new Iscritto[numeroIscritti];
for (int i = 0; i < numeroIscritti; ++i) {
Iscritto iscritto = elencoIscritti[i];
double spesa = 0.0;
for (int j = 0; j < numeroCorsi; ++j) {
int numeroTessera = iscritto.restituisciNumeroTessera();
if (elencoCorsi[j].ricercaPerNumeroTessera(numeroTessera) != null) {
spesa += elencoCorsi[i].restituisciCosto();
}
}
}
return risultato;
}
// Verifica che l'istruttore sia iscritto e che non sia già istruttore
private boolean verificaIstruttore(Iscritto istruttore) {
for (int i = 0; i < numeroIscritti; ++i) {
if (elencoIscritti[i].restituisciNumeroTessera() ==
istruttore.restituisciNumeroTessera()) {
for (int j = 0; j < numeroCorsi; ++j) {
int tesseraIstruttore =
elencoCorsi[j].restituisciIstruttore().restituisciNumeroTessera();
if (tesseraIstruttore == istruttore.restituisciNumeroTessera()) {
// L'istruttore è iscritto ma tiene già un corso
return false;
}
}
// OK, l'istruttore è iscritto e non ha altri corsi
return true;
}
}
// L'istruttore non è iscritto
return false;
}
// Espansione degli elenchi
private void espandiElencoIscritti() {
Iscritto[] temp = new Iscritto[numeroIscritti * 2];
for (int i = 0; i < numeroIscritti; ++i) {
temp[i] = elencoIscritti[i];
}
elencoIscritti = temp;
}
private void espandiElencoCorsi() {
Corso[] temp = new Corso[numeroCorsi * 2];
for (int i = 0; i < numeroCorsi; ++i) {
temp[i] = elencoCorsi[i];
}
elencoCorsi = temp;
}
}
GestionePalestra.java
Created with JBuilder |