d4:tp03

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
d4:tp03 [2025/10/01 18:00] – [Travail préalable - Modélisation de la base de données] dthevenotd4:tp03 [2025/10/01 18:12] (Version actuelle) – [Tester avec un programme client] dthevenot
Ligne 14: Ligne 14:
   - Un passager propose **une course en partance d’un lieu et à destination d’un autre lieu**. Pour des raisons d’affichage encore, **les lieux sont stockés sous la forme de couples longitude/latitude.** La **course** intervient à **une date et une heure donnée**. Le logiciel se charge de fournir une estimation de la date et de l’heure d’arrivée.   - Un passager propose **une course en partance d’un lieu et à destination d’un autre lieu**. Pour des raisons d’affichage encore, **les lieux sont stockés sous la forme de couples longitude/latitude.** La **course** intervient à **une date et une heure donnée**. Le logiciel se charge de fournir une estimation de la date et de l’heure d’arrivée.
   - Les chauffeurs peuvent consulter les courses qui sont dans leur périmètre d’intervention. Si la course est dans ce périmètre, ils peuvent proposer leurs services à titre de candidats. Ils peuvent alors consulter les coordonnées du passager et le contacter. Il appartient au passager de choisir le chauffeur qui réalisera sa course. Pour l’accompagner dans sa décision, grâce à la plateforme, le passager peut consulter le profil des chauffeurs et son tarif. La plateforme fournie, pour chaque chauffeur une estimation du **tarif pratiqué** ;   - Les chauffeurs peuvent consulter les courses qui sont dans leur périmètre d’intervention. Si la course est dans ce périmètre, ils peuvent proposer leurs services à titre de candidats. Ils peuvent alors consulter les coordonnées du passager et le contacter. Il appartient au passager de choisir le chauffeur qui réalisera sa course. Pour l’accompagner dans sa décision, grâce à la plateforme, le passager peut consulter le profil des chauffeurs et son tarif. La plateforme fournie, pour chaque chauffeur une estimation du **tarif pratiqué** ;
-  - Dans la première version, le tarif du chauffeur est **tarif forfaitaire (montant fixe) assorti d’un tarif kilométrique** ;+  - Dans la première version, le tarif du chauffeur est un **tarif forfaitaire (montant fixe) assorti d’un tarif kilométrique** ;
   - Pour chaque course, **la longueur du trajet est stockée**. Elle est arrondie au kilomètre le plus proche. Elle est obtenue grâce à l’API Google Maps. Cette longueur sert de base de calcul à l’estimation du tarif pratiqué par le chauffeur.   - Pour chaque course, **la longueur du trajet est stockée**. Elle est arrondie au kilomètre le plus proche. Elle est obtenue grâce à l’API Google Maps. Cette longueur sert de base de calcul à l’estimation du tarif pratiqué par le chauffeur.
   - Par ailleurs, TOPCHRONO, société soucieuse de respecter ses partenaires, chauffeurs et passages, prélève une **commission** d’apporteur d’affaire sur chacune des candidatures des chauffeurs. La commission est un montant fixe fonction de la longueur du trajet. Le montant est fixé au moyen d’un **barème progressif** (exemple : 5€ si le trajet a une longueur comprise entre 0km et 49km, 9€ s’il est compris entre 50km et 99km, etc.).     - Par ailleurs, TOPCHRONO, société soucieuse de respecter ses partenaires, chauffeurs et passages, prélève une **commission** d’apporteur d’affaire sur chacune des candidatures des chauffeurs. La commission est un montant fixe fonction de la longueur du trajet. Le montant est fixé au moyen d’un **barème progressif** (exemple : 5€ si le trajet a une longueur comprise entre 0km et 49km, 9€ s’il est compris entre 50km et 99km, etc.).  
  
 +**Remarque sur le type d’une personne :** une personne est soit « Passager » (par défaut) soit « Inscription » pour une personne qui a fait une demande d’inscription pour devenir chauffeur sans être déjà passager. Elle devient « Chauffeur » si sa demande d'inscription a été acceptée. Un passager qui demande à devenir chauffeur est un « PassagerInscription ». Si sa demande d’inscription pour devenir chauffeur est acceptée elle devient « ChauffeurPassager».
 ===== Travail préalable - Modélisation de la base de données ===== ===== Travail préalable - Modélisation de la base de données =====
   - **45min maxi** : Modéliser la base de données sous forme d’un diagramme de classes(données et liens entre classes avec multiplicités).   - **45min maxi** : Modéliser la base de données sous forme d’un diagramme de classes(données et liens entre classes avec multiplicités).
