Objectif : Comprendre les besoins de l'entreprise et concevoir la structure de la base de données.

Déroulement de la semaine :

Dès mon arrivée, j'ai eu une réunion avec Monsieur MORIN pour définir les objectifs du stage. L'entreprise souhaitait automatiser son processus de réservation qui se faisait encore manuellement par téléphone et email.

J'ai ensuite rencontré les différents acteurs de l'entreprise pour comprendre leur fonctionnement. Les chauffeurs m'ont expliqué leurs plages de disponibilité et leur besoin de connaître leurs missions à l'avance. Les assistants m'ont montré comment ils géraient les réservations sur Excel et les difficultés rencontrées comme les doublons ou les erreurs de saisie.

À partir de ces informations, j'ai commencé à concevoir la base de données. J'ai identifié les entités nécessaires : les utilisateurs, les véhicules, les chauffeurs, les réservations et les avis. J'ai réalisé un schéma relationnel pour visualiser les liens entre ces différentes tables.

Une fois le modèle validé par mon tuteur, j'ai créé la base de données avec MySQL en utilisant phpMyAdmin. J'ai écrit les scripts SQL pour créer les tables avec les bonnes clés primaires et étrangères.

Pour finir, j'ai inséré des données de test réalistes : quatre chauffeurs avec leurs disponibilités, quatre véhicules avec leurs caractéristiques, et un utilisateur administrateur.

Bilan de la semaine : La base de données est opérationnelle et prête à être utilisée par le site et l'application.

SEMAINE 2 : DÉVELOPPEMENT DU SITE INTERNET
Objectif : Créer le site de réservation pour les clients.

Déroulement de la semaine :

J'ai commencé par structurer le site avec une architecture claire. J'ai créé les fichiers principaux : page d'accueil, connexion, inscription, réservation, et historique des réservations.

J'ai développé le système d'authentification avec des sessions PHP pour maintenir la connexion des utilisateurs. Pour la sécurité, j'ai utilisé la fonction password_hash() pour hasher les mots de passe avec bcrypt. J'ai également mis en place une protection contre les attaques CSRF avec des tokens.

J'ai créé la page d'accueil qui affiche maintenant les véhicules directement depuis la base de données. Les informations ne sont plus écrites en dur dans le code mais récupérées dynamiquement.

Le cœur du projet était le système de réservation en trois étapes. La première étape permet au client de choisir la date, l'heure et les adresses de départ et d'arrivée. La deuxième étape affiche les chauffeurs disponibles pour ce créneau. Pour cela, j'ai développé une fonction SQL qui vérifie les disponibilités des chauffeurs en fonction du jour de la semaine et de l'heure demandée. La troisième étape affiche un récapitulatif et confirme la réservation.

J'ai également mis en place l'envoi automatique d'un email de confirmation après chaque réservation.

Bilan de la semaine : Le site est fonctionnel pour les clients. Ils peuvent s'inscrire, se connecter et effectuer des réservations.

SEMAINE 3 : DÉVELOPPEMENT DE L'ESPACE ADMINISTRATEUR
Objectif : Créer l'interface de gestion pour l'administration.

Déroulement de la semaine :

J'ai organisé l'espace administrateur dans un dossier séparé avec un accès sécurisé. Seuls les utilisateurs ayant le statut administrateur peuvent y accéder.

J'ai créé un tableau de bord qui affiche des statistiques clés : nombre d'utilisateurs, nombre de réservations, réservations en cours, note moyenne des chauffeurs.

J'ai développé un CRUD complet pour la gestion des véhicules. Les administrateurs peuvent ajouter un nouveau véhicule avec son nom, sa photo, sa description et son prix. Ils peuvent aussi modifier les informations existantes ou désactiver un véhicule.

Même chose pour les chauffeurs. J'ai créé une interface pour gérer leurs informations personnelles, leurs photos, leurs langues parlées et leurs années d'expérience. J'ai aussi ajouté la gestion des disponibilités : pour chaque chauffeur, on peut définir ses horaires de travail pour chaque jour de la semaine.

Pour les réservations, j'ai créé un tableau filtré qui permet de voir toutes les réservations, de les filtrer par statut et de les modifier si nécessaire.

Enfin, j'ai ajouté une page pour visualiser tous les avis laissés par les clients, avec la note moyenne et les commentaires.

Bilan de la semaine : L'interface d'administration est opérationnelle. Les gestionnaires peuvent désormais gérer l'ensemble des données sans passer par phpMyAdmin.

SEMAINE 4 : DÉVELOPPEMENT DE L'APPLICATION JAVA
Objectif : Créer une application de bureau pour la gestion.

Déroulement de la semaine :

J'ai choisi de développer une application Java avec Swing pour les interfaces graphiques. J'ai utilisé l'outil WindowBuilder dans Eclipse pour créer les fenêtres par glisser-déposer, ce qui m'a fait gagner beaucoup de temps.

J'ai organisé le projet en suivant l'architecture MVC (Modèle-Vue-Contrôleur). J'ai créé un package pour les modèles avec les classes User, Car, Chauffeur, Reservation, etc. Un package pour les DAO (Data Access Objects) qui contiennent les requêtes SQL. Un package pour les vues avec toutes les fenêtres. Et un package pour les contrôleurs qui gèrent les actions des utilisateurs.

