예제 #1
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += EventAction;
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Beep(100, 1000, 1);
            AppDomain.CurrentDomain.ProcessExit -= EventAction;
            var engine = new EscuelaEngine();

            Printer.WriteTitle("BIENVENIDOS A LA ESCUELA");

            var reporteador             = new Reporteador(engine.GetDictionaryObject());
            var evalList                = reporteador.GetEvaluationList();
            var listaAsig               = reporteador.GetAsignaturaList();
            var listaEvaluaciones       = reporteador.GetDictionaryEvaluaXAsig();
            var listAverageByAsignature = reporteador.GetPromeStudentByAsignature();

            var listAverageTop = reporteador.GetAverageTopByMatter();

            string[] reporteMenu = engine.GetReportMenu();
            var      keep        = "Y";

            do
            {
                var menuOption = Printer.PrintMenu(reporteMenu, "Menú Core Escuela");
                keep = reporteador.PrintReport(menuOption);
                Console.Clear();
            }while (keep.ToUpper() == "Y");
        }
예제 #2
0
        private static void GenerarReporte(string reporte)
        {
            var Engine  = new EscuelaEngine();
            var dicttmp = Engine.GetDiccionarioObjetos();

            var Reporteador = new Reporteador(dicttmp);


            switch (reporte)
            {
            case "1":
                Console.WriteLine("Inicializando Reporte Evaluaciones..");
                Reporteador.GetListaEvaluaciones();
                Console.WriteLine("Terminado Reporte Evaluaciones.");
                break;

            case "2":
                Console.WriteLine("Inicializando Reporte Asignaturas..");
                Reporteador.GetListaAsignaturas();
                Console.WriteLine("Terminado Reporte Asignaturas.");
                break;

            case "3":
                Console.WriteLine("Inicializando Reporte Evaluaciones por asignatura..");
                Reporteador.GetEvalXAsig();
                Console.WriteLine("Terminado Reporte Evaluaciones por asignatura.");
                break;

            case "4":
                Console.WriteLine("Inicializando Reporte Promedio de alumnos por asignatura..");
                Reporteador.GetPromeAlumnPorAsignatura();
                Console.WriteLine("Terminado Reporte Promedio de alumnos por asignatura.");
                break;

            default:
                Console.WriteLine("No se ha seleccionado una opcion valida para algún Reporte");
                break;
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            //Division entera (modulo-MOD): se usa % ej: if(numero % 5 == 0), y: &&, o: ||

            //Creacion de un evento (Evento cuando temrina la aplicacion):
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Pitar(2000, 500, 2);

            var engine = new EscuelaEngine();

            engine.Inicializar();
            Printer.WriteTitle("Bienvenidos a la Escuela");

            var reporteador        = new Reporteador(engine.getDiccionarioObjetos());
            var evalList           = reporteador.getListaEvaluaciones();
            var listaAsig          = reporteador.getListaAsignaturas();
            var listaEvalxAsig     = reporteador.getDicEvalxAsig();
            var listaPromxAsig     = reporteador.getPromAlumnoxAsignatura();
            var listaTopXPromxAsig = reporteador.getTopAlumnoxAsignatura(5);

            Printer.WriteTitle("Captura de una Evaluación por Consola");
            var    newEval = new Evaluacion();
            string nombre, notaString;
            float  nota;

            WriteLine("Ingrese el nombre de la evaluación: ");
            Printer.presioneEnter();
            nombre = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                //Lanzar una excepcion:
                throw new ArgumentException("El valor del nombre no puede ser vacio");
            }
            else
            {
                newEval.Nombre = nombre.ToUpper();
                WriteLine("El nombre de la evaluación fue ingresado con éxito");
            }

            WriteLine("Ingrese la nota de la evaluación: ");
            Printer.presioneEnter();
            notaString = Console.ReadLine();

            try
            {
                if (string.IsNullOrWhiteSpace(notaString))
                {
                    //Lanzar una excepcion:
                    throw new ArgumentException("El valor de la nota no puede ser vacio");
                }
                else
                {
                    newEval.Nota = float.Parse(notaString);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota de la evaluación fue ingresado con éxito");
                }
            } catch (ArgumentOutOfRangeException arge)
            {
                Printer.WriteTitle(arge.Message);
                WriteLine("Saliendo");
            }
            finally{
                Printer.WriteTitle("FINALLY");
            }
            ReadLine();



            //Printer.Pitar(1000, 1500, 4);
            //imprimirCursosEscuela(engine.Escuela);

            //Otro Uso de Diccionarios

            /*
             * var dirtmp = engine.getDiccionarioObjetos();
             * engine.imprimirDireccionario(dirtmp);
             */


            //Creacion y Uso Basico de un Diccionario

            /*
             * Dictionary<int, string> diccionario = new Dictionary<int, string>();
             * diccionario.Add(10, "Juanla");
             * diccionario.Add(23, "Fernast");
             * diccionario.Add(0, "sasdasd");
             * foreach (var keyValPair in diccionario)
             * {
             *  Console.WriteLine($"Clave: {keyValPair.Key} - Valor: {keyValPair.Value}");
             * }
             * Printer.WriteTitle("Acceso al Diccionario");
             * Console.WriteLine(diccionario[23]);
             * diccionario[0] = "asdasd";
             * Console.WriteLine(diccionario[0]);
             * /*
             * //Fin Creacion y Uso Basico de un Diccionario
             *
             * //var listaObjetos = engine.getObjetosEscuela();
             *
             * ////engine.Escuela.limpiarLugar();
             * //var listaILugar = from obj in listaObjetos
             * //                  where obj is ILugar
             * //                  select (ILugar)obj;
             *
             *
             *
             * ////******** FORMAS DE USAR EL METODO REMOVEALL *******************
             * ////escuela.Cursos.Remove(nuevoCurso); aqui borra a través del hash del objeto pero no es seguro ya que puede haber mas de uno con el mismo hash
             *
             * ////La otra forma es con el método RemoveAll, para lo cual necesita definirse un predicado
             * //Predicate<Curso> miAlgoritmo = Predicado;
             * //escuela.Cursos.RemoveAll(miAlgoritmo);
             *
             * ////Otra forma de usar el método RemoveAll, aqui se envía el predicado directamente sin definir miAlgoritmo antes
             * //escuela.Cursos.RemoveAll(Predicado);
             * ////NOTA: para estos dos casos recordar que Predicado es un método definido abajo y que
             * ////funciona como delegado ya que su firma está definida previamente en el framework
             *
             * ////Otra forma de usar el método RemoveAll, aqui se crea el delegado directamente al llamar el método
             * ////es algo así como llamar a una funcion anónima
             * //escuela.Cursos.RemoveAll(delegate (Curso cur) { return cur.Nombre == "VACACIONAL"; });
             *
             * ////Otra forma de usar el método RemoveAll, aqui usamos las expresiones Lambda, estas son tambien
             * ////como una funcion anónima. Se puede mandar sin tipo
             * //escuela.Cursos.RemoveAll((Curso cur) => cur.Nombre == "VACACIONAL");
             * ////***************************************************************
             *
             * /*
             * //PRUEBAS CON POLIMORFISMO
             * Printer.DrawLine(28);
             * Printer.DrawLine(28);
             * Printer.DrawLine(28);
             * Printer.WriteTitle("Pruebas con Polimorfismo");
             *
             * var alumnoTest = new Alumno { Nombre = "El Ferna Stereo" };
             *
             * Printer.WriteTitle("Alumno");
             * WriteLine($"Alumno: {alumnoTest.UniqueId}");
             * WriteLine($"Alumno: {alumnoTest.Nombre}");
             * WriteLine($"Alumno: {alumnoTest.GetType()}");
             *
             * ObjetoEscuelaBase ob = alumnoTest;
             * Printer.WriteTitle("Objeto Escuela - Alumno");
             * WriteLine($"Alumno: {ob.UniqueId}");
             * WriteLine($"Alumno: {ob.Nombre}");
             * WriteLine($"Alumno: {ob.GetType()}");
             *
             *
             * var objDummy = new ObjetoEscuelaBase() { Nombre = "Leonor Gazmo"};
             * Printer.WriteTitle("Objeto Escuela Base");
             * WriteLine($"Alumno: {objDummy.UniqueId}");
             * WriteLine($"Alumno: {objDummy.Nombre}");
             * WriteLine($"Alumno: {objDummy.GetType()}");
             *
             * var evaluacion = new Evaluacion()
             * {
             *  Nombre = "Evaluación de Matemáticas",
             *  Nota = 4.5f
             * };
             * Printer.WriteTitle("Evaluación");
             * WriteLine($"evaluacion: {evaluacion.UniqueId}");
             * WriteLine($"evaluacion: {evaluacion.Nombre}");
             * WriteLine($"evaluacion: {evaluacion.Nota}");
             * WriteLine($"evaluacion: {evaluacion.GetType()}");
             *
             * ob = evaluacion;
             * Printer.WriteTitle("Objeto Escuela Evaluacion");
             * WriteLine($"Alumno: {ob.UniqueId}");
             * WriteLine($"Alumno: {ob.Nombre}");
             * WriteLine($"Alumno: {ob.GetType()}");
             *
             *
             * if(ob is Alumno) //is: para preguntar si un objeto es de un tipo determinado
             * {
             *  Alumno alumnoRecuperado = (Alumno)ob;
             * }
             *
             * Alumno alumnoRecuperado2 = ob as Alumno;
             * if (alumnoRecuperado2 != null)
             * {
             *  // Haga algo!
             * }
             *
             * FIN PRUEBAS CON POLIMORFISMO  */
        }
