Beispiel #1
0
 public string ObtenerDescripcion()
 {
     return($"{articuloVendido.ObtenerPrecio()} - {articuloVendido.ObtenerDescripcion()} - {comprador.ObtenerDescripcion()}");
 }
        public static void Main(string[] args)
        {
            Random   random              = new Random();
            Libreria libreria            = new Libreria("Valdivia", "Algún lugar de valdivia");
            int      ventasNoConcretadas = 0;

            // Libros fantasía épica
            libreria.AgregarArticulo(new Libro("Juego de tronos", "George R.R Martin", 12000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Choque de reyes", "George R.R Martin", 13000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Tormenta de espadas", "George R.R Martin", 16000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Festín de cuervos", "George R.R Martin", 12000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Danza de dragones", "George R.R Martin", 16000, random.Next(11)));

            // Libros fantasía
            libreria.AgregarArticulo(new Libro("Harry Potter y la piedra filosofal", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y la cámara secreta", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y el prisionero de Azkaban", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y el cáliz de fuego", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y la orden del fénix", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y el misterio del príncipe", "J. K. Rowling", 10000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Harry Potter y las reliquias de la muerte", "J. K. Rowling", 10000, random.Next(11)));

            // Libros liderazgo
            libreria.AgregarArticulo(new Libro("La inteligencia emocional", "Daniel Goleman", 11000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Liderazgo. El Poder de la Inteligencia Emocional", "Daniel Goleman", 22020, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Cómo ser un lider", "Daniel Goleman", 10000, random.Next(11)));

            // Libros de programación
            libreria.AgregarArticulo(new Libro("The pragmatic programmer", "Andrew Hunt", 50000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Clean Code", "Robert C. Martin", 56500, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Design Patters", "Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides", 66690, random.Next(11)));
            libreria.AgregarArticulo(new Libro("Aprendiendo UML en 24 horas", "Joseph Schmuller", 20000, random.Next(11)));
            libreria.AgregarArticulo(new Libro("La Biblia de C#", "Joseph Schmuller", 20000, random.Next(11)));

            // Juegos
            libreria.AgregarArticulo(new Juego("The Last for Us", "PS4", 13000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Warcraft 3", "PC", 5000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("God Of War", "PS4", 40000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Spyro: trilogy", "PS4", 45000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Attack On Titan", "PS4", 40000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("GTA 5", "PC", 13000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Overcooked", "PC", 25000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Overcooked 2", "PC", 30000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("Ashen", "XBox", 20000, random.Next(11)));
            libreria.AgregarArticulo(new Juego("QUANTUM BREAK", "XBox", 34000, random.Next(11)));


            Console.WriteLine("========= Simulación =========");

            for (int hora = 9; hora < 20; hora++)
            {
                // No era necesario imprimir el horario, pero así se ve más ordenado
                Console.WriteLine("");
                if (hora == 9)
                {
                    Console.WriteLine("== Horario: 09:00 - 10:00 ==");
                }
                else
                {
                    Console.WriteLine($"== Horario: {hora}:00 - {hora + 1}:00 ==");
                }

                int cantidadVisitantes = random.Next(5, 13);

                for (int numeroDeVisitante = 0; numeroDeVisitante < cantidadVisitantes; numeroDeVisitante++)
                {
                    string  rutAleatorio  = random.Next(10000000, 20000000) + "-" + random.Next(10);
                    Persona persona       = new Persona(rutAleatorio);
                    bool    personaCompra = random.Next(0, 101) <= 30;
                    if (personaCompra)
                    {
                        int      indiceDeArticulo = random.Next(libreria.ObtenerCantidadDeArticulos());
                        Articulo articulo         = libreria.ObtenerArticulo(indiceDeArticulo);
                        bool     ventaExitosa     = libreria.VenderArticulo(articulo, persona);

                        if (ventaExitosa)
                        {
                            Venta ultimaVenta = libreria.ObtenerUltimaVenta();
                            Console.WriteLine(ultimaVenta.ObtenerDescripcion());
                        }
                        else
                        {
                            Console.WriteLine($"Oh no! No pudimos vender {articulo.ObtenerDescripcion()}"); // No era necesario imprimir esto
                            ventasNoConcretadas += 1;
                        }
                    }
                }
            }

            Console.WriteLine("");
            Console.WriteLine("=== Resultado Simulación ===");
            Console.WriteLine($"Cantidad de ventas: {libreria.ObtenerCantidadDeVentas()}");
            Console.WriteLine($"Ingresos totales: {libreria.ObtenerMontoDeVentas()}");
            Console.WriteLine($"Número de ventas no concretadas por falta de stock: {ventasNoConcretadas}");
        }