Introducción

En este módulo final, aplicarás todos los conocimientos adquiridos a lo largo del curso para desarrollar un proyecto completo en C++. Este proyecto te permitirá consolidar tus habilidades y demostrar tu competencia en programación en C++. A continuación, se presenta una descripción detallada del proyecto, los objetivos, los requisitos y las pautas para su implementación.

Objetivos del Proyecto

  1. Aplicar conceptos de programación en C++: Utilizarás estructuras de control, funciones, arreglos, punteros, programación orientada a objetos, y otros conceptos avanzados.
  2. Desarrollar habilidades de resolución de problemas: Implementarás soluciones eficientes y optimizadas para los problemas planteados.
  3. Fomentar buenas prácticas de programación: Escribirás código limpio, bien documentado y fácil de mantener.
  4. Gestionar un proyecto de software: Planificarás, implementarás, probarás y depurarás un proyecto completo.

Descripción del Proyecto

Proyecto: Sistema de Gestión de Biblioteca

Desarrollarás un sistema de gestión de biblioteca que permita a los usuarios realizar las siguientes operaciones:

  1. Agregar nuevos libros: Los usuarios pueden agregar nuevos libros a la biblioteca con detalles como título, autor, ISBN y número de copias disponibles.
  2. Buscar libros: Los usuarios pueden buscar libros por título, autor o ISBN.
  3. Prestar libros: Los usuarios pueden prestar libros, lo que reducirá el número de copias disponibles.
  4. Devolver libros: Los usuarios pueden devolver libros, lo que incrementará el número de copias disponibles.
  5. Mostrar todos los libros: Los usuarios pueden ver una lista de todos los libros disponibles en la biblioteca.

Requisitos del Proyecto

  1. Interfaz de Usuario: Implementar una interfaz de usuario basada en consola que permita a los usuarios interactuar con el sistema.
  2. Clases y Objetos: Utilizar clases para representar libros y la biblioteca.
  3. Gestión de Memoria: Implementar una gestión adecuada de la memoria, utilizando punteros y asignación dinámica de memoria cuando sea necesario.
  4. Archivos: Guardar y cargar la información de los libros desde un archivo para que los datos persistan entre ejecuciones del programa.
  5. Excepciones: Manejar errores y excepciones de manera adecuada para asegurar la robustez del sistema.

Estructura del Proyecto

Clases Principales

  1. Clase Book:

    • Atributos: title, author, ISBN, copies.
    • Métodos: getTitle(), getAuthor(), getISBN(), getCopies(), setCopies(int).
  2. Clase Library:

    • Atributos: vector<Book> books.
    • Métodos: addBook(Book), searchBookByTitle(string), searchBookByAuthor(string), searchBookByISBN(string), lendBook(string), returnBook(string), displayBooks().

Funcionalidades

  1. Agregar nuevos libros:

    void Library::addBook(Book newBook) {
        books.push_back(newBook);
    }
    
  2. Buscar libros:

    Book* Library::searchBookByTitle(string title) {
        for (auto &book : books) {
            if (book.getTitle() == title) {
                return &book;
            }
        }
        return nullptr;
    }
    
  3. Prestar libros:

    bool Library::lendBook(string title) {
        Book* book = searchBookByTitle(title);
        if (book != nullptr && book->getCopies() > 0) {
            book->setCopies(book->getCopies() - 1);
            return true;
        }
        return false;
    }
    
  4. Devolver libros:

    bool Library::returnBook(string title) {
        Book* book = searchBookByTitle(title);
        if (book != nullptr) {
            book->setCopies(book->getCopies() + 1);
            return true;
        }
        return false;
    }
    
  5. Mostrar todos los libros:

    void Library::displayBooks() {
        for (const auto &book : books) {
            cout << "Title: " << book.getTitle() << ", Author: " << book.getAuthor() 
                 << ", ISBN: " << book.getISBN() << ", Copies: " << book.getCopies() << endl;
        }
    }
    

Planificación del Proyecto

  1. Fase de Diseño:

    • Definir las clases y sus atributos y métodos.
    • Diseñar la interfaz de usuario basada en consola.
  2. Fase de Implementación:

    • Implementar las clases y métodos definidos.
    • Desarrollar la interfaz de usuario y conectar las funcionalidades.
  3. Fase de Pruebas y Depuración:

    • Probar cada funcionalidad de manera individual.
    • Realizar pruebas integrales del sistema completo.
    • Depurar errores y optimizar el código.
  4. Fase de Documentación:

    • Documentar el código y las funcionalidades del sistema.
    • Crear un manual de usuario para la interfaz de consola.

Conclusión

Este proyecto te permitirá aplicar de manera práctica todos los conceptos aprendidos en el curso de C++. Asegúrate de seguir las mejores prácticas de programación y de gestionar adecuadamente el tiempo y los recursos durante la implementación del proyecto. ¡Buena suerte!

© Copyright 2024. Todos los derechos reservados