En este módulo final, aplicarás todo lo que has aprendido a lo largo del curso en un proyecto práctico. Este proyecto te permitirá consolidar tus conocimientos y habilidades en programación en C, y te proporcionará una experiencia valiosa en el desarrollo de software. A continuación, se presentan las directrices para el proyecto.

Objetivos del Proyecto

  1. Aplicar conocimientos adquiridos: Utilizar los conceptos y técnicas aprendidas en los módulos anteriores.
  2. Desarrollar un programa completo: Crear un programa funcional y bien estructurado en C.
  3. Mejorar habilidades de depuración y optimización: Identificar y corregir errores, y optimizar el rendimiento del programa.
  4. Documentar el código: Escribir documentación clara y concisa para el código desarrollado.

Requisitos del Proyecto

  1. Selección del Proyecto

Elige uno de los siguientes tipos de proyectos:

  • Gestor de Biblioteca: Un programa que gestione una colección de libros, permitiendo agregar, eliminar, buscar y listar libros.
  • Sistema de Gestión de Estudiantes: Un programa que gestione la información de los estudiantes, incluyendo la adición, eliminación, búsqueda y listado de estudiantes.
  • Juego de Adivinanza de Números: Un juego en el que el usuario debe adivinar un número generado aleatoriamente por el programa.
  • Calculadora Científica: Una calculadora que realice operaciones matemáticas avanzadas como trigonometría, logaritmos, etc.

  1. Estructura del Programa

El programa debe estar bien estructurado y organizado. Asegúrate de:

  • Dividir el código en funciones: Cada función debe tener una única responsabilidad.
  • Utilizar estructuras de datos adecuadas: Emplear estructuras, arreglos, punteros, etc., según sea necesario.
  • Manejo adecuado de memoria: Utilizar asignación dinámica de memoria cuando sea necesario y evitar fugas de memoria.

  1. Funcionalidades Mínimas

El programa debe incluir las siguientes funcionalidades mínimas:

  • Entrada y salida de datos: Interacción con el usuario a través de la consola.
  • Almacenamiento de datos: Uso de estructuras de datos para almacenar información.
  • Operaciones CRUD: Crear, Leer, Actualizar y Eliminar datos.
  • Manejo de errores: Gestión adecuada de errores y validación de entradas.

  1. Documentación

La documentación es una parte crucial del proyecto. Debe incluir:

  • Comentarios en el código: Explicaciones claras y concisas de las secciones del código.
  • Archivo README: Un archivo README.md que describa el proyecto, cómo compilarlo y ejecutarlo, y cualquier otra información relevante.
  • Manual de usuario: Instrucciones detalladas sobre cómo usar el programa.

  1. Evaluación

El proyecto será evaluado en base a los siguientes criterios:

  • Funcionalidad: El programa cumple con los requisitos y funciona correctamente.
  • Estructura del código: El código está bien organizado y sigue buenas prácticas de programación.
  • Manejo de errores: El programa maneja adecuadamente los errores y las excepciones.
  • Documentación: La documentación es clara, completa y útil.
  • Optimización: El programa está optimizado para un buen rendimiento.

Pasos para Completar el Proyecto

  1. Planificación: Define el alcance del proyecto y planifica las funcionalidades que implementarás.
  2. Diseño: Diseña la estructura del programa y las funciones que necesitarás.
  3. Implementación: Escribe el código del programa, dividiéndolo en funciones y módulos.
  4. Pruebas y Depuración: Prueba el programa exhaustivamente y corrige cualquier error.
  5. Optimización: Optimiza el código para mejorar el rendimiento.
  6. Documentación: Escribe la documentación del código y el manual de usuario.
  7. Revisión: Revisa el código y la documentación, y realiza mejoras si es necesario.

Ejemplo de Proyecto: Gestor de Biblioteca

Funcionalidades

  • Agregar Libro: Permitir al usuario agregar un nuevo libro a la colección.
  • Eliminar Libro: Permitir al usuario eliminar un libro de la colección.
  • Buscar Libro: Permitir al usuario buscar un libro por título o autor.
  • Listar Libros: Mostrar todos los libros en la colección.

Estructura del Código

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Definición de la estructura Libro
typedef struct {
    int id;
    char titulo[100];
    char autor[100];
} Libro;

// Prototipos de funciones
void agregarLibro();
void eliminarLibro();
void buscarLibro();
void listarLibros();

// Variables globales
Libro biblioteca[100];
int contadorLibros = 0;

