Vehicule2000 est une application de gestion de parc automobile pour une collectivitée locale. Elle permet de gérer les véhicules, les agents et les affectations de véhicules aux agents.
Le projet a été réalisé dans le cadre du cours de programation orienté objet en Java avec JavaFX pour l'interface graphique.
- Gestion des véhicules (ajout, modification, supression)
- Gestion des agents par service
- Gestion des affectations de véhicules aux agents
- Visualisation de l'agenda des affectations
- Authentification des administrateurs
- Changement de mot de passe
- Java (JDK 11 ou supérieur)
- JavaFX pour l'interface graphique
- SQL Server pour la base de données
- JDBC pour la connexion à la base de donnée
- Architecture en couches (DAL, BLL, BO, IHM)
Le projet suit une architecture en couche classique :
BO (Business Objects) : Contient les classes métiers (Agent, Vehicle, Assignment, Service, Administrator, VehicleStatus)
DAL (Data Access Layer) : Couche d'accés aux données avec les interfaces DAO et les implémentations JDBC dans le package jdbc
BLL (Business Logic Layer) : Contient la logique métier avec les managers (AgentManager, VehicleManager, AssignmentManager, etc)
IHM (Interface Homme-Machine) : Interface graphique avec JavaFX, contient les controllers et les fichiers FXML
Utils : Classes utilitaires pour les exceptions, le hashage de mot de passe, la gestion de session, etc.
Avant de lancer l'application, vous devez avoir :
- Java JDK 11 ou plus récent installé
- JavaFX SDK (normalement inclu avec le JDK)
- Un serveur SQL Server accessible
- Un IDE Java (IntelliJ IDEA, Eclipse, NetBeans, etc.)
- Le driver JDBC pour SQL Server (Microsoft JDBC Driver for SQL Server)
Executez le script SQL qui se trouve dans le dossier SQL :
SQL/create-tables-and-seed.sql
Ce script créé les tables suivantes :
- VehicleStatus (statuts des véhicules)
- Service (services de la collectivité)
- Agent (agents de la collectivité)
- Vehicle (véhicules de la flotte)
- Assignment (affectations de véhicules)
- Administrator (administrateurs du systeme)
Le script insère aussi des données de base (services, statuts de véhicule).
Si vous voulez avoir des données de test pour tester l'application, executez aussi :
SQL/seed-fake-data.sql
Ce fichier ajoute des agents, véhicules et affectations fictives.
Modifiez le fichier de configuration situé dans :
src/dal/jdbc/db-settings.properties
Renseignez les paramètres de votre base SQL Server :
url=jdbc:sqlserver://;serverName=VOTRE_SERVEUR;port=VOTRE_PORT;databaseName=master;encrypt=true;trustServerCertificate=true
username=VOTRE_USERNAME
password=VOTRE_PASSWORD
IMPORTANT : Ne commitez jamais vos identifiants réels sur Git ! Ajoutez ce fichier au .gitignore.
- Ouvrez IntelliJ IDEA
- Selectionnez "Open" et choisissez le dossier du projet
- Allez dans File > Project Structure
- Dans Project Settings > Project, selectionnez le SDK Java 11 ou supérieur
- Allez dans File > Project Structure > Libraries
- Cliquez sur "+" pour ajouter une librairie
- Selectionnez "From Maven..."
- Cherchez : com.microsoft.sqlserver:mssql-jdbc:12.4.0.jre11
- Cliquez sur OK pour télécharger et ajouter la librairie
Si JavaFX n'est pas inclu dans votre JDK :
- Téléchargez JavaFX SDK depuis https://openjfx.io/
- Ajoutez les librairies JavaFX au projet (File > Project Structure > Libraries)
- Ajoutez les options VM dans la configuration de lancement :
--module-path "CHEMIN_VERS_JAVAFX/lib" --add-modules javafx.controls,javafx.fxml
- Ouvrez la classe MainApp.java qui se trouve dans src/ihm/MainApp.java
- Faites un clic droit sur la classe et selectionnez "Run MainApp.main()"
- L'application devrait se lancer et afficher l'interface de connexion
Par defaut, si vous avez executé le script seed-fake-data.sql, vous pouvez vous connecter avec :
- Email : admin@vehicule2000.fr
- Mot de passe : admin123
Si vous n'avez pas de compte administrateur, vous devez en créer un directement dans la base de données. Le mot de passe doit être hashé en SHA-256.
Une fois connecté, vous accedez au menu principal avec plusieurs sections :
Permet de consulter la liste des véhicules, ajouter de nouveaux véhicules, modifier ou suprimer des véhicules existants. Chaque véhicule a un statut (Disponible, En maintenance, Hors service).
Permet de gérer les agents de la collectivité. Chaque agent appartient à un service (Urbanisme, Activités culturelles, Police municipale, etc).
Permet d'affecter un véhicule à un agent pour une période donnée. L'application vérifie automatiquement que le véhicule et l'agent sont disponibles pendant cette période.
Visualisation graphique des affectations sous forme de calendrier. Permet de voir rapidement qui utilise quel véhicule et quand.
Affiche l'historique des affectations pour chaque véhicule.
src/
├── bo/ # Business Objects
│ ├── Agent.java
│ ├── Vehicle.java
│ ├── Assignment.java
│ ├── Service.java
│ ├── Administrator.java
│ └── VehicleStatus.java
│
├── dal/ # Data Access Layer
│ ├── AgentDAO.java # Interfaces DAO
│ ├── VehicleDAO.java
│ ├── AssignmentDAO.java
│ ├── ServiceDAO.java
│ ├── AdministratorDAO.java
│ ├── DaoFactory.java
│ └── jdbc/ # Implémentations JDBC
│ ├── AgentDAOjdbc.java
│ ├── VehicleDAOjdbc.java
│ ├── AssignmentDAOjdbc.java
│ ├── ServiceDAOjdbc.java
│ ├── AdministratorDAOjdbc.java
│ ├── SQLServer.java
│ ├── JdbcTools.java
│ └── db-settings.properties
│
├── bll/ # Business Logic Layer
│ ├── AgentManager.java
│ ├── VehicleManager.java
│ ├── AssignmentManager.java
│ ├── ServiceManager.java
│ └── AdministratorManager.java
│
├── ihm/ # Interface Homme-Machine
│ ├── MainApp.java
│ ├── controllers/ # Controleurs JavaFX
│ │ ├── ConnexionController.java
│ │ ├── VehiclesController.java
│ │ ├── AgentsController.java
│ │ ├── AssignmentsController.java
│ │ ├── AgendaController.java
│ │ └── ...
│ └── fxml/ # Fichiers FXML
│ ├── Connexion.fxml
│ ├── Vehicles.fxml
│ ├── Agents.fxml
│ ├── Assignments.fxml
│ └── ...
│
└── utils/ # Classes utilitaires
├── DAOException.java
├── Session.java
├── Hash.java
├── DatePickerFormatter.java
└── bll/
└── exceptions/
├── ManagerException.java
├── EntityNotFoundException.java
└── MandatoryElementsMissedException.java
Ce projet est à but éducatif uniquement.
Projet réalisé en lien avec notre école 3iL Ingénieurs.