⚽ MiFutbolC - Sistema Integral de Gestión de Fútbol

Version Language Database Platform License Quality Gate Status CodeFactor

Sistema completo de gestión, análisis y simulación de datos futbolísticos desarrollado en C

CaracterísticasInstalaciónUsoDocumentaciónArquitecturaDeepWiki


📋 Descripción

MiFutbolC es un sistema robusto y completo de gestión de fútbol desarrollado íntegramente en lenguaje C. Este proyecto permite administrar todos los aspectos relacionados con el fútbol amateur y profesional, incluyendo:

El sistema utiliza SQLite3 como base de datos para almacenamiento persistente y eficiente, cJSON para manejo de datos JSON, y ofrece una interfaz de consola intuitiva con menús jerárquicos y arte ASCII.

✨ Características Principales

🎽 Gestión de Equipamiento y Recursos

👥 Administración de Equipos y Jugadores

⚽ Registro y Gestión de Partidos

🏆 Sistema de Torneos

📊 Análisis y Estadísticas Avanzadas

Estadísticas Generales

Análisis Temporal

Meta-Análisis Avanzado

Récords y Rankings

Química entre Jugadores

🏥 Gestión de Salud y Lesiones

💰 Gestión Financiera

🎖️ Sistema Gamificado

🧘 Bienestar Integral

⏰ Recordatorios

🗂️ Colecciones e Inventario

🎵 Reproductor de Música

🤖 Entrenador IA

Accesible desde Análisis → Entrenador IA.

📤 Exportación e Importación de Datos

Exportación Multiformato

Importación de Datos

⚙️ Configuración y Personalización

🎨 Interfaz y Experiencia de Usuario

🛠️ Tecnologías Utilizadas

Lenguaje y Estándares

Bibliotecas y Dependencias

SQLite3 (Incluida)

cJSON (Incluida - Licencia MIT)

Motor PDF Interno (pdfgen)

miniaudio (Incluida - Dominio Público / MIT-0)

Herramientas de Desarrollo

Dependencias Incluidas

SQLite3: Biblioteca completa incluida en el proyecto
cJSON: Biblioteca completa incluida en el proyecto
pdfgen: Motor PDF incluido en el proyecto
miniaudio: Motor de audio incluido en el proyecto
Runtime sin DLLs: El proyecto no requiere DLLs adicionales para ejecutarse

🚀 Instalación y Compilación

Método 1: Instalador Automático (Windows - Recomendado para Usuarios Finales)

El método más sencillo para usuarios que solo desean usar el programa:

  1. Navega a la carpeta installer/
  2. Ejecuta el archivo MiFutbolC_Setup.exe
  3. Sigue las instrucciones del instalador
  4. El programa se instalará automáticamente con todos los archivos necesarios
  5. Busca "MiFutbolC" en el menú de inicio de Windows

Método 2: Usando CodeBlocks (Recomendado para Desarrolladores)

Ideal para desarrollo, depuración y modificación del código:

  1. Instalar CodeBlocks:

  2. Abrir el Proyecto:

  3. Compilar:

  4. Ejecutar:

Método 3: Compilación Manual con GCC (Linux/macOS/Windows)

Para usuarios avanzados que prefieren control total sobre la compilación:

Linux / macOS

# 1. Clonar o descargar el repositorio cd /ruta/al/proyecto/MiFutbolC # 2. Compilar todos los archivos fuente gcc -o MiFutbolC \ main.c db.c menu.c camiseta.c partido.c equipo.c torneo.c \ estadisticas.c estadisticas_generales.c estadisticas_anio.c \ estadisticas_mes.c estadisticas_meta.c estadisticas_lesiones.c \ analisis.c cancha.c logros.c lesion.c temporada.c \ financiamiento.c settings.c entrenador_ia.c \ records_rankings.c export.c export_all.c export_all_mejorado.c \ export_camisetas.c export_camisetas_mejorado.c \ export_lesiones.c export_lesiones_mejorado.c \ export_partidos.c export_estadisticas.c \ export_estadisticas_generales.c export_records_rankings.c \ import.c utils.c sqlite3.c cJSON.c \ -I. -lm -lpthread -ldl # 3. Ejecutar el programa ./MiFutbolC

Windows (con MinGW)

