NUMERIQUE ET SCIENCES INFORMATIQUES

Niveau : Terminale générale, enseignement de spécialité NSI

 

D
É
C
O
N
N
E
C
T
É

FoodTruck de Pizzas

DM à rendre avant le

1 - Introduction

Le propriétaire d’un FoodTruck de Pizza, désire gérer ses commandes et éditer la facture pour ses clients.

Il souhaite également offrir la pizza la moins chère de la commande lorsque le client a accumulé au moins 10 points de fidélité, correspondant à l’achat de 10 pizzas.

Dans le cadre de ce projet, vous êtes chargés de programmer la méthode constructeur, d’analyser la méthode Commande, de compléter la méthode Pizza_la_moins_chere, et programmer partiellement la classe Client permettant de réaliser le programme en langage python et proposer des solutions.

2 - Descriptif de la classe


Nom de la classe :
    Client
  • carte : la clé du dictionnaire représente le type et la valeur le prix : {"Reine":8.0,"3fromages":10,"merguez":8.5,"Mexicaine":9,"Atlantique":9.5,"Indienne":10.5}

Attributs :
  • nom : une chaine de caractères, le nom du client
  • commande : une liste vide à l’instanciation de la classe Client
  • heure : l’heure de la livraison, une chaine vide à l’instanciation de la classe Client
  • prix : une liste vide à l’instanciation de la classe Client, elle contiendra plus tard, le prix unitaire des pizzas commandées.
  • points : un entier contenant les points fidélités = 0 lors de l’instanciation
  • prete : un booléen initialisé à False lors de l’instanciation. Représente l'état de la commande

Méthodes :
  • Commande prenant en paramètre : lui-même, une liste de 2-uplets et l’heure de la livraison
  • Pizza_la_moins_chère prenant en paramètres lui-même et une liste contenant les prix des pizzas commandées. Elle devra retourner l’indice de la pizza la moins chère de la liste.
  • Ajoute_points prenant en paramètre lui-même et un entier : le nombre de pizzas commandées.

3 - Programmation

Q1. Ecrire la méthode constructeur permettant d’instancier un Client portant votre prénom en remplaçant la variable
votre_prenom et l'argument par votre prenom



Q2. La méthode Commande prenant en paramètre lui-même, une liste de 2-uplets, une chaine de caractères et l’heure de réception :

    a) Placer une instruction print dans cette méthode permettant de voir le contenu de l'attribut prix, relever son contenu, son type et expliquez ce qu'elle contient.

    b) Placez un # devant l'instruction print pour qu'elle ne s'exécutera plus

Q3. Appeler la méthode Mystere puis proposer pour cette méthode un autre nom que Mystere en rapport avec son rôle et un "docstring"

Q4. Ajoutez la méthode Ajoute_points prenant en paramètre lui-même et un entier : le nombre de pizzas achetées et retourne le nouveau nombre de points acquis.

Q5. Complétez la méthode Pizza_la_moins_chere qui prend en paramètre lui-même et retournera un entier correspondant l’indice de la pizza la moins chère de l’attribut prix.

    L’attribut prix contient la liste des prix des pizzas commandées
    Par exemple self.prix= [10,8.0,10.5,9.5].
    Avec l’attribut prix de l’exemple précédent la méthode retourne 1 : l’indice de la pizza à 8.0 Euros, qui est la moins chère de la liste.

Q6. Ajouter la méthode Statut qui prend en paramètre lui-même et renvoie une chaine de caractères "Commande prête" si l'attribut prete est vrai sinon renvoie la chaine de caractères "Préparation en cours"

Q7. Ajouter la méthode Commande_prete prenant en paramètre lui-même, elle permettra faire passer l'attribut prete à True et ne retournera rien

Q8. Ajouter la méthode Modifier_commande prenant en paramètre lui-même, la liste de commande modifiée et l'heure. On ne peut modifier la commande que s'il existe déjà une commande et qu'elle n'est pas encore prête. Elle renverra une chaine de caractères " a modifié sa commande" ou " ne peut pas modifier sa commande" ou " n'a aucune commande en cours selon le cas

Q9. Ajouter à la méthode spéciale __str__ les fonctionnalités suivantes :

    S'il y a une commande en cours et qu'elle n'est pas prête alors lister la commande du client

    Sinon Afficher la facture, mettre à jour les points fidélité et retrancher à au total la pizza offerte si le solde de points est supérieur ou égal à 10. Pensez alors à retrancher les 10 points fidélité. Utiliser une chaine de caractères vide et ajoutez le texte au fur et a mesure "\n" permet le retour à la ligne.

    Un attribut pt contiendra le prix total à payé afin d'être accessible dans les autres méthodes

    Exemples: si Bob a une commande en cours et n'est pas encore prête : print(Bob) devra retourner le message suivant :

    Commande de Bob pour 19h00
    1 Reine
    2 merguez

    Si la commande est prête, il faudra éditer la facture : print(Bob) devra retourner le texte suivant :

    Facture de Bob
    vous avez 4 points fidélité :
    6 3fromages 60 €
    2 merguez 17.0 €
    8 pizzas pour un total = 77.0 €
    La pizza merguez est offerte : 8.5 €
    Reste à payer 68.5 €
    nouveau solde de points fidélité : 2 

Q10. Ajouter une méthode Paye prenant en paramètre lui-même et un flottant : le montant payé par le client

    Elle renverra le montant à rendre au client et réinitialise l'attribut commande à une liste vide et l'attribut prete à faux

    Exemple : print(Bob.Paye(70))

    Bob a payé 70 € à rendre 1.5 €

Q11. Ajouter à la classe Client un attribut Client.recettes initialisé à 0. On ajoutera à cette variable la somme que tous les clients auront payée.

Q12. Ajouter un attribut Historique : une liste vide à l'instanciation qui contiendra les sommes payées par chaque client

Q13. Ajouter au programme principal les lignes de code permettant de tester les méthodes, afficher la recette et l'historique d'un client

Fond : Texte : Tables : Thème Python: