Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
d4:tp03 [2025/10/01 17:55] – créée dthevenot | d4:tp03 [2025/10/01 18:12] (Version actuelle) – [Tester avec un programme client] dthevenot | ||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
* Cohérence métier : mêmes règles de calcul pour toutes les applis (web, mobile). | * Cohérence métier : mêmes règles de calcul pour toutes les applis (web, mobile). | ||
- | ===== TOP CHRONO : Règles | + | ===== TOP CHRONO : Règles |
- La plateforme répertorie **les chauffeurs et les passagers**. Diverses informations sont conservées à leur sujet : adresse email, prénom, nom, « hash » du mot de passe, etc. Rien n’empêche a priori qu’un chauffeur en repos puisse être passager ! | - La plateforme répertorie **les chauffeurs et les passagers**. Diverses informations sont conservées à leur sujet : adresse email, prénom, nom, « hash » du mot de passe, etc. Rien n’empêche a priori qu’un chauffeur en repos puisse être passager ! | ||
- TOPCHRONO effectue une qualification de tous les chauffeurs et veut en garder une trace, à savoir qu’un chauffeur effectue **une inscription préalable**. Son inscription n’est « convertie » en un **compte chauffeur** qu’une fois **l’inscription validée**. Afin de pouvoir afficher le périmètre d’intervention d’un chauffeur, on souhaite pouvoir conserver son** adresse principale** sous la forme d’un couple longitude et latitude. Il appartient au chauffeur de choisir son **périmètre d’intervention**. On suppose que le périmètre d’intervention du chauffeur est un cercle. | - TOPCHRONO effectue une qualification de tous les chauffeurs et veut en garder une trace, à savoir qu’un chauffeur effectue **une inscription préalable**. Son inscription n’est « convertie » en un **compte chauffeur** qu’une fois **l’inscription validée**. Afin de pouvoir afficher le périmètre d’intervention d’un chauffeur, on souhaite pouvoir conserver son** adresse principale** sous la forme d’un couple longitude et latitude. Il appartient au chauffeur de choisir son **périmètre d’intervention**. On suppose que le périmètre d’intervention du chauffeur est un cercle. | ||
- 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) |