# 1. Abrir terminal (PowerShell o CMD) cd D:\ANIME\Libros\Lenguaje C\Proyectos\MiFutbolC # 2. Definir librerias de Windows (MinGW/Git Bash) WIN_LIBS="-lcomdlg32 -lshell32 -lbcrypt" # 3. Compilar gcc -o MiFutbolC.exe main.c db.c menu.c camiseta.c partido.c equipo.c torneo.c estadisticas.c estadisticas_generales.c estadisticas_anio.c estadisticas_mes.c estadisticas_meta.c estadisticas_lesiones.c analisis.c cancha.c logros.c lesion.c temporada.c financiamiento.c settings.c entrenador_ia.c records_rankings.c export.c export_all.c export_all_mejorado.c export_camisetas.c export_camisetas_mejorado.c export_lesiones.c export_lesiones_mejorado.c export_partidos.c export_estadisticas.c export_estadisticas_generales.c export_records_rankings.c import.c utils.c sqlite3.c cJSON.c -I. $WIN_LIBS # 4. Ejecutar .\MiFutbolC.exe

Método 4: Script del Proyecto para Linux/macOS

El proyecto incluye un instalador/compilador para terminal:

chmod +x Instalador-Linux.sh ./Instalador-Linux.sh # Debug ./Instalador-Linux.sh --debug # Compilar y ejecutar ./Instalador-Linux.sh run

Instalador-Linux.sh puede verificar dependencias, compilar y opcionalmente agregar launcher a PATH.

Método 5: Instalación por Consola en Windows (PowerShell)

# Instalación estándar (compila + instala) powershell -ExecutionPolicy Bypass -File .\install.ps1 # Instalación Debug powershell -ExecutionPolicy Bypass -File .\install.ps1 -BuildType Debug # Usar un .exe ya compilado powershell -ExecutionPolicy Bypass -File .\install.ps1 -SkipBuild

El script install.ps1 instala en %LOCALAPPDATA%\Programs\MiFutbolC, crea launcher de consola (MiFutbolC.cmd) y puede agregar el directorio al PATH de usuario.

📝 Notas Importantes

Cambios recientes UI/Consola (Windows)

🔧 Solución de Problemas Comunes

Error: "sqlite3.h: No such file or directory"

Error: "undefined reference to..."

Caracteres extraños en la consola (Windows)

No se crea la base de datos

💻 Uso

Inicio del Programa

Al ejecutar MiFutbolC, el sistema:

  1. Abre el inicio de sesión multiusuario local
  2. Selecciona o crea un perfil local (opcionalmente con contraseña)
  3. Inicializa la base de datos del perfil activo
  4. Carga la configuración del usuario (tema, idioma)
  5. Muestra el menú principal

Menú Principal

═══════════════════════════════════════ MIFUTBOLC - MENÚ PRINCIPAL ═══════════════════════════════════════ 1. Dashboard 2. Calendario 3. Camisetas 4. Canchas 5. Equipos 6. Partidos 7. Lesiones 8. Estadísticas 9. Logros 10. Financiamiento 11. Torneos 12. Temporada 13. Análisis 14. Bienestar 15. Carrera Futbolistica 16. Recordatorios 17. Colecciones 18. Ajustes 19. Música 0. Salir >

Flujo de Trabajo Típico

1️⃣ Configuración Inicial

Menú Principal → Ajustes (18) ├── Cambiar tema de interfaz ├── Cambiar idioma └── Usuario (nombre visible, contraseña y cuentas locales)

2️⃣ Crear Recursos Básicos

Menú Principal → Camisetas (3) → Crear camiseta Menú Principal → Canchas (4) → Crear cancha Menú Principal → Equipos (5) → Crear equipo

3️⃣ Registrar un Partido

Menú Principal → Partidos (6) → Crear partido ├── Seleccionar cancha ├── Seleccionar camiseta ├── Ingresar goles y asistencias ├── Evaluar rendimiento (1-10) ├── Indicar cansancio (1-10) └── Indicar estado de ánimo (1-10)

4️⃣ Organizar un Torneo

Menú Principal → Torneos (11) ├── Crear torneo ├── Listar torneos ├── Modificar torneo └── Eliminar torneo

5️⃣ Analizar Rendimiento

