Skip to content

Latest commit

 

History

52 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏋️‍♂️ Club Deportivo - Aplicación Móvil Android

Android SDK Kotlin Database IFTS 29


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.


📌 Tabla de Contenidos


🎯 Descripción del Proyecto

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).

✨ Características Principales

  1. 🔐 Autenticación y Control de Roles:
    • Inicios de sesión diferenciados con permisos dinámicos en el menú lateral (Navigation Drawer).
  2. 📝 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.
  3. 💳 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.
  4. 📄 Comprobante Digital:
    • Resumen interactivo detallado tras realizar cada pago.
  5. 🪪 Carnet Digital del Socio:
    • Consulta rápida del estado del carnet, condición de socio/no socio y vigencia de cuota/apto físico.
  6. ⚠️ 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.

👥 Roles y Control de Acceso

Funcionalidad 👔 Empleado / Admin 👤 Cliente
Ingresar Nuevo Cliente
Registrar Cobros / Pagos
Listar Cuotas Vencidas (Morosos)
Generar Comprobantes
Visualizar Carnet Digital
Cerrar Sesión

🛠️ Tecnologías y Arquitectura

📱 Lenguaje & Plataforma

Kotlin Android SDK 34 Java JDK 1.8


  • 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).

🧩 Componentes Android Jetpack & UI

ViewBinding Navigation Component ViewModel LiveData RecyclerView


  • ViewBinding: Enlace de vistas de forma segura y eficiente.
  • Navigation Component: Navegación dinámica con NavHostFragment, DrawerLayout y NavigationView.
  • 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 & Persistencia

SQLite


  • 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).

🛠️ Herramientas & Control de Versiones

Android Studio Gradle Git



🗄️ Esquema de Base de Datos

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
    }
Loading

📁 Estructura del Proyecto

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

🔑 Credenciales de Prueba

Para probar el comportamiento del sistema con la base de datos precargada por defecto, se disponen de las siguientes cuentas:

👔 Cuentas de Empleado (Administración)

  • Usuario: admin | Contraseña: admin
  • Usuario: gbaranda | Contraseña: jslover

👤 Cuentas de Cliente / Socio

  • Usuario: cliente | Contraseña: cliente
  • Usuario: agomez | Contraseña: pass456

🚀 Instalación y Ejecución

Requisitos Previos

  • 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.

Pasos para Ejecutar

  1. Clonar el repositorio:
    git clone https://github.com/GustavoBaranda/ClubDeportivoAndroid.git
    cd ClubDeportivoAndroid
  2. Abrir en Android Studio:
    • Selecciona Open an Existing Project y navega hasta la carpeta del proyecto.
  3. Sincronizar Gradle:
    • Deja que Gradle descargue las dependencias requeridas.
  4. Ejecutar la App:
    • Presiona Shift + F10 o el botón Run 'app' con un emulador o dispositivo físico conectado.

🧑‍💻 Autoría e Institución

  • 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

About

📱 App Android nativa en Kotlin para la gestión integral de un Club Deportivo (socios, cobros, carnets y morosos). Proyecto IFTS N° 29.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages