public static bool ChequearCompatibilidadPreRequisito(Estudiante estudiante, CursoCurricular cursoCurricular) { //MessageBox.Show("Hay " + estudiante.avanceMalla.Count.ToString() + " cursos en el avance de malla"); //MessageBox.Show("El curso tiene " + cursoCurricular.cursosPreRequisito.Count.ToString() + " cursos prerequisitos"); if (cursoCurricular.cursosPreRequisito.Count == 0) { return(true); } cursosNoAprobados.Clear(); bool hayCursosNoAprobados = false; foreach (string cur in cursoCurricular.cursosPreRequisito) { if (!estudiante.avanceMalla.Contains(cur)) { cursosNoAprobados.Add(cur); hayCursosNoAprobados = true; } } if (hayCursosNoAprobados) { return(false); } else { return(true); } }
public static void EliminarCurso() { Program.ImprimirNegativo("Eliminar Curso"); Console.WriteLine("Seleccione el NRC del curso a eliminar:"); ImprimirCursos(); List <string> listadoNRC = Aplicacion.GetCursoCurricular().Select(x => x.nrc).ToList(); string option = ""; while (!listadoNRC.Contains(option)) { Console.Write("NRC:> "); option = Console.ReadLine(); } CursoCurricular curso = Aplicacion.GetCursoCurricular().Find(x => x.nrc == option); Aplicacion.cursos.Remove(curso); Program.ImprimirPositivo($"Curso {curso.nombre} removido exitosamente!"); Console.WriteLine("Presione cualquier tecla para continuar..."); Console.ReadKey(); return; }
public static bool ChequearCompatibilidadHorario(Estudiante estudiante, CursoCurricular cursoInscribir) { List <string> listaBloquesUsados = new List <string>(); foreach (Curso curso in estudiante.listaInscripcion) { CursoCurricular cursoCurricular = (CursoCurricular)curso; foreach (Evento bloqueHorario in cursoCurricular.eventosCurso) { if (bloqueHorario.tipo == TipoEvento.PRBA || bloqueHorario.tipo == TipoEvento.EXTRAP) { continue; } listaBloquesUsados.Add(bloqueHorario.hora); } } if (cursoInscribir is null) { return(false); } foreach (Evento evento in cursoInscribir.eventosCurso) { if (evento.tipo == TipoEvento.PRBA) { continue; } if (listaBloquesUsados.Contains(evento.hora)) { return(false); } } return(true); }
public static void CargarUsuarios(string fileName = "saveData.csv") { try { string path = Path.GetFullPath(@"..\.."); path = Path.Combine(path, "archivos"); Directory.CreateDirectory(path); Program.ImprimirPositivo("Users:\tDir: " + path); path = Path.Combine(path, fileName); StreamReader file = new StreamReader(path); string linea; while ((linea = file.ReadLine()) != null) { string[] lineaSeparada = linea.Split(';'); string nombre = lineaSeparada[0]; string contraseña = lineaSeparada[1]; bool admin; if (lineaSeparada[2] == "true") { admin = true; Administrador administrador = new Administrador(nombre, contraseña, admin); usuarios.Add(administrador); } else { string especialidad, añoIngreso, concentracion, avanceMalla; especialidad = lineaSeparada[4]; añoIngreso = lineaSeparada[5]; concentracion = lineaSeparada[6]; avanceMalla = lineaSeparada[7]; List <CursoCurricular> listaAvanceMalla = new List <CursoCurricular>(); foreach (string nrc in lineaSeparada[7].Split(',')) { CursoCurricular curso = cursos.Find(x => x.nrc == nrc); listaAvanceMalla.Add(curso); } Estudiante estudiante = new Estudiante(listaAvanceMalla, Especialidad.ICA, Concentracion.Algoritmos, nombre, contraseña, false); usuarios.Add(estudiante); } } file.Close(); } catch (FileNotFoundException e1) { System.Console.WriteLine(e1.Message); Program.ImprimirNegativo("Hubo un error al cargar los Usuarios!"); Console.WriteLine("Presione cualquier tecla para continuar..."); Console.ReadKey(); } }
public static bool CrearCursoCurricular(string nrc, string nombreCurso, string profesor, int creditos, Especialidad especialidad, List <Evento> eventosCurso) { List <string> listadoNRC = Aplicacion.GetCursoCurricular().Select(x => x.nrc).ToList(); if (listadoNRC.Contains(nrc)) { return(false); } CursoCurricular c = Aplicacion.cursos[3]; Aplicacion.AñadirCurso(new CursoCurricular(nrc, creditos, new List <string>(), especialidad, eventosCurso, nombreCurso.ToUpper(), profesor, TipoCurso.Curricular)); return(true); }
public static void LeerCurso() { LeerCurso: Console.Clear(); Program.ImprimirBanner("Leer Curso"); ImprimirCursos(); Console.WriteLine("\nSeleccione El NRC del curso que desea leer: "); List <string> listadoNRC = Aplicacion.GetCursoCurricular().Select(x => x.nrc).ToList(); string option = ""; do { Console.Write("NRC:> "); option = Console.ReadLine(); if (!listadoNRC.Contains(option)) { Program.ImprimirNegativo("NRC No Valido"); } } while (!listadoNRC.Contains(option)); CursoCurricular curso = Aplicacion.GetCursoCurricular().Find(x => x.nrc == option); Console.Clear(); Console.WriteLine($"NRC: {curso.nrc}\nNombre: {curso.nombre}\n" + $"Creditos: {curso.creditos}\nProfesor: {curso.profesor}\nEventos:\n"); foreach (Evento evento in curso.eventosCurso) { Console.WriteLine($"\t{evento.nombre} [{evento.tipo.ToString()}] hora:{evento.hora} fecha:{evento.fecha}"); } Console.Write("\n¿Leer Otro Curso?\n" + "1. Si\n" + "2. No\n:> "); int opcion = Program.ChequearOpcion(1, 2); if (opcion == 1) { goto LeerCurso; } if (opcion == 2) { Console.Clear(); return; } else { return; } }
public static bool ActualizarCurso(string nrc, string parametro, object cambio) { CursoCurricular curso = Aplicacion.GetCursoCurricular().Find(x => x.nrc == nrc); if (parametro == "nrc") { foreach (CursoCurricular c in Aplicacion.GetCursoCurricular()) { if (c.nrc == cambio.ToString()) { MessageBox.Show("Ese NRC ya existe"); return(false); } } curso.nrc = cambio.ToString(); } else if (parametro == "nombre") { curso.nombre = cambio.ToString(); } else if (parametro == "creditos") { curso.creditos = Int32.Parse(cambio.ToString()); } else if (parametro == "especialidad") { curso.especialidad = (Especialidad)Enum.Parse(typeof(Especialidad), cambio.ToString()); } else if (parametro == "profesor") { curso.profesor = cambio.ToString(); } return(true); }
public static bool ChequearCompatibilidad(Estudiante estudiante, CursoCurricular cursoInscribir) { List <string> listaBloquesUsados = new List <string>(); foreach (Curso curso in estudiante.listaInscripcion) { CursoCurricular cursoCurricular = (CursoCurricular)curso; foreach (Evento bloqueHorario in cursoCurricular.eventosCurso) { listaBloquesUsados.Add(bloqueHorario.hora); } } foreach (Evento evento in cursoInscribir.eventosCurso) { if (listaBloquesUsados.Contains(evento.hora)) { return(false); } } return(true); }
static void InscribirCurso(Estudiante estudiante) { int quiereAgregar = 1; while (quiereAgregar == 1) { if (Aplicacion.GetCursoCurricular().Count == 0) { Console.WriteLine("No hay cursos disponibles para inscribir"); goto SinCursosDisponiblesParaInscribir; } Console.WriteLine("Seleccione un curso para inscribir: "); foreach (CursoCurricular curs in Aplicacion.GetCursoCurricular()) { Console.WriteLine("NRC:{0}\nNombre: {1}\nProfesor: {2}\n", curs.nrc, curs.nombre, curs.profesor); } List <string> listadoNRC = Aplicacion.GetCursoCurricular().Select(x => x.nrc).ToList(); string option = ""; do { Console.Write("NRC:> "); option = Console.ReadLine(); if (!listadoNRC.Contains(option)) { Program.ImprimirNegativo("NRC No Valido"); } } while (!listadoNRC.Contains(option)); CursoCurricular curso = Aplicacion.GetCursoCurricular().Find(x => x.nrc == option); bool compatibilidad = ChequearCompatibilidad(estudiante, curso); if (estudiante.listaInscripcion.Contains(curso)) { Program.ImprimirNegativo($"El curso {curso.nombre} ya esta agregado\n"); } else if (compatibilidad == false) { Program.ImprimirNegativo($"El curso {curso.nombre} posee un tope de horario\n"); } else { estudiante.listaInscripcion.Add(curso); Program.ImprimirPositivo("Curso agregado"); Program.Log(quiereAgregar.ToString(), "Agregar curso"); } Console.WriteLine("\n¿Quiere agregar otro curso?\n" + "1. Si\n" + "2. No"); int opcion = Program.ChequearOpcion(1, 2); if (opcion == 2) { quiereAgregar = 2; } } SinCursosDisponiblesParaInscribir: return; }
public static void AñadirCurso(CursoCurricular curso) { cursos.Add(curso); }
public static void CargarCursos(string fileName = "dataCursosDisponibles.csv") { try { //Encuentra el directorio donde se encuentra el archivo csv de cursos string path = Path.GetFullPath(@"..\.."); path = Path.Combine(path, "archivos"); Directory.CreateDirectory(path); Program.ImprimirPositivo("Cursos:\tDir: " + path); path = Path.Combine(path, fileName); StreamReader file = new StreamReader(path); string line; string previoNRC = string.Empty; string nombre, profesor, nrc, carrera; int creditos; //El csv posee varias lineas de un mismo curso. Esto genera conjuntos de la lineas //del mismo curso. List <List <string> > conjuntoCursosDistintos = new List <List <string> >(); conjuntoCursosDistintos.Add(new List <string>() { file.ReadLine() }); while ((line = file.ReadLine()) != null) { string[] datosLine = line.Split(';'); nrc = datosLine[0]; if (previoNRC == nrc || previoNRC == "") { conjuntoCursosDistintos[conjuntoCursosDistintos.Count() - 1].Add(line); } else { conjuntoCursosDistintos.Add(new List <string>()); conjuntoCursosDistintos[conjuntoCursosDistintos.Count() - 1].Add(line); } previoNRC = nrc; } foreach (List <string> curso in conjuntoCursosDistintos) { List <Evento> listaEvento = new List <Evento>(); List <string> listaHorariosBloques = new List <string>(); int contadorLineaCurso = 1; foreach (string linea in curso) { string[] datosLinea = linea.Split(';'); List <string> listaHorarioLinea = new List <string>(); //listaHorarioLinea es el conjunto de horarios que se encuentra en una linea for (int i = 6; i < 12; i++) { if (datosLinea[i] != "") //Si en la casilla existe un horario entonces... { string fecha = datosLinea[12].Replace('-', ':'); if (datosLinea[12] == "") { fecha = "A"; } listaHorarioLinea.Add((datosLinea[14] + ":" + (i - 6) + ":" + datosLinea[i] + ":" + fecha).Replace(" -", ":")); } } List <string> bloquesHorario = new List <string>(); for (int i = 0; i < listaHorarioLinea.Count; i++) { string stringHorario = string.Empty; stringHorario = listaHorarioLinea[i]; listaEvento.AddRange(generarEvento(stringHorario)); } if (contadorLineaCurso == curso.Count) { string[] datosLinea2 = linea.Split(';'); nombre = datosLinea2[4]; profesor = datosLinea2[15]; nrc = datosLinea2[0]; carrera = datosLinea2[1]; creditos = Convert.ToInt32(datosLinea2[5]); CursoCurricular cursoCurricular = new CursoCurricular(nrc, creditos, new List <CursoCurricular>(), Especialidad.ICA, listaEvento, nombre, profesor, TipoCurso.Curricular); cursos.Add(cursoCurricular); } contadorLineaCurso++; } } List <Evento> generarEvento(string stringHorario) { //Console.WriteLine(stringHorario);Console.ReadKey(); //ingresa string del tipo PRBA:D:8:30:11:20:A || PRBA:D:8:30:11:20:20:03:2018 //retorna List<Evento> string nombreEvento = string.Empty; int diaSemana = Convert.ToInt32(stringHorario.Split(':')[1]); int horaInicio = Convert.ToInt32(stringHorario.Split(':')[2]); int horaTermino = Convert.ToInt32(stringHorario.Split(':')[4]); int cantBloques = horaTermino - horaInicio; List <Evento> returnListaEventos = new List <Evento>(); string tipoEvento = (stringHorario.Split(':')[0]); TipoEvento tipo_Evento = (TipoEvento)System.Enum.Parse(typeof(TipoEvento), tipoEvento); if (stringHorario.Split(':')[6] != "A") //Si posee una fecha entonces... { string fechaDia = (stringHorario.Split(':')[6]); string fechaMes = (stringHorario.Split(':')[7]); string fechaAño; try { fechaAño = (stringHorario.Split(':')[8]); } catch { fechaAño = "2018"; } string fecha = fechaDia + "-" + fechaMes + "-" + fechaAño; for (int i = 0; i < cantBloques; i++) { string inicioBloque = $"{diaSemana}-{horaInicio + i}:30"; Evento evento = new Evento(nombreEvento, inicioBloque, fecha, "B-23", tipo_Evento); returnListaEventos.Add(evento); } return(returnListaEventos); } else { for (int i = 0; i < cantBloques; i++) { string inicioBloque = $"{diaSemana}-{horaInicio + i}:30"; Evento evento = new Evento(nombreEvento, inicioBloque, "C-102", tipo_Evento); returnListaEventos.Add(evento); } return(returnListaEventos); } } file.Close(); } catch (FileNotFoundException e) { System.Console.WriteLine(e.Message); Program.ImprimirNegativo("Hubo un error al cargar los Cursos!"); Console.WriteLine("Presione cualquier tecla para continuar..."); Console.ReadKey(); } }
public static bool ChequearCompatibilidadEspecialidadyConcentracion(Estudiante estudiante, CursoCurricular cursoCurricular) { if (cursoCurricular.especialidad == Especialidad.ING) { return(true); } else { if (estudiante.especialidad != cursoCurricular.especialidad) { if (estudiante.concentracion == Concentracion.Algoritmos) { if ((cursoCurricular.nombre == "PROGRAMACION BAJO NIVEL") || (cursoCurricular.nombre == "ALGORITHMS AND COMPETITIVE PRO")) //falta uno de los 3 cursos de la concentración { return(true); } } if (estudiante.concentracion == Concentracion.AplicacionesWeb) { if ((cursoCurricular.nombre == "PROGRAMACION ORIENTADA A OBJET") || (cursoCurricular.nombre == "BASES DE DATOS") || (cursoCurricular.nombre == "WEB TECHNOLOGIES")) { return(true); } } if (estudiante.concentracion == Concentracion.Bioprocesos) { if ((cursoCurricular.nombre == "FUNDAMENTOS DE ING DE PROCESOS") || (cursoCurricular.nombre == "MICROBIOLOGIA INDUSTRIAL Y AMBIENTAL") || (cursoCurricular.nombre == "INGIENERIA DE BIOPROCESOS AMBI")) { return(true); } } if (estudiante.concentracion == Concentracion.Hidraulica) { if ((cursoCurricular.nombre == "FLUID MECHANICS") || (cursoCurricular.nombre == "HIDRAULICA") || (cursoCurricular.nombre == "HIDROLOGIA")) { return(true); } } if (estudiante.concentracion == Concentracion.Modelacion) { if ((cursoCurricular.nombre == "METODOS ESTADISTICOS PARA LA G") || (cursoCurricular.nombre == "PROGRAMACION MATEMATICA") || (cursoCurricular.nombre == "MODELOS ESTOCASTICOS")) { return(true); } } if (estudiante.concentracion == Concentracion.Señales) { if ((cursoCurricular.nombre == "SEÑALES Y SISTEMAS") || (cursoCurricular.nombre == "PROCESAMIENTO DE SEÑALES") || (cursoCurricular.nombre == "INTRODUCCION A LAS COMUNICACIO")) { return(true); } } return(false); } return(true); } }
public static Estudiante InscribirCurso(Estudiante estudiante, string cursoInscripcion) { CursoCurricular curso = Aplicacion.GetCursoCurricular().Find(x => x.nrc == cursoInscripcion); bool compatibilidadHorario = ChequearCompatibilidadHorario(estudiante, curso); bool compatibilidadPreRequisito = ChequearCompatibilidadPreRequisito(estudiante, curso); bool compatibilidadEspecialidadyConcentracion = ChequearCompatibilidadEspecialidadyConcentracion(estudiante, curso); bool compatibilidadCantidadCreditos = ChequearCompatibilidadCantidadCreditos(estudiante, curso); if (estudiante.listaInscripcion.Contains(curso)) { MessageBox.Show("El Curso ya está inscrito.", "Error de Inscripción"); } else { if ((compatibilidadHorario == false) || (compatibilidadPreRequisito == false) || (compatibilidadEspecialidadyConcentracion == false) || (compatibilidadCantidadCreditos == false)) { if (compatibilidadHorario == false) { MessageBox.Show($"El curso {curso.nombre} posee un tope de horario\n", "Error de Inscripción"); } if (compatibilidadPreRequisito == false) { //MessageBox.Show($"Todavia no has aprobado cursos prerequisitos del curso {curso.nombre}", "Error de Inscripcion"); //MessageBox.Show($"No has aprobado {cursosNoAprobados[0]}"); cursosNoAprobados.Insert(0, $"Todavía no has aprobado los siguientes cursos, que son prerrequisitos de {curso.nombre}:"); var mensaje = string.Join(Environment.NewLine, cursosNoAprobados); cursosNoAprobados.RemoveAt(0); MessageBox.Show(mensaje); } if (compatibilidadEspecialidadyConcentracion == false) { MessageBox.Show($"El curso {curso.nombre} es de la especialidad {curso.especialidad}, pero tú eres de {estudiante.especialidad}, y tu concenctración tecnológica es {estudiante.concentracion}", "Error de Inscripción"); } if (compatibilidadCantidadCreditos == false) { MessageBox.Show($"Al inscribir {curso.nombre} tendrías {ContarCreditos(estudiante) + curso.creditos} créditos, y no puedes exceder los 11", "Error de Inscripción"); } //MessageBox.Show($"El curso {curso.nombre} es de la especialidad {curso.especialidad}, pero tú eres de {estudiante.especialidad}", "Error de Inscripción"); } /* * else if ((compatibilidadHorario == false) || (compatibilidadPreRequisito == false)) * { * MessageBox.Show($"No puedes inscribir el curso {curso.nombre}", "Error de Inscripcion"); * } */ else { //MessageBox.Show("Agregado Exitosamente"); estudiante.listaInscripcion.Add(curso); //cantidadCreditos += curso.creditos; MessageBox.Show(curso.nombre + " inscrito con éxito"); MessageBox.Show($"Llevas {ContarCreditos(estudiante)} créditos"); return(estudiante); } } return(estudiante); }
public static bool ChequearCompatibilidadCantidadCreditos(Estudiante estudiante, CursoCurricular cursoCurricular) { if (ContarCreditos(estudiante) + cursoCurricular.creditos > 33) { return(false); } else { return(true); } }