Skip to content

LoicVanelMABO/EventManager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

đŸŽ« Plateforme de RĂ©servation de Tickets d'ÉvĂ©nements

📌 Vue d'Ensemble

Plateforme de Réservation de Tickets est une application Java/JavaFX moderne et intuitive permettant aux utilisateurs de découvrir, réserver et gérer des tickets pour différents types d'événements (concerts, spectacles, conférences).

L'application suit une architecture en couches professionnelle (MVC) avec séparation claire des responsabilités, gestion robuste des erreurs, et sécurité optimale.

Version : 1.0.0 Plateforme : Java 17+, JavaFX 21, MySQL 8 Licence : MIT


🎯 Objectif du Projet

Créer une plateforme complÚte de gestion de réservation de tickets qui :

  • Offre une expĂ©rience utilisateur intuitive et fluide
  • Facilite la crĂ©ation et la gestion d'Ă©vĂ©nements pour les organisateurs
  • Permet aux clients de dĂ©couvrir, rĂ©server et gĂ©rer leurs rĂ©servations
  • Utilise les meilleures pratiques de programmation Java/JavaFX
  • IntĂšgre les concepts fondamentaux de POO (hĂ©ritage, polymorphisme, interfaces, exceptions personnalisĂ©es)

✹ FonctionnalitĂ©s Principales

đŸ‘„ Gestion des Utilisateurs

Connexion

  • ✅ Authentification par email et mot de passe
  • ✅ Deux rĂŽles : Client et Organisateur
  • ✅ Gestion de session sĂ©curisĂ©e
  • ✅ Messages d'erreur clairs en cas d'Ă©chec

Inscription

  • ✅ CrĂ©ation de compte avec validation
  • ✅ Saisie : nom, email, mot de passe, type de compte
  • ✅ VĂ©rification unicitĂ© de l'email
  • ✅ Stockage sĂ©curisĂ© du mot de passe (BCrypt)

🎭 Gestion des ÉvĂ©nements

Pour les Clients

  • 📋 Liste d'Ă©vĂ©nements triĂ©e
  • 🔍 Filtrage par type (Concert, Spectacle, ConfĂ©rence)
  • đŸ™ïž Recherche par lieu
  • 📊 DĂ©tails complets : date, lieu, catĂ©gories de places, prix
  • ⭐ DisponibilitĂ© en temps rĂ©el des places

Pour les Organisateurs

  • ➕ CrĂ©ation d'Ă©vĂ©nements avec configuration complĂšte
    • Nom, date/heure, lieu
    • 3 catĂ©gories de places (Standard, VIP, Premium)
    • Prix personnalisĂ© par catĂ©gorie
    • Nombre de places disponibles
  • 📊 Dashboard avec statistiques :
    • Total de tickets vendus par catĂ©gorie
    • Taux de remplissage en pourcentage
    • Chiffre d'affaires gĂ©nĂ©rĂ©
    • Nombre de rĂ©servations confirmĂ©es
  • đŸ‘ïž Vue d'ensemble de tous les Ă©vĂ©nements créés

đŸŽ« Gestion des RĂ©servations

Réservation

  • ✅ SĂ©lection de catĂ©gories de places (Standard, VIP, Premium)
  • ✅ Choix de la quantitĂ© de tickets
  • ✅ RĂ©servation multi-catĂ©gories dans une mĂȘme commande
  • ✅ VĂ©rification automatique de la disponibilitĂ©
  • ✅ Exception PlacesInsuffisantesException si stock insuffisant

Historique

  • 📜 Consultation des rĂ©servations passĂ©es
  • 📝 DĂ©tails : Ă©vĂ©nement, date, nombre de tickets, montant payĂ©
  • đŸŽ« Statut de chaque rĂ©servation (ConfirmĂ©e, En attente, AnnulĂ©e)

Annulation

  • ❌ Annulation possible jusqu'Ă  24h avant l'Ă©vĂ©nement
  • ⏰ Exception AnnulationTardiveException si trop tard
  • 🔄 LibĂ©ration automatique des places disponibles
  • 💰 Gestion des remboursements: Indiquer au client qu'il sera remboursĂ© sous 24h

💳 Gestion des Paiements

Processus de Paiement

  • 🔒 Saisie sĂ©curisĂ©e des informations de paiement (Carte bancaire ou Stripe)
  • 💬 Validation des donnĂ©es de carte bancaire
  • ✅ Confirmation immĂ©diate du paiement
  • 📧 GĂ©nĂ©ration de confirmation avec dĂ©tails

