Sistema completo de gestión, análisis y simulación de datos futbolísticos desarrollado en C
Características • Instalación • Uso • Videos • 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, 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, PDF, ODS)
- 📄 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.
- Documentación en video: nueva página VIDEOS.md con la Presentación del sistema y el Tutorial paso a paso, disponibles en
videos/presentacion.mp4yvideos/tutorial.mp4, enlazada desde el README (barra de navegación, Documentación y Enlaces Útiles). - Correcciones de calidad (SonarQube): simplificación y división de funciones en
resumen_compartible.cyutils.c, y ajuste encamiseta.cpara reducir complejidad y duplicación. - Instalador actualizado: regeneración de
MiFutbolC_Setup.exey ajustes menores enindex.htmlyascii_art.h.
- Estadísticas de Canchas (módulo nuevo):
estadisticas_canchas.c/.hcon 10 reportes: Resumen general, Canchas más usadas, Canchas menos usadas, Rendimiento promedio por cancha, Goles y asistencias por cancha, Rendimiento por tipo de cancha, Rendimiento por superficie, Techadas vs descubiertas, Partidos por localidad y Partidos por franja horaria. Acceso: Menú principal → Estadísticas → Canchas. - Listado de Canchas renovado: filtro previo (Todas / Solo activas / Solo inactivas), columna de Victorias / Empates / Derrotas con porcentaje, separador por cancha, resumen al pie con totales, opción "Ver detalle de una fila" para abrir la ficha completa sin salir del listado y opción "Exportar este listado" que respeta el filtro activo (TXT/CSV/JSON/HTML/PDF).
- Listado de Camisetas renovado: filtro (Todas / Solo activas / Solo inactivas) y orden configurable (por ID, nombre, partidos jugados, goles o victorias); cada fila muestra Victorias/Empates/Derrotas con porcentaje y Prom (Goles+Asist)/Partido; se marcan las camisetas
[INACTIVA], las que están(sin uso)y la>>> MAS EFECTIVA <<<; incluye resumen al pie, detalle de una fila y exportación del listado respetando el filtro. - Gráfico de Uso de Camisetas (ASCII): nuevo ítem "Grafico de Uso" en el menú Camisetas que dibuja un gráfico de barras con los partidos jugados por camiseta (usa el motor
ascii_charts). - Listados reutilizables mejorados: el helper compartido
listado_paginado_config()ahora admite resumen al pie, apertura de detalle, exportación del listado y filtro de texto parametrizado (LIKE); además la opción0) Volveraparece primero y, al elegirla, se vuelve al menú sin el mensaje "Presione ENTER para continuar...". - Exportación filtrada de Camisetas:
exportar_camisetas_filtrado_all()exporta solo el conjunto listado (estado y búsqueda) reutilizando los mismos formatos y columnas que la exportación completa. - Nuevos módulos independientes: Botines, Records & Rankings, Tiendas y Referencias Multimedia con calendario integrado.
- 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.
- Exportación a ODS: nuevo formato de hoja de cálculo OpenDocument compatible con LibreOffice y Excel.
- 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, botines, tiendas, referencias multimedia, notificaciones y más. - 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. - Sorteo con reinicio (Camisetas y Botines): la opción "Sortear" abre un submenú con Sortear y Reiniciar sorteo; lo ya sorteado no vuelve a salir hasta agotar la lista, el ciclo se reinicia solo al terminarse y el reinicio manual pide confirmación.
- Partidos → "Último" con tiempo transcurrido: cada opción del submenú muestra cuánto pasó desde ese partido en años, meses, días, horas y minutos.
- Rankings por temperatura en los filtros de partidos: nuevas opciones Top 5 partidos más fríos y Top 5 más calurosos (solo partidos con clima registrado y sin paginar).
- Carrera Futbolística 12-15 completadas: Vitrina de Trofeos, Estadísticas por Temporada, Timeline de Hitos y Logros de Carrera ahora se calculan con datos reales (antes consultaban tablas inexistentes).
- Entrenador IA configurable: niveles 0 Silencioso / 1 Conservador / 2 Moderado / 3 Agresivo persistidos en la tabla
ia_config, aviso previo al partido con enfriamiento de 24 horas y corrección del parseo de fechas que hacía que el aviso saliera en cada partido. - Reportes HTML rediseñados: cabecera con marca y fecha de generación, encabezados de tabla fijos al hacer scroll, filas cebra, insignias de color para el resultado del partido, modo oscuro automático, reglas de impresión y escapado de datos para que un nombre con
&o<no rompa el documento. - Mantenibilidad interna: helpers compartidos nuevos (
html_texto,html_escape_a,contar_registros_activos,sorteo_contar,sorteo_reiniciar,sorteo_tomar_pendiente) y refactor deevaluar_estado_jugador,formatear_tiempo_transcurrido,listado_paginadoy de los generadores de resumen compartible (HTML y Markdown comparten ahora la preparación de datos).
- 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). Al crear o editar una cancha puedes ingresar sus coordenadas geográficas (latitud, longitud) para que el sistema consulte el clima automáticamente vía Open-Meteo al registrar un partido.
- Listado de Canchas con estadísticas: filtro por estado, Victorias/Empates/Derrotas con porcentaje, resumen de totales al pie, apertura de la ficha completa desde el listado y exportación del listado filtrado.
- Listado de Camisetas con estadísticas y orden: filtro por estado, orden configurable, Victorias/Empates/Derrotas con porcentaje, promedio (Goles+Asistencias) por partido, marcas de camisetas inactivas/sin uso/más efectiva y gráfico ASCII de uso.
- Análisis de Uso: Estadísticas de rendimiento por camiseta y por cancha, incluyendo el módulo dedicado de Estadísticas de Canchas.
- 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
- Gestión de Plantillas: Hasta 11 jugadores por equipo con datos completos
- CRUD Completo: Crear, listar, modificar y eliminar botines de fútbol
- Botín Predeterminado: Fijar el calzado que se usará por defecto en partidos
- Sorteo Aleatorio: Selección al azar del botín para cada encuentro
- Imágenes: Carga y visualización de imágenes de cada botín
- 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. El clima y la temperatura se obtienen automáticamente desde las coordenadas de la cancha vía API Open-Meteo.
- 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)
- Resumen General: canchas registradas, activas/inactivas, canchas físicas, uso y partidos
- Ranking de Canchas: más usadas y menos usadas (incluye canchas sin uso)
- Rendimiento por Cancha: rendimiento general promedio y goles/asistencias por cancha
- Segmentación: rendimiento por tipo de cancha, por superficie y techadas vs descubiertas
- Distribución: partidos por localidad y por franja horaria
- 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
- Resumen de Carrera: totales (partidos, V/E/D, goles, asistencias), inicio y años jugando, promedios por año, mejor año y desglose anual
- 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 (incluye los hitos marcados)
- Hall of Fame Personal: mejores momentos y récords destacados, top de rendimientos, vitrina de trofeos (oro/plata/bronce desde
equipo_historial) y camiseta legendaria - 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)
- Estadísticas por Temporada: partidos, goles, asistencias, V/E/D y rendimiento promedio calculados dentro del período de cada temporada
- Logros de Carrera: progreso de logros de trayectoria (partidos, goles, asistencias, victorias, mejor racha, títulos, podios, hitos y temporadas)
- Entrenamiento y Progresión: planes de entrenamiento y progresión de atributos por jugador
- 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
- Calendario Integrado: Vista mensual de eventos, partidos agendados y recordatorios
- Navegación Temporal: Cambio entre meses y retorno al día actual
- CRUD Completo: Crear, listar, modificar y eliminar tiendas deportivas
- Información Detallada: Nombre, tipo, contacto, productos y rango de precio
- Clasificación: Tiendas físicas, online y otros comercios relacionados al fútbol
- Tipos de Referencia: Video, Foto, Artículo y Audio
- Almacenamiento de URLs: Enlaces a YouTube, Google Drive y otras plataformas
- Filtrado por Tipo: Consulta de referencias por categoría multimedia
- Recomendaciones Inteligentes: Sugerencias basadas en análisis de datos históricos
- Análisis Predictivo: Predicciones basadas en tendencias y patrones
- Nivel de intervención configurable: 0 Silencioso, 1 Conservador (solo riesgo crítico), 2 Moderado (por defecto) y 3 Agresivo, persistido en la tabla
ia_config - Aviso antes del partido con control de frecuencia: solo aparece si el riesgo de lesión supera el umbral del nivel elegido y, como máximo, una vez cada 24 horas (inmediato si el riesgo es crítico)
- Ajuste del riesgo con datos reales: cansancio efectivo, partidos de la última semana y derrotas consecutivas, con descuento por días de descanso
- Perfil de usuario: índice de prudencia calculado según los consejos aceptados e ignorados
Accesible desde Análisis → Entrenador IA.
- Formatos Disponibles: CSV, JSON, HTML, TXT, PDF, ODS
- Acceso desde Ajustes: Ruta de navegación Ajustes -> Exportar
- Exportación por Módulo: Camisetas, partidos, lesiones, estadísticas, análisis, canchas, bienestar, calendario, carrera, colecciones, equipos, records, recordatorios, temporada, torneo y base de datos
- Exportación Completa: Backup total del sistema en todos los formatos
- Exportación Mejorada: Con análisis integrado y métricas adicionales
- Exportación Selectiva: Partidos con características específicas
- Exportación a ODS: Hojas de cálculo OpenDocument con múltiples hojas por módulo
- Informe PDF Total: Reporte integral con portada, secciones y análisis completos
- 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
- Reportes HTML autocontenidos: cada HTML exportado incluye su CSS embebido (sin recursos ni fuentes externas), cabecera con la marca y la fecha de generación, encabezados de tabla fijos al hacer scroll, filas cebra, insignias de color para el resultado del partido, modo oscuro automático y reglas de impresión
- Datos escapados en HTML: los textos de la base se convierten a entidades (
&,<,>,"), así un nombre o comentario con símbolos no rompe el documento - Resumen compartible: HTML con diseño propio (tarjeta oscura, animaciones y meta etiquetas
og:para la previsualización al compartir) y su equivalente en Markdown
- 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.53.2
- 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
- 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
✅ 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 \
estadisticas_canchas.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 estadisticas_canchas.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. Calendario
2. Camisetas
3. Canchas
4. Botines
5. Equipos
6. Partidos
7. Lesiones
8. Estadisticas
9. Logros
10. Financiamiento
11. Torneos
12. Temporada
13. Analisis
14. Bienestar
15. Carrera Futbolistica
16. Recordatorios
17. Colecciones
18. Records & Rankings
19. Tiendas
20. Referencias Multimedia
21. Tutorial
22. Resumen Compartible
23. Ranking Amigos
24. Ajustes
0. Salir
>
Menú Principal → Ajustes (24)
├── 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
└── Opcional: ingresar coordenadas geográficas (lat, lon) para clima automático
> **📍 Cómo obtener coordenadas de tu cancha:**
> 1. Abre [Google Maps](https://maps.google.com) y busca tu cancha
> 2. Haz clic derecho sobre la ubicación exacta → las coordenadas aparecen arriba
> 3. Cópialas (ej: `-34.5453, -58.4498`) y pégalas en la consola cuando el sistema las solicite
> 4. Formato: `latitud, longitud` separados por coma
Menú Principal → Equipos (6) → Crear equipo
Menú Principal → Partidos (7) → 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 (12)
├── Crear torneo
├── Listar torneos
├── Modificar torneo
└── Eliminar torneo
Menú Principal → Estadisticas (9)
├── Ver estadísticas generales
├── Estadísticas por año
├── Estadísticas por mes
└── Meta-análisis
Menú Principal → Analisis (14)
├── 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 (15)
├── Planificación Personal
├── Mentalidad y Hábitos
├── Entrenamiento
├── Alimentación
└── Salud
Menú Principal → Financiamiento (11)
├── Registrar ingreso
├── Registrar gasto
├── Ver balance
└── Presupuestos mensuales
Menú Principal → Recordatorios (17)
├── Listar recordatorios
├── Agregar/editar/eliminar recordatorio
├── Filtrar por temática
└── Agenda (eventos próximos y pasados)
Menú Principal → Colecciones (18)
├── Crear y listar inventario
├── Sincronizar camisetas al inventario
├── Crear y listar colecciones
├── Agregar/quitar ítems a colecciones
└── Exportar/Importar backup JSON
Menú Principal → Ajustes (24) → 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 12)
- 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 Analisis (opción 14)
- 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
│ ├── ascii_charts.c / ascii_charts.h # Gráficos ASCII
│ └── 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
│ │ ├── botin.c / botin.h # Gestión de botines
│ │ ├── equipo.c / equipo.h # Gestión de equipos
│ │ └── posiciones.c / posiciones.h # Gestión de posiciones
│ │
│ ├── ⚽ 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
│ │ └── progresion.c / progresion.h # Progresión y entrenamiento
│ │
│ ├── 🖥️ Interfaz de Soporte
│ │ └── calendario.c / calendario.h # Calendario y eventos
│ │
│ ├── 🏪 Gestión Comercial
│ │ ├── tienda.c / tienda.h # Gestión de tiendas
│ │ └── media.c / media.h # Referencias multimedia
│ │
│ ├── 🔧 Infraestructura y Servicios
│ │ ├── backup.c / backup.h # Backup y restauración
│ │ ├── db_integridad.c / db_integridad.h # Integridad de BD
│ │ ├── undo.c / undo.h # Sistema de deshacer
│ │ ├── filtros.c / filtros.h # Filtros avanzados
│ │ ├── notificaciones.c / notificaciones.h # Notificaciones del sistema
│ │ ├── busqueda.c / busqueda.h # Búsqueda global
│ │ └── reportes.c / reportes.h # Reportes automáticos
│ │
│ ├── ⚙️ Configuración
│ │ └── settings.c / settings.h # Sistema de configuración
│ │
│ ├── ⌨️ Atajos de Teclado
│ │ └── atajos.c / atajos.h # Atajos de teclado
│ │
│
├── 📊 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
│ ├── estadisticas_canchas.c / .h # Estadísticas de canchas
│ ├── 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
│ ├── export_bienestar.c / .h # Exportación de bienestar
│ ├── export_calendario.c / .h # Exportación de calendario
│ ├── export_carrera.c / .h # Exportación de carrera
│ ├── export_colecciones.c / .h # Exportación de colecciones
│ ├── export_equipo.c / .h # Exportación de equipos
│ ├── export_ods.c / .h # Exportación a ODS
│ ├── export_pdf.c / .h # Exportación a PDF
│ ├── export_recordatorios.c / .h # Exportación de recordatorios
│ ├── export_temporada.c / .h # Exportación de temporada
│ └── export_torneo.c / .h # Exportación de torneo
│
├── 📚 BIBLIOTECAS INCLUIDAS
│ ├── sqlite3.c / sqlite3.h # SQLite embebido
│ ├── cJSON.c / cJSON.h # Biblioteca cJSON (MIT License)
│ ├── pdfgen.c / pdfgen.h # Motor PDF interno
│ │
├── 🔧 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 (28 PNG)
│ ├── menu.png # Menú principal
│ ├── calendario.png # Calendario
│ ├── bienvenido.png # Pantalla de bienvenida
│ ├── menucamisetas.png # Gestión de camisetas
│ ├── menucanchas.png # Gestión de canchas
│ ├── menubotines.png # Gestión de botines
│ ├── menuequipos.png # Gestión de equipos
│ ├── menupartidos.png # Gestión de partidos
│ ├── menulesiones.png # Gestión de lesiones
│ ├── menuestadisticas.png # Estadísticas
│ ├── menulogros.png # Logros
│ ├── menufinanciamiento.png # Financiamiento
│ ├── menutorneos.png # Torneos
│ ├── menutemporadas.png # Temporadas
│ ├── menuanalisis.png # Análisis
│ ├── menubienestar.png # Bienestar
│ ├── menucarrerafutbolistica.png # Carrera futbolística
│ ├── menurecordatorios.png # Recordatorios
│ ├── menucolecciones.png # Colecciones
│ ├── menurecordsyrankings.png # Records & Rankings
│ ├── menutiendas.png # Tiendas
│ ├── menumultimedia.png # Referencias Multimedia
│ └── menuajustes.png # Ajustes
│
├── 📖 DOCUMENTACIÓN
│ ├── README.md # Este archivo
│ ├── README.pdf # Versión PDF del README
│ ├── LICENSE # Licencia del proyecto
│ ├── Manual_Usuario_MiFutbolC.md # Manual de usuario (fuente Markdown)
│ ├── manual_usuario.html # Manual de usuario (version HTML)
│ └── 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 (Core) | 5 | 5 | 10 |
| Gestión Deportiva | 12 | 12 | 24 |
| Calendario | 1 | 1 | 2 |
| Gestión Comercial | 2 | 2 | 4 |
| Análisis y Estadísticas | 10 | 10 | 20 |
| Exportación | 21 | 21 | 42 |
| Importación | 1 | 1 | 2 |
| Infraestructura y Servicios | 5 | 5 | 10 |
| Perfil y Progresión | 2 | 2 | 4 |
| Bienestar y Productividad | 4 | 4 | 8 |
| Inteligencia Artificial | 1 | 1 | 2 |
| Extras | 3 | 3 | 6 |
| Bibliotecas | 4 | 4 | 8 |
| TOTAL | 71 | 71 | 142 |
| Módulo | Archivos | Descripción |
|---|---|---|
| Core | main.c, db.c, menu.c, utils.c, settings.c |
Núcleo del sistema e interfaz base |
| Calendario | calendario.c/.h |
Visualización y planificación |
| Gestión Deportiva | camiseta.c/.h, cancha.c/.h, botin.c/.h, equipo.c/.h, partido.c/.h, torneo.c/.h, temporada.c/.h, lesion.c/.h |
Gestión deportiva principal |
| Análisis | estadisticas*.c, analisis.c, records_rankings.c, posiciones.c |
Análisis, estadísticas y posiciones |
| I/O | export*.c (21 módulos), import.c |
Importación/Exportación multiformato |
| Gestión Comercial | tienda.c/.h, media.c/.h |
Tiendas y multimedia |
| Bienestar y Productividad | bienestar.c/.h, carrera.c/.h, recordatorios.c/.h, colecciones.c/.h |
Bienestar, agenda y colecciones |
| IA | entrenador_ia.c/.h |
Entrenador con recomendaciones inteligentes |
| Infraestructura | backup.c, db_integridad.c, undo.c, filtros.c, notificaciones.c, busqueda.c |
Servicios del sistema |
| Perfil | progresion.c/.h, reportes.c/.h |
Progresión y reportes |
| Extras | logros.c, financiamiento.c, ascii_charts.c |
Funcionalidades transversales |
| Compartir y Social | resumen_compartible.c/.h, ranking_amigos.c/.h |
Resumen del perfil (HTML/Markdown) y ranking de amigos |
| Ayuda y Atajos | tutorial.c/.h, atajos.c |
Tutorial guiado y atajos de teclado |
| Servicios Externos | openmeteo_client.c/.h |
Clima real de los partidos (Open-Meteo) |
| Internacionalización | lang.c/.h, langs/es.json, langs/en.json |
Textos en español e inglés |
- 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,botin,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,carrera_hitos,carrera_timeline - Comercial:
tienda,media_referencias - Infraestructura:
backup_registry,undo_log,notificaciones,filtros_guardados,reportes_config - Perfil:
progresion_* - Servicios:
calendario_eventos,atajos_teclado,posiciones - Entrenador IA:
consejos_historial,perfil_usuario_ia,ia_config(nivel de intervención y control de frecuencia del aviso)
Campos clave (selección, no exhaustivo):
camiseta:id,nombre,sorteadabotin:id,nombre,sorteada,activacancha: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_actualequipo_historial:equipo_id,torneo_id,posicion_final,partidos_jugados,goles_favor,goles_contra(base de la Vitrina de Trofeos)ia_config:id,nivel_intervencion,ultima_alerta,ultimo_riesgo
Para el detalle completo, ver la creación del esquema en db.c.
El esquema está versionado con PRAGMA user_version: DB_VERSION_CURRENT = 15. Cada versión agrupa
migraciones que se aplican solas al abrir la aplicación (por ejemplo la 15 añade botin.sorteada,
la 12 partido.botin_id y settings.botin_predeterminado, y la 14 partido.diferencia_gol).
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 estadisticas_canchas.c/.h (nuevo en v4.5) analiza el uso y el rendimiento de las canchas combinando las tablas cancha y partido. Se accede desde Estadísticas → Canchas y ofrece:
- Resumen General: canchas registradas, activas e inactivas, canchas físicas, con/sin uso y partidos registrados.
- Canchas Más Usadas: ranking (top 10) por partidos jugados, con goles, asistencias y rendimiento promedio.
- Canchas Menos Usadas: incluye canchas sin partidos registrados.
- Rendimiento por Cancha: rendimiento general promedio agrupado por cancha.
- Goles y Asistencias por Cancha: totales y promedio (goles+asistencias) por partido.
- Rendimiento por Tipo de Cancha: agrupado por código de tipo (F5/F7/F8/F11/Otro).
- Rendimiento por Superficie: agrupado por superficie (natural, sintético, cemento, otra).
- Techadas vs Descubiertas: comparativa de uso y rendimiento.
- Partidos por Localidad: distribución por zona de la cancha.
- Partidos por Franja Horaria: distribución de partidos por hora.
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 botines (botin.c / botin.h) permite administrar el calzado deportivo registrado en el sistema:
- Operaciones CRUD: Crear, listar, modificar y eliminar botines con validación.
- Botín Predeterminado: Permite fijar un botín que se usará automáticamente al cargar nuevos partidos.
- Sorteo Aleatorio: Selecciona al azar un botín pendiente del ciclo; los ya sorteados no vuelven a salir hasta agotar la lista, y el submenú de sorteo permite reiniciar el ciclo cuando quieras.
- Gestión de Imágenes: Carga y visualización de imágenes asociadas a cada botín.
- Exportación Integrada: Los botines se incluyen en las exportaciones completas del sistema.
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 gestión de tiendas (tienda.c / tienda.h) permite almacenar y administrar información de comercios deportivos:
- Operaciones CRUD: Crear, listar, modificar y eliminar tiendas con datos completos (nombre, tipo, contacto, productos, rango de precio).
- Tipos de Tienda: Soporte para tiendas físicas, online y otros tipos de comercio deportivo.
- Vinculación Deportiva: Relacionada con botines, camisetas, indumentaria y todo equipamiento de fútbol.
El módulo de referencias multimedia (media.c / media.h) permite almacenar enlaces a contenido externo relacionado con la carrera futbolística:
- Tipos de Referencia: Video, Foto, Artículo y Audio.
- Almacenamiento de URLs: Guarda enlaces a YouTube, Google Drive y otras plataformas.
- Filtro por Tipo: Permite consultar referencias filtradas por categoría.
- Operaciones CRUD: Crear, listar, editar y eliminar referencias multimedia.
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). - Consultas genéricas por tabla:
hay_registros(),contar_registros_activos(),existe_id(),obtener_siguiente_id(),obtener_id_por_nombre(),obtener_nombre_entidad()ylistado_paginado()(listados paginados con un render por fila), reutilizadas por todos los módulos. - Sorteos:
sorteo_contar(),sorteo_reiniciar()ysorteo_tomar_pendiente()implementan el ciclo completo (pendientes, reinicio y elección aleatoria con marcado) para cualquier tabla con las columnasnombre,sorteadayactiva; los usan Camisetas y Botines. - Texto seguro para HTML:
html_escape_a()yhtml_texto()convierten&,<,>,"y'en entidades;html_texto()usa un anillo de 16 buffers para poder escapar varias celdas dentro de la misma llamada afprintf. - Sentencias preparadas:
db_prepare_stmt(),db_prepare_stmt_with_error(),db_prepare_cached()ydb_stmt_release()centralizan la preparación y liberación de consultas.
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: 24 opciones organizadas (1-24 más 0 para Salir): Calendario, Camisetas, Canchas, Botines, Equipos, Partidos, Lesiones, Estadísticas, Logros, Financiamiento, Torneos, Temporada, Análisis, Bienestar, Carrera Futbolística, Recordatorios, Colecciones, Records & Rankings, Tiendas, Referencias Multimedia, Tutorial, Resumen Compartible, Ranking Amigos y Ajustes.
- Menús personalizados (modo Custom): desde Ajustes → Modo se puede habilitar u ocultar cualquiera de esos 28 módulos del menú principal.
- 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.
- VIDEOS.md: Presentación y tutorial en video del sistema (ver carpeta
videos/). - README.pdf: Versión PDF del README.
- Manual_Usuario_MiFutbolC.md: Manual de usuario con flujos y pantallas (versión HTML en manual_usuario.html).
- 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)
El proyecto se revisa con SonarQube/SonarCloud y Cppcheck. Los informes quedan en la raíz del repositorio para poder comparar entre revisiones:
duplications.json— líneas y bloques duplicados por archivo, con densidadmaintainability-open.json,reliability-open.json,security-open.json— incidencias abiertas por calidadCppCheckInput.txt— listado de archivos analizados por Cppcheck
Estado tras la última revisión y los arreglos aplicados:
- Fiabilidad: sin incidencias abiertas. El último BLOCKER (lectura fuera de rango al indexar fechas cortas como
"N/A") se resolvió validando la longitud antes de leerfecha[4]/fecha[7]. - Seguridad: sin incidencias abiertas.
- Mantenibilidad: los métodos complejos se van dividiendo en funciones de responsabilidad única —
calcular_tiempo_transcurrido,factor_descanso_por_dias,acumular_ultimos_partidos,contar_derrotas_consecutivas,listado_render_pagina,listado_procesar_opcion— y los generadores de resumen compartible comparten la preparación de datos en lugar de duplicarla. - Duplicación: alrededor del 2% de las líneas, concentrada en
db.c(esquema y migraciones) yresumen_compartible.c.
Reglas que vigila el análisis: nada de scanf/gets para entrada del usuario (se usan input_int/input_string), nada de strcpy/sprintf sin límites, nada de system(), sin arrays de longitud variable y sin goto. Las sentencias se preparan con los helpers de utils.h y se liberan con db_stmt_release/sqlite3_finalize.
- 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 y pdfgen 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)
- 🎬 Videos: Presentación y Tutorial
- 📖 Manual de Usuario (Markdown) · Manual de Usuario (HTML)
- 📘 README (técnico)
- 🐛 Reportar un Bug
- 💡 Solicitar una Funcionalidad
- 📚 SQLite Documentation
- 🔧 CodeBlocks
Referencial y sujeto a cambios:
- Archivos: 85 módulos
.cen la raíz con sus cabeceras (94.csi se cuentan los 9 archivos detests/). - Esquema:
DB_VERSION_CURRENT = 15y 54 índicesCREATE INDEXendb.c. - Duplicación: alrededor del 2% de las líneas, según
duplications.json. - Calidad: sin incidencias abiertas de fiabilidad ni de seguridad (
reliability-open.json,security-open.json). - Tablas de BD: esquema y migraciones definidos en
db.c. - Formatos de exportación: CSV, JSON, HTML, TXT, PDF, ODS.
- Estado: proyecto educativo en evolución.