Aller au contenu principal

Défi — Fichiers CSV : Rapport de ventes

Avant de commencer

Tu peux commencer ce défi si…
  • tu sais lire et écrire des fichiers texte;
  • tu sais séparer les colonnes d'une ligne avec Split;
  • tu sais convertir, parcourir et additionner des données.

Si une notion te manque, révise les cours Lecture de fichiers texte, Écriture dans un fichier texte et Fichiers CSV.

Contexte

Une petite boutique conserve ses ventes dans le fichier CSV C:\EspaceLabo\ventes.csv. Chaque ligne contient le nom du produit, sa catégorie, la quantité vendue et son prix unitaire en dollars entiers. Le revenu d'une ligne est calculé ainsi : quantité × prix unitaire.

Fichier d'exemple

Produit,Catégorie,Quantité,Prix
T-shirt,Vêtements,3,18
Tasse,Souvenirs,2,12
Affiche,Décoration,5,7

Besoins

Crée une application console qui lit le fichier CSV et produit un rapport contenant :

  • le nombre de lignes de vente valides ;
  • le revenu total ;
  • le produit qui a généré le plus grand revenu ;
  • le nombre total d'articles vendus par catégorie, en additionnant les quantités ;
  • le nombre de lignes rejetées ;
  • un fichier texte C:\EspaceLabo\rapport-ventes.txt qui contient les mêmes résultats.

Valeurs à utiliser

Chaque ligne de vente valide contient quatre colonnes séparées par une virgule : un produit non vide, l'une des catégories exactes Vêtements, Souvenirs ou Décoration, une quantité entière supérieure à 0 et un prix unitaire entier supérieur à 0. La première ligne est toujours l'en-tête et n'est pas une vente.

Si plusieurs produits obtiennent le même revenu maximal, conserve le premier produit rencontré dans le fichier.

Notions à utiliser

  • lecture et écriture d'un fichier CSV;
  • séparation des colonnes avec Split(',');
  • conversion des quantités et des prix, boucles et accumulations.

Contraintes

  • Ignore la ligne d'en-tête lors de l'analyse.
  • Valide la quantité et le prix avant de les utiliser dans les calculs.
  • Gère les lignes incomplètes sans interrompre le programme.
  • Ignore les lignes invalides dans les calculs et ajoute-les au nombre de lignes rejetées.
  • Si ventes.csv est absent, affiche Fichier ventes.csv introuvable. et ne crée pas le rapport.
  • Si l'en-tête est présent mais qu'aucune vente valide n'est trouvée, affiche Aucune vente valide.; affiche les compteurs, le revenu et les trois catégories à 0, mais n'affiche pas de produit le plus rentable.
  • Utilise les notions de fichiers, de boucles, de conditions et de structures de données vues dans le cours.

Exemple de résultat

Données lues dans ventes.csv : les trois lignes de vente de l'exemple, après la ligne d'en-tête.

Ventes valides : 3
Lignes rejetées : 0
Revenu total : 113,00 $
Produit le plus rentable : T-shirt (54,00 $)
Vêtements : 3 articles
Souvenirs : 2 articles
Décoration : 5 articles
Rapport : C:\EspaceLabo\rapport-ventes.txt

Le fichier rapport-ventes.txt doit contenir exactement les sept premières lignes de résultats, de Ventes valides à Décoration. La ligne Rapport est affichée seulement dans la console.

Critères de réussite

  • Les données sont lues depuis le CSV et le rapport est exact.
  • Le fichier de sortie est clair et réutilisable.
  • Les lignes invalides sont toujours ignorées et comptées de la même manière.

Tests manuels et résultats attendus

Lignes de vente dans ventes.csvRésultat attendu
T-shirt,Vêtements,3,18
Tasse,Souvenirs,2,12
Affiche,Décoration,5,7
3 ventes valides; 0 ligne rejetée; revenu total de 113,00 $; T-shirt est le plus rentable avec 54,00 $; catégories : 3, 2 et 5 articles; le rapport contient ces résultats.
Les trois lignes ci-dessus, puis Stylo,Papeterie,abc,23 ventes valides; 1 ligne rejetée; revenu total de 113,00 $; les autres résultats et le rapport demeurent fondés sur les trois lignes valides.
ProduitA,Vêtements,2,10
ProduitB,Souvenirs,4,5
Les deux produits génèrent 20,00 $; Produit le plus rentable : ProduitA (20,00 $) est affiché parce qu'il apparaît en premier.
En-tête seulement0 vente valide; 0 ligne rejetée; revenu et trois catégories à 0; message Aucune vente valide.; aucune ligne Produit le plus rentable; le rapport contient les mêmes résultats.
Fichier ventes.csv absentFichier ventes.csv introuvable.; aucun calcul n'est affiché et rapport-ventes.txt n'est pas créé.