Gestion des Erreurs

  • ❌ Exception PaiementInvalideException pour donnĂ©es incorrectes
  • đŸš« Messages d'erreur clairs et dĂ©taillĂ©s
  • 🔄 PossibilitĂ© de rĂ©essayer le paiement

đŸ–„ïž Interface Utilisateur (JavaFX)

Écran de Connexion

  • 🔐 Formulaire login/register
  • đŸ’Ÿ Gestion de session
  • 🎹 Design moderne

Notifications

  • ✅ Messages de succĂšs (rĂ©servation validĂ©e, paiement ok)
  • ⚠ Avertissements (places limitĂ©es, dĂ©lai court)
  • ❌ Erreurs dĂ©taillĂ©es et constructives

đŸ—ïž Architecture Technique

5 Couches d'Architecture

┌────────────────────────────────────────────┐
│  COUCHE PRÉSENTATION (JavaFX)              │
│  FXML | Controllers | CSS Stylesheets      │
└────────────────────────────────────────────┘
                    ↓
┌────────────────────────────────────────────┐
│  COUCHE MÉTIER (Business Logic)            │
│  Services | Validations | Calculations     │
└────────────────────────────────────────────┘
                    ↓
┌────────────────────────────────────────────┐
│  COUCHE DONNÉES (Data Access Objects)      │
│  DAOs | DatabaseConnection | Mappers       │
└────────────────────────────────────────────┘
                    ↓
┌────────────────────────────────────────────┐
│  BASE DE DONNÉES (MySQL)                   │
│  6 Tables | 3 Vues | Indexes               │
└────────────────────────────────────────────┘

Packages Java

com.plateforme/
├── model/              → EntitĂ©s mĂ©tier
├── dao/                → AccĂšs base de donnĂ©es
├── service/            → Logique mĂ©tier
├── controller/         → Gestion UI
├── util/               → Utilitaires
├── exception/          → Exceptions personnalisĂ©es
└── config/             → Configuration

Base de Données

  • 6 Tables : Utilisateurs, ÉvĂ©nements, RĂ©servations, ReservationDetails, Paiements, CategoriesPlaces
  • 3 Vues : ReservationComplete, DisponibilitĂ©sEvenements, StatistiquesOrganisateur
  • Indexes : OptimisĂ©s pour les requĂȘtes frĂ©quentes
  • Constraints : IntĂ©gritĂ© rĂ©fĂ©rentielle garantie

🔧 Concepts Techniques IntĂ©grĂ©s

✅ Programmation OrientĂ©e Objet

Héritage & Classes Abstraites

abstract class Utilisateur {
    // Propriétés communes
}
class Client extends Utilisateur { }
class Organisateur extends Utilisateur { }

abstract class Evenement {
    // Propriétés communes
}
class Concert extends Evenement { }
class Spectacle extends Evenement { }
class Conference extends Evenement { }

Polymorphisme

  • Manipulation des Ă©vĂ©nements via rĂ©fĂ©rences Evenement
  • Manipulation des utilisateurs via rĂ©fĂ©rences Utilisateur
  • Traitement unifiĂ© malgrĂ© les diffĂ©rences

Collections

  • Listes d'Ă©vĂ©nements
  • Historique de rĂ©servations
  • Tri et filtrage dynamiques

✅ Exceptions PersonnalisĂ©es

  • PlacesInsuffisantesException → Stock insuffisant
  • AnnulationTardiveException → Annulation < 24h
  • PaiementInvalideException → DonnĂ©es invalides
  • BusinessException → Erreurs mĂ©tier gĂ©nĂ©rales
  • DatabaseException → Erreurs base de donnĂ©es

✅ Patterns de Conception

  • MVC : SĂ©paration Model/View/Controller
  • DAO : Abstraction accĂšs donnĂ©es
  • Singleton : Connexion unique Ă  la BD
  • Service Locator : Injection dĂ©pendances
  • Observer : Property Binding JavaFX

✅ Bonnes Pratiques

  • Logging complet avec SLF4J
  • Gestion sĂ©curisĂ©e des mots de passe (BCrypt)
  • PreparedStatements (prĂ©vention injections SQL)
  • Transactions ACID
  • Validation en front ET back

📋 PrĂ©requis

Logiciels Requis

  • Java : JDK 17 ou supĂ©rieur
  • MySQL : Version 8.0+
  • Maven : Version 3.6+
  • IntelliJ IDEA : Community ou Professional

