示例#1
0
 static public bool RichiestaStanza(Prenotazione i, StanzaAlbergo s)
 {
     if (i.TipologiaRichiesta == s.Tipologia)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#2
0
        static void Main(string[] args)
        {
            // istanziazione delle due camere presenti nell'albergo
            StanzaAlbergo stanza1 = new StanzaAlbergo(1);
            StanzaAlbergo stanza2 = new StanzaAlbergo(2);
            //StanzaAlbergo stanza3 = new StanzaAlbergo(3);
            //StanzaAlbergo stanza4 = new StanzaAlbergo(4);

            List <StanzaAlbergo> stanze = new List <StanzaAlbergo>();

            stanze.Add(stanza1);
            stanze.Add(stanza2);
            //stanze.Add(stanza3);
            //stanze.Add(stanza4);

            // istanziazione della prenotazione
            while (true)
            {
                string   Cliente;
                DateTime CheckIn, CheckOut;

                Console.WriteLine("Inserire nome e cognome del cliente: ");
                Cliente = Console.ReadLine();
                Console.WriteLine("Inserire la data di check-in (formato YYYY-MM-DD): ");
                string userInput = Console.ReadLine();
                CheckIn = Convert.ToDateTime(userInput);
                Console.WriteLine("Inserire la data di check-out (formato YYYY-MM-DD): ");
                userInput = Console.ReadLine();
                CheckOut  = Convert.ToDateTime(userInput);
                Prenotazione richiesta = new Prenotazione(CheckIn, CheckOut, Cliente);

                bool albergoPieno = true;

                foreach (StanzaAlbergo stanza in stanze)
                {
                    bool libera = false;
                    if (stanza.Prenotazioni.Count == 0)
                    {
                        libera       = true;
                        albergoPieno = false;
                        stanza.Prenota(richiesta);
                        Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".");
                        break;
                    }

                    foreach (Prenotazione prenotazione in stanza.Prenotazioni)
                    {
                        if (!Prenotazione.OverLap(prenotazione, richiesta))
                        {
                            libera       = true;
                            albergoPieno = false;
                            stanza.Prenota(richiesta);
                            Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".");
                            break;
                        }
                    }
                    if (libera)
                    {
                        break;
                    }
                }
                if (albergoPieno)
                {
                    Console.WriteLine("L'albergo è pieno!");
                }

                foreach (StanzaAlbergo stanza in stanze)
                {
                    Console.WriteLine("La stanza #" + stanza.Numero + " ha " + stanza.Prenotazioni.Count + " prenotazioni.");
                }
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            double prezzoLetto = 20;

            // istanziazione delle due camere presenti nell'albergo
            StanzaAlbergo stanza1 = new StanzaAlbergo(1, 50, 's');
            StanzaAlbergo stanza2 = new StanzaAlbergo(2, 80, 'm');
            StanzaAlbergo stanza3 = new StanzaAlbergo(3, 50, 's');
            StanzaAlbergo stanza4 = new StanzaAlbergo(4, 80, 'm');

            List <StanzaAlbergo> stanze = new List <StanzaAlbergo>();

            stanze.Add(stanza1);
            stanze.Add(stanza2);
            stanze.Add(stanza3);
            stanze.Add(stanza4);

            // istanziazione della prenotazione
            while (true)
            {
                string   Cliente;
                DateTime CheckIn, CheckOut;
                char     TipologiaRichiesta;
                int      LettiAggiuntivi = 0;

                Console.WriteLine("Inserire nome e cognome del cliente: ");
                Cliente = Console.ReadLine();
                Console.WriteLine("Inserire la data di check-in (formato YYYY-MM-DD): ");
                string userInput = Console.ReadLine();
                CheckIn = Convert.ToDateTime(userInput);
                Console.WriteLine("Inserire la data di check-out (formato YYYY-MM-DD): ");
                userInput = Console.ReadLine();
                CheckOut  = Convert.ToDateTime(userInput);
                Console.WriteLine("Inserire il tipo di stanza che si vuole prenotare ['s' per singola o 'm' per matrimoniale]");
                userInput          = Console.ReadLine();
                TipologiaRichiesta = Convert.ToChar(userInput);
                if (TipologiaRichiesta != 's' && TipologiaRichiesta != 'm')
                {
                    Console.WriteLine("Carattere non valido.");
                    continue;
                }
                Prenotazione richiesta = new Prenotazione(CheckIn, CheckOut, Cliente, TipologiaRichiesta, LettiAggiuntivi);

                bool albergoPieno = true;

                foreach (StanzaAlbergo stanza in stanze)
                {
                    if (!Prenotazione.RichiestaStanza(richiesta, stanza))
                    {
                        continue;
                    }

                    bool prenotata = false;
                    bool libera    = true;
                    if (stanza.Prenotazioni.Count == 0)
                    {
                        prenotata    = true;
                        albergoPieno = false;
                        stanza.Prenota(richiesta);
                        Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".\n");
                        System.TimeSpan diff   = richiesta.CheckOut - richiesta.CheckIn;
                        int             n_days = Convert.ToInt32(diff.Days);
                        richiesta.AggiungiLetti(richiesta);
                        double spesa = stanza.Prezzo + richiesta.LettiAggiuntivi * prezzoLetto;
                        spesa = n_days * spesa;
                        Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ", con " + richiesta.LettiAggiuntivi + " letti aggiuntivi. \nLa spesa totale è di " + spesa + " euro. \n");
                        break;
                    }

                    foreach (Prenotazione prenotazione in stanza.Prenotazioni)
                    {
                        libera = libera && !Prenotazione.OverLap(prenotazione, richiesta);
                        if (!libera)
                        {
                            break;
                        }
                    }

                    if (libera)
                    {
                        prenotata    = true;
                        albergoPieno = false;
                        stanza.Prenota(richiesta);
                        Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".\n");
                        System.TimeSpan diff   = richiesta.CheckOut - richiesta.CheckIn;
                        int             n_days = Convert.ToInt32(diff.Days);
                        richiesta.AggiungiLetti(richiesta);
                        double spesa = stanza.Prezzo + richiesta.LettiAggiuntivi * prezzoLetto;
                        spesa = n_days * spesa;
                        Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ", con " + richiesta.LettiAggiuntivi + " letti aggiuntivi. \nLa spesa totale è di " + spesa + " euro.\n");
                        break;
                    }

                    if (prenotata)
                    {
                        break;
                    }
                }
                if (albergoPieno)
                {
                    Console.WriteLine("Non ci sono stanze disponibili nel periodo richiesto.");
                }

                foreach (StanzaAlbergo stanza in stanze)
                {
                    Console.WriteLine("La stanza #" + stanza.Numero + " ha " + stanza.Prenotazioni.Count + " prenotazioni.");

                    foreach (Prenotazione prenotazione in stanza.Prenotazioni)
                    {
                        Console.WriteLine("La stanza " + stanza.Numero + " è stata prenotata da " + prenotazione.Cliente + " dal " + prenotazione.CheckIn + " al " + prenotazione.CheckOut + ".");
                    }
                }
            }
        }