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).
- Integrantes - Grupo N° 5
- Descripción del Proyecto
- Tecnologías Utilizadas
- Funcionalidades Principales
- Conceptos de POO Aplicados
- Modelo de Dominio (Diagrama de Clases)
- Estructura del Código
- Requisitos e Instalación
- Instrucciones de Uso
- Marcelo Galimberti
- Catriel Escobar
- M. Eugenia Bava
- Alejandro Abadi
- Gustavo Baranda
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:
- Gestión de Socios: Registro con asignación automática de ID y control de unicidad por DNI.
- Administración de Actividades: Alta de disciplinas deportivas asignando cupos máximos iniciales.
- Inscripciones y Cupos: Vinculación de socios a actividades con decremento automático de vacantes y prevención de sobreinscripsión o inscripciones duplicadas.
- Consola Interactiva: Menú contextual con estética retro formateada con bordes y colores informativos según el estado de las operaciones.
- 👤 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).
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étodoToString()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()yMostrarCupos(string nombreActividad). - Relaciones entre Objetos y Colecciones: Manejo dinámico de relaciones 1:N y N:M mediante
List<T>de .NET.
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
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
- .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.
-
Clonar o descargar el repositorio:
git clone https://github.com/GustavoBaranda/RompiendoCodigo.git cd "Rompiendo codigo"
-
Compilar el proyecto:
dotnet build
-
Ejecutar la aplicación:
dotnet run
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.