Dépendances

JavaFX 21.0.2
MySQL Connector/J 8.0.33
BCrypt 0.4
SLF4J 2.0.7
Logback 1.4.11
JUnit 4.13.2

🚀 Installation & Configuration

1. Cloner le Projet

git clone https://github.com/AsKing07/EventManager
cd EventManager

2. Configurer la Base de Données

# Créer la base de données
mysql -u root -p < database/schema.sql

3. Configurer la Connexion BD

Éditer src/main/resources/config/database.properties :

db.url=jdbc:mysql://localhost:3306/EventManager
db.username=root
db.password=votre_password

4. Compiler le Projet

mvn clean install

5. Lancer l'Application

mvn javafx:run

Ou depuis IntelliJ IDEA :

  • Clic droit sur Main.java
  • Run 'Main'

📖 Utilisation

Pour les Clients

1. S'inscrire

  • Cliquer sur "S'inscrire"
  • Remplir : Nom, Email, Mot de passe, SĂ©lectionner "Client"
  • CrĂ©er le compte

2. Parcourir les ÉvĂ©nements

  • Consulter la liste complĂšte triĂ©e par date
  • Utiliser les filtres (type, lieu)
  • Cliquer sur un Ă©vĂ©nement pour plus de dĂ©tails

3. Réserver des Tickets

  • SĂ©lectionner une catĂ©gorie de place (Standard, VIP, Premium)
  • Choisir le nombre de tickets
  • Cliquer "Payer"
  • ProcĂ©der au paiement

4. Consulter l'Historique

  • AccĂ©der Ă  "Mes RĂ©servations"
  • Voir les dĂ©tails de chaque rĂ©servation
  • ProcĂ©der au paiement si pas encore rĂ©alisĂ©
  • Annuler si dĂ©lai permet (> 24h)

Pour les Organisateurs

1. CrĂ©er un ÉvĂ©nement

  • Remplir le formulaire :
    • Nom, Date/Heure, Lieu
    • Nombre de places par catĂ©gorie
    • Prix par catĂ©gorie
    • DĂ©tails spĂ©cifiques
  • Soumettre la crĂ©ation

2. Consulter les Statistiques

  • Dashboard affichant :
    • Revenue totale
    • Taux de remplissage
    • Nombre de tickets vendus par catĂ©gorie
    • Graphiques et indicateurs

3. Gérer les Réservations

  • Voir toutes les rĂ©servations pour vos Ă©vĂ©nements
  • Exporter les donnĂ©es en CSV

📊 Exemple de ScĂ©nario Complet

Réservation d'un Concert

1. Alice (Client) se connecte
   → Email: alice@email.com
   → Mot de passe: ****

2. Alice browse les événements
   → Filtre: Type = CONCERT
   → Voit: "Coldplay - 15/12/2025 - Accor Arena Paris"

3. Alice clique sur l'événement
   → DĂ©tails: 
     ‱ Standard: 65€ (500 places)
     ‱ VIP: 120€ (200 places)
     ‱ Premium: 200€ (50 places)

4. Alice réserve
   → 2x Standard + 1x VIP
   → Total: 130€ + 120€ = 250€

5. Alice paiement
   → Saisit infos carte
   → Confirmation: ✅ Paiement rĂ©ussi!

6. Alice consulte historique
   → Nouvelle rĂ©servation: "Coldplay - 15/12/2025"
   → Statut: ConfirmĂ©e
   → 3 tickets | 250€

→ Bob (Organisateur) voit dans ses statistiques
   ‱ Coldplay: +250€ revenue
   ‱ Taux remplissage augmente

📈 Statistiques du Projet

Métrique Nombre
Classes Java 35+
Lignes de Code 5000+
Fichiers FXML 12+
Tables BD 6
Vues BD 3
Tests JUnit En développement
Patterns Utilisés 6
Exceptions Personnalisées 6

🔐 SĂ©curitĂ©

Implémentations de Sécurité

✅ Hashage des Mots de Passe

  • Algorithme : BCrypt (12 rounds)
  • RĂ©sistant aux attaques par force brute
  • Chaque mot de passe unique

✅ PrĂ©vention d'Injections SQL

  • Utilisation exclusive de PreparedStatements
  • Pas de concatĂ©nation de requĂȘtes
  • Validation des entrĂ©es

✅ Gestion de Session

  • Session centralisĂ©e (SessionManager)
  • Expiration automatique
  • Logout sĂ©curisĂ©

