Collection de type List for calcul total montant

Résolu/Fermé
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - Modifié par tortue60 le 13/04/2013 à 17:55
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 13 avril 2013 à 20:26
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

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
13 avril 2013 à 18:12
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
}
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
Modifié par tortue60 le 13/04/2013 à 18:18
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
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
13 avril 2013 à 18:27
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
0
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 13/04/2013 à 18:30
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; 
        } 
    }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
13 avril 2013 à 18:33
Ce que j'ai fait c bon?
0
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
13 avril 2013 à 18:37
Ç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 += ...
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
13 avril 2013 à 18:40
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;
}
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
13 avril 2013 à 20:26
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
0