Aller au contenu principal

🏆 Solution — Fichiers CSV : Rapport de ventes

using System;
using System.IO;

class Program
{
static void Main()
{
string cheminVentes = @"C:\EspaceLabo\ventes.csv";
string cheminRapport = @"C:\EspaceLabo\rapport-ventes.txt";

if (!File.Exists(cheminVentes))
{
Console.WriteLine("Fichier ventes.csv introuvable.");
return;
}

int ventesValides = 0;
int lignesRejetees = 0;
int revenuTotal = 0;
int articlesVetements = 0;
int articlesSouvenirs = 0;
int articlesDecoration = 0;
int revenuMaximum = 0;
string produitPlusRentable = "";

using (StreamReader lecteur = new StreamReader(cheminVentes))
{
lecteur.ReadLine(); // Ignorer l'en-tĂŞte.

while (!lecteur.EndOfStream)
{
string ligne = lecteur.ReadLine();
string[] parties = ligne.Split(',');
int quantite;
int prix;

bool categorieValide = parties.Length == 4 &&
(parties[1] == "Vêtements" || parties[1] == "Souvenirs" || parties[1] == "Décoration");

if (parties.Length != 4 || parties[0] == "" || !categorieValide ||
!int.TryParse(parties[2], out quantite) || quantite <= 0 ||
!int.TryParse(parties[3], out prix) || prix <= 0)
{
lignesRejetees++;
}
else
{
int revenu = quantite * prix;
ventesValides++;
revenuTotal = revenuTotal + revenu;

if (parties[1] == "VĂŞtements")
{
articlesVetements = articlesVetements + quantite;
}
else if (parties[1] == "Souvenirs")
{
articlesSouvenirs = articlesSouvenirs + quantite;
}
else
{
articlesDecoration = articlesDecoration + quantite;
}

if (revenu > revenuMaximum)
{
revenuMaximum = revenu;
produitPlusRentable = parties[0];
}
}
}
}

using (StreamWriter rapport = new StreamWriter(cheminRapport))
{
rapport.WriteLine("Ventes valides : " + ventesValides);
rapport.WriteLine("Lignes rejetées : " + lignesRejetees);
rapport.WriteLine("Revenu total : " + revenuTotal.ToString("F2") + " $");

if (ventesValides > 0)
{
rapport.WriteLine("Produit le plus rentable : " + produitPlusRentable + " (" + revenuMaximum.ToString("F2") + " $)");
}
else
{
rapport.WriteLine("Aucune vente valide.");
}

rapport.WriteLine("VĂŞtements : " + articlesVetements + " articles");
rapport.WriteLine("Souvenirs : " + articlesSouvenirs + " articles");
rapport.WriteLine("Décoration : " + articlesDecoration + " articles");
}

Console.WriteLine("Ventes valides : " + ventesValides);
Console.WriteLine("Lignes rejetées : " + lignesRejetees);
Console.WriteLine("Revenu total : " + revenuTotal.ToString("F2") + " $");

if (ventesValides == 0)
{
Console.WriteLine("Aucune vente valide.");
}
else
{
Console.WriteLine("Produit le plus rentable : " + produitPlusRentable + " (" + revenuMaximum.ToString("F2") + " $)");
}

Console.WriteLine("VĂŞtements : " + articlesVetements + " articles");
Console.WriteLine("Souvenirs : " + articlesSouvenirs + " articles");
Console.WriteLine("Décoration : " + articlesDecoration + " articles");
Console.WriteLine("Rapport : " + cheminRapport);
}
}

Le rapport contient les mêmes lignes de résultats que la console, sauf la ligne Rapport. Lorsqu'aucune vente valide n'est trouvée, la ligne Aucune vente valide. remplace la ligne Produit le plus rentable.