예제 #4
0
        static void Main(string[] args)
        {
            ///EVENTOS
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (o, e) => Console.Beep(2000, 500); // Multicast : Se ejecutan los 2 eventos de diferente manera
            //AppDomain.CurrentDomain.ProcessExit -= AccionDelEvento; // saco ese evento con el - es  decir no se ejecuta
            //Este es un evento de finalizacion del programa
            // El  EVENTO se genera en cualquier momento que termine la ejecucion
            var engine = new EscuelaEngine();

            engine.Inicializar();
            // ImprimirCursos(engine.escuela);
            WriteLine("Hola");


            var dic = new Dictionary <int, string>();

            dic.Add(2, "joaquin"); //agregando mediante funcion add, donde 2 es la llave y joaquin la definicion
            dic[0] = "tomas";      //asi agregamos al dic la llave 0 son valor "tomas"
            Console.WriteLine("Imprimimos el Diccionario");
            // foreach (var keydic in dic)
            // {
            //     Console.WriteLine($"llave: {keydic.Key} valor: {keydic.Value}");
            //  }
            var dicc = engine.GetDiccionarioDeObjetos();

            Console.WriteLine();
            //var dic2 = engine.GetDiccionarioDeObjetos();
            //engine.ImprimirDiccionario(dic2,true);
            var    reporteardor            = new Reporteador(dicc);
            var    listEval                = reporteardor.GetListaEvaluaciones();
            var    listaMaterias           = reporteardor.GetListaMaterias();
            var    DiccionarioEvaluaciones = reporteardor.GetDicEvaluacionesXMateria();
            var    promedio                = reporteardor.GetPromedioAlumnosPorMateria();
            var    newEval = new Evaluacion();
            string nombre, notaString;

            WriteLine("Ingrese nombre de la evaluacion");
            nombre = ReadLine();
            if (string.IsNullOrWhiteSpace(nombre))
            {
                throw new ArgumentException("Debe ingresar un nombre");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre fue ingresado correctamente");
            }
            WriteLine("Ingrese nota de la evaluacion");
            notaString = ReadLine();
            if (string.IsNullOrWhiteSpace(notaString))
            {
                WriteLine("Debe ingresar una nota");
                WriteLine("Saliendo del programa");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notaString);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                        //este throw se usa para que salga del programa y no continue
                    }
                    WriteLine("La nota fue ingresada correctamente");
                }
                catch (ArgumentOutOfRangeException arge)  //se le puede hacer un objeto
                {
                    WriteLine(arge.Message);
                    WriteLine("La nota debe ser un numero entre 0 y 5");
                }
                catch (Exception)
                {
                    WriteLine("El valor de la nota no es un numero valido");
                }
                //dependiendo el tipo de exception ejecuta un catch o el otro
                // las excepciones tiene un orden en cascada, EL ORDEN ES IMPORTANTE
                finally
                {
                    //permite atrapar excepciones inesperaddas o q no podemos controlar
                    //Se ejecuta siempre no importa donde termine el programa siempre se ejecuta,
                    //siempre antes de terminar el programa se ejecuta el finally se ejecuta y luego termina el programa
                    Console.Beep(4500, 500);
                    WriteLine("FINALLY");
                }
            }
        }