Menú Principal → Estadísticas (8) ├── Ver estadísticas generales ├── Estadísticas por año ├── Estadísticas por mes └── Meta-análisis Menú Principal → Análisis (13) ├── Análisis Básico ├── Comparador Avanzado ├── Análisis Táctico (Diagramas) ├── Entrenador IA └── Química Entre Jugadores Análisis → Química Entre Jugadores ├── Mejor Combinación de Jugadores ├── Agregar Estadística de Jugador ├── Listar Estadísticas de Jugadores ├── Editar Estadística de Jugador └── Eliminar Estadística de Jugador Menú Principal → Bienestar (14) ├── Planificación Personal ├── Mentalidad y Hábitos ├── Entrenamiento ├── Alimentación └── Salud

6️⃣ Gestionar Finanzas

Menú Principal → Financiamiento (10) ├── Registrar ingreso ├── Registrar gasto ├── Ver balance └── Presupuestos mensuales

7️⃣ Gestionar Recordatorios

Menú Principal → Recordatorios (16) ├── Listar recordatorios ├── Agregar/editar/eliminar recordatorio ├── Filtrar por temática └── Agenda (eventos próximos y pasados)

8️⃣ Gestionar Inventario y Colecciones

Menú Principal → Colecciones (17) ├── Crear y listar inventario ├── Sincronizar camisetas al inventario ├── Crear y listar colecciones ├── Agregar/quitar ítems a colecciones └── Exportar/Importar backup JSON

9️⃣ Exportar Datos

