static void Main(string[] args) { List <Registro_Estudiante.Estudiante> Estudiantes = new List <Registro_Estudiante.Estudiante>(); List <RegistroMateria.Materia> Materias = new List <RegistroMateria.Materia>(); Data data = new Data("Estudiante.bd"); Data2 dataM = new Data2("Materia.bd"); Boolean Open = true; int id_materia = 101; int est = 0; int id; while (Open) { if (File.Exists("Estudiante.bd")) { Estudiantes = data.deserializar(); } if (File.Exists("Materia.bd")) { Materias = dataM.deserializarMateria(); } MenuPrincipal: Console.Clear(); Console.WriteLine("Seleccione un menu: \n 1) Estudiantes \n 2) Materias \n 3) Salir"); try { int opc = Convert.ToInt32(Console.ReadLine()); switch (opc) { case 1: { Console.Clear(); MenuEstudiantes: Console.WriteLine("Bienvenido al sistema de registro de estudiante \n\n 1) Crear nuevo estudiante \n 2) Listar todos los estudiantes \n 3) Editar \n 4) Eliminar estudiante \n 5) Buscar estudiante \n 6) Salir"); int opcion = Convert.ToInt32(Console.ReadLine()); if (opcion < 7 || opcion >= 0) { switch (opcion) { case 1: { Console.Clear(); if (Estudiantes.Count == 0) { id = 1080001; } else { id = Estudiantes[Estudiantes.Count - 1].ID + 1; id += est; } Estudiante Prueba = new Estudiante(id); Prueba.CrearEstudiante(); Estudiantes.Add(Prueba); data.serializar(Estudiantes); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 2: { Console.Clear(); if (Estudiantes.Count > 0) { Console.WriteLine(" LISTA DE TODOS LOS ESTUDIANTES \n"); Console.WriteLine("ID : | Nombres y Apellidos | Estatus : | Carrera : | Documento de Identidad : | Nacionalidad : | F. Nacimiento : "); Console.Write("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"); for (int i = 0; i < Estudiantes.Count; i++) { Estudiantes[i].ListarEstudiantes((i + 6)); } } else { Console.WriteLine("No hay estudiantes registrados!"); } Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 3: { Console.Clear(); int idEditar = 0, campo; Console.WriteLine("Ingrese el id a modificar: "); idEditar = Convert.ToInt32(Console.ReadLine()); Console.Clear(); foreach (Estudiante A in Estudiantes) { if (A.ID == idEditar) { Console.WriteLine("Campos a Modificar"); Console.WriteLine("1. Nombre"); Console.WriteLine("2. Apellido"); Console.WriteLine("3. Carrera"); Console.WriteLine("4. Estatus"); Console.WriteLine("5. Fecha de nacimiento"); Console.WriteLine("6. Nacionalidad"); Console.WriteLine("7. Documentos"); Console.Write("\nQue campo quiere editar? "); campo = Convert.ToInt32(Console.ReadLine()); Console.Clear(); switch (campo) { case 1: { string nombrenuevo; Console.Write("Digite el nuevo nombre: "); nombrenuevo = Console.ReadLine().ToUpper(); A.Nombre = nombrenuevo; data.serializar(Estudiantes); Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 2: { string apellidonuevo; Console.Write("\nDigite el nuevo apellido: "); apellidonuevo = Console.ReadLine().ToUpper(); A.Apellido = apellidonuevo; data.serializar(Estudiantes); Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 3: { string carreranueva; Console.Write("\nDigite la nueva carrera: "); carreranueva = Console.ReadLine(); A.Carrera = carreranueva; data.serializar(Estudiantes); Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 4: { Console.Write("\nEscoja el estatus del estudiante \n 1) En proceso \n 2) Activo \n 3) Prueba academica \n 4) Inactivo \n >"); Console.Write("\nDigite el nuevo estatus:"); int opcion1 = Convert.ToInt32(Console.ReadLine()); if (opcion1 >= 1 || opcion <= 4) { switch (opcion1) { case 1: A.Estatus = "En proceso"; data.serializar(Estudiantes); break; case 2: A.Estatus = "Activo"; data.serializar(Estudiantes); break; case 3: A.Estatus = "Prueba academica"; data.serializar(Estudiantes); break; case 4: A.Estatus = "Inactivo"; data.serializar(Estudiantes); break; } } Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes;; } case 5: { Fecha: { try { Console.Write("\nIngrese la fecha de nacimiento dd/mm/yyyy: "); A.Nacimiento = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", null); data.serializar(Estudiantes); } catch (FormatException) { Console.WriteLine("\nEso no es un formato valido! \n"); goto Fecha; } } Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes;; } case 6: { Console.WriteLine("\nEl estudiante es : \n 1) Dominicano \n 2) Extranjero"); int opt = Convert.ToInt32(Console.ReadLine()); if (opt >= 1 || opt <= 2) { switch (opt) { case 1: A.Nacionalidad = "Dominicano"; data.serializar(Estudiantes); break; case 2: A.Nacionalidad = "Extranjero"; data.serializar(Estudiantes); break; } } } Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes;; case 7: { if (A.Nacionalidad == "Dominicano") { Console.Write("\nDigite el numero de cedula sin espacios o guiones: "); string intento = Console.ReadLine(); data.serializar(Estudiantes); if (intento.Length != 11) { Console.WriteLine("\nLa cedula no tiene 11 digitos, porfavor intente otra vez! "); goto case 7; } else { A.Cedula = intento; } data.serializar(Estudiantes); } else { Console.Write("\nDigite el numero de pasaporte del estudiante: "); A.Cedula = Console.ReadLine(); data.serializar(Estudiantes); } } Console.WriteLine("\n Se modifico el campo !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes;; } } } Console.WriteLine("\nNo se encontro ningun estudiante con ese ID!"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 4: { Console.Clear(); Console.Write("Ingrese el ID del estudiante : "); int ID_Borrar = Convert.ToInt32(Console.ReadLine()); try { foreach (Estudiante b in Estudiantes) { if (b.ID == ID_Borrar) { Estudiantes.Remove(b); data.serializar(Estudiantes); Console.WriteLine("\nSe elimino el estudiante satisfactoriamente\n"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } } Console.WriteLine("\nNo se ha encontrado un estudiante con ese ID\n"); Console.ReadKey(); Console.Clear(); } catch (System.InvalidOperationException) { Console.WriteLine("\nNo hay estudientes con ese ID \n"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } Console.Clear(); goto MenuEstudiantes; } case 5: { Console.Clear(); Console.WriteLine("Nombre o cedula a buscar: "); string idBuscar = (Console.ReadLine().ToUpper()); foreach (Estudiante b in Estudiantes) { if (b.Nombre == idBuscar || b.Cedula == idBuscar) { Console.WriteLine("------------------------"); Console.WriteLine("ID: " + b.ID); Console.WriteLine("Nombre: " + b.Nombre); Console.WriteLine("Apellido: " + b.Apellido); Console.WriteLine("Carrera: " + b.Carrera); Console.WriteLine("Cedula: " + b.Cedula); Console.WriteLine("Estatus: " + b.Estatus); Console.WriteLine("Nacimiento: {0}/{1}/{2}", b.Nacimiento.Day, b.Nacimiento.Month, b.Nacimiento.Year); Console.WriteLine("Nacionalidad: " + b.Nacionalidad); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } } Console.WriteLine("No se ha encontrado ningun estudiante"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } case 6: { break; } } } else { Console.WriteLine("\nPorfavor ingrese una de las opciones mostradas !"); Console.ReadKey(); Console.Clear(); goto MenuEstudiantes; } } break; case 2: { MenuMaterias: Console.Clear(); Console.WriteLine("Seleccione una opcion: \n 1) Crear materia nueva \n 2) Listar todas las materias \n 3) Borrar Materias \n 4) Editar Materia \n 5) Buscar Materia \n 6) Salir"); int option = Convert.ToInt32(Console.ReadLine()); switch (option) { case 1: { Console.Clear(); try { if (Materias.Count == 0) { id_materia = 101; } else { id_materia = Materias[Materias.Count - 1].ID + 1; } Materia nuevamat = new Materia(id_materia); Materias.Insert(0, nuevamat); nuevamat.CrearMateria(); dataM.serializar(Materias); Console.WriteLine(" El ID de la materia es: {0} \n", id_materia); Console.ReadKey(); } catch (ArgumentOutOfRangeException) { Console.WriteLine("Usted no ha ingresado un area o materia \n"); goto MenuMaterias; } goto MenuMaterias; } case 2: { Console.Clear(); if (Materias.Count > 0) { Console.WriteLine(" LISTA DE MATERIAS "); Console.WriteLine(" Codigo | Nombre | Area |"); Console.WriteLine("------------------------------------------------------"); for (int i = 0; i < Materias.Count; i++) { Materias[i].ListarMaterias(i + 3); } Console.ReadKey(); Console.Clear(); } else { Console.WriteLine("No hay materias registradas!"); Console.ReadKey(); Console.Clear(); } goto MenuMaterias; } case 3: { Console.Clear(); Console.Write("Ingrese el ID de la materia : "); int id_Borrar = Convert.ToInt32(Console.ReadLine()); try { foreach (Materia a in Materias) { if (a.ID == id_Borrar) { Materias.Remove(a); dataM.serializar(Materias); Console.WriteLine("\nSe elimino la materia satisfactoriamente\n"); Console.ReadKey(); goto MenuMaterias; } } Console.WriteLine("\nNo se ha encontrado resultados !!\n"); Console.ReadKey(); goto MenuMaterias; } catch (System.InvalidOperationException) { Console.WriteLine("\nNo hay materias con ese ID \n"); goto MenuMaterias; } } case 4: { Console.Clear(); int idEditar = 0, campo; Console.WriteLine("Ingrese el id a modificar: \n"); idEditar = Convert.ToInt32(Console.ReadLine()); Console.Clear(); foreach (Materia A in Materias) { if (A.ID == idEditar) { Console.WriteLine("Campos a Modificar"); Console.WriteLine("1. Nombre"); Console.WriteLine("2. Area"); Console.Write("\nQue campo quiere editar? "); campo = Convert.ToInt32(Console.ReadLine()); switch (campo) { case 1: Console.Clear(); { string nombrematerianuevo; Console.Write("Digite el nuevo nombre: "); nombrematerianuevo = Console.ReadLine().ToUpper(); A.Nombre = nombrematerianuevo; dataM.serializar(Materias); Console.WriteLine("\nSe ha editado el nombre de la materia satisfactoriamente"); Console.ReadKey(); Console.Clear(); goto MenuMaterias; } case 2: Console.Clear(); { string areanueva; Console.Write("\nDigite la nueva area: "); areanueva = Console.ReadLine().ToUpper(); A.Area = areanueva; dataM.serializar(Materias); Console.WriteLine("\nSe ha editado el area de la materia satisfactoriamente"); Console.ReadKey(); Console.Clear(); goto MenuMaterias; } } } } Console.WriteLine("\n No encontramos resultados!\n"); Console.ReadKey(); Console.Clear(); goto MenuMaterias; } case 5: { Console.Clear(); Console.WriteLine("Nombre o area a buscar: "); string Buscarmateria = (Console.ReadLine().ToUpper()); foreach (Materia b in Materias) { if (b.Nombre == Buscarmateria || b.Area == Buscarmateria) { Console.WriteLine("------------------------"); Console.WriteLine("ID: " + b.ID); Console.WriteLine("Nombre: " + b.Nombre); Console.WriteLine("Area: " + b.Area); Console.WriteLine("Codigo: " + b.Codigo); Console.ReadKey(); Console.Clear(); goto MenuMaterias; } } Console.WriteLine("\n No se encontro ningun resultado \n"); Console.ReadKey(); Console.Clear(); goto MenuMaterias; } case 6: { break; } default: goto MenuMaterias; } break; } case 3: { Console.WriteLine("\nGracias por utilizar el sistema de registro!"); Console.ReadKey(); Environment.Exit(0); break; } default: Console.WriteLine("\nIngrese una de las opciones validas..."); Console.ReadKey(); goto MenuPrincipal; } } catch (FormatException) { Console.WriteLine("Por favor, ingrese una de las opciones validas"); Console.ReadKey(); goto MenuPrincipal; } } }