Sistema de gestión de proyectos escolares con asignación de grupos y fechas límite

Sistema en C++ para gestionar proyectos escolares con asignación de grupos y fechas límite, usando clases, vectores y entrada/salida estándar.

Breve Introducción

Sistema de gestión de proyectos escolares con asignación de grupos y fechas límite (cpp)
DESCRIPCIÓN:
Un programa en C++ que permite gestionar proyectos escolares asignando grupos de estudiantes y fechas límite. El sistema permite agregar proyectos, asignar estudiantes a grupos, establecer fechas límite y mostrar el estado de los proyectos. Es un ejemplo completo y robusto de gestión de datos con clases, vectores y manejo de entrada/salida.

NOTAS ADICIONALES:
El programa está listo para usarse en un entorno de escritorio con un compilador C++ moderno. Puede extenderse para guardar en archivos o interfaces gráficas. La gestión de fechas está simplificada con cadenas, pero puede mejorarse con bibliotecas específicas.

EXPLICACIONES:
- La clase Project contiene información básica de un proyecto: nombre, lista de estudiantes y fecha límite.
- La clase ProjectManager utiliza un vector de Project para gestionar múltiples proyectos simultáneamente.
- El método addProject añade un nuevo proyecto con nombre y fecha límite.
- El método assignStudentToProject permite añadir un estudiante a un proyecto existente.
- El método displayProjects muestra todos los proyectos con sus grupos y fechas límite.
- El main proporciona un menú de texto simple para interactuar con el sistema.

Código de Ejemplo: cpp

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

// Clase que representa un proyecto escolar
class Project {
private:
    std::string name;                        // Nombre del proyecto
    std::vector<std::string> students;     // Lista de estudiantes asignados al proyecto
    std::string deadline;                   // Fecha límite del proyecto (formato cadena, ej. "2024-06-30")

public:
    // Constructor
    Project(const std::string& name, const std::string& deadline) : name(name), deadline(deadline) {}

    // Añade un estudiante al grupo
    void addStudent(const std::string& student) {
        students.push_back(student);
    }

    // Obtiene el nombre del proyecto
    std::string getName() const {
        return name;
    }

    // Obtiene la fecha límite
    std::string getDeadline() const {
        return deadline;
    }

    // Muestra información del proyecto
    void display() const {
        std::cout << "Proyecto: " << name << "\n";
        std::cout << "Fecha límite: " << deadline << "\n";
        std::cout << "Grupo de estudiantes: ";
        if (students.empty()) {
            std::cout << "Ningún estudiante asignado." << std::endl;
        } else {
            for (size_t i = 0; i < students.size(); ++i) {
                std::cout << students[i];
                if (i != students.size() - 1) std::cout << ", ";
            }
            std::cout << std::endl;
        }
        std::cout << "-----------------------------" << std::endl;
    }
};

// Clase que gestiona múltiples proyectos
class ProjectManager {
private:
    std::vector<Project> projects;  // Lista de proyectos

public:
    // Añade un nuevo proyecto
    void addProject(const std::string& name, const std::string& deadline) {
        projects.emplace_back(name, deadline);
        std::cout << "Proyecto '" << name << "' añadido con fecha límite " << deadline << ".\n";
    }

    // Asigna un estudiante a un proyecto existente
    void assignStudentToProject(const std::string& projectName, const std::string& studentName) {
        for (auto& project : projects) {
            if (project.getName() == projectName) {
                project.addStudent(studentName);
                std::cout << "Estudiante '" << studentName << "' asignado al proyecto '" << projectName << "'.\n";
                return;
            }
        }
        std::cout << "Proyecto '" << projectName << "' no encontrado.\n";
    }

    // Muestra todos los proyectos
    void displayProjects() const {
        if (projects.empty()) {
            std::cout << "No hay proyectos disponibles.\n";
            return;
        }
        std::cout << "Lista de proyectos:\n";
        for (const auto& project : projects) {
            project.display();
        }
    }
};

// Función para leer una línea de entrada con mensaje
std::string readLine(const std::string& prompt) {
    std::cout << prompt;
    std::string input;
    std::getline(std::cin, input);
    return input;
}

