using System.Collections.Generic;
public int Codigo { get; set; }
public string Titulo { get; set; }
public string Autor { get; set; }
public string Editorial { get; set; }
public bool Prestado { get; set; }
public Libro(int codigo, string titulo, string autor, string editorial)
public int Dni { get; set; }
public string Nombre { get; set; }
public string Apellido { get; set; }
public string Telefono { get; set; }
public string Direccion { get; set; }
public List<Libro> LibrosPrestados { get; set; }
public Socio(int dni, string nombre, string apellido, string telefono, string direccion)
LibrosPrestados = new List<Libro>();
public void AgregarLibroPrestado(Libro libro)
LibrosPrestados.Add(libro);
public void EliminarLibroPrestado(Libro libro)
LibrosPrestados.Remove(libro);
public bool TieneMaximoLibrosPrestados()
return LibrosPrestados.Count >= 3;
private List<Libro> libros;
private List<Socio> socios;
libros = new List<Libro>();
socios = new List<Socio>();
public void AgregarLibro(string titulo, string autor, string editorial)
int nuevoCodigo = libros.Count + 1;
Libro nuevoLibro = new Libro(nuevoCodigo, titulo, autor, editorial);
Console.WriteLine($"Libro agregado correctamente. Código asignado: {nuevoCodigo}");
public void EliminarLibro(int codigo)
Libro libro = libros.Find(l => l.Codigo == codigo);
Console.WriteLine("El libro está prestado. No se puede eliminar.");
Console.WriteLine("Libro eliminado correctamente.");
Console.WriteLine("Libro no encontrado.");
public void PrestarLibro(int dni, int codigo)
Socio socio = socios.Find(s => s.Dni == dni);
Libro libro = libros.Find(l => l.Codigo == codigo);
Console.WriteLine("Socio no encontrado.");
Console.WriteLine("Libro no encontrado.");
Console.WriteLine("El libro ya está prestado.");
if (socio.TieneMaximoLibrosPrestados())
Console.WriteLine("El socio ya tiene 3 libros prestados.");
socio.AgregarLibroPrestado(libro);
Console.WriteLine("Préstamo realizado correctamente.");
public void DevolverLibro(int dni, int codigo)
Socio socio = socios.Find(s => s.Dni == dni);
Libro libro = libros.Find(l => l.Codigo == codigo);
Console.WriteLine("Socio no encontrado.");
Console.WriteLine("Libro no encontrado.");
Console.WriteLine("El libro no está prestado.");
socio.EliminarLibroPrestado(libro);
Console.WriteLine("Devolución realizada correctamente.");
public void DarDeAltaSocio(int dni, string nombre, string apellido, string telefono, string direccion)
Socio socio = socios.Find(s => s.Dni == dni);
Console.WriteLine("El socio ya está registrado.");
Socio nuevoSocio = new Socio(dni, nombre, apellido, telefono, direccion);
Console.WriteLine("Socio dado de alta correctamente.");
public void DarDeBajaSocio(int dni)
Socio socio = socios.Find(s => s.Dni == dni);
if (socio.LibrosPrestados.Count > 0)
Console.WriteLine("El socio tiene libros prestados. No se puede dar de baja.");
Console.WriteLine("Socio dado de baja correctamente.");
Console.WriteLine("Socio no encontrado.");
public void ListarLibrosPrestados()
Console.WriteLine("Listado de libros prestados:");
foreach (Libro libro in libros)
Console.WriteLine($"Código: {libro.Codigo}, Título: {libro.Titulo}, Autor: {libro.Autor}, Editorial: {libro.Editorial}");
public void ListarLibros()
Console.WriteLine("Listado de libros en la biblioteca:");
foreach (Libro libro in libros)
Console.WriteLine($"Código: {libro.Codigo}, Título: {libro.Titulo}, Autor: {libro.Autor}, Editorial: {libro.Editorial}");
public void ListarSocios()
Console.WriteLine("Listado de socios:");
foreach (Socio socio in socios)
Console.WriteLine($"DNI: {socio.Dni}, Nombre: {socio.Nombre}, Apellido: {socio.Apellido}, Teléfono: {socio.Telefono}, Dirección: {socio.Direccion}");
static Biblioteca biblioteca = new Biblioteca();
static void Main(string[] args)
Console.WriteLine("Menú:");
Console.WriteLine("a. Agregar un libro nuevo a la biblioteca");
Console.WriteLine("b. Eliminar un libro de la biblioteca");
Console.WriteLine("c. Prestar un libro");
Console.WriteLine("d. Devolver un libro");
Console.WriteLine("e. Dar de alta un socio");
Console.WriteLine("f. Dar de baja un socio");
Console.WriteLine("g. Listado de libros prestados");
Console.WriteLine("h. Listado de libros de la biblioteca");
Console.WriteLine("i. Listado de socios");
Console.WriteLine("s. Salir");
Console.Write("Ingrese una opción: ");
string opcion = Console.ReadLine();
Console.WriteLine("Opción inválida. Intente nuevamente.");
static void AgregarLibro()
Console.WriteLine("Agregar un libro nuevo:");
Console.Write("Título: ");
string titulo = Console.ReadLine();
Console.Write("Autor: ");
string autor = Console.ReadLine();
Console.Write("Editorial: ");
string editorial = Console.ReadLine();
biblioteca.AgregarLibro(titulo, autor, editorial);
static void EliminarLibro()
Console.WriteLine("Eliminar un libro:");
Console.Write("Código del libro: ");
int codigo = int.Parse(Console.ReadLine());
biblioteca.EliminarLibro(codigo);
static void PrestarLibro()
Console.WriteLine("Prestar un libro:");
Console.Write("DNI del socio: ");
int dni = int.Parse(Console.ReadLine());
Console.Write("Código del libro: ");
int codigo = int.Parse(Console.ReadLine());
biblioteca.PrestarLibro(dni, codigo);
static void DevolverLibro()
Console.WriteLine("Devolver un libro:");
Console.Write("DNI del socio: ");
int dni = int.Parse(Console.ReadLine());
Console.Write("Código del libro: ");
int codigo = int.Parse(Console.ReadLine());
biblioteca.DevolverLibro(dni, codigo);
static void DarDeAltaSocio()
Console.WriteLine("Dar de alta un socio:");
int dni = int.Parse(Console.ReadLine());
Console.Write("Nombre: ");
string nombre = Console.ReadLine();
Console.Write("Apellido: ");
string apellido = Console.ReadLine();
Console.Write("Teléfono: ");
string telefono = Console.ReadLine();
Console.Write("Dirección: ");
string direccion = Console.ReadLine();
biblioteca.DarDeAltaSocio(dni, nombre, apellido, telefono, direccion);
static void DarDeBajaSocio()
Console.WriteLine("Dar de baja un socio:");
int dni = int.Parse(Console.ReadLine());
biblioteca.DarDeBajaSocio(dni);
static void ListarLibrosPrestados()
biblioteca.ListarLibrosPrestados();
static void ListarLibros()
biblioteca.ListarLibros();
static void ListarSocios()
biblioteca.ListarSocios();