Skip to content

Repository files navigation

🏆 Club Deportivo - Sistema de Gestión (POO en C#)

C# .NET Core IFTS 29 Licencia MIT


Sistema en consola para la gestión interactiva de socios, actividades deportivas y control de cupos de un club deportivo. Desarrollado para la asignatura Programación Orientada a Objetos (POO) en el IFTS N° 29 (Instituto de Formación Técnica Superior N° 29).


📋 Tabla de Contenidos


👥 Integrantes - Grupo N° 5

  • Marcelo Galimberti
  • Catriel Escobar
  • M. Eugenia Bava
  • Alejandro Abadi
  • Gustavo Baranda

🚀 Descripción del Proyecto

El Sistema de Gestión de Club Deportivo es una aplicación de consola en C# (.NET Core 3.1) que permite administrar eficientemente los flujos operativos básicos de una institución deportiva:

  1. Gestión de Socios: Registro con asignación automática de ID y control de unicidad por DNI.
  2. Administración de Actividades: Alta de disciplinas deportivas asignando cupos máximos iniciales.
  3. Inscripciones y Cupos: Vinculación de socios a actividades con decremento automático de vacantes y prevención de sobreinscripsión o inscripciones duplicadas.
  4. Consola Interactiva: Menú contextual con estética retro formateada con bordes y colores informativos según el estado de las operaciones.

🛠️ Tecnologías Utilizadas

💻 Lenguaje

C#


⚙️ Plataforma & Runtime

.NET Core 3.1


🧰 IDEs & Herramientas

Visual Studio Visual Studio Code JetBrains Rider


🗂️ Control de Versiones

Git GitHub



✨ Funcionalidades Principales

  • 👤 Alta de Socio: Registro mediante Nombre y DNI. Garantiza que no existan socios duplicados.
  • Agregar Actividad Deportiva: Registro de nuevas disciplinas (ej: Fútbol, Vóley, Tenis, Básquet) especificando la cantidad de cupos disponibles.
  • 📝 Inscripción a Actividades: Validación integral que verifica existencia de la actividad, disponibilidad de cupos y que el socio no se encuentre previamente inscripto.
  • 📋 Listado de Socios: Visualización rápida del catálogo completo de socios registrados.
  • 📊 Monitoreo de Cupos: Salida en consola dinamizada por colores (gris para cupos disponibles y rojo para cupos agotados).

🧱 Conceptos de POO Aplicados

En el proyecto se aplicaron los pilares fundamentales de la Programación Orientada a Objetos:

  • Encapsulamiento: Las clases ocultan sus atributos privados (private) exponiendo getters selectivos para mantener la integridad de los datos.
  • Abstracción: Modelado de entidades del mundo real (Socio, ActividadDeportiva, ClubDeportivo) reflejando solo sus atributos y comportamientos relevantes.
  • Polimorfismo y Sobrescritura (override): Redefinición del método ToString() en las clases de dominio para proporcionar representaciones de texto formateadas y estilizadas en consola.
  • Sobrecarga de Métodos: Múltiples firmas para métodos como MostrarCupos() y MostrarCupos(string nombreActividad).
  • Relaciones entre Objetos y Colecciones: Manejo dinámico de relaciones 1:N y N:M mediante List<T> de .NET.

📐 Modelo de Dominio (Diagrama de Clases)

classDiagram
    class ClubDeportivo {
        -List~Socio~ socios
        -List~ActividadDeportiva~ actividades
        +ClubDeportivo()
        +AgregarActividad(ActividadDeportiva actividad) void
        +AltaSocio(string nombre, string dniSocio) void
        +InscribirActividad(string nombreActividad, string idSocio) string
        +MostrarCupos() void
        +MostrarCupos(string nombreActividad) void
        +MostrarActividades() void
        +ListarSocios() void
    }

    class Socio {
        -string nombre
        -string dniSocio
        -int id
        -List~ActividadDeportiva~ actividades
        +Socio(string nombre, string dniSocio, int id)
        +Nombre string
        +DniSocio string
        +Id int
        +Actividades List~ActividadDeportiva~
        +InscribirActividad(ActividadDeportiva actividad) void
        +ToString() string
    }

    class ActividadDeportiva {
        -string nombre
        -int cuposDisponibles
        +ActividadDeportiva(string nombre, int cuposDisponibles)
        +Nombre string
        +CuposDisponibles int
        +DecrementarCupo() void
        +ToString() string
    }

    ClubDeportivo "1" --> "*" Socio : administra
    ClubDeportivo "1" --> "*" ActividadDeportiva : ofrece
    Socio "*" --> "*" ActividadDeportiva : inscripto en
Loading

📁 Estructura del Código

Rompiendo codigo/
├── ActividadDeportiva.cs   # Entidad que representa la actividad y sus cupos
├── ClubDeportivo.cs        # Clase controladora / gestora principal del club
├── Program.cs              # Punto de entrada, menú interactivo y UI de consola
├── Socio.cs                # Entidad que representa al socio registrado
└── semana5.csproj          # Archivo de configuración del proyecto .NET Core 3.1

💻 Requisitos e Instalación

Requisitos Previos

  • .NET Core SDK 3.1 o superior (compatible con .NET 6/7/8/9 SDK).
  • Entorno de desarrollo: Visual Studio, Visual Studio Code o Rider.

Pasos para Ejecutar

  1. Clonar o descargar el repositorio:

    git clone https://github.com/GustavoBaranda/RompiendoCodigo.git
    cd "Rompiendo codigo"
  2. Compilar el proyecto:

    dotnet build
  3. Ejecutar la aplicación:

    dotnet run

🕹️ Instrucciones de Uso

Al iniciar la aplicación, se cargarán datos de prueba predefinidos (Socios "Gustavo" y "Eugenia", y actividades "Futbol", "Voley", "Tenis" y "Basquet").

A continuación, interactúa mediante el menú principal:

 +---------------- Menú de opciones -----------------+
 |   1. Registrar nuevo socio                        |
 |   2. Agregar nueva actividad deportiva            |
 |   3. Inscribir socio a una actividad              |
 |   4. Listar socios                                |
 |   5. Salir                                        |
 +---------------------------------------------------+
  • Ingrese el número de opción elegida (1-5) y siga los pasos indicados en pantalla.

About

🏆 Sistema de Gestión de Club Deportivo en C# aplicando principios de Programación Orientada a Objetos (POO). Proyecto académico para IFTS 29.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages