Sistema completo de gestión, análisis y simulación de datos futbolísticos desarrollado en C
Características • Instalación • Uso • Documentación • Arquitectura • DeepWiki
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:
- 🎽 Gestión de equipamiento (camisetas con seguimiento de uso)
- 🏟️ Infraestructura deportiva (canchas)
- ⚽ Registro de partidos (con estadísticas detalladas)
- 👥 Administración de equipos (jugadores, formaciones, posiciones)
- 🏆 Organización de torneos (múltiples formatos y estructuras)
- 📊 Análisis avanzado (rendimiento, tendencias, química entre jugadores, meta-análisis)
- 🏥 Gestión de salud (lesiones y recuperación)
- 🧘 Bienestar integral (hábitos, planificación, salud y reportes personales)
- 📈 Carrera futbolística avanzada (identidad, timeline, hitos, Hall of Fame y modo retro)
- ⏰ Gestión de recordatorios (agenda personal, filtros y seguimiento)
- 🗂️ Colecciones e inventario (items, colecciones y sincronización con camisetas)
- 💰 Control financiero (ingresos, gastos, balances)
- 🎖️ Sistema gamificado (logros y badges)
- 🤖 Entrenador IA (recomendaciones inteligentes)
- 📤 Exportación multiformato (CSV, JSON, HTML, TXT)
- 📄 Informe PDF mejorado (portada, secciones y más datos)
- 📥 Importación de datos (restauración desde JSON/TXT/CSV/HTML)
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.
- Carrera Futbolística ampliada: nueva ficha de identidad, perfil dinámico, partidos que marcaron, timeline, Hall of Fame, resumen narrativo y Modo Retro: Hoy en tu Historia.
- Canchas con exportación avanzada: exportación de información de canchas en TXT, CSV, JSON, HTML y PDF desde el propio módulo.
- Partidos más completos: nuevos modos de carga (Amistoso, Torneo y Entrenamiento) y más contexto del partido (estado de cancha, marcador global, formato F5/F7/F8/F11, tarjeta, goles en contra, dolor físico, temperatura, arbitraje score, tags, lo mejor/qué mejorar).
- Estadísticas de rendimiento extendidas: métricas nuevas por intensidad, dolor físico, arbitraje y temperatura.
- Catálogo climático ampliado: nuevos climas (frío, calor, llovizna, lluvia moderada/fuerte, cancha inundada) en carga, análisis y exportación.
- Esquema de BD evolucionado: nuevas columnas en
partidoy nuevas tablas para carrera (carrera_identidad,carrera_partido_hito,carrera_resumen_narrativo). - Mejoras de robustez previas mantenidas: rutas de BD con
snprintf, logs más consistentes, flujo de imágenes reforzado y scriptinstall.ps1para instalación por consola en Windows.
- Camisetas Inteligentes: Crear, editar, eliminar y listar camisetas con seguimiento automático de uso y rendimiento
- Ciclo Activa/Inactiva en Camisetas: retirar y reactivar camisetas para preservar historial
- Imágenes de Camisetas: carga, apertura y ajustes de visor (incluye prueba de visor y previsualización en consola)
- Gestión de Canchas: administrar infraestructura deportiva (crear, listar, modificar, retirar/reactivar, eliminar con opciones seguras y exportar información detallada)
- Análisis de Uso: Estadísticas de rendimiento por camiseta y cancha
- Equipos Personalizables: Crear equipos fijos o momentáneos con información completa
- Modalidades Múltiples: Soporte para Fútbol 5, 7, 8 y 11
- Posiciones Definidas: Arqueros, Defensores, Mediocampistas, Delanteros
- Formaciones Tácticas: Configuración de formaciones y designación de capitanes
- Gestión de Plantillas: Hasta 11 jugadores por equipo con datos completos
- Modos de carga: Amistoso, Torneo y Entrenamiento
- Partidos Detallados: Registro completo con fecha/hora, cancha, camisetas, resultados y franja horaria
- Métricas Avanzadas: Goles, asistencias, rendimiento, estado físico y mental, dolor físico, temperatura y arbitraje
- Contexto ampliado: estado de cancha, marcador global, formato de fútbol, tarjeta, goles en contra, eventos clave y tags
- Simulación de Partidos: Simulador con cancha ASCII animada y eventos aleatorios
- Historial Completo: Consulta de partidos pasados con filtros avanzados (incluye búsqueda por tag)
- Gestión Base de Torneos: Crear, listar, modificar y eliminar torneos
- Estructura de Datos: Modelo preparado para fases, historial y estadísticas de torneos
- Integración con Temporadas: Relación con módulos de temporada y reportes
- Rendimiento agregado del sistema
- Análisis de estados físicos y mentales
- Estadísticas por camiseta, cancha y equipo
- Por Año: Tendencias longitudinales y comparación interanual
- Por Mes: Desglose mensual y análisis de estacionalidad
- Por Día de Semana: Rendimiento según día de la semana
- Por Clima: Análisis según condiciones climáticas
- Consistencia de Rendimiento: Evaluación de variabilidad y estabilidad
- Detección de Outliers: Identificación de partidos atípicos
- Dependencia del Contexto: Análisis de factores externos
- Impacto del Cansancio: Evaluación real de la fatiga en el desempeño
- Impacto del Estado de Ánimo: Influencia emocional en resultados
- Análisis de Eficiencia: Relación entre esfuerzo y resultados
- Rendimiento por Intensidad: Relación entre exigencia del partido y rendimiento
- Rendimiento por Dolor Físico: Impacto de molestias físicas sobre el desempeño
- Rendimiento por Arbitraje: Comportamiento del rendimiento según calidad arbitral
- Rendimiento por Temperatura: Correlación del rendimiento con la temperatura registrada
- Récords históricos de partidos (máximo de goles, asistencias, rendimiento)
- Mejores y peores rachas (victorias, derrotas, goles)
- Combinaciones óptimas (cancha + camiseta)
- Temporadas destacadas
- Partidos especiales y extremos
- Top 5 mejores partidos por rendimiento
- Ranking de camisetas (partidos, victorias/empates/derrotas, winrate)
- Mejor combinación de jugadores con cálculo de winrate
- Modo híbrido: combina duplas automáticas (equipos/partidos) y registros manuales
- CRUD de química: alta, listado, edición y eliminación de estadísticas por jugador-partido
- Métricas manuales: goles, asistencias, asistencias al usuario, posición y comentario
- Registro de Lesiones: Crear, editar, eliminar y listar lesiones de jugadores
- Seguimiento Detallado: Tipo de lesión, fecha, duración y jugador afectado
- Estadísticas de Lesiones: Análisis de frecuencia, tipos más comunes, distribución mensual
- Impacto en Rendimiento: Evaluación del efecto de lesiones en el desempeño
- Análisis por Camiseta: Identificación de patrones de lesiones por equipamiento
- Control de Ingresos: Registro de cuotas, sponsors y otras entradas
- Gestión de Gastos: Categorización detallada (transporte, equipamiento, torneos, arbitraje, canchas, medicina, otros)
- Balances y Reportes: Visualización de estado financiero actual
- Resúmenes por Categoría: Análisis de gastos por tipo
- Exportación Financiera: Reportes en múltiples formatos
- Logros por Categorías: Goles, asistencias, partidos, victorias, rendimiento, etc.
- Niveles Progresivos: Novato, Promedio, Experto, Maestro, Leyenda
- Seguimiento de Progreso: Visualización de logros completados y en progreso
- Badges Especiales: Hat-tricks, poker de asistencias, rendimiento perfecto
- Motivación Continua: Sistema de recompensas para incentivar el uso
- Planificación Personal: Objetivos, rutinas y seguimiento de hábitos
- Entrenamiento y Alimentación: Registro y control de prácticas saludables
- Mental y Salud: Evaluación de bienestar mental, controles médicos y reportes
- Informe Personal Mensual (PDF): Resumen automático con métricas clave
- Ficha de Identidad del Jugador: perfil personal editable para contextualizar tu evolución
- Perfil Dinámico: clasificación automática del estilo de juego según datos reales
- Partidos que Marcaron: marcado y gestión de hitos relevantes por partido
- Timeline de Carrera: línea temporal de eventos deportivos importantes
- Hall of Fame Personal: mejores momentos y récords destacados
- Resumen Narrativo Automático: síntesis textual automática basada en métricas
- Modo Retro: recuerdos del mismo día en años anteriores (opcional al iniciar)
- Gestión de Recordatorios: Crear, editar, eliminar y listar recordatorios personales
- Agenda Integrada: Vista de eventos próximos y pasados
- Filtros por Temática: Búsqueda de recordatorios por categoría
- Portabilidad: Exportar e importar recordatorios
- Inventario de Ítems: Crear y listar items asociados a tu actividad
- Sincronización con Camisetas: Vincular camisetas existentes al inventario
- Colecciones Personalizadas: Crear colecciones y agregar/quitar items
- Respaldo del Módulo: Exportación e importación de backup en JSON
- Formatos de audio:
.mp3,.wav,.flac,.oggdesde la carpetaMusica/ - Controles completos: Reproducir, pausar, detener, pista anterior/siguiente, seleccionar pista de la lista
- Barra de progreso: tiempo actual y duración total en tiempo real (
mm:ss / mm:ss) - Tiempo restante: visualización del tiempo que queda en la pista
- Control de volumen configurable: paso dinámico ajustable (1 %, 5 %, 10 %, 20 %) con barra visual; persiste entre sesiones
- Modos de repetición: Sin repetición, Repetir pista, Repetir lista, Aleatorio (shuffle)
- Historial shuffle: al retroceder en modo aleatorio, vuelve a la pista anterior del historial
- Ecualizador 3 Bandas: graves (200 Hz), medios (1 kHz) y agudos (8 kHz) de ±12 dB con paso de 3 dB
- Playlists: crear, cargar y eliminar listas de reproducción personalizadas
- Exportar catálogo como playlist: guarda todas las pistas del catálogo (o las filtradas) como un archivo
.txt - Gestión de archivos: agregar y eliminar canciones directamente desde el menú
- Búsqueda y filtro: buscar pistas por nombre con filtro activo persistente; limpiar filtro con [18]
- Retroceder / Avanzar: salto de ±10 segundos dentro de la pista ([16]/[17])
- Saltar a tiempo exacto: ir a un momento específico en formato
MM:SS([20]) - Sleep timer: apagado automático tras N minutos configurables ([19])
- Información de pista: muestra nombre, duración, formato, sample rate y canales de la pista activa ([21])
- Renombrar pista: cambia el nombre de cualquier pista del catálogo en disco y en memoria ([22])
- Inicio automático: reproducción al arrancar la aplicación, configurable desde el menú o desde Ajustes
- Reanudar posición: al salir y volver al reproductor, retoma la pista y el instante exacto donde se dejó
- Fade In/Out: transiciones suaves entre pistas (400 ms entrada, 250 ms salida)
- Multiplataforma: Windows y Linux/macOS vía miniaudio (header-only, sin dependencias externas)
- Recomendaciones Inteligentes: Sugerencias basadas en análisis de datos históricos
- Optimización de Formaciones: Consejos para mejorar el rendimiento del equipo
- Análisis Predictivo: Predicciones basadas en tendencias y patrones
Accesible desde Análisis → Entrenador IA.
- Formatos Disponibles: CSV, JSON, HTML, TXT
- Acceso desde Ajustes: Ruta de navegación Ajustes -> Exportar
- Exportación por Módulo: Camisetas, partidos, lesiones, estadísticas, análisis y base de datos
- Exportación Completa: Backup total del sistema
- Exportación Mejorada: Con análisis integrado y métricas adicionales
- Exportación Selectiva: Partidos con características específicas
- TXT adicionales: finanzas por mes/año, ranking de canchas, partidos por clima, lesiones por tipo/estado, historial de rachas y distribución de estado de ánimo/cansancio
- Restauración multiformato: Importación completa de datos desde archivos JSON, TXT, CSV o HTML
- Acceso desde Ajustes: Ruta de navegación Ajustes -> Importar
- Importación rápida: Opciones Todo JSON rápido y Todo CSV rápido
- Importación de base de datos: Restauración directa de archivo SQLite
- Validación de Datos: Verificación de estructura antes de importar
- Manejo de Errores: Feedback detallado en caso de problemas
- Temas de Interfaz: Claro, Oscuro, Azul, Verde, Rojo, Púrpura, Clásico, Alto Contraste
- Multiidioma: Español e Inglés
- Multiusuario Local: Inicio de sesión por perfil local con datos separados por usuario
- Seguridad por Usuario: Contraseña opcional por perfil, con gestión desde Ajustes -> Usuario
- Nombres de Usuario: Personalización del nombre visible por perfil
- Configuración Persistente: Preferencias guardadas en base de datos
- Menús Jerárquicos: Navegación intuitiva con estructura organizada
- Arte ASCII: Pantallas de bienvenida, simulaciones animadas, decoraciones
- Interfaz Textual: No requiere GUI, compatible con cualquier terminal
- Lenguaje C: Desarrollo completo en C estándar
- Estándar: Compatible con C99/C11
- Compiladores: GCC, MinGW, Clang
- Versión: 3.x
- Archivos:
sqlite3.c,sqlite3.h - Propósito: Base de datos embebida para almacenamiento persistente
- Características: Transacciones ACID, consultas SQL completas, sin servidor
- Archivos:
cJSON.c,cJSON.h - Propósito: Parsing y generación de JSON para importación/exportación
- Características: Ligera, rápida, sin dependencias externas
- Archivos:
pdfgen.c,pdfgen.h - Propósito: Generación de informes PDF del sistema
- Dependencias externas: No requiere dependencias adicionales para PDF
- Archivo:
miniaudio.h - Propósito: Motor de audio multiplataforma para reproducción de archivos MP3
- Características: Header-only, sin dependencias externas, soporta Windows y Linux/macOS
- Uso: Streaming de audio, grafo de nodos DSP para ecualizador, fade in/out y control de volumen
- CodeBlocks: IDE recomendado para desarrollo (incluye proyecto
.cbp) - Doxygen: Generación de documentación técnica (opcional)
- Git: Control de versiones
- Inno Setup: Creación de instalador para Windows
✅ 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
El método más sencillo para usuarios que solo desean usar el programa:
- Navega a la carpeta
installer/ - Ejecuta el archivo
MiFutbolC_Setup.exe - Sigue las instrucciones del instalador
- El programa se instalará automáticamente con todos los archivos necesarios
- Busca "MiFutbolC" en el menú de inicio de Windows
Ideal para desarrollo, depuración y modificación del código:
-
Instalar CodeBlocks:
- Descarga desde codeblocks.org
- Asegúrate de instalar la versión con MinGW incluido
-
Abrir el Proyecto:
- Abre CodeBlocks
- Ve a
File→Open→ SeleccionaMiFutbolC.cbp
-
Compilar:
- Selecciona
Build→Build(o presionaCtrl+F9) - El ejecutable se generará en
bin/Debug/MiFutbolC.exe
- Selecciona
-
Ejecutar:
- Presiona
F9o seleccionaBuild→Build and Run
- Presiona
Para usuarios avanzados que prefieren control total sobre la compilación:
# 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# 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.exeEl 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 runInstalador-Linux.sh puede verificar dependencias, compilar y opcionalmente agregar launcher a PATH.
# 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 -SkipBuildEl script install.ps1 instala en %LOCALAPPDATA%\Programs\MiFutbolC, crea launcher de consola (MiFutbolC.cmd) y puede agregar el directorio al PATH de usuario.
-
Base de Datos: Se crea automáticamente en la primera ejecución (ver sección Base de Datos para más detalles)
-
Codificación: El programa usa UTF-8 para soportar caracteres especiales
- En Windows, se configura automáticamente la consola
-
Permisos: En Linux/macOS, asegúrate de tener permisos de escritura en el directorio
- Limpieza de consola completa: evita que al hacer scroll aparezcan menús anteriores.
- Listados con fecha + día: Partidos, Lesiones y Transacciones muestran fecha con día de semana.
- Compilación MinGW: usa
WIN_LIBS="-lcomdlg32 -lshell32 -lbcrypt"para prevenir errores de linkeo.
- Solución: SQLite3 está incluido en el proyecto. Asegúrate de compilar desde el directorio raíz.
- Solución: Verifica que todos los archivos
.cestén incluidos en el comando de compilación. - En Windows (MinGW), usa las librerías del bloque
WIN_LIBSde la sección de compilación.
- Solución: El programa configura automáticamente UTF-8. Si persiste, ejecuta:
chcp 65001
- Solución: Verifica permisos de escritura en el directorio
data/o%LOCALAPPDATA%\MiFutbolC\data\
Al ejecutar MiFutbolC, el sistema:
- Abre el inicio de sesión multiusuario local
- Selecciona o crea un perfil local (opcionalmente con contraseña)
- Inicializa la base de datos del perfil activo
- Carga la configuración del usuario (tema, idioma)
- Muestra el 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
>
Menú Principal → Ajustes (18)
├── Cambiar tema de interfaz
├── Cambiar idioma
└── Usuario (nombre visible, contraseña y cuentas locales)
Menú Principal → Camisetas (3) → Crear camiseta
Menú Principal → Canchas (4) → Crear cancha
Menú Principal → Equipos (5) → Crear equipo
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)
Menú Principal → Torneos (11)
├── Crear torneo
├── Listar torneos
├── Modificar torneo
└── Eliminar torneo
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
Menú Principal → Financiamiento (10)
├── Registrar ingreso
├── Registrar gasto
├── Ver balance
└── Presupuestos mensuales
Menú Principal → Recordatorios (16)
├── Listar recordatorios
├── Agregar/editar/eliminar recordatorio
├── Filtrar por temática
└── Agenda (eventos próximos y pasados)
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
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.
- Ejecuta el programa
- Selecciona
3(Camisetas) - Selecciona
1(Crear camiseta) - Ingresa el nombre:
"Camiseta Roja" - La camiseta se guarda automáticamente con ID único
- Crea al menos 4 equipos (Menú → Equipos → Crear)
- Ve a Torneos (opción 11)
- Selecciona "Crear torneo"
- Ingresa nombre:
"Copa Primavera 2026" - Selecciona formato:
Round Robin - Agrega los equipos participantes
- El sistema genera automáticamente el fixture
- Ve a Análisis (opción 13)
- El sistema muestra:
- Comparación últimos 5 partidos vs promedio general
- Mejor racha de victorias
- Peor racha de derrotas
- Mensajes motivacionales personalizados
- Números: Selecciona opciones ingresando el número correspondiente
- 0: Volver al menú anterior o salir
- Enter: Confirmar selección
- Ctrl+C: Salir del programa (en cualquier momento)
Ctrl+E: Exportar datos rápidamenteCtrl+S: Ver estadísticas rápidasCtrl+H: Ayuda contextual
┌─────────────────────────────────────────────────────────────────┐
│ 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) │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Descripción: Cada módulo tiene responsabilidad única y bien definida
- Implementación: Archivos
.h(interfaces) y.c(implementaciones) separados - Beneficios: Bajo acoplamiento, alta cohesión, fácil mantenimiento
- Descripción: Sistema de menús con estructura
MenuItem - Implementación:
typedef struct { int opcion; const char* texto; void (*accion)(void); } MenuItem;
- Beneficios: Fácil agregar nuevas opciones, navegación flexible
- Descripción:
db.c/db.hcentraliza todas las operaciones de base de datos - Implementación: Funciones como
db_init(),db_close(), consultas SQL encapsuladas - Beneficios: Abstracción de la persistencia, cambio de BD sin afectar lógica
- Descripción: Múltiples estrategias de exportación (CSV, JSON, HTML, TXT)
- Implementación: Funciones especializadas por formato en módulos
export_*.c - Beneficios: Fácil agregar nuevos formatos, código reutilizable
- Descripción: Una única conexión a la base de datos durante toda la ejecución
- Implementación: Variable global
sqlite3 *dbendb.c - Beneficios: Eficiencia, consistencia de datos
-
S - Single Responsibility: Cada módulo tiene una responsabilidad única
camiseta.c→ Solo gestión de camisetaspartido.c→ Solo gestión de partidos
-
O - Open/Closed: Abierto a extensión, cerrado a modificación
- Nuevos formatos de exportación sin modificar código existente
-
L - Liskov Substitution: Funciones intercambiables con misma interfaz
- Todas las funciones de exportación tienen firma similar
-
I - Interface Segregation: Interfaces específicas y pequeñas
- Headers
.hcon solo declaraciones necesarias
- Headers
-
D - Dependency Inversion: Dependencia de abstracciones
- Módulos dependen de
db.h, no de SQLite directamente
- Módulos dependen de
Usuario → Menu → Módulo de Negocio → db.c → SQLite → Archivo .db
↓
Estadísticas
↓
Exportación → Archivos (CSV/JSON/HTML/TXT)
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
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ó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 |
- Motor: SQLite3 (embebido)
- Archivos de datos por perfil:
mifutbol_<usuario>.db - Registro de usuarios locales:
users.db - Ubicación:
- Windows:
%LOCALAPPDATA%\MiFutbolC\data\mifutbol_<usuario>.db - Linux/macOS:
./data/mifutbol_<usuario>.db
- Windows:
- Archivo de usuarios:
- Windows:
%LOCALAPPDATA%\MiFutbolC\data\users.db - Linux/macOS:
./data/users.db
- Windows:
- Archivo de log:
- Windows:
%LOCALAPPDATA%\MiFutbolC\data\mifutbol_<usuario>.log - Linux/macOS:
./data/mifutbol_<usuario>.log
- Windows:
- Características: Transacciones ACID, sin servidor, archivo único
Directorios de importación/exportación
- Exportaciones (Windows):
%USERPROFILE%\Documents\MiFutbolC\Exportaciones - Importaciones (Windows):
%USERPROFILE%\Documents\MiFutbolC\Importaciones - Exportaciones (Linux/macOS):
./exportaciones - Importaciones (Linux/macOS):
./importaciones
El esquema se crea en db.c y puede evolucionar con ALTER TABLE automáticos. Tablas principales (resumen):
- Base:
camiseta,cancha,partido,lesion,usuario,quimica_jugador_estadistica - Equipos/Torneos:
equipo,jugador,torneo,equipo_torneo,partido_torneo,equipo_torneo_estadisticas,jugador_estadisticas,equipo_historial,torneo_fases,equipo_fase - Temporadas:
temporada,temporada_fase,torneo_temporada,equipo_temporada_fatiga,jugador_temporada_fatiga,equipo_temporada_evolucion,temporada_resumen,mensual_resumen - Configuración/Finanzas:
settings,financiamiento,presupuesto_mensual,comparacion_historial - Carrera avanzada:
carrera_identidad,carrera_partido_hito,carrera_resumen_narrativo
Campos clave (selección, no exhaustivo):
camiseta:id,nombre,sorteadacancha:id,nombrepartido:id,cancha_id,fecha_hora,goles,asistencias,camiseta_id,resultado,rendimiento_general,cansancio,estado_animo,comentario_personal,clima,dia,precio,estado_cancha,goles_equipo,goles_rival,formato_partido,tarjeta,goles_en_contra,dolor_fisico,temperatura_c,arbitraje_score,lo_mejor,que_mejorar,tagslesion:id,jugador,tipo,descripcion,fecha,camiseta_id,estado,partido_idequipo:id,nombre,tipo,tipo_futbol,num_jugadores,partido_idtorneo:id,nombre,tiene_equipo_fijo,equipo_fijo_id,cantidad_equipos,tipo_torneo,formato_torneo,fase_actual
Para el detalle completo, ver la creación del esquema en db.c.
La función db_init() en db.c se encarga de:
- Crear el directorio de datos si no existe
- Abrir/crear la base de datos SQLite
- Crear todas las tablas con sus respectivos esquemas
- Aplicar migraciones simples (
ALTER TABLE) si faltan columnas - 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;
}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;SELECT
MAX(goles) as max_goles,
MAX(asistencias) as max_asistencias,
MAX(rendimiento_general) as mejor_rendimiento
FROM partido;SELECT
tipo,
COUNT(*) as cantidad
FROM lesion
GROUP BY tipo
ORDER BY cantidad DESC;El módulo de estadísticas proporciona información agregada sobre el rendimiento de las camisetas en los partidos:
- Camiseta con más Goles: Muestra la camiseta que ha acumulado el mayor número de goles en todos los partidos.
- Camiseta con más Asistencias: Identifica la camiseta con el mayor número de asistencias registradas.
- Camiseta con más Partidos: Lista la camiseta que ha sido utilizada en el mayor número de partidos.
- Camiseta con más Goles + Asistencias: Combina goles y asistencias para determinar la camiseta con mejor rendimiento global.
Las estadísticas se calculan en tiempo real mediante consultas SQL que unen las tablas de partidos y camisetas.
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:
- Comparación Últimos 5 vs Promedio General: Analiza métricas como goles, asistencias, rendimiento general, cansancio y estado de ánimo, mostrando diferencias numéricas entre el rendimiento reciente y el histórico.
- Cálculo de Rachas: Determina la mejor racha de victorias consecutivas y la peor racha de derrotas consecutivas registradas.
- Análisis Motivacional: Proporciona mensajes personalizados basados en el rendimiento comparativo, ofreciendo motivación o consejos constructivos para mejorar.
- Visualización de Últimos Partidos: Muestra un resumen de los 5 partidos más recientes con detalles clave como fecha, goles, asistencias, rendimiento y resultado.
- Química Entre Jugadores (CRUD): Permite registrar y gestionar estadísticas por jugador-partido (goles, asistencias, asistencias al usuario, posición y comentario).
- Mejor Combinación Híbrida: Calcula la mejor dupla usando datos automáticos de equipos/partidos y datos manuales del módulo de química.
Este módulo utiliza consultas SQL avanzadas para calcular promedios y rachas, proporcionando insights valiosos para el seguimiento y mejora del rendimiento futbolístico.
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:
- Categorías de Logros: Incluye logros por goles, asistencias, partidos jugados, contribuciones totales (goles + asistencias), victorias, empates, derrotas, rendimiento general, estado de ánimo, canchas distintas, hat-tricks, poker de asistencias, rendimiento perfecto, ánimo perfecto, y logros específicos en victorias, derrotas y empates.
- Niveles de Dificultad: Cada categoría tiene múltiples niveles (Novato, Promedio, Experto, Maestro, Leyenda) con objetivos progresivos.
- Seguimiento de Progreso: Muestra el progreso actual hacia cada logro, indicando si está no iniciado, en progreso o completado.
- Visualización por Camiseta: Permite ver todos los logros, solo los completados o solo los en progreso para una camiseta específica.
- Interfaz de Menú: Navegación intuitiva para explorar los logros disponibles.
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.
El módulo de gestión de equipos (equipo.c / equipo.h) permite crear, gestionar y administrar equipos de fútbol con diferentes configuraciones:
- Tipos de Equipos: Soporte para equipos fijos (guardados en base de datos) y momentáneos (temporales).
- Modalidades de Fútbol: Compatible con Fútbol 5, Fútbol 7, Fútbol 8 y Fútbol 11.
- Posiciones de Jugadores: Definición de posiciones estándar (Arquero, Defensor, Mediocampista, Delantero) con posibilidad de designar capitanes.
- Gestión de Plantillas: Cada equipo puede tener hasta 11 jugadores con información completa (nombre, número, posición, capitán).
- Operaciones CRUD: Crear, listar, modificar y eliminar equipos con validación de datos.
El módulo de gestión de torneos (torneo.c / torneo.h) ofrece en el menú actual operaciones base de administración:
- Crear torneo.
- Listar torneos.
- Modificar torneo.
- Eliminar torneo.
Además, el esquema de base de datos incluye tablas de soporte para fases, equipos y estadísticas de torneo.
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:
- Tipos de Transacciones: Soporte para ingresos (cuotas, sponsors, etc.) y gastos (transporte, equipamiento, etc.).
- Categorías Específicas: Clasificación detallada incluyendo transporte, equipamiento, cuotas, torneos, arbitraje, canchas, medicina y otros.
- Gestión Completa: Crear, listar, modificar y eliminar transacciones financieras.
- Resúmenes Financieros: Visualización de balances generales, gastos por categoría y estado financiero actual.
- Exportación: Funciones para exportar datos financieros en múltiples formatos.
Este módulo proporciona herramientas esenciales para la administración financiera del equipo, permitiendo un seguimiento preciso de los recursos económicos.
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:
- Récords de Partidos: Máximo de goles y asistencias en un partido, mejor y peor rendimiento general.
- Top 5 Mejores Partidos: Ranking de partidos por rendimiento general (con goles y asistencias).
- Combinaciones Óptimas: Mejor y peor combinación de cancha + camiseta para rendimiento.
- Ranking de Camisetas: Tabla comparativa por camiseta con partidos, victorias, empates, derrotas y winrate.
- Temporadas Destacadas: Mejor y peor temporada basada en estadísticas acumuladas.
- Rachas: Mejor racha goleadora, peor racha, partidos consecutivos anotando.
- Partidos Especiales: Partidos sin goles, sin asistencias, mejor combinación de goles + asistencias.
- Análisis Comparativo: Funciones para identificar patrones y tendencias históricas.
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.
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:
- Agregación Anual: Estadísticas totales y promedios por camiseta para cada año.
- Tendencias Temporales: Seguimiento de la evolución del rendimiento a lo largo del tiempo.
- Comparación Interanual: Análisis comparativo entre diferentes años para identificar mejoras o declives.
Este módulo es fundamental para el análisis de largo plazo y la planificación estratégica del equipo.
El módulo de estadísticas por mes (estadisticas_mes.c / estadisticas_mes.h) ofrece un desglose detallado del rendimiento mensual:
- Desglose Mensual: Estadísticas individuales por camiseta agrupadas por mes.
- Métricas por Mes: Partidos jugados, goles, asistencias y promedios mensuales.
- Análisis de Estacionalidad: Identificación de patrones estacionales en el rendimiento.
Este módulo permite un seguimiento granular del progreso del equipo y la identificación de tendencias a corto plazo.
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:
- Consistencia de Rendimiento: Evaluación de la variabilidad y estabilidad del desempeño.
- Partidos Atípicos: Identificación de partidos excepcionalmente buenos o malos (outliers).
- Dependencia del Contexto: Análisis de cómo factores externos afectan el rendimiento.
- Impacto del Cansancio: Evaluación del efecto real de la fatiga en el desempeño.
- Impacto del Estado de Ánimo: Análisis de la influencia emocional en los resultados.
- Eficiencia: Comparación entre rendimiento y producción (goles vs rendimiento, asistencias vs cansancio).
- Rendimiento por Intensidad: Evaluación de la relación entre intensidad y resultados obtenidos.
- Rendimiento por Dolor Físico: Impacto de la molestia física sobre rendimiento y contribución.
- Rendimiento por Arbitraje: Relación entre calidad arbitral percibida y desempeño.
- Rendimiento por Temperatura: Correlación entre temperatura ambiente y rendimiento.
- Análisis de Situaciones: Partidos exigentes bien jugados y partidos fáciles mal jugados.
Este módulo proporciona insights profundos para la optimización del rendimiento y la toma de decisiones tácticas.
El proyecto incluye un módulo de utilidades (utils.c / utils.h) que proporciona funciones comunes para:
- Entrada de Datos:
input_int()yinput_string()para leer enteros y cadenas del usuario con validación básica. - Manejo de Fecha/Hora:
get_datetime()para obtener fecha y hora actual en formato legible, yget_timestamp()para nombres de archivos. - Interfaz de Consola:
clear_screen(),print_header(), ypause_console()para mejorar la experiencia del usuario en terminal. - Validación de Datos:
existe_id()para verificar si un ID existe en una tabla de la base de datos. - Confirmaciones:
confirmar()para solicitar confirmación del usuario antes de operaciones destructivas. - Gestión de Exportaciones:
get_export_dir()para determinar y crear el directorio de exportación (Documents en Windows,./exportacionesen Unix/Linux).
Estas utilidades promueven la reutilización de código y mantienen una interfaz consistente en todo el programa.
El proyecto implementa un sistema de menús jerárquico y modular mediante las funciones en menu.c / menu.h:
- Menú Principal: Gestionado en
menu.c(invocado desdemain.c), presenta las opciones principales del sistema (Dashboard, Calendario, Camisetas, Canchas, Equipos, Partidos, Lesiones, Estadísticas, Logros, Financiamiento, Torneos, Temporada, Análisis, Bienestar, Carrera Futbolística, Recordatorios, Colecciones, Ajustes, Música, Salir). - Accesos internos: El Entrenador IA se abre desde Análisis y Exportar/Importar desde Ajustes.
- Submenús: Cada módulo principal tiene su propio menú (ej.
menu_camisetas(),menu_canchas(),menu_partidos(),menu_logros(),menu_lesiones(),menu_financiamiento()). - Estructura de Menú: Utiliza la estructura
MenuItemdefinida enmenu.hpara asociar opciones numéricas con textos descriptivos y funciones a ejecutar. - Navegación: La función
ejecutar_menu()maneja la lógica de mostrar opciones, leer selección del usuario y ejecutar la acción correspondiente. - Consistencia: Todos los menús siguen el mismo patrón, facilitando la adición de nuevas funcionalidades.
Además de las exportaciones individuales, el módulo export_all.c / export_all.h proporciona la función exportar_todo() que:
- Ejecuta automáticamente todas las funciones de exportación disponibles.
- Genera archivos en formatos CSV, TXT, JSON y HTML para camisetas, partidos, estadísticas y lesiones.
- Facilita la copia de seguridad completa de todos los datos del sistema.
- Es accesible desde Ajustes -> Exportar -> Todo.
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:
- Análisis Avanzado para Camisetas: Incluye eficiencia de goles/asistencias, porcentaje de victorias, métricas de rendimiento, evaluación de lesiones.
- Análisis de Impacto para Lesiones: Evaluación de gravedad, comparación de rendimiento antes/después, identificación de patrones.
- Exportación Integral: Genera archivos mejorados en todos los formatos con estadísticas adicionales.
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.
El repositorio incluye documentación técnica y de usuario en formato Markdown y PDF:
- README.md: Documentación técnica general del proyecto.
- README.pdf: Versión PDF del README.
- manual_usuario.md: Manual de usuario con flujos y pantallas.
- Manual_Usuario_MiFutbolC.pdf: Manual de usuario en PDF.
Nota: Los PDF se generan a partir de los .md (por ejemplo con Pandoc) si necesitas regenerarlos.
- Estándar C: C99/C11 compatible
- Indentación: 4 espacios (no tabs)
- Nombres de Variables:
snake_casepara variables y funciones - Nombres de Constantes:
UPPER_CASEpara macros y constantes - Comentarios: En español para consistencia con el proyecto
// 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- Define claramente la funcionalidad
- Identifica las tablas de BD necesarias
- Diseña la interfaz de usuario
- Crear archivos
.hy.cpara el nuevo módulo - Definir estructuras en el header
- Implementar funciones en el archivo
.c - Actualizar
db.csi requiere nuevas tablas - Agregar al menú en
menu.c
- Actualizar
MiFutbolC.cbp(CodeBlocks) - Actualizar flujo de build/instalación (
Makefile,Instalador-Linux.sh,install.ps1) - Agregar funciones de exportación si aplica
- Documentar funciones con comentarios Doxygen
- Actualizar README.md
- Agregar ejemplos de uso
- ✅ Compilar sin warnings
- ✅ Ejecutar todas las opciones del menú
- ✅ Verificar integridad de la base de datos
- ✅ Probar casos límite (valores nulos, IDs inválidos)
- ✅ Verificar exportación/importación
- ✅ Crear datos de prueba
- ✅ Verificar relaciones entre tablas
- ✅ Probar flujos completos (crear torneo → agregar equipos → jugar partidos)
- IDE: CodeBlocks, VS Code, CLion
- Debugger: GDB, LLDB
- Análisis Estático: Cppcheck, SonarQube
- Profiling: Valgrind (Linux), Dr. Memory (Windows)
- Documentación: Doxygen
Si deseas contribuir:
- Fork el repositorio
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crea un Pull Request
- Describe claramente los cambios realizados
- Incluye ejemplos de uso si aplica
- Asegúrate de que el código compile sin errores
- Sigue las convenciones de código del proyecto
Este proyecto es de código abierto. Consulta el archivo LICENSE para más detalles.
Ver sección Tecnologías Utilizadas para detalles completos sobre SQLite3 y cJSON.
Thomas Hamer
Proyecto desarrollado como ejemplo educativo y de uso personal de programación en C con SQLite.
- 📧 Email: [thomashamerutn@gmail.com]
- 🌐 GitHub: thomashamer3/MiFutbolC
- SQLite Team: Por la excelente base de datos embebida
- cJSON: Por la biblioteca ligera de parsing JSON
- Comunidad de C: Por los recursos y documentación disponibles
- CodeBlocks: Por el excelente IDE multiplataforma
- ✅ Persistencia de Datos: Los datos se guardan automáticamente en SQLite entre ejecuciones
- ✅ Manejo de Errores: El programa valida entradas y solicita confirmaciones para operaciones destructivas
- ✅ Compatibilidad: Probado en Windows 11, Ubuntu 22.04, macOS 12+
- ✅ Interfaz Textual: No requiere GUI, funciona en cualquier terminal con soporte UTF-8
- ✅ Dependencias incluidas: SQLite3, cJSON, pdfgen y miniaudio están incluidos en el repositorio
- ✅ Sin DLLs: No utiliza DLLs externas para ejecución
- La interfaz es solo de consola (no hay GUI gráfica)
- Multiusuario local orientado a un mismo equipo/dispositivo (no multiusuario concurrente en red)
- Base de datos local (no hay sincronización en la nube)
- 📖 Manual de Usuario
- 📘 README (técnico)
- 🐛 Reportar un Bug
- 💡 Solicitar una Funcionalidad
- 📚 SQLite Documentation
- 🔧 CodeBlocks
Referencial y sujeto a cambios:
- Tamaño del código: proyecto C modular (ver árbol del proyecto).
- Tablas de BD: esquema definido en
db.c. - Formatos de exportación: CSV, JSON, HTML, TXT.
- Estado: proyecto educativo en evolución.