Aplicación móvil nativa para la gestión integral de un Club Deportivo, desarrollada en Kotlin para Android. Este proyecto fue realizado para la materia Aplicaciones Móviles de la carrera de Tecnicatura Superior en Desarrollo de Software del IFTS N° 29.
- 🎯 Descripción del Proyecto
- ✨ Características Principales
- 👥 Roles y Control de Acceso
- 🛠️ Tecnologías y Arquitectura
- 🗄️ Esquema de Base de Datos
- 📁 Estructura del Proyecto
- 🔑 Credenciales de Prueba
- 🚀 Instalación y Ejecución
- 🧑💻 Autoría e Institución
El sistema del Club Deportivo permite digitalizar y automatizar los procesos administrativos y operativos del club:
- Gestión de socios y no socios.
- Control de apto físico obligatorio.
- Procesamiento de cobro de cuotas mensuales y actividades diarias.
- Emisión y visualización de carnets digitales para los socios.
- Control automático de cuotas vencidas y reporte de clientes morosos.
- Interfaz dinámica adaptable según el rol del usuario (Cliente o Empleado).
- 🔐 Autenticación y Control de Roles:
- Inicios de sesión diferenciados con permisos dinámicos en el menú lateral (
Navigation Drawer).
- Inicios de sesión diferenciados con permisos dinámicos en el menú lateral (
- 📝 Registro e Inscripción de Clientes:
- Inclusión de socios y no socios.
- Validación de DNI único y verificación de apto médico.
- Creación automática de credenciales asociadas al cliente.
- 💳 Gestión de Pagos y Cobros:
- Compatibilidad con pagos mensuales (socios) y pases diarios por actividad (no socios).
- Formas de pago: Efectivo o Tarjeta (con selección de cuotas).
- Regularización automática del estado de morosidad tras efectuar el pago.
- 📄 Comprobante Digital:
- Resumen interactivo detallado tras realizar cada pago.
- 🪪 Carnet Digital del Socio:
- Consulta rápida del estado del carnet, condición de socio/no socio y vigencia de cuota/apto físico.
⚠️ Reporte de Cuotas Vencidas (Morosos):- Algoritmo que evalúa automáticamente la fecha del último pago.
- Si transcurrieron más de 30 días (pago mensual) o 1 día (pase diario), el cliente es registrado como moroso.
- Listado en tiempo real utilizando
RecyclerView.
| Funcionalidad | 👔 Empleado / Admin | 👤 Cliente |
|---|---|---|
| Ingresar Nuevo Cliente | ✅ | ❌ |
| Registrar Cobros / Pagos | ✅ | ❌ |
| Listar Cuotas Vencidas (Morosos) | ✅ | ❌ |
| Generar Comprobantes | ✅ | ❌ |
| Visualizar Carnet Digital | ❌ | ✅ |
| Cerrar Sesión | ✅ | ✅ |
- Kotlin: Lenguaje principal de desarrollo nativo para Android (target JDK 1.8).
- Android SDK: Target SDK 34 (Mínimo Android SDK 26 / Android 8.0 Oreo).
- ViewBinding: Enlace de vistas de forma segura y eficiente.
- Navigation Component: Navegación dinámica con
NavHostFragment,DrawerLayoutyNavigationView. - ViewModel & LiveData: Gestión del estado de la UI alineado al ciclo de vida.
- RecyclerView: Listados optimizados para gran cantidad de elementos.
- Base de Datos Local: SQLite mediante
SQLiteOpenHelper. - Patrón de Diseño: Repository Pattern para desacoplar la capa de persistencia de datos SQLite de la capa de presentación (UI).
La persistencia se maneja en una base de datos SQLite interna (Clubdeportivo) estructurada en las siguientes tablas:
erDiagram
USUARIO ||--o| CLIENTE : "posee"
CLIENTE ||--o{ PAGO : "realiza"
CLIENTE ||--o| MOROSO : "registra"
ACTIVIDAD ||--o{ PAGO : "asociado a"
CLIENTE ||--o{ INSCRIPCION : "inscribe"
ACTIVIDAD ||--o{ INSCRIPCION : "incluye"
USUARIO {
int id_usuario PK
string alias
string contrasena
string rol
}
CLIENTE {
int id_cliente PK
string nombre
string apellido
string dni
int tiene_apto_fisico
string tipo_cliente
date fecha_registro
int id_usuario FK
}
ACTIVIDAD {
int id_actividad PK
string nombre_actividad
real precio_diario
}
PAGO {
int id_pago PK
real monto
string metodo_pago
int id_cliente FK
string tipo_pago
int id_actividad FK
int cant_cuotas
string fecha_pago
}
MOROSO {
int id_moroso PK
int id_cliente FK
}
com.gdbc.clubdeportivo/
├── Login.kt # Actividad de inicio de sesión y autenticación
├── PanelPrincipal.kt # Actividad principal con Navigation Drawer
├── MainActivity.kt # Punto de entrada / comprobación de arranque
├── data/
│ ├── database/
│ │ └── BDatos.kt # SQLiteOpenHelper (Tablas e inserción inicial)
│ ├── model/
│ │ ├── Actividad.kt # Modelo de Actividad deportiva
│ │ ├── Cliente.kt # Modelo de Socio / No socio
│ │ ├── Moroso.kt # Modelo de Cliente moroso
│ │ ├── Pago.kt # Modelo de Registro de Pago
│ │ └── Usuario.kt # Modelo de Usuario y Credenciales
│ ├── repository/
│ │ ├── ActividadRepository.kt # Consultas de actividades
│ │ ├── ClienteRepository.kt # Operaciones CRUD sobre clientes
│ │ ├── MorosoRepository.kt # Cálculo y consulta de morosidad
│ │ ├── PagoRepository.kt # Registro y búsqueda de pagos
│ │ └── UsuarioRepository.kt # Autenticación y creación de usuarios
│ └── util/
│ └── ListadorDeClases.kt # Utilidad para listado dinámico
└── ui/
├── abonar/ # Gestión de cobro de cuotas y actividades
├── adapter/ # Adaptadores para RecyclerView (MorosoAdapter)
├── comprobante/ # Generación del comprobante de pago
├── home/ # Pantalla de bienvenida
├── ingresarcliente/ # Formulario de alta de clientes
├── listarcuotasvencidas/ # Fragmento de visualización de morosos
└── visualizarcarnet/ # Fragmento de credencial/carnet digital
Para probar el comportamiento del sistema con la base de datos precargada por defecto, se disponen de las siguientes cuentas:
- Usuario:
admin| Contraseña:admin - Usuario:
gbaranda| Contraseña:jslover
- Usuario:
cliente| Contraseña:cliente - Usuario:
agomez| Contraseña:pass456
- Android Studio: Jellyfish, Ladybug o superior recomendado.
- JDK: Java Development Kit 17 (compatibilidad en compilación JVM 1.8).
- Dispositivo / Emulador: Android 8.0 (API 26) o superior.
- Clonar el repositorio:
git clone https://github.com/GustavoBaranda/ClubDeportivoAndroid.git cd ClubDeportivoAndroid - Abrir en Android Studio:
- Selecciona
Open an Existing Projecty navega hasta la carpeta del proyecto.
- Selecciona
- Sincronizar Gradle:
- Deja que Gradle descargue las dependencias requeridas.
- Ejecutar la App:
- Presiona
Shift + F10o el botón Run 'app' con un emulador o dispositivo físico conectado.
- Presiona
- Institución: IFTS N° 29 (Instituto de Formación Técnica Superior N° 29)
- Carrera: Tecnicatura Superior en Desarrollo de Software
- Materia: Aplicaciones Móviles
- Proyecto: Club Deportivo Android Application