Menú Principal → Ajustes (18) → Exportar ├── Seleccionar módulo (camisetas, partidos, etc.) ├── Elegir formato (CSV, JSON, HTML, TXT) └── Archivos guardados en el directorio de exportaciones (ver sección [Base de Datos](#-base-de-datos))

El informe PDF total incluye secciones adicionales con resúmenes financieros, ranking de canchas, partidos por clima, lesiones por tipo/estado, historial de rachas y distribución de estado de ánimo/cansancio.

Ejemplos de Uso Práctico

Ejemplo 1: Registrar tu Primera Camiseta

  1. Ejecuta el programa
  2. Selecciona 3 (Camisetas)
  3. Selecciona 1 (Crear camiseta)
  4. Ingresa el nombre: "Camiseta Roja"
  5. La camiseta se guarda automáticamente con ID único

Ejemplo 2: Crear un Torneo de Fútbol 5

  1. Crea al menos 4 equipos (Menú → Equipos → Crear)
  2. Ve a Torneos (opción 11)
  3. Selecciona "Crear torneo"
  4. Ingresa nombre: "Copa Primavera 2026"
  5. Selecciona formato: Round Robin
  6. Agrega los equipos participantes
  7. El sistema genera automáticamente el fixture

Ejemplo 3: Analizar tu Rendimiento

  1. Ve a Análisis (opción 13)
  2. El sistema muestra:

Atajos de Teclado (en desarrollo)

🏗️ Arquitectura y Diseño

Diagrama de Arquitectura

┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE PRESENTACIÓN │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ menu.c │ │ ascii_art.h │ │ utils.c │ │ │ │ (Interfaz) │ │ (Visuales) │ │ (Utilidades) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE LÓGICA DE NEGOCIO │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │camiseta.c│ │ partido.c│ │ equipo.c │ │ torneo.c │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ lesion.c │ │ logros.c │ │analisis.c│ │settings.c│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │financia. │ │temporada │ │entrenador│ │records_ │ │ │ │ c │ │ .c │ │ _ia.c │ │rankings.c│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE ESTADÍSTICAS Y ANÁLISIS │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │estadisticas.c│ │estadisticas_ │ │estadisticas_ │ │ │ │ │ │ generales.c │ │ anio.c │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │estadisticas_ │ │estadisticas_ │ │estadisticas_ │ │ │ │ mes.c │ │ meta.c │ │ lesiones.c │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE IMPORTACIÓN/EXPORTACIÓN │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ export.c │ │export_all│ │export_ │ │ import.c │ │ │ │ │ │ .c │ │camisetas │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │export_ │ │export_ │ │export_ │ │ │ │partidos.c│ │lesiones.c│ │estadist. │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE ACCESO A DATOS │ │ ┌──────────────────────────────────────────────────┐ │ │ │ db.c / db.h │ │ │ │ (Abstracción de Base de Datos) │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ CAPA DE PERSISTENCIA │ │ ┌──────────────────────────────────────────────────┐ │ │ │ SQLite3 (sqlite3.c/h) │ │ │ │ Base de Datos Embebida │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │camisetas │ │ partidos │ │ equipos │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ torneos │ │ lesiones │ │ logros │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ BIBLIOTECAS AUXILIARES │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ cJSON.c / .h │ │ │ │ (Parsing JSON) │ │ │ └──────────────────┘ └──────────────────┘ │ └─────────────────────────────────────────────────────────────────┘

Patrones de Diseño Implementados

1. Patrón Modular

2. Patrón de Comando (Simplificado)

3. Patrón Repository (Capa de Acceso a Datos)

4. Patrón Strategy (Exportación)

5. Patrón Singleton (Conexión a BD)

Principios de Diseño

SOLID Principles (Adaptados a C)

Flujo de Datos

Usuario → Menu → Módulo de Negocio → db.c → SQLite → Archivo .db ↓ Estadísticas ↓ Exportación → Archivos (CSV/JSON/HTML/TXT)

📁 Estructura del Proyecto

MiFutbolC/ │ ├── 📄 main.c # Punto de entrada del programa │ ├── 🗄️ CAPA DE DATOS │ ├── db.c / db.h # Gestión de base de datos SQLite │ ├── sqlite3.c / sqlite3.h # Biblioteca SQLite embebida │ └── models.h # Definiciones de estructuras comunes │ ├── 🎨 CAPA DE PRESENTACIÓN │ ├── menu.c / menu.h # Sistema de menús interactivos │ ├── ascii_art.h # Arte ASCII para interfaz │ └── utils.c / utils.h # Utilidades auxiliares │ ├── ⚙️ CAPA DE LÓGICA DE NEGOCIO │ ├── 🎽 Gestión de Recursos │ │ ├── camiseta.c / camiseta.h # Gestión de camisetas │ │ ├── cancha.c / cancha.h # Gestión de canchas │ │ └── equipo.c / equipo.h # Gestión de equipos │ │ │ ├── ⚽ Gestión de Partidos y Torneos │ │ ├── partido.c / partido.h # Gestión de partidos │ │ ├── torneo.c / torneo.h # Gestión de torneos │ │ └── temporada.c / temporada.h # Gestión de temporadas │ │ │ ├── 🏥 Gestión de Salud │ │ └── lesion.c / lesion.h # Gestión de lesiones │ │ │ ├── 💰 Gestión Financiera │ │ └── financiamiento.c / financiamiento.h # Control de ingresos/gastos │ │ │ ├── 🎖️ Gamificación │ │ └── logros.c / logros.h # Sistema de logros y badges │ │ │ ├── 🤖 Inteligencia Artificial │ │ └── entrenador_ia.c / entrenador_ia.h # Entrenador IA │ │ │ ├── 🧘 Bienestar y Productividad │ │ ├── bienestar.c / bienestar.h # Módulo de bienestar integral │ │ ├── carrera.c / carrera.h # Carrera futbolística │ │ ├── recordatorios.c / recordatorios.h # Agenda y recordatorios │ │ └── colecciones.c / colecciones.h # Inventario y colecciones │ │ │ ├── 🖥️ Interfaz de Soporte │ │ ├── dashboard.c / dashboard.h # Dashboard del sistema │ │ └── calendario.c / calendario.h # Calendario y eventos │ │ │ ├── 🎵 Audio │ │ ├── musica.c / musica.h # Reproductor de música │ │ └── musica_helpers.c / musica_helpers.h # Helpers de audio │ │ │ ├── ⚙️ Configuración │ │ └── settings.c / settings.h # Sistema de configuración │ │ │ ├── 📊 CAPA DE ESTADÍSTICAS Y ANÁLISIS │ ├── estadisticas.c / estadisticas.h # Estadísticas generales │ ├── estadisticas_generales.c / .h # Estadísticas detalladas │ ├── estadisticas_anio.c / .h # Estadísticas por año │ ├── estadisticas_mes.c / .h # Estadísticas por mes │ ├── estadisticas_meta.c / .h # Meta-análisis avanzado │ ├── estadisticas_lesiones.c / .h # Estadísticas de lesiones │ ├── analisis.c / analisis.h # Análisis de rendimiento │ └── records_rankings.c / .h # Récords y rankings │ ├── 📤 CAPA DE IMPORTACIÓN/EXPORTACIÓN │ ├── 📥 Importación │ │ └── import.c / import.h # Importación multiformato │ │ │ └── 📤 Exportación │ ├── export.c / export.h # Exportación individual │ ├── export_all.c / .h # Exportación completa │ ├── export_all_mejorado.c / .h # Exportación mejorada completa │ ├── export_camisetas.c / .h # Exportación de camisetas │ ├── export_camisetas_mejorado.c / .h # Exportación mejorada camisetas │ ├── export_lesiones.c / .h # Exportación de lesiones │ ├── export_lesiones_mejorado.c / .h # Exportación mejorada lesiones │ ├── export_partidos.c / .h # Exportación de partidos │ ├── export_partidos_helpers.h # Helpers para exportación │ ├── export_estadisticas.c / .h # Exportación de estadísticas │ ├── export_estadisticas_generales.c / .h # Exportación estadísticas generales │ └── export_records_rankings.c / .h # Exportación récords/rankings │ ├── 📚 BIBLIOTECAS INCLUIDAS │ ├── sqlite3.c / sqlite3.h # SQLite embebido │ ├── cJSON.c / cJSON.h # Biblioteca cJSON (MIT License) │ ├── pdfgen.c / pdfgen.h # Motor PDF interno │ └── miniaudio.h # Motor de audio (header-only) │ ├── 🔧 ARCHIVOS DE CONFIGURACIÓN Y BUILD │ ├── MiFutbolC.cbp # Proyecto CodeBlocks │ ├── MiFutbolC.layout # Layout de CodeBlocks │ ├── MiFutbolC.depend # Dependencias del proyecto │ ├── MiFutbolC.cscope_file_list # Lista de archivos cscope │ ├── MiFutbolC.iss # Script instalador Inno Setup │ ├── Instalador-Linux.sh # Script instalación/compilación Linux/macOS │ ├── install.ps1 # Script instalación por consola (Windows) │ ├── recurso.rc # Recursos de Windows │ └── sonar-project.properties # Configuración SonarQube │ ├── 🎨 RECURSOS │ ├── MiFutbolC.ico # Icono del programa │ └── images/ # Imágenes y capturas │ └── *.png │ ├── 📖 DOCUMENTACIÓN │ ├── README.md # Este archivo │ ├── README.pdf # Versión PDF del README │ ├── LICENSE # Licencia del proyecto │ ├── manual_usuario.md # Manual de usuario │ └── Manual_Usuario_MiFutbolC.pdf # Manual de usuario PDF │ ├── 🏗️ DIRECTORIOS DE COMPILACIÓN │ ├── bin/ # Binarios compilados │ │ └── Debug/ │ │ ├── MiFutbolC.exe # Ejecutable de depuración │ │ └── data/ # Datos del ejecutable │ │ │ ├── obj/ # Archivos objeto (.o) │ │ └── Debug/ │ │ │ └── bw-output/ # Salida de análisis │ ├── 💾 DATOS Y EXPORTACIONES (runtime) │ └── data/ # Se crea en ejecución │ ├── users.db # Registro de usuarios locales │ ├── mifutbol_<usuario>.db # Base de datos por perfil │ ├── mifutbol_<usuario>.log # Log por perfil │ ├── *.csv # Archivos exportados CSV │ ├── *.txt # Archivos exportados TXT │ ├── *.json # Archivos exportados JSON │ └── *.html # Archivos exportados HTML │ └── 📦 INSTALADOR └── installer/ └── MiFutbolC_Setup.exe # Instalador para Windows

Resumen de Archivos

Conteo referencial (puede variar según cambios y scripts de build).

Categoría Archivos .c Archivos .h Total
Lógica de Negocio 12 12 24
Estadísticas 7 7 14
Exportación 11 11 22
Importación 1 1 2
Interfaz 2 3 5
Base de Datos 2 2 4
Bibliotecas 2 2 4
TOTAL 37 38 75

Módulos Principales

Módulo Archivos Descripción
Core main.c, db.c, menu.c, utils.c, dashboard.c, calendario.c Núcleo del sistema e interfaz base
Gestión camiseta.c, cancha.c, equipo.c, partido.c, torneo.c, temporada.c, lesion.c Gestión deportiva principal
Análisis estadisticas*.c, analisis.c, records_rankings.c Análisis y estadísticas
I/O export*.c, import.c Importación/Exportación
Bienestar y Productividad bienestar.c, carrera.c, recordatorios.c, colecciones.c Bienestar, agenda y colecciones
Audio musica.c, musica_helpers.c, miniaudio.h Reproductor y procesamiento de audio
Extras logros.c, financiamiento.c, entrenador_ia.c, settings.c Funcionalidades transversales

🗄️ Base de Datos

Información General

Directorios de importación/exportación

Esquema (resumen)

El esquema se crea en db.c y puede evolucionar con ALTER TABLE automáticos. Tablas principales (resumen):

Campos clave (selección, no exhaustivo):

Para el detalle completo, ver la creación del esquema en db.c.

Inicialización de la Base de Datos

La función db_init() en db.c se encarga de:

  1. Crear el directorio de datos si no existe
  2. Abrir/crear la base de datos SQLite
  3. Crear todas las tablas con sus respectivos esquemas
  4. Aplicar migraciones simples (ALTER TABLE) si faltan columnas
  5. Inicializar directorios de importación y exportación
// Ejemplo simplificado bool db_init() { if (!setup_database_paths()) return false; if (!create_database_connection()) return false; if (!create_database_schema()) return false; add_missing_columns(); get_import_dir(); get_export_dir(); return true; }

Consultas Comunes

Estadísticas por Camiseta

SELECT c.nombre, COUNT(p.id) as partidos, SUM(p.goles) as goles_totales, SUM(p.asistencias) as asistencias_totales, AVG(p.rendimiento_general) as rendimiento_promedio FROM camiseta c LEFT JOIN partido p ON c.id = p.camiseta_id GROUP BY c.id ORDER BY goles_totales DESC;

Récords Históricos

SELECT MAX(goles) as max_goles, MAX(asistencias) as max_asistencias, MAX(rendimiento_general) as mejor_rendimiento FROM partido;

Análisis de Lesiones

SELECT tipo, COUNT(*) as cantidad FROM lesion GROUP BY tipo ORDER BY cantidad DESC;

Módulo de Estadísticas

El módulo de estadísticas proporciona información agregada sobre el rendimiento de las camisetas en los partidos:

Las estadísticas se calculan en tiempo real mediante consultas SQL que unen las tablas de partidos y camisetas.

Módulo de Análisis de Rendimiento

El módulo de análisis de rendimiento (analisis.c) ofrece una evaluación detallada del desempeño futbolístico mediante la comparación de los últimos 5 partidos con los promedios generales del sistema:

Este módulo utiliza consultas SQL avanzadas para calcular promedios y rachas, proporcionando insights valiosos para el seguimiento y mejora del rendimiento futbolístico.

Sistema de Logros y Badges

El sistema de logros y badges (logros.c) implementa un sistema de recompensas basado en estadísticas conseguidas por las camisetas en partidos de fútbol, incentivando el progreso y el logro de metas:

Este sistema utiliza consultas SQL para calcular estadísticas acumuladas y determinar el estado de cada logro, proporcionando una experiencia gamificada para motivar el uso continuo del sistema.

Módulo de Gestión de Equipos

El módulo de gestión de equipos (equipo.c / equipo.h) permite crear, gestionar y administrar equipos de fútbol con diferentes configuraciones:

Módulo de Gestión de Torneos

El módulo de gestión de torneos (torneo.c / torneo.h) ofrece en el menú actual operaciones base de administración:

Además, el esquema de base de datos incluye tablas de soporte para fases, equipos y estadísticas de torneo.

Módulo de Gestión Financiera

El módulo de gestión financiera (financiamiento.c / financiamiento.h) permite llevar un control detallado de los ingresos y gastos del equipo de fútbol:

Este módulo proporciona herramientas esenciales para la administración financiera del equipo, permitiendo un seguimiento preciso de los recursos económicos.

Módulo de Récords y Rankings

El módulo de récords y rankings (records_rankings.c / records_rankings.h) ofrece un análisis exhaustivo de los logros históricos y estadísticas destacadas del sistema:

Este módulo utiliza consultas SQL avanzadas para extraer insights valiosos sobre el rendimiento histórico y ayudar en la toma de decisiones estratégicas.

Módulo de Estadísticas por Año

El módulo de estadísticas por año (estadisticas_anio.c / estadisticas_anio.h) proporciona análisis longitudinal del rendimiento futbolístico agrupado por año:

Este módulo es fundamental para el análisis de largo plazo y la planificación estratégica del equipo.

Módulo de Estadísticas por Mes

El módulo de estadísticas por mes (estadisticas_mes.c / estadisticas_mes.h) ofrece un desglose detallado del rendimiento mensual:

Este módulo permite un seguimiento granular del progreso del equipo y la identificación de tendencias a corto plazo.

Módulo de Meta-Análisis

El módulo de meta-análisis (estadisticas_meta.c / estadisticas_meta.h) realiza análisis estadísticos avanzados para profundizar en el rendimiento futbolístico:

Este módulo proporciona insights profundos para la optimización del rendimiento y la toma de decisiones tácticas.

Utilidades y Funciones Auxiliares

El proyecto incluye un módulo de utilidades (utils.c / utils.h) que proporciona funciones comunes para:

Estas utilidades promueven la reutilización de código y mantienen una interfaz consistente en todo el programa.

Sistema de Menús

El proyecto implementa un sistema de menús jerárquico y modular mediante las funciones en menu.c / menu.h:

Exportación Completa

Además de las exportaciones individuales, el módulo export_all.c / export_all.h proporciona la función exportar_todo() que:

Exportación Mejorada

Los módulos de exportación mejorada (export_all_mejorado.c, export_camisetas_mejorado.c, export_lesiones_mejorado.c) proporcionan funcionalidades avanzadas de exportación con análisis integrado:

Importación Completa

El módulo import.c / import.h permite restaurar datos desde archivos JSON, TXT, CSV o HTML exportados previamente. También incluye opciones rápidas (Todo JSON/Todo CSV) e importación de base de datos. Ver sección Características Principales para detalles completos sobre la funcionalidad de importación.

Documentación

Documentación Disponible

El repositorio incluye documentación técnica y de usuario en formato Markdown y PDF:

Nota: Los PDF se generan a partir de los .md (por ejemplo con Pandoc) si necesitas regenerarlos.

🛠️ Desarrollo y Contribución

Convenciones de Código

Estilo de Código

Estructura de Archivos

// Ejemplo de estructura de archivo .h #ifndef MODULO_H #define MODULO_H // Includes necesarios #include <stdio.h> #include "db.h" // Constantes #define MAX_NOMBRE 100 // Estructuras typedef struct { int id; char nombre[MAX_NOMBRE]; } MiEstructura; // Declaraciones de funciones void crear_elemento(void); void listar_elementos(void); void modificar_elemento(int id); void eliminar_elemento(int id); #endif // MODULO_H

Agregar Nuevas Funcionalidades

Paso 1: Planificación

  1. Define claramente la funcionalidad
  2. Identifica las tablas de BD necesarias
  3. Diseña la interfaz de usuario

Paso 2: Implementación

  1. Crear archivos .h y .c para el nuevo módulo
  2. Definir estructuras en el header
  3. Implementar funciones en el archivo .c
  4. Actualizar db.c si requiere nuevas tablas
  5. Agregar al menú en menu.c

Paso 3: Integración

  1. Actualizar MiFutbolC.cbp (CodeBlocks)
  2. Actualizar flujo de build/instalación (Makefile, Instalador-Linux.sh, install.ps1)
  3. Agregar funciones de exportación si aplica

Paso 4: Documentación

  1. Documentar funciones con comentarios Doxygen
  2. Actualizar README.md
  3. Agregar ejemplos de uso

Testing

Pruebas Manuales

Pruebas de Integración

Herramientas de Desarrollo Recomendadas

Contribuir al Proyecto

Si deseas contribuir:

  1. Fork el repositorio
  2. Crea una rama para tu funcionalidad (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Crea un Pull Request

Lineamientos para Pull Requests

📄 Licencia

Este proyecto es de código abierto. Consulta el archivo LICENSE para más detalles.

Bibliotecas de Terceros

Ver sección Tecnologías Utilizadas para detalles completos sobre SQLite3 y cJSON.

👤 Autor

Thomas Hamer

Proyecto desarrollado como ejemplo educativo y de uso personal de programación en C con SQLite.

🙏 Agradecimientos

📝 Notas Adicionales

Características Técnicas

Limitaciones Conocidas

🔗 Enlaces Útiles

📊 Estadísticas del Proyecto

Referencial y sujeto a cambios:


⚽ MiFutbolC - Gestión Profesional de Fútbol en C ⚽

Desarrollado por Thomas Hamer.

⬆ Volver arriba