Différences
Ci-dessous, les différences entre deux révisions de la page.
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 17:55] – [TOP CHRONO : Règles de gestion] dthevenot | d4: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/ | - 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/ | ||
- Les chauffeurs peuvent consulter les courses qui sont dans leur périmètre d’intervention. Si la course est dans ce périmètre, | - Les chauffeurs peuvent consulter les courses qui sont dans leur périmètre d’intervention. Si la course est dans ce périmètre, | ||
- | - 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, | - Par ailleurs, TOPCHRONO, société soucieuse de respecter ses partenaires, | ||
+ | **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' | ||
+ | ===== 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). | ||
+ | - Rendre votre modèle. | ||
+ | - Récupérer le script de création de la BD. | ||
+ | - **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' | ||
+ | < | ||
+ | ===== 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 : | ||
+ | < | ||
+ | CREATE FUNCTION tarifCommission(distance INT) RETURNS DECIMAL DETERMINISTIC | ||
+ | BEGIN RETURN ( SELECT tarif FROM Commission WHERE distance >= min AND distance < max ) ; | ||
+ | END$$</ | ||
+ | |||
+ | - 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' | ||
+ | ***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)** | ||
+ | * 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 | ||
+ | - on ne valide une inscription que si l' | ||
+ | - 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) |