🏆 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 ligneAucune vente valide.remplace la ligneProduit le plus rentable.