int main() {
    int opcion;
    do {
        printf("Gestor de Biblioteca\n");
        printf("1. Agregar Libro\n");
        printf("2. Eliminar Libro\n");
        printf("3. Buscar Libro\n");
        printf("4. Listar Libros\n");
        printf("5. Salir\n");
        printf("Seleccione una opción: ");
        scanf("%d", &opcion);
        switch(opcion) {
            case 1: agregarLibro(); break;
            case 2: eliminarLibro(); break;
            case 3: buscarLibro(); break;
            case 4: listarLibros(); break;
            case 5: printf("Saliendo...\n"); break;
            default: printf("Opción no válida\n");
        }
    } while(opcion != 5);
    return 0;
}

void agregarLibro() {
    if (contadorLibros < 100) {
        Libro nuevoLibro;
        nuevoLibro.id = contadorLibros + 1;
        printf("Ingrese el título del libro: ");
        scanf(" %[^\n]", nuevoLibro.titulo);
        printf("Ingrese el autor del libro: ");
        scanf(" %[^\n]", nuevoLibro.autor);
        biblioteca[contadorLibros] = nuevoLibro;
        contadorLibros++;
        printf("Libro agregado exitosamente\n");
    } else {
        printf("No se pueden agregar más libros\n");
    }
}

void eliminarLibro() {
    int id;
    printf("Ingrese el ID del libro a eliminar: ");
    scanf("%d", &id);
    for (int i = 0; i < contadorLibros; i++) {
        if (biblioteca[i].id == id) {
            for (int j = i; j < contadorLibros - 1; j++) {
                biblioteca[j] = biblioteca[j + 1];
            }
            contadorLibros--;
            printf("Libro eliminado exitosamente\n");
            return;
        }
    }
    printf("Libro no encontrado\n");
}

void buscarLibro() {
    char titulo[100];
    printf("Ingrese el título del libro a buscar: ");
    scanf(" %[^\n]", titulo);
    for (int i = 0; i < contadorLibros; i++) {
        if (strcmp(biblioteca[i].titulo, titulo) == 0) {
            printf("Libro encontrado: ID=%d, Título=%s, Autor=%s\n", biblioteca[i].id, biblioteca[i].titulo, biblioteca[i].autor);
            return;
        }
    }
    printf("Libro no encontrado\n");
}

void listarLibros() {
    for (int i = 0; i < contadorLibros; i++) {
        printf("ID=%d, Título=%s, Autor=%s\n", biblioteca[i].id, biblioteca[i].titulo, biblioteca[i].autor);
    }
}

Documentación

Archivo README.md

# Gestor de Biblioteca

Este programa permite gestionar una colección de libros, permitiendo agregar, eliminar, buscar y listar libros.

## Compilación

Para compilar el programa, use el siguiente comando:

gcc -o gestor_biblioteca gestor_biblioteca.c

## Ejecución

Para ejecutar el programa, use el siguiente comando:

./gestor_biblioteca

## Funcionalidades

- **Agregar Libro**: Permite agregar un nuevo libro a la colección.
- **Eliminar Libro**: Permite eliminar un libro de la colección.
- **Buscar Libro**: Permite buscar un libro por título.
- **Listar Libros**: Muestra todos los libros en la colección.

Manual de Usuario

# Manual de Usuario - Gestor de Biblioteca

## Introducción

Este programa permite gestionar una colección de libros. A continuación, se describen las funcionalidades del programa y cómo utilizarlas.

## Funcionalidades

### 1. Agregar Libro

Para agregar un libro, seleccione la opción 1 en el menú principal. Luego, ingrese el título y el autor del libro cuando se le solicite.

### 2. Eliminar Libro

Para eliminar un libro, seleccione la opción 2 en el menú principal. Luego, ingrese el ID del libro que desea eliminar.

### 3. Buscar Libro

Para buscar un libro, seleccione la opción 3 en el menú principal. Luego, ingrese el título del libro que desea buscar.

### 4. Listar Libros

Para listar todos los libros, seleccione la opción 4 en el menú principal. El programa mostrará todos los libros en la colección.

### 5. Salir

Para salir del programa, seleccione la opción 5 en el menú principal.

Conclusión

Este proyecto te permitirá aplicar y consolidar los conocimientos adquiridos a lo largo del curso. Asegúrate de seguir las directrices y de documentar adecuadamente tu código. ¡Buena suerte!

Curso de Programación en C

Módulo 1: Introducción a C

Módulo 2: Tipos de Datos y Variables

Módulo 3: Flujo de Control

Módulo 4: Funciones

Módulo 5: Arreglos y Cadenas

Módulo 6: Punteros

Módulo 7: Estructuras y Uniones

Módulo 8: Asignación Dinámica de Memoria

Módulo 9: Manejo de Archivos

Módulo 10: Temas Avanzados

Módulo 11: Mejores Prácticas y Optimización

Módulo 12: Proyecto y Evaluación Final

© Copyright 2024. Todos los derechos reservados