Sunrise Ski Session — Davos Parsenn

Sistema de venta de forfaits en C y Python con SQLite · Software Development
C
Python
SQLite
CLI
File I/O
El enunciado situaba el sistema en Davos Parsenn, bajo el supuesto de una sesión de esquí al amanecer — «Sunrise Ski Session»: venta de forfaits por tipo (diario, semanal, de temporada), control de acceso a las instalaciones y registro de transacciones con persistencia entre sesiones. Es un caso de estudio académico sobre una estación real. El sistema se construyó para el enunciado del módulo; no se desarrolló para la explotación de Davos Parsenn ni ha estado en uso allí. El requisito clave era implementar el sistema en dos lenguajes distintos — C para el módulo de bajo nivel y Python para la interfaz de usuario — demostrando la capacidad de trabajar con diferentes paradigmas y niveles de abstracción.

Módulo C — lógica de bajo nivel

Implementación de las estructuras de datos (struct) para tickets, clientes y transacciones. Gestión de memoria con malloc/free, lectura y escritura de archivos binarios para persistencia.

Base de datos SQLite

Diseño del esquema de base de datos para almacenar tickets, clientes y transacciones. Integración de SQLite3 en C mediante la API nativa para operaciones CRUD sin dependencias externas.

Interfaz Python

CLI interactiva en Python que consume el módulo C compilado. Menú de opciones para venta de tickets, consulta de disponibilidad, historial de transacciones y gestión de clientes.

Integración y pruebas

Validación del flujo completo: creación de ticket en Python → procesamiento en C → persistencia en SQLite → recuperación en siguiente sesión. Tests manuales de casos límite (stock agotado, fechas inválidas, IDs duplicados).
Este proyecto me obligó a pensar en la misma lógica de negocio desde dos perspectivas completamente distintas: la gestión manual de memoria en C y la abstracción de alto nivel de Python. Entender por qué Python existe se hace mucho más tangible cuando has implementado lo mismo en C primero. También fue mi primera integración real entre dos lenguajes en un mismo sistema, un patrón común en sistemas embebidos y aplicaciones de alto rendimiento.