Application Associations Étudiantes
Système d'appariement intelligent pour séjours linguistiques
🎯 Aperçu du projet
Cette application graphique développée en Java avec JavaFX réalise des associations optimales d'étudiants pour des séjours linguistiques dans le cadre de ma formation en BUT Informatique. Elle utilise une logique basée sur la théorie des graphes et un système de pondération pour associer des hôtes et des invités selon différents critères de compatibilité (centres d'intérêt, langues, préférences, etc.). Ce projet m'a permis d'approfondir mes connaissances en algorithmique avancée et en structures de données complexes.
J'ai été responsable de la conception et de l'implémentation complète de l'algorithme d'appariement basé sur les graphes bipartis, du développement de l'interface graphique avec JavaFX permettant la visualisation des associations, ainsi que de la gestion de l'import/export des données des participants. J'ai également optimisé l'algorithme pour gérer efficacement de grands volumes de données et garantir des résultats pertinents.
📖 Contexte
Dans le cadre d'échanges linguistiques internationaux, il est crucial de créer des binômes compatibles pour garantir une expérience enrichissante. Ce projet automatise ce processus complexe en analysant les profils des participants et en proposant les meilleures associations possibles.
✨ Fonctionnalités principales
- Algorithme d'appariement intelligent Utilisation de graphes pondérés pour calculer les meilleures associations basées sur des critères multiples
- Système de scoring Attribution de poids selon les affinités (hobbies, régime alimentaire, allergie aux animaux, etc.)
- Interface graphique intuitive Visualisation claire des profils et des associations suggérées via JavaFX
- Gestion des profils Import/export de données, modification des critères de compatibilité
- Validation des contraintes Respect des contraintes strictes (allergies, régimes alimentaires, etc.)
- Export des résultats Génération de rapports détaillés avec les scores de compatibilité
🛠️ Technologies utilisées
Java
Langage principal pour la logique métier et les algorithmes
JavaFX
Framework pour l'interface graphique moderne et responsive
Théorie des graphes
Modélisation des relations avec graphes pondérés et algorithmes d'appariement
Algorithmes d'optimisation
Implémentation d'algorithmes pour maximiser la compatibilité globale
⚙️ Fonctionnement de l'algorithme
Construction du graphe
Création d'un graphe biparti avec les hôtes d'un côté et les invités de l'autre
Calcul des poids
Attribution d'un score de compatibilité pour chaque paire possible basé sur les critères
Filtrage des contraintes
Élimination des associations incompatibles (allergies, régimes, etc.)
Optimisation
Recherche de l'appariement maximisant le score global de compatibilité
🚀 Défis techniques
Complexité algorithmique
Optimisation de l'algorithme d'appariement pour gérer efficacement un grand nombre de participants tout en garantissant des résultats optimaux.
Pondération des critères
Définition d'un système de poids équilibré qui prend en compte l'importance relative de chaque critère (certains étant prioritaires sur d'autres).
Interface utilisateur
Conception d'une interface intuitive permettant de visualiser clairement les associations et leurs scores de compatibilité.
📚 Compétences développées
- Maîtrise de la théorie des graphes et des algorithmes d'appariement
- Conception d'algorithmes d'optimisation complexes
- Développement d'interfaces graphiques professionnelles avec JavaFX
- Gestion de données structurées et validation de contraintes
- Architecture logicielle modulaire et maintenable
- Tests unitaires et validation de l'exactitude des résultats
💻 Explorez le code
Le code source complet est disponible sur GitHub avec la documentation de l'algorithme. Découvrez l'implémentation des graphes et du système de pondération !
Voir le repository GitHub →