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"); }
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; } }
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 */ }
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"); } } }
//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); */ }