using System; using System.Collections.Generic; using System.IO; // Definición de la clase Persona public class Persona { public string Nombre { get; set; } public int Edad { get; set; } public int DniNum { get; set; } public char DniLetra { get; set; } // Constructor de la clase Persona public Persona(string nombre, int edad, int dniNum, char dniLetra) { Nombre = nombre; Edad = edad; DniNum = dniNum; DniLetra = dniLetra; } // Sobrescribir método ToString para mostrar la información de la persona public override string ToString() { return $"Nombre: {Nombre}\nEdad: {Edad}\nDNI: {DniNum}-{DniLetra}"; } } // Definición de la clase ListaPersona que hereda de List<Persona> public class ListaPersona : List<Persona> { private string filePath; // Ruta del archivo de datos // Constructor de la clase ListaPersona que recibe la ruta del archivo public ListaPersona(string filePath) { this.filePath = filePath; Cargar(); // Cargar datos desde el archivo al crear una instancia } // Método privado para cargar los datos desde el archivo al iniciar private void Cargar() { if (File.Exists(filePath)) { try { using (StreamReader reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { string nombre = reader.ReadLine(); int edad = int.Parse(reader.ReadLine()); int dniNum = int.Parse(reader.ReadLine()); char dniLetra = char.Parse(reader.ReadLine()); this.Add(new Persona(nombre, edad, dniNum, dniLetra)); // Leer línea vacía que separa cada persona en el archivo reader.ReadLine(); } } Console.WriteLine("Datos cargados correctamente desde el archivo."); } catch (Exception ex) { Console.WriteLine("Error al cargar datos desde el archivo: " + ex.Message); } } else { Console.WriteLine("El archivo de datos no existe. Se creará uno nuevo al guardar."); } } // Método para listar todas las personas en la consola public void Listar() { foreach (var persona in this) { Console.WriteLine(persona); Console.WriteLine(); } } // Método para guardar la lista de personas en el archivo de datos public void Guardar() { try { using (StreamWriter writer = new StreamWriter(filePath)) { foreach (var persona in this) { writer.WriteLine(persona.Nombre); writer.WriteLine(persona.Edad); writer.WriteLine(persona.DniNum); writer.WriteLine(persona.DniLetra); writer.WriteLine(); // Separador entre cada persona } } Console.WriteLine("Datos guardados correctamente en el archivo."); } catch (Exception ex) { Console.WriteLine("Error al guardar datos en el archivo: " + ex.Message); } } // Método para añadir una nueva persona a la lista public void Añadir(Persona persona) { this.Add(persona); Console.WriteLine($"Se añadió a {persona.Nombre} a la lista."); } // Método para quitar una persona de la lista por índice (1-based) public void Quitar(int indice) { // Convertir el índice 1-based a 0-based int indexToRemove = indice - 1; if (indexToRemove >= 0 && indexToRemove < this.Count) { Persona personaEliminada = this[indexToRemove]; this.RemoveAt(indexToRemove); Console.WriteLine($"Se quitó a {personaEliminada.Nombre} de la lista."); } else { Console.WriteLine("Índice fuera de rango. No se pudo quitar la persona."); } } } string filePath = "datos-persona.txt"; // Crear una instancia de ListaPersona ListaPersona listaPersonas = new ListaPersona(filePath); // Listar personas inicialmente Console.WriteLine("Listado de personas inicial:"); listaPersonas.Listar(); // Agregar nuevas personas a la lista listaPersonas.Añadir(new Persona("Pedro", 34, 12123434, 'F')); listaPersonas.Añadir(new Persona("María", 28, 98765432, 'A')); listaPersonas.Añadir(new Persona("Juan", 40, 56789012, 'B')); // Listar personas después de agregar Console.WriteLine("\nListado de personas después de agregar:"); listaPersonas.Listar(); // Guardar la lista en el archivo listaPersonas.Guardar(); // Eliminar una persona por índice (ejemplo: eliminar la segunda persona) Console.WriteLine("\nEliminando una persona..."); listaPersonas.Quitar(2); // Elimina la segunda persona de la lista // Listar personas después de eliminar Console.WriteLine("\nListado de personas después de eliminar:"); listaPersonas.Listar(); // Guardar la lista actualizada en el archivo listaPersonas.Guardar(); // Imprimir la ruta completa del archivo al final del programa string fullPath = Path.GetFullPath(filePath); Console.WriteLine($"\nRuta completa desde: {fullPath}");