J'ai créé une classe utilitaire pour gérer la connexion à la base de données avec JDBC. J'ai utilisé la bibliothèque JBCrypt pour le hashage des mots de passe, comme sur le site web.

J'ai conçu plusieurs fenêtres : une fenêtre de connexion, une fenêtre d'inscription, un tableau de bord principal, une fenêtre de réservation en trois étapes, et une interface d'administration complète.

La fonction la plus importante était la recherche des chauffeurs disponibles. J'ai reproduit la même logique que sur le site web : récupérer le jour de la semaine à partir de la date, puis faire une requête SQL qui joint la table des chauffeurs et la table des disponibilités.

J'ai également créé des cartes graphiques pour afficher les chauffeurs avec leurs photos, leurs badges d'expérience, leurs langues et leurs statistiques.

Bilan de la semaine : L'application Java est fonctionnelle et communique correctement avec la base de données. Elle propose les mêmes fonctionnalités que le site web.

SEMAINE 5 : TESTS, DÉPLOIEMENT ET DOCUMENTATION
Objectif : Tester l'ensemble, préparer le déploiement et documenter le projet.

Déroulement de la semaine :

J'ai organisé des sessions de test avec les différents acteurs de l'entreprise. Les chauffeurs ont testé l'application pour vérifier leurs disponibilités. Les assistants ont testé la gestion des réservations. Monsieur MORIN a testé le parcours client complet.

Suite aux tests, j'ai apporté plusieurs corrections. Le problème principal était le risque de double réservation pour un même créneau. J'ai ajouté une vérification avant chaque insertion pour s'assurer que le créneau était toujours libre.

J'ai aussi amélioré l'affichage des chauffeurs en ajoutant plus d'informations comme le nombre de trajets effectués et le taux de ponctualité.

Pour le déploiement du site, j'ai vérifié tous les fichiers et préparé un fichier de configuration avec les identifiants de la base de données. Le site a été testé sur WAMP en local.

Pour l'application Java, j'ai créé un fichier JAR exécutable et un script run.bat pour faciliter le lancement sous Windows.

J'ai rédigé deux guides utilisateur : un guide pour les clients expliquant comment réserver en ligne, et un guide pour les administrateurs expliquant comment gérer les véhicules, les chauffeurs et les réservations.

Lors de la réunion de bilan, Monsieur MORIN s'est dit très satisfait du travail accompli. Il a particulièrement apprécié la facilité d'utilisation du site et la puissance de l'application Java pour la gestion.

Bilan de la semaine : Le projet est terminé, testé et documenté. Il est prêt à être utilisé par l'entreprise.

COMPÉTENCES DÉVELOPPÉES
Compétences techniques :

En PHP, j'ai appris à utiliser PDO pour les connexions sécurisées à la base de données, à gérer les sessions utilisateurs et à protéger les formulaires avec des tokens CSRF.

En MySQL, j'ai conçu une base de données relationnelle avec des clés étrangères et des contraintes d'intégrité. J'ai écrit des requêtes complexes avec des jointures pour récupérer les chauffeurs disponibles.

En Java, j'ai découvert JDBC pour la connexion aux bases de données, Swing pour les interfaces graphiques et WindowBuilder pour la création rapide des fenêtres. J'ai utilisé JBCrypt pour le hashage des mots de passe.

En matière de sécurité, j'ai mis en place le hashage des mots de passe avec bcrypt, la protection contre les injections SQL avec les requêtes préparées, et la protection CSRF avec des tokens.

Compétences méthodologiques :

J'ai appris à analyser les besoins des utilisateurs en les interviewant directement. J'ai organisé mon travail pour respecter les délais des cinq semaines. J'ai testé mon application avec de vrais utilisateurs et pris en compte leurs retours. J'ai documenté mon travail pour faciliter la maintenance future.

Compétences relationnelles :

J'ai communiqué avec mon tuteur qui n'est pas un expert technique, en lui expliquant mes choix de développement. J'ai travaillé en équipe avec les chauffeurs et les assistants. J'ai formé les utilisateurs à l'utilisation des nouveaux outils.

CONCLUSION
Ce stage de cinq semaines chez First Car a été une expérience très enrichissante. Il m'a permis de mettre en pratique tout ce que j'ai appris pendant mes deux années de BTS SIO.

J'ai réalisé un projet complet, de l'analyse des besoins jusqu'au déploiement final. J'ai développé un site internet dynamique avec PHP et MySQL, et une application Java avec des interfaces graphiques Swing. J'ai conçu une base de données relationnelle et assuré la communication entre les différentes applications.

Ce stage m'a conforté dans mon choix de l'option SLAM et dans ma volonté de devenir développeur d'applications. Les compétences que j'ai acquises me seront très utiles pour la suite de mes études et pour ma vie professionnelle.

Je remercie encore une fois Monsieur MORIN et toute l'équipe de First Car pour leur accueil et leur confiance.

Rapport de stage rédigé par Lalienne Ethan
BTS SIO - Session 2025-2026