Application Associations Étudiantes

Système d'appariement intelligent pour séjours linguistiques

Juin 2025 Java Graphes Algorithmes JavaFX

🎯 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

1

Construction du graphe

Création d'un graphe biparti avec les hôtes d'un côté et les invités de l'autre

2

Calcul des poids

Attribution d'un score de compatibilité pour chaque paire possible basé sur les critères

3

Filtrage des contraintes

Élimination des associations incompatibles (allergies, régimes, etc.)

4

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 →