SHARE
TWEET

Untitled

a guest Jun 19th, 2017 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package compagniaerea;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. /**
  6.  *
  7.  * @author MaRtYnA in questa classe dobbiamo definire: 1- il costruttore, che
  8.  *         riceve in input il numero dei posti dell'aereo 2- metodo prenotazione
  9.  *         che inserisce i clienti nell'array o nell'array list in base alla
  10.  *         disponibilità 3- cancella prenotazione: deve eliminare il cliente
  11.  *         dall'array, prendere un nuovo cliente nell'arrayList ed inserirlo
  12.  *         nella prima posizione dell'array di posti libero
  13.  */
  14. public class Volo {
  15.  
  16.     // si sposta man mano che l'array di clienti viene rimepito
  17.     private int indiceArray = 0;
  18.     // serve ad indicarci la posizione dei buchi dei clienti che disdicono
  19.     // nell'array
  20.     private ArrayList<Integer> postiLiberati;
  21.     // questo array rappresenta tutti i clienti dell'aereo
  22.     private final Cliente[] posti;
  23.     // in questa lista finiscono tutti i clienti in attesa
  24.     private ArrayList<Cliente> attesa;
  25.  
  26.     public Volo(int nPosti) {
  27.         // viene inizializzato l'array di posti con la grandezza decisa al
  28.         // momento della creazione del volo
  29.         posti = new Cliente[nPosti];
  30.         // inizializzazione semplice
  31.         attesa = new ArrayList<Cliente>();
  32.         postiLiberati = new ArrayList<Integer>();
  33.     }
  34.  
  35.     public boolean prenotazione(Cliente c) {
  36.         boolean result = false;
  37.  
  38.         if (posti.length < indiceArray) {
  39.             System.out.println("Mi dispiace, posti finiti, cliente inserito nella lista di attesa!");
  40.             attesa.add(c);
  41.         } else {
  42.             // se c'è ancora posto metto il cliente in quella posizione
  43.             // dell'array
  44.             posti[indiceArray] = c;
  45.             System.out.println("Cliente inserito correttamente nel volo nella posizione " + indiceArray);
  46.             result = true;
  47.         }
  48.  
  49.         return result;
  50.     }
  51.  
  52.     public boolean disdiciPrenotazione(Cliente clienteDisdetto) {
  53.         //uso la varibile result per restituire false nel caso in cui nn viene  trovato il cliente, se tutto va ok restituisco true
  54.         boolean result = false;
  55.  
  56.         //mi scorro tutto l'array di clienti per ricercare il cliente che ha disdetto
  57.         for(int i = 0; i<indiceArray;i++) {
  58.             Cliente appoggio = posti[i];
  59.             //l'array potrebbe ancora non essere pieno di clienti, quindi qualche cella potrebbe essere null
  60.             if (appoggio != null) {
  61.                
  62.                 //confronto del nome del cliente
  63.                 if (appoggio.getNome().equalsIgnoreCase(clienteDisdetto.getNome())) {
  64.                     System.out.println("Trovato il cliente per il quale si vuole cancellare la prenotazione");
  65.                     posti[i] = null;
  66.                     System.out.println("Prenotazione eliminata per il cliente "+clienteDisdetto.getNome());
  67.                     //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
  68.                     postiLiberati.add(i);
  69.                     result = true;
  70.                 }
  71.             }
  72.         }
  73.        
  74.         //visto che un utente ha disdetto, controllo se ci sono clienti nella lista di attesa da infilare nell'aereo
  75.         System.out.println("Controllo se nella lista di attesa ci sono dei clienti da assegnare ai posti!");
  76.         inserisciClienteDallaListaDiAttesa();
  77.        
  78.        
  79.         return result;
  80.     }
  81.  
  82.     private void inserisciClienteDallaListaDiAttesa() {
  83.  
  84.         //se la lista d'attesa nn è vuota, prendo un elemento e lo metto nei posti dell'aereo
  85.         if(attesa.size() != 0 ) {
  86.             //prendo il primo cliente dall'arraylist della lista di attesa e lo aggiungo all'array di posti nella posizione che ci siamo salvati precedentemente
  87.             posti[postiLiberati.get(0)] = attesa.get(0);
  88.             System.out.println("Il cliente "+ attesa.get(0).getNome()+" è stato inserito nell'aereo nel posto "+postiLiberati.get(0));
  89.             //cancello l'indice che nn ci serve più, in quanto adesso in quel posto c'è un nuovo cliente
  90.             postiLiberati.remove(0);
  91.             //rimuovo il cliente nella lista d'attesa perchè è stato assegnato all'aereo
  92.             attesa.remove(0);
  93.         } else {
  94.             System.out.println("Non ci sono clienti nella lista d'attesa!");
  95.         }
  96.     }
  97. }
RAW Paste Data
Want to get better at Java?
Learn to code Java in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top