Administración De Una Base De Datos Pequeña De Libros En C#

Este ejercicio implica la creación de una pequeña base de datos para almacenar información sobre libros, como el título y el autor. El programa podrá almacenar hasta 1000 libros y el usuario podrá realizar las siguientes acciones:
- Añadir datos de un libro
- Mostrar todos los libros introducidos (mostrando el título y el autor en la misma línea)
- Buscar libros por título
- Eliminar un libro en una posición conocida
- Salir del programa

Al eliminar un libro, el programa moverá los elementos posteriores en el array hacia atrás para mantener la secuencia y reducir el número total de libros.

Esta es una excelente manera de aprender a gestionar datos mediante arrays e implementar operaciones CRUD básicas (Crear, Leer, Actualizar, Eliminar) en C#.



Grupo

Matrices, estructuras y cadenas de C#

Objectivo

1. Defina una estructura o clase para almacenar los datos del libro, incluyendo el título y el autor.
2. Cree un array con capacidad para hasta 1000 libros.
3. Implemente las siguientes opciones de menú:

- Añadir un nuevo libro
- Mostrar todos los libros introducidos
- Buscar un libro por título
- Eliminar un libro en una posición específica (número de libro)
- Salir del programa

4. Implemente la lógica para añadir, mostrar, buscar y eliminar libros.

5. Utilice la manipulación adecuada de arrays para eliminar un libro y desplazar los elementos restantes.

6. Asegúrese de que la entrada del usuario esté validada para evitar errores.

Cree una pequeña base de datos que se utilizará para almacenar datos sobre libros. Para un libro específico, queremos conservar la siguiente información:

- Título
- Autor

El programa debe tener capacidad para almacenar 1000 libros, y el usuario podrá:
- Añadir datos para un libro
- Mostrar todos los libros introducidos (solo título y autor, en la misma línea)
- Buscar libros con un título específico
- Eliminar un libro en una posición conocida (por ejemplo, el número 6)
- Salir del programa

Consejo: para eliminar un elemento de una matriz, debe retroceder todos los elementos que se colocaron después y luego disminuir el contador.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;

class Program
{
    // Define a Book struct to hold the title and author of a book
    struct Book
    {
        public string Title;
        public string Author;
    }

    static void Main()
    {
        const int MAX_BOOKS = 1000;
        Book[] books = new Book[MAX_BOOKS];
        int count = 0;

        while (true)
        {
            Console.WriteLine("\nMenu:");
            Console.WriteLine("1. Add a new book");
            Console.WriteLine("2. Display all books");
            Console.WriteLine("3. Search for a book by title");
            Console.WriteLine("4. Delete a book by position");
            Console.WriteLine("5. Exit");
            Console.Write("Choose an option: ");

            string option = Console.ReadLine();

            switch (option)
            {
                case "1":
                    if (count < MAX_BOOKS)
                    {
                        AddBook(books, ref count);
                    }
                    else
                    {
                        Console.WriteLine("Error: Maximum number of books reached.");
                    }
                    break;

                case "2":
                    DisplayBooks(books, count);
                    break;

                case "3":
                    SearchBookByTitle(books, count);
                    break;

                case "4":
                    DeleteBook(books, ref count);
                    break;

                case "5":
                    Console.WriteLine("Exiting the program.");
                    return;

                default:
                    Console.WriteLine("Invalid option. Please try again.");
                    break;
            }
        }
    }

    // Method to add a new book
    static void AddBook(Book[] books, ref int count)
    {
        Console.Write("Enter book title: ");
        string title = Console.ReadLine();
        Console.Write("Enter book author: ");
        string author = Console.ReadLine();

        books[count] = new Book { Title = title, Author = author };
        count++;
        Console.WriteLine("Book added successfully.");
    }

    // Method to display all entered books
    static void DisplayBooks(Book[] books, int count)
    {
        if (count == 0)
        {
            Console.WriteLine("No books available.");
            return;
        }

        Console.WriteLine("Books List:");
        for (int i = 0; i < count; i++)
        {
            Console.WriteLine($"{i + 1}. {books[i].Title} by {books[i].Author}");
        }
    }

    // Method to search for a book by title
    static void SearchBookByTitle(Book[] books, int count)
    {
        Console.Write("Enter the title to search for: ");
        string searchTitle = Console.ReadLine();
        bool found = false;

        for (int i = 0; i < count; i++)
        {
            if (books[i].Title.Equals(searchTitle, StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine($"Found: {books[i].Title} by {books[i].Author}");
                found = true;
            }
        }

        if (!found)
        {
            Console.WriteLine("No books found with that title.");
        }
    }

    // Method to delete a book by position (index)
    static void DeleteBook(Book[] books, ref int count)
    {
        Console.Write("Enter the book number to delete: ");
        if (int.TryParse(Console.ReadLine(), out int bookNumber) && bookNumber > 0 && bookNumber <= count)
        {
            // Move all books after the deleted one backwards in the array
            for (int i = bookNumber - 1; i < count - 1; i++)
            {
                books[i] = books[i + 1];
            }
            count--;  // Decrease the total book count
            Console.WriteLine("Book deleted successfully.");
        }
        else
        {
            Console.WriteLine("Invalid book number.");
        }
    }
}

 Output

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 1
Enter book title: The Great Gatsby
Enter book author: F. Scott Fitzgerald
Book added successfully.

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 1
Enter book title: 1984
Enter book author: George Orwell
Book added successfully.

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 2
Books List:
1. The Great Gatsby by F. Scott Fitzgerald
2. 1984 by George Orwell

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 3
Enter the title to search for: 1984
Found: 1984 by George Orwell

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 4
Enter the book number to delete: 1
Book deleted successfully.

Menu:
1. Add a new book
2. Display all books
3. Search for a book by title
4. Delete a book by position
5. Exit
Choose an option: 2
Books List:
1. 1984 by George Orwell

Comparte este ejercicio de C#

Practica más ejercicios C# de Matrices, estructuras y cadenas de C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..