int main() {
    ProjectManager manager;
    bool running = true;

    while (running) {
        std::cout << "\n--- Gestión de Proyectos Escolares ---\n";
        std::cout << "1. Añadir nuevo proyecto\n";
        std::cout << "2. Asignar estudiante a proyecto\n";
        std::cout << "3. Mostrar proyectos\n";
        std::cout << "4. Salir\n";
        std::cout << "Seleccione una opción: ";

        std::string choiceStr;
        std::getline(std::cin, choiceStr);
        int choice = 0;
        std::stringstream ss(choiceStr);
        ss >> choice;

        switch (choice) {
            case 1: {
                std::string name = readLine("Ingrese nombre del proyecto: ");
                std::string deadline = readLine("Ingrese fecha límite (YYYY-MM-DD): ");
                manager.addProject(name, deadline);
                break;
            }
            case 2: {
                std::string projectName = readLine("Ingrese nombre del proyecto para asignar estudiante: ");
                std::string studentName = readLine("Ingrese nombre del estudiante: ");
                manager.assignStudentToProject(projectName, studentName);
                break;
            }
            case 3: {
                manager.displayProjects();
                break;
            }
            case 4: {
                running = false;
                std::cout << "Saliendo del programa.\n";
                break;
            }
            default: {
                std::cout << "Opción no válida, intente de nuevo.\n";
                break;
            }
        }
    }

    return 0;
}
×
×
×
¿Quieres regenerar la respuesta?
×
Exportar chat
Elige el formato de exportación
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Estás a punto de cerrar el chat y pasar al generador de imágenes. Si no has iniciado sesión, perderás nuestro chat. ¿Confirmas?
👁 Estás viendo un chat compartido en modo temporal. No se guardará.
💬
×
Prompts guardados
×
Nota privada
×
Etiqueta
×
Buscar en todos los chats
×
Tus insights
Analizando…
×
Preferencias de IA
Nombre del asistente 30
Longitud de las respuestas
Modelo de IA
Respuestas estructuradas
Incluir ejemplos
Usar emojis
Guíame, no resuelvas Pistas y preguntas en vez de la solución hecha
Más ajustes →
×
Compartir este chat
Quien abra este enlace podrá ver el chat o añadirlo a su perfil como chat propio.
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
Chat compartido
Alguien ha compartido un chat contigo. ¿Solo quieres verlo o añadirlo a tus chats?
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
×

📌 Mensajes guardados

Cargando...

×

Historial de Chat

programas-ejemplo · HISTORIAL DE CHAT

Cargando...

Preferencias de IA

×
  • 🟢 BásicoRespuestas rápidas y esenciales para estudiar
  • 🔵 MedioMayor calidad para estudio y programación
  • 🟣 AvanzadoRazonamiento complejo y análisis detallado
Explicar Pasos

¿Qué se necesita?

Clase Project: representa un proyecto con nombre, grupo de estudiantes y fecha límite.

Clase ProjectManager: gestiona una lista de proyectos, con métodos para agregar, modificar y mostrar proyectos.

Uso de STL vector y string para gestión dinámica de datos.

Entrada/salida estándar para interacción con el usuario.

Sin dependencias externas, solo librerías estándar de C++ (iostream, vector, string, sstream, chrono).

Configuración: no se requiere configuración de hardware, programa de consola independiente.

Arduino: no aplicable, programa de escritorio en C++.

Software: se requiere compilador C++11 o superior.

Temas Similares

Convertidor de temperaturas Celsius/Fahrenheit
Programa en C++ para convertir temperaturas entre Celsius y Fahrenheit con entrada por consola, ideal para principiantes en programación.
Conteo de vocales en una cadena
Programa en C++ para contar vocales en una cadena, ideal para principiantes que quieren aprender manejo de cadenas, bucles y condiciones.
Conteo de palabras en una frase
Programa en C++ que cuenta palabras en una frase usando std::getline, manejando espacios múltiples y mostrando el resultado en consola.
Conversión de segundos a horas, minutos y segundos
Programa en C++ que convierte segundos en horas, minutos y segundos, mostrando el resultado de forma clara y sencilla para principiantes en programación.
Conversión de euros a otras monedas con tasas fijas
Programa en C++ para convertir euros a dólares, libras y yenes con tasas fijas, mostrando resultados precisos y fáciles de usar.
Agenda de contactos textual con búsqueda por nombre
Programa en C++ que implementa una agenda de contactos con inserción, visualización y búsqueda por nombre, usando vectores y menú textual simple.
Gestión de una lista de libros con guardado en archivo de texto
Programa en C++ para gestionar una lista de libros con funciones para agregar, mostrar y guardar datos en archivo de texto de forma sencilla y persistente.
Convertidor de bases numéricas (decimal, binario, hexadecimal)
Programa en C++ para convertir números entre bases decimal, binaria y hexadecimal, con validación y manejo básico de errores, ideal para principiantes.