Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package compagniaerea;
- import java.util.ArrayList;
- /**
- *
- * @author MaRtYnA in questa classe dobbiamo definire: 1- il costruttore, che
- * riceve in input il numero dei posti dell'aereo 2- metodo prenotazione
- * che inserisce i clienti nell'array o nell'array list in base alla
- * disponibilità 3- cancella prenotazione: deve eliminare il cliente
- * dall'array, prendere un nuovo cliente nell'arrayList ed inserirlo
- * nella prima posizione dell'array di posti libero
- */
- public class Volo {
- // si sposta man mano che l'array di clienti viene rimepito
- private int indiceArray = 0;
- // serve ad indicarci la posizione dei buchi dei clienti che disdicono
- // nell'array
- private ArrayList<Integer> postiLiberati;
- // questo array rappresenta tutti i clienti dell'aereo
- private final Cliente[] posti;
- // in questa lista finiscono tutti i clienti in attesa
- private ArrayList<Cliente> attesa;
- public Volo(int nPosti) {
- // viene inizializzato l'array di posti con la grandezza decisa al
- // momento della creazione del volo
- posti = new Cliente[nPosti];
- // inizializzazione semplice
- attesa = new ArrayList<Cliente>();
- postiLiberati = new ArrayList<Integer>();
- }
- public boolean prenotazione(Cliente c) {
- boolean result = false;
- if (posti.length < indiceArray) {
- System.out.println("Mi dispiace, posti finiti, cliente inserito nella lista di attesa!");
- attesa.add(c);
- } else {
- // se c'è ancora posto metto il cliente in quella posizione
- // dell'array
- posti[indiceArray] = c;
- System.out.println("Cliente inserito correttamente nel volo nella posizione " + indiceArray);
- result = true;
- }
- return result;
- }
- public boolean disdiciPrenotazione(Cliente clienteDisdetto) {
- //uso la varibile result per restituire false nel caso in cui nn viene trovato il cliente, se tutto va ok restituisco true
- boolean result = false;
- //mi scorro tutto l'array di clienti per ricercare il cliente che ha disdetto
- for(int i = 0; i<indiceArray;i++) {
- Cliente appoggio = posti[i];
- //l'array potrebbe ancora non essere pieno di clienti, quindi qualche cella potrebbe essere null
- if (appoggio != null) {
- //confronto del nome del cliente
- if (appoggio.getNome().equalsIgnoreCase(clienteDisdetto.getNome())) {
- System.out.println("Trovato il cliente per il quale si vuole cancellare la prenotazione");
- posti[i] = null;
- System.out.println("Prenotazione eliminata per il cliente "+clienteDisdetto.getNome());
- //mi devo salvare il buco che ho lasciato nell'array, e lo inserisco in un arraylist di appoggio di interi, dove ci metto la posizione del buco dell'array di posti
- postiLiberati.add(i);
- result = true;
- }
- }
- }
- //visto che un utente ha disdetto, controllo se ci sono clienti nella lista di attesa da infilare nell'aereo
- System.out.println("Controllo se nella lista di attesa ci sono dei clienti da assegnare ai posti!");
- inserisciClienteDallaListaDiAttesa();
- return result;
- }
- private void inserisciClienteDallaListaDiAttesa() {
- //se la lista d'attesa nn è vuota, prendo un elemento e lo metto nei posti dell'aereo
- if(attesa.size() != 0 ) {
- //prendo il primo cliente dall'arraylist della lista di attesa e lo aggiungo all'array di posti nella posizione che ci siamo salvati precedentemente
- posti[postiLiberati.get(0)] = attesa.get(0);
- System.out.println("Il cliente "+ attesa.get(0).getNome()+" è stato inserito nell'aereo nel posto "+postiLiberati.get(0));
- //cancello l'indice che nn ci serve più, in quanto adesso in quel posto c'è un nuovo cliente
- postiLiberati.remove(0);
- //rimuovo il cliente nella lista d'attesa perchè è stato assegnato all'aereo
- attesa.remove(0);
- } else {
- System.out.println("Non ci sono clienti nella lista d'attesa!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement