Page cover

Résolution de problème

Temps estimé : environ 4h (sans les parties optionnelles) si vous avez fait l'exercice sur l'inventaire de jeux

Contexte

Pendant la fin de session, comme vous avez beaucoup de temps libre (!) et un appartement à payer, vous décidez d'acheter et de vendre des voitures miniatures. Comme vous suivez un cours de programmation, vous voulez créer un programme qui vous permet de gérer votre inventaire afin de maximiser votre temps d'étude et vos profits.

Spécifications du programme

Votre programme doit :

  • Utiliser la structure de données utilisée dans inventaire.json

  • Extraire l'inventaire du fichier inventaire.json (voir code fourni) au début du programme

  • Permettre l'ajout d'une voiture à l'inventaire (ex. quand vous achetez une nouvelle voiture)

  • Permettre la vente d'une voiture et afficher le profit réalisé sur cette vente

Informations à conserver sur les voitures :

  • Un numéro unique (voir le format dans fichier .json)

  • Modèle

  • Couleur

  • Année

  • Prix d'achat (0 par défaut)

  • Prix de vente

  • Date d'achat

  • Date de vente

Instructions

  1. Séparer l'énoncé en fonctions (nom, responsabilités)

  2. Faire un organigramme du programme (les organigrammes sont à l'examen final) - vous pouvez le faire valider en classe

  3. Déterminer les structures de données à utiliser

  4. Définir les signatures des fonctions

  5. Écrire le pseudo-code et/ou faire un organigramme au besoin

  6. Transformer le pseudo-code en code

Exigences supplémentaires

  • Utiliser le module DateTime pour la manipulation des dates

  • Ajouter de la validation et de la gestion d'erreurs au programme

  • Écrire des tests pour au moins 1 fonction comprenant la vérification du fonctionnement normal et la vérification de la gestion d'erreurs

Pour aller plus loin (optionnel)

  • Quand une voiture est vendue, affichez depuis combien de jours elle était dans l’inventaire.

  • Ajouter une fonctionnalité de recherche selon [marque, modèle, couleur, prix, vendu ou non, etc] et qui affiche toutes les voitures correspondant au critère désiré.

  • Afficher le profit total de toutes les ventes effectuées

  • Avant de quitter, mettre à jour l'inventaire dans le fichier inventaire.json

Code fourni

Inventaire sous forme de fichier

Créer un nouveau fichier inventaire.json dans l'IDE et y copier-coller le contenu

{
    "1G6K": {
        "modele": "Ford Econoline E350",
        "couleur": "turquoise",
        "annee": 2021,
	"prix_achat": 22,
        "prix_vente": 65,
        "date_achat": "2023-11-01",
        "date_vente": "2023-11-21"
    },
    "5GAK": {
        "modele": "Tesla Modèle Y",
        "couleur": "bleu ciel",
        "annee": 2020,
        "prix_achat": 0,
        "prix_vente": 17,
        "date_achat": "2022-11-01",
	"date_vente": ""
    },
    "19UU": {
        "modele": "Lotus Esprit",
        "couleur": "jaune néon",
        "annee": 2009,
        "prix_achat": 14,
        "prix_vente": 38,
        "date_achat": "2021-10-20",
        "date_vente": ""
    },
    "5NPE": {
        "modele": "Dodge Charger",
        "couleur": "orange brûlé",
        "annee": 1970,
	"prix_achat": 40,
        "prix_vente": 52,
        "date_achat": "2023-11-01",
        "date_vente": "2023-12-01"
    }
}

Lecture du JSON

with open("inventaire.json", "r", encoding="utf-8") as inventaire:
    return json.load(inventaire)

Écriture dans un fichier JSON (partie optionnelle)

with open("inventaire.json", "w", encoding="utf-8") as inventaire:
    json.dump(nouvel_inventaire, inventaire, ensure_ascii=False, indent=4)

Ressources

Note : L'exercice est tiré et adapté des exercices de Rémy Corriveau - merci !

Last updated