예제 #5
0
        //private static Cursos cursotemp;

        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Beep(2000, 1000, 1);

            var engine = new EscuelaEngine();

            engine.Inicializar();

            Printer.WriteTitle("BIENVENIDOS A LA ESCUELA");
            //Printer.Beep(10000, cantidad:10);
            //imprimirCursosEscuela(engine.Escuela);

            var reporteador          = new Reporteador(engine.GetDiccionarioObjetos());
            var evalList             = reporteador.GetListaEvaluaciones();
            var listaAsig            = reporteador.GetListaAsignaturas();
            var listaEvalXAsignatura = reporteador.GetDicEvaluacionesXAsig();
            var listaProemdioXAsig   = reporteador.GetPromeAlumPorAsignatura();
            var mejorPromedio        = reporteador.GetMejoresPromedioXAsig("Matematicas", 10);

            Printer.WriteTitle("Captura de una Evaluacion por Consola");
            var    newEval = new Evaluaciones();
            string nombre, notaString;
            float  nota;

            WriteLine("Ingrese el nombre de la Evaluacion");
            Printer.PrecioneENTER();
            nombre = ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                Printer.WriteTitle("El valor del nombre no puede ser vacio");
                WriteLine("Saliendo del programa");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre de la Evaluacion ha sido ingresado correctamente");
            }

            WriteLine("Ingrese la nota de la Evaluacion");
            Printer.PrecioneENTER();
            notaString = ReadLine();

            if (string.IsNullOrWhiteSpace(notaString))
            {
                Printer.WriteTitle("El valor de la nota no puede ser vacio");
                WriteLine("Saliendo del programa");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notaString);

                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota de la Evaluacion ha sido ingresado correctamente");
                }
                catch (ArgumentOutOfRangeException arge)
                {
                    Printer.WriteTitle(arge.Message);
                    WriteLine("Saliendo del programa");
                }
                catch (System.Exception)
                {
                    Printer.WriteTitle("El valor de la nota no parece es un numero valido");
                    WriteLine("Saliendo del programa");
                }
                finally
                {
                    Printer.WriteTitle("FINALLY");
                    Printer.Beep(2500, 500, 3);
                }
            }



            /* foreach (var item in listaProemdioXAsig)
             * {
             *  foreach (var alum in item.Value)
             *  {
             *      var tmp = alum as Alumnos;
             *
             *  }
             * } */
            /* var dictmp = engine.GetDiccionarioObjetos();
             *
             * engine.ImprimirDiccionario(dictmp,true); */

            /* Printer.WriteTitle("Diccionario");
             * var dic = new Dictionary<String, String>();
             * dic["luna"] = "cuerpo celeste que gira alrededor de la tierra";
             * WriteLine(dic["luna"]);
             * /* dic.Add("luna", "Protagonista de soy Luna");
             * WriteLine("luna"); */


            //var obj = new ObjetoEscuelaBase();

            /* Printer.DrawLine(20);
             * Printer.DrawLine(20);
             * Printer.DrawLine(20);
             * Printer.WriteTitle("Pruebas de Polimorfismo");
             * var alumnoTest = new Alumnos{Nombre = "Nahuel Schimpf"};
             * Printer.WriteTitle("Alumno");
             * WriteLine($"Alumno: {alumnoTest.Nombre}");
             * WriteLine($"Id: {alumnoTest.UniqueId}");
             * WriteLine($"Typo: {alumnoTest.GetType()}");
             *
             * ObjetoEscuelaBase ob = alumnoTest;
             * WriteLine("ObjetoEscuela");
             * WriteLine($"Nombre: {ob.Nombre}");
             * WriteLine($"Id: {ob.UniqueId}");
             * WriteLine($"Typo: {ob.GetType()}");
             *
             * var evaluacion = new Evaluaciones(){Nombre="Evaluacion de Matematicas",Nota=4.5f};
             * Printer.WriteTitle("Evaluacion");
             * WriteLine($"Evaluacion: {evaluacion.Nombre}");
             * WriteLine($"Id: {evaluacion.Nota}");
             * WriteLine($"Id: {evaluacion.UniqueId}");
             * WriteLine($"Typo: {evaluacion.GetType()}");
             *
             * //ob = evaluacion;
             * WriteLine("ObjetoEscuela");
             * WriteLine($"Nombre: {ob.Nombre}");
             * WriteLine($"Id: {ob.UniqueId}");
             * WriteLine($"Typo: {ob.GetType()}");
             *
             * if(ob is Alumnos)
             * {
             *  Alumnos alumnoRecuperado = (Alumnos)ob;
             * }
             *
             * Alumnos alumnoRecuperado2 = ob as Alumnos;*/

            /* var escuela = new Escuela("Platzi Academy", 2012,TiposEscuela.Primaria,
             *          ciudad: "Bogota", pais: "Colombia");
             *
             * // es una coleccion
             * var listaCursos = new List<Cursos>(){
             *              new Cursos(){Nombre = "101", Jornada = TipoJornada.Mañana},
             *              new Cursos(){Nombre = "201", Jornada = TipoJornada.Mañana},
             *              new Cursos(){Nombre = "301", Jornada = TipoJornada.Mañana}
             * };
             * escuela.Curso = listaCursos;
             * escuela.Curso.Add( new Cursos{Nombre = "102", Jornada = TipoJornada.Tarde});
             * escuela.Curso.Add(new Cursos { Nombre = "202", Jornada = TipoJornada.Tarde});
             *
             * // otra coleccion
             * var otraColeccion = new List<Cursos>(){
             *                  new Cursos(){Nombre = "401", Jornada = TipoJornada.Mañana},
             *                  new Cursos(){Nombre = "501", Jornada = TipoJornada.Mañana},
             *                  new Cursos(){Nombre = "501", Jornada = TipoJornada.Tarde}
             * };
             *
             * //cursotemp = new Cursos{Nombre = "101-Vacacional", Jornada = TipoJornada.Noche};
             * escuela.Curso.AddRange(otraColeccion);
             * //escuela.Curso.Add(cursotemp); */


            /* imprimirCursosEscuela(escuela);
             * //WriteLine("Curso hash" + cursotemp.GetHashCode());
             * //escuela.Curso.Remove(cursotemp);
             *
             * // una manera de buscar el indice y borrarlo
             * //Predicate<Cursos> miAlgoritmo = Predicado;
             * //escuela.Curso.RemoveAll(Predicado);
             *
             * // otra manera
             * escuela.Curso.RemoveAll(delegate (Cursos cur)
             *                      {
             *                          return cur.Nombre == "301";
             *                      });
             *
             * // otra manera mas reducida, llamada expresion lambda
             * escuela.Curso.RemoveAll((cur)=> cur.Nombre == "501" && cur.Jornada == TipoJornada.Mañana); */

            // array

            /* escuela.Curso = new Cursos[]{
             *              new Cursos(){Nombre = "101"},
             *              new Cursos(){Nombre = "201"},
             *              new Cursos(){Nombre = "301"}
             * }; */


            // otra manera de asignacion

            /* escuela.Pais = "Colombia";
            *  escuela.Ciudad = "Bogota"; */

            // una forma de declarar el arreglo

            /* var arregloCursos = new Cursos[]{
             *      new Cursos()
             *          {
             *              Nombre = "101"
             *
             *          },
             *      new Cursos()
             *          {
             *              Nombre = "201"
             *
             *          },
             *      new Cursos()
             *          {
             *              Nombre = "301"
             *
             *          }
             * }; */

            // otra forma

            /* Cursos[] arregloCursos = {
             *      new Cursos(){Nombre = "101"},
             *      new Cursos(){Nombre = "201"},
             *      new Cursos(){Nombre = "301"}
             * }; */

            /* Console.WriteLine(escuela);
             * System.Console.WriteLine("While ===================");
             * imprimirArregloWhile(arregloCursos);
             * System.Console.WriteLine("Do While ===================");
             * imprimirArregloDoWhile(arregloCursos);
             * System.Console.WriteLine("For ===================");
             * imprimirArregloFor(arregloCursos);
             * System.Console.WriteLine("ForEach ===================");
             * imprimirArregloForEach(arregloCursos); */
        }