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:
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.
snprintf para mejorar
robustez y legibilidad.
install.ps1 para compilar/instalar sin Inno
Setup.
.mp3,
.wav, .flac, .ogg desde
la carpeta Musica/
mm:ss / mm:ss)
.txt
MM:SS ([20])
Accesible desde Análisis → Entrenador IA.
sqlite3.c,
sqlite3.h
cJSON.c,
cJSON.h
pdfgen.c,
pdfgen.h
miniaudio.h.cbp)
✅ 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:
installer/MiFutbolC_Setup.exeIdeal para desarrollo, depuración y modificación del código:
Instalar CodeBlocks:
Abrir el Proyecto:
File → Open → Selecciona
MiFutbolC.cbp
Compilar:
Build → Build (o
presiona Ctrl+F9)
bin/Debug/MiFutbolC.exe
Ejecutar:
F9 o selecciona
Build → Build and Run
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.exe
El proyecto incluye un instalador/compilador para terminal:
chmod +x Instalador-Linux.sh
./Instalador-Linux.sh
# Debug
./Instalador-Linux.sh --debug
# Compilar y ejecutar
./Instalador-Linux.sh run
Instalador-Linux.sh puede verificar dependencias,
compilar y opcionalmente agregar launcher a PATH.
# Instalación estándar (compila + instala)
powershell -ExecutionPolicy Bypass -File .\install.ps1
# Instalación Debug
powershell -ExecutionPolicy Bypass -File .\install.ps1 -BuildType Debug
# Usar un .exe ya compilado
powershell -ExecutionPolicy Bypass -File .\install.ps1 -SkipBuild
El script install.ps1 instala en
%LOCALAPPDATA%\Programs\MiFutbolC, crea launcher de
consola (MiFutbolC.cmd) y puede agregar el directorio
al PATH de usuario.
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
Permisos: En Linux/macOS, asegúrate de tener permisos de escritura en el directorio
WIN_LIBS="-lcomdlg32 -lshell32 -lbcrypt"
para prevenir errores de linkeo.
.c estén incluidos en el comando de compilación.
WIN_LIBS de la sección de compilación.
chcp 65001
data/ o
%LOCALAPPDATA%\MiFutbolC\data\
Al ejecutar MiFutbolC, el sistema:
═══════════════════════════════════════
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.
3 (Camisetas)1 (Crear camiseta)"Camiseta Roja""Copa Primavera 2026"
Round RobinCtrl+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) │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
.h (interfaces) y
.c (implementaciones) separados
MenuItem
typedef struct {
int opcion;
const char* texto;
void (*accion)(void);
} MenuItem;
db.c/db.h centraliza
todas las operaciones de base de datos
db_init(), db_close(), consultas SQL
encapsuladas
export_*.c
sqlite3 *db en db.c
S - Single Responsibility: Cada módulo tiene una responsabilidad única
camiseta.c → Solo gestión de camisetaspartido.c → Solo gestión de partidosO - Open/Closed: Abierto a extensión, cerrado a modificación
L - Liskov Substitution: Funciones intercambiables con misma interfaz
I - Interface Segregation: Interfaces específicas y pequeñas
.h con solo declaraciones
necesarias
D - Dependency Inversion: Dependencia de abstracciones
db.h, no de SQLite
directamente
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 |
mifutbol_<usuario>.db
users.db
%LOCALAPPDATA%\MiFutbolC\data\mifutbol_<usuario>.db
./data/mifutbol_<usuario>.db
%LOCALAPPDATA%\MiFutbolC\data\users.db
./data/users.db%LOCALAPPDATA%\MiFutbolC\data\mifutbol_<usuario>.log
./data/mifutbol_<usuario>.log
Directorios de importación/exportación
%USERPROFILE%\Documents\MiFutbolC\Exportaciones
%USERPROFILE%\Documents\MiFutbolC\Importaciones
./exportaciones
./importaciones
El esquema se crea en db.c y puede evolucionar con
ALTER TABLE automáticos. Tablas principales (resumen):
camiseta,
cancha, partido, lesion,
usuario, quimica_jugador_estadistica
equipo,
jugador, torneo,
equipo_torneo, partido_torneo,
equipo_torneo_estadisticas,
jugador_estadisticas,
equipo_historial, torneo_fases,
equipo_fase
temporada,
temporada_fase, torneo_temporada,
equipo_temporada_fatiga,
jugador_temporada_fatiga,
equipo_temporada_evolucion,
temporada_resumen, mensual_resumen
settings,
financiamiento, presupuesto_mensual,
comparacion_historial
Campos clave (selección, no exhaustivo):
camiseta: id, nombre,
sorteada
cancha: id, nombrepartido: id, cancha_id,
fecha_hora, goles,
asistencias, camiseta_id,
resultado, rendimiento_general,
cansancio, estado_animo,
comentario_personal, clima,
dia, precio
lesion: id, jugador,
tipo, descripcion, fecha,
camiseta_id, estado,
partido_id
equipo: id, nombre,
tipo, tipo_futbol,
num_jugadores, partido_id
torneo: 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:
ALTER TABLE) si faltan columnas
// 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:
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:
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:
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:
El módulo de gestión de torneos (torneo.c / torneo.h)
ofrece en el menú actual operaciones base de administración:
Además, el esquema de base de datos incluye tablas de soporte para fases, equipos y estadísticas de torneo.
El módulo de gestión financiera (financiamiento.c / financiamiento.h) permite llevar un control detallado de los ingresos y gastos del
equipo de fútbol:
Este módulo proporciona herramientas esenciales para la administración financiera del equipo, permitiendo un seguimiento preciso de los recursos económicos.
El módulo de récords y rankings (records_rankings.c / records_rankings.h) ofrece un análisis exhaustivo de los logros históricos y
estadísticas destacadas del sistema:
Este módulo utiliza consultas SQL avanzadas para extraer insights valiosos sobre el rendimiento histórico y ayudar en la toma de decisiones estratégicas.
El módulo de estadísticas por año (estadisticas_anio.c / estadisticas_anio.h) proporciona análisis longitudinal del rendimiento futbolístico
agrupado por año:
Este módulo es fundamental para el análisis de largo plazo y la planificación estratégica del equipo.
El módulo de estadísticas por mes (estadisticas_mes.c / estadisticas_mes.h) ofrece un desglose detallado del rendimiento mensual:
Este módulo permite un seguimiento granular del progreso del equipo y la identificación de tendencias a corto plazo.
El módulo de meta-análisis (estadisticas_meta.c / estadisticas_meta.h) realiza análisis estadísticos avanzados para profundizar en el
rendimiento futbolístico:
Este módulo proporciona insights profundos para la optimización del rendimiento y la toma de decisiones tácticas.
El proyecto incluye un módulo de utilidades (utils.c / utils.h) que proporciona funciones comunes para:
input_int() y
input_string() para leer enteros y cadenas del
usuario con validación básica.
get_datetime() para obtener fecha y hora actual en
formato legible, y get_timestamp() para nombres de
archivos.
clear_screen(), print_header(), y
pause_console() para mejorar la experiencia del
usuario en terminal.
existe_id() para verificar si un ID existe en una
tabla de la base de datos.
confirmar() para
solicitar confirmación del usuario antes de operaciones
destructivas.
get_export_dir() para determinar y crear el
directorio de exportación (Documents en Windows,
./exportaciones en 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:
menu.c (invocado desde main.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).
menu_camisetas(),
menu_canchas(), menu_partidos(),
menu_logros(), menu_lesiones(),
menu_financiamiento()).
MenuItem definida en menu.h para
asociar opciones numéricas con textos descriptivos y funciones a
ejecutar.
ejecutar_menu() maneja la lógica de mostrar
opciones, leer selección del usuario y ejecutar la acción
correspondiente.
Además de las exportaciones individuales, el módulo
export_all.c / export_all.h proporciona la función
exportar_todo() que:
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:
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:
Nota: Los PDF se generan a partir de los .md (por
ejemplo con Pandoc) si necesitas regenerarlos.
snake_case para variables y funciones
UPPER_CASE para macros y constantes
// 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
.h y
.c para el nuevo módulo
.c
db.c si requiere nuevas
tablas
menu.cMiFutbolC.cbp (CodeBlocks)Makefile,
Instalador-Linux.sh, install.ps1)
Si deseas contribuir:
git checkout -b feature/nueva-funcionalidad)
git commit -am 'Agregar nueva funcionalidad')
git push origin feature/nueva-funcionalidad)
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.
Referencial y sujeto a cambios:
db.c.