Ligne 24: Ligne 25:
   - **20min maxi** : Ajouter un barème dégressif de tarif kilométrique pour préparer une future évolution : fixer un tarif kilométrique dégressif, à savoir diminuant (ou augmentant) en fonction de la longueur du trajet, rendre votre proposition qui ne sera pas implantée pour l'instant dans la base de données.   - **20min maxi** : Ajouter un barème dégressif de tarif kilométrique pour préparer une future évolution : fixer un tarif kilométrique dégressif, à savoir diminuant (ou augmentant) en fonction de la longueur du trajet, rendre votre proposition qui ne sera pas implantée pour l'instant dans la base de données.
 <bootnote>Implanter le script de création de la base de données fourni pour faire le travail suivant</bootnote> <bootnote>Implanter le script de création de la base de données fourni pour faire le travail suivant</bootnote>
 +
 +===== Fonctions stockées =====
 +==== Calcul de la commission ====
 +Implémenter la fonction stockée **tarifCommission(distance INT) AS DECIMAL** qui retourne la commission pratiquée en fonction de la longueur d’un trajet :
 +<code>
 +CREATE FUNCTION tarifCommission(distance INT) RETURNS DECIMAL DETERMINISTIC
 +BEGIN RETURN ( SELECT tarif FROM Commission WHERE distance >= min AND distance < max ) ; 
 +END$$</code>
 +
 +  - Remplir la table commission avec le début de barême indiqué.
 +  - Tester la function en l’appelant : SELECT tarifCommission(25);
 +  - Quel résultat obtenez-vous ? Est-ce normal ?
 +
 +==== Tarif d'un chauffeur ====
 +Implémenter la fonction stockée **tarifChauffeur(numChauffeur INT, distance INT) qui retourne le tarif*** pratiqué par un chauffeur en fonction de la longueur d’un trajet.
 +  - Présenter l’algorithme avant de coder
 +  - Programmer la fonction et la tester avec un jeu d'essais
 +***Remarque** : tarif d'un chauffeur =  partie fixe + partie variable selon la distance
 +
 +===== Procédures stockées =====
 +==== Lister les tarifs de tous les chauffeurs pour une distance donnée ====
 +Coder la procédure stockée **tarifChauffeurs(distance INT)**  qui affiche le tarif pratiqué par chaque chauffeur en fonction de la longueur d’un trajet.
 +  * Présenter l’algorithme avant de coder
 +  * Utiliser la fonction tarifChauffeur définie précédemment
 +
 +==== Validation d’une inscription chauffeur ====
 +Coder la procédure stockée **validerInscription(numChauffeur INT)** permettant de valider(accepter) l’inscription d’un chauffeur.
 +  * Présenter l’algorithme avant de coder
 +**Remarques :** 
 +  - on ne valide une inscription que s'il y a une inscription correspondant au n° du futur chauffeur  passé en paramètre.
 +  - on ne valide une inscription que si l'inscription n'a pas encore été validée(refus ou acceptation)
 +  - validation en trois temps : mise à jour du type de la personne correspondante + enregistrement du chauffeur + mise à jour du champ acceptationDate 
 +
 +
 +===== Tester avec un programme client =====
 +
 +En PHP(pdo) ou en Java(jdbc)
  • d4/tp03.1759334449.txt.gz
  • Dernière modification : 2025/10/01 18:00
  • de dthevenot