AgendaGiornaliera.java
Created with JBuilder |
class AgendaGiornaliera {
// Assumo che gli appuntamenti non possano avere durata inferiore
// alla mezz'ora e che la giornata lavorativa vada dalle 9 alle 17,
// quindi posso avere 16 appuntamenti al massimo
public static final Tempo DURATA_MIN = new Tempo(0,30);
public static final Tempo INIZIO_GIORNATA = new Tempo(9,0);
public static final Tempo FINE_GIORNATA = new Tempo(17,0);
public static final int NUMERO_MAX_APPUNTAMENTI = 16;
// Attributi dell'agenda
private Appuntamento[] elencoAppuntamenti;
private int numeroAppuntamenti;
// Costruttore
public AgendaGiornaliera( ) {
elencoAppuntamenti = new Appuntamento[NUMERO_MAX_APPUNTAMENTI];
numeroAppuntamenti = 0;
}
// Per essere inserito l'appuntamento deve:
// 1 - avere durata maggiore o uguale alla mezz'ora
// 3 - non iniziare prima delle 9.00 o finire dopo le 17.00
// 2 - non sovrapporsi con altri appuntamenti inseriti
public boolean inserisciAppuntamento(Appuntamento a) {
Tempo durata = a.restituisciDurata();
// Controllo sulla durata
if (durata.minoreDi(DURATA_MIN)) {
return false;
} else {
Tempo fine = a.resituisciOrarioFine();
Tempo inizio = a.resituisciOrario();
// Controllo sull'orario di lavoro
if (inizio.minoreDi(INIZIO_GIORNATA) ||
fine.maggioreDi(FINE_GIORNATA)) {
return false;
} else {
// Controllo sulle sovrapposizioni
for (int i = 0; i < numeroAppuntamenti; i++) {
Tempo fine2 = elencoAppuntamenti[i].resituisciOrarioFine();
Tempo inizio2 = elencoAppuntamenti[i].resituisciOrario();
if ((fine.maggioreDi(inizio2) && fine.minoreDi(fine2)) ||
(inizio.maggioreDi(inizio2) && inizio.minoreDi(fine2))) {
return false;
}
}
// Non vi sono sovrapposizioni, l'appuntamento è inserito
elencoAppuntamenti[numeroAppuntamenti] = a;
++numeroAppuntamenti;
return true;
}
}
}
// Ricerca di un appuntamento
public Persona cercaAppuntamentoPerNome(String nome) {
for (int i = 0; i < numeroAppuntamenti; i++) {
String nomeTrovato =
elencoAppuntamenti[i].restituisciPersona().restituisciNome();
if (nomeTrovato.equals(nome)) {
return elencoAppuntamenti[i].restituisciPersona();
}
}
return null;
}
// Cancellazione di un appuntamento
public boolean cancellaAppuntamentoPerNome(String nome) {
for (int i = 0; i < numeroAppuntamenti; i++) {
String nomeTrovato =
elencoAppuntamenti[i].restituisciPersona().restituisciNome();
if (nomeTrovato.equals(nome)) {
elencoAppuntamenti[i] = elencoAppuntamenti[numeroAppuntamenti - 1];
--numeroAppuntamenti;
return true;
}
}
return false;
}
// Ricerca appuntamenti dopo una certa ora
public AgendaGiornaliera cercaAppuntamentiPerOrario(Tempo orario) {
AgendaGiornaliera estratto = new AgendaGiornaliera( );
for (int i = 0; i < numeroAppuntamenti; i++) {
Tempo orarioTrovato = elencoAppuntamenti[i].resituisciOrario();
if (orarioTrovato.maggioreDi(orario)) {
estratto.inserisciAppuntamento(elencoAppuntamenti[i]);
}
}
return estratto;
}
}
AgendaGiornaliera.java
Created with JBuilder |