✅ Validations

  • Format email validĂ©
  • Mot de passe minimum 6 caractĂšres
  • QuantitĂ©s positives
  • Dates cohĂ©rentes

✅ Logging Audit

  • Actions critiques enregistrĂ©es
  • Tentatives de connexion Ă©chouĂ©es
  • Transactions importantes

🐛 Gestion des Erreurs

Exceptions Capturées et Traitées

Exception Cas Résolution
PlacesInsuffisantesException Stock insuffisant ❌ Rejet + Message clairs
AnnulationTardiveException < 24h avant Ă©vĂ©nement ❌ Annulation refusĂ©e
PaiementInvalideException DonnĂ©es carte incorrectes 🔄 RĂ©essayer
UtilisateurNotFoundException Email inexistant 🔄 VĂ©rifier email
DatabaseException Erreur connexion BD ⚠ Message technique + Support

Messages Utilisateur

  • ✅ Clairs et constructifs
  • ✅ En français
  • ✅ Indiquent les actions correctrices
  • ✅ AffichĂ©s via dialogues modales

đŸ€ Contribution

Les contributions sont les bienvenues ! Pour contribuer :

  1. Fork le projet
  2. Créer une branche pour votre feature
    git checkout -b feature/ma-fonctionnalite
  3. Commit vos changements
    git commit -m "Ajout de ma fonctionnalité"
  4. Push vers la branche
    git push origin feature/ma-fonctionnalite
  5. Créer une Pull Request

📝 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


📞 Support

Ressources Utiles

Signaler un Bug

Créer une issue GitHub avec :

  • Description du bug
  • Étapes pour reproduire
  • Environnement (OS, Java version, etc.)
  • Logs d'erreur si possible

🎓 Apprentissage

Ce projet permet d'apprendre et de pratiquer :

Concepts Java Avancés

  • ✅ Architecture en couches
  • ✅ Patterns de conception
  • ✅ Gestion d'erreurs robuste
  • ✅ Transactions BD

JavaFX Moderne

  • ✅ FXML et scĂšne builders
  • ✅ Property binding
  • ✅ ContrĂŽleurs et donnĂ©es
  • ✅ CSS styling

Bases de Données

  • ✅ Design relationnel
  • ✅ Queries optimisĂ©es
  • ✅ Indexes et performances
  • ✅ Contraintes d'intĂ©gritĂ©

Bonnes Pratiques

  • ✅ Code clean
  • ✅ Logging et monitoring
  • ✅ SĂ©curitĂ© applicative
  • ✅ Tests unitaires

🚀 Roadmap Future

Version 1.1

  • SystĂšme de notifications par email
  • Export en PDF des tickets
  • Code QR pour validation Ă  l'entrĂ©e
  • Application mobile complĂ©mentaire

Version 1.2

  • SystĂšme de wishlist d'Ă©vĂ©nements
  • Recommandations personnalisĂ©es
  • Paiement par multiple cartes
  • API REST pour intĂ©grations tierces

Version 2.0

  • Plateforme cloud
  • Support multilingue
  • Analytics avancĂ©es
  • SystĂšme de notation et avis

🎯 Points Forts du Projet

✹ Architecture Professionnelle - 5 couches bien sĂ©parĂ©es ✹ Code Production-Ready - Tests et logging complets ✹ SĂ©curitĂ© Optimale - Toutes les vulnĂ©rabilitĂ©s couverte ✹ UX Intuitive - Interface moderne et responsive ✹ Extensible - Facile d'ajouter de nouvelles fonctionnalitĂ©s ✹ Bien DocumentĂ© - Documentation exhaustive incluse ✹ Performant - Indexes BD, connection pooling ✹ Maintenable - Code clean et bien organisĂ©


📄 Changelog

v1.0.0 (2025-11-20)

  • ✅ Release initiale
  • ✅ FonctionnalitĂ©s complĂštes implĂ©mentĂ©es
  • ✅ Tests et documentation complets
  • ✅ PrĂȘt pour production

đŸ‘šâ€đŸ’Œ Auteurs

Charbel SONON - Loic - Yvonne Développeurs Full-Stack Email: charbelsnn@gmail.com GitHub: https://github.com/AsKing07 Site web: https://charbelsnn.com/

Bon dĂ©veloppement et bonne utilisation de la plateforme! 🚀


Derniùre mise à jour : 20 novembre 2025 Version : 1.0.0 État : Stable ✅

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.8%
  • CSS 0.2%