Collection de type List for calcul total montant

Résolu/Fermé
Signaler
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
Bonjour,

Je suis entrain de faire une application Windows en C# ou je gère des employe (nom, montant des ventes, salaire...)
L'applicatio consite à enregistrer des salariés et à afficher le montant total des ventes TTC réalisées par les employés.

Mon problème est que je suis bloqué pour le calcul: on me dit une erreur pour mon for: L'opérateur + ne peut pas être appliqué aux opérandes de type float et libResHum.Employe


voici mon code de l'application

List<Employe> lesEmployes;

public SaisieEmploye()
{
lesEmployes = new List<Employe>();
InitializeComponent();
}

private void btnSalarie_Click(object sender, EventArgs e)
{
int age;
int montantSalaire;
int montantVentes;
string libErrer = "";
Employe unEmploye;

int.TryParse(txtAge.Text, out age);
if (age < Employe.AgeMin)
{
libErrer = "Le salarié doit avoir au minimum 16 ans";
}
int.TryParse(txtSalaire.Text, out montantSalaire);
int.TryParse(txtMontantVentes.Text, out montantVentes);

if (libErrer == "")
{
unEmploye = new Employe(txtNom.Text, age, montantSalaire, montantVentes);
lesEmployes.Add(unEmploye);
MessageBox.Show("Le salarié a été créé", "Message d'Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
MessageBox.Show(libErrer, "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

private void btnMontantTotal_Click(object sender, EventArgs e)
{
float montantTotalTTCVentes;

for (int ind = 0; ind < lesEmployes.Count; ind ++)
{
montantTotalTTCVentes = montantTotalTTCVentes + lesEmployes[ind];
}
MessageBox.Show("Le montant total des ventes TTC est de " + montantTotalTTCVentes + " euros", "Message d'Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

Merci de votre aide

8 réponses

Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
53
Bonjour,
Vous utilisez lesEmployes[ind] mais à quel "membre" du type Employe vous voulez accéder pour récupérer la valeur du montant total des ventes ttc ?
Pouvez remplacer la boucle par un foreach truc dans le genre :
foreach(Employe em in LesEmployes){
    montantTotalTTCVentes += em.montantVentes; // en admettant que montantVentes soit le membre qui contient la valeur recherchée
}
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013

Je veu calculer le montant total des ventes de tout les employés
J'ai une bibliothèque de classe qui gère les employés avec une classe Employe et une classe TVA
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013

C bon j'ai trouvé:
private void btnMontantTotal_Click(object sender, EventArgs e)
{
float montantTotalTTCVentes = 0;

foreach (Employe em in lesEmployes)
{
montantTotalTTCVentes = montantTotalTTCVentes + em.MontantVentesHT * (1+TVA.TauxNormal/100);
}
MessageBox.Show("Le montant total des ventes TTC est de " + montantTotalTTCVentes + " euros", "Message d'Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Merci de ton aide
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
53
Oui en faisant la somme des ventes de chaque employé ?
 
    public partial class Form1 : Form 
    { 
        List<Employe> LesEmployes; 
        public Form1() 
        { 
            LesEmployes = new List<Employe>(); 
            InitializeComponent(); 
        } 

        private void button1_Click(object sender, EventArgs e) 
        { 
            // ajoute dans la liste 
            for (int i = 0; i < 10; i++) 
            { 
                Employe emp = new Employe(i); 
                LesEmployes.Add(emp); 
            } 
            // calcul la somme 
            double total = 0; 
            foreach (Employe emp in LesEmployes) 
            { 
                total += emp.val; 
            } 
            textBox1.Text = total.ToString(); 
        } 
    } 
    class Employe 
    { 
        private double x; 
        public double val 
        { 
            get { return x; } 
        } 
        public Employe(double xx) 
        { 
            x = xx; 
        } 
    }
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013

Ce que j'ai fait c bon?
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
53
Ça en a tout l'air, petite info en plus
Vous pouvez utiliser l'opérateur + devant le signe d'affectation = ce qui permet d'additionner directement à la valeur déjà contenu dans la variable
montantTotalTTCVentes = montantTotalTTCVentes + ...
peut se faire ainsi :
montantTotalTTCVentes += ...
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013

Oui je sais mais je préfère sa

Sinon j'ai une autre question: Dans mon constructeur de ma classe Employe, j'ai une condition qui dit que si le salaire saisis et supérieur au salaireMax c'est le salaire max qui est attribué mais quand je débug je ne vois pas sa. Est ce que je doit rajouter un truc dans mon programme principal?

Voici mon constructeur:

public Employe(string unNom, int unAge, int unSalaireAnnuel, int unMontantVentesHT)
{
nom = unNom;
age = unAge;
salaireAnnuel = unSalaireAnnuel;
montantVentesHT = unMontantVentesHT;

if (unSalaireAnnuel > salaireMax)
{
unSalaireAnnuel = salaireMax;
}
}

static Employe()
{
ageMin = 16;
salaireMax = 150000;
}
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013

J'ai trouvé pour mon constructeur

public Employe(string unNom, int unAge, int unSalaireAnnuel, int unMontantVentesHT)
{
nom = unNom;
age = unAge;
salaireAnnuel = unSalaireAnnuel;
montantVentesHT = unMontantVentesHT;

if (salaireAnnuel > salaireMax)
{
salaireAnnuel = salaireMax;
}
}

C'est pas unSalaireAnnuel mais salaireAnnuel