Ticket de caisse en JAVA

cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012 - 19 juil. 2005 à 04:05
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012 - 26 juil. 2005 à 18:39
bonjour

je voudrais creer un probleme qui calcul le prix total de la commande d'un client
mais c'est la grosse galère...

j'ai dejà fait un bout de code que voici :


package com.creperie.test;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;



public class Carte extends Frame implements ActionListener
{


    Frame f = new Frame("creperie");



    Label entree = new Label("entree");
    Checkbox salade = new Checkbox("salade");
    Checkbox melon = new Checkbox("melon");


    Label cs = new Label("crepe salee");
    Checkbox jf = new Checkbox("jambon fromage");
    Checkbox complete = new Checkbox("complete");


    Label csu = new Label("crepe sucree");
    Checkbox su = new Checkbox("crepe au sucre");
    Checkbox choc = new Checkbox("crepe au chocolat");


    Label boi = new Label("boisson");
    Checkbox coca = new Checkbox("coca cola");
    Checkbox cidre = new Checkbox("cidre");


    Button bout = new Button("ticket");



    Button quitter = new Button ("quitter l'application");

 public Carte() {
quitter.addActionListener (new ListenerQuitter());
        bout.addActionListener(this);


        add(entree);
        add(salade);
        add(melon);
        add(cs);
        add(jf);
        add(complete);
        add(csu);
        add(su);
        add(choc);
        add(boi);
        add(coca);
        add(cidre);
        add(bout);
        add(quitter);
        setSize(250, 250);
        setLayout(new FlowLayout());//sinon n'affiche qu'un seul element ds la fenetre
        setVisible(true);
        setBackground(Color.yellow);
        setForeground(Color.black);


    }
    


    public void actionPerformed (ActionEvent e)
            
    {
        
        if (e.getSource()== bout)
        {


        }
    }
    class ListenerQuitter implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }


    public static void main(String[] args) {
        Frame f = new Carte();
    }
}




donc je ne sais pas comment faire, pour l'attribution d'un prix pour chaque entrée, plat, dessert, boisson, et donc pour le calcul du prix total de la commande (en fonction des elements cochés)

si quelqu'un pourrait m'aider...

merci beaucoup !!

11 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 7
19 juil. 2005 à 14:14
alors je te conseille de faire une hashmap dans ta classe Carte qui associe les chekbox au prix style

Hashtable associationProduitsPrix = new HashMap();
//10 euros la salade
associationProduitsPrix.put(salade, new BigInteger(10));
... tu fais ca pour tous tes produits

ensuite tu fais

bout.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Interger total = new Integer(0);
Enumeration enum = associationProduitsPrix.keys();
while(enum.hasMoreElement()){
Checkbox check = (Checkbox) enum.nextElement();
if(check.getState()){
BigInteger prix = (Integer) associationProduitsPrix.get(check);
total = total.add(prix);
}

}
}

et a chaque appel, sur ticket tu a ton total
voila
++ Toinou
0
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
19 juil. 2005 à 21:31
huumm ok
mais ou est ce que je mets le prix de tous ces elements?
dois je creer d'autre classe comme une classe "entree", "boisson" etc...
0
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
19 juil. 2005 à 22:47
aaaaa le 10 dans BigInteger, correspond au 10? de la salade peut etre
mais, j'ai une erreur au niveau :
associationProduitsPrix.put(salade, new BigInteger(10));
après le put
erreur :
> attendu (à ce niveau là)

que veut dire cela???
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 7
20 juil. 2005 à 09:25
c est une erreur a la compilation ou à l exécution??
tu peux donner le message exact??

Toinou
0

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

Posez votre question
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
20 juil. 2005 à 18:51
alors je te donne tout le code, comme ca je te montre où son les erreurs


package com.creperie.test;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;



public class Carte extends Frame implements ActionListener
{


    Frame f = new Frame("creperie");



    Label entree = new Label("entree");
    Checkbox salade = new Checkbox("salade");
    Checkbox melon = new Checkbox("melon");


    Label cs = new Label("crepe salee");
    Checkbox jf = new Checkbox("jambon fromage");
    Checkbox complete = new Checkbox("complete");


    Label csu = new Label("crepe sucree");
    Checkbox su = new Checkbox("crepe au sucre");
    Checkbox choc = new Checkbox("crepe au chocolat");


    Label boi = new Label("boisson");
    Checkbox coca = new Checkbox("coca cola");
    Checkbox cidre = new Checkbox("cidre");


    Button bout = new Button("ticket");



    Button quitter = new Button("quitter l'application");
    Hashtable associationProduitsPrix = new HashMap();
//10 euros la salade
    associationProduitsPrix.put(salade, new BigInteger(10));  ==>  1


    associationProduitsPrix.put(melon, new BigInteger(10));  ==> 2



    public Carte() {


        //salade.addItemListener();//il faut utiliser la méthode addItemListener() avec un Checkbox


        quitter.addActionListener(new ListenerQuitter());
        bout.addActionListener(this);


        add(entree);
        add(salade);
        add(melon);
        add(cs);
        add(jf);
        add(complete);
        add(csu);
        add(su);
        add(choc);
        add(boi);
        add(coca);
        add(cidre);
        add(bout);
        add(quitter);
        setSize(250, 250);
        setLayout(new FlowLayout()); //sinon n'affiche qu'un seul element ds la fenetre
        setVisible(true);
        setBackground(Color.yellow);
        setForeground(Color.black);


    }



    bout.addActionListener(new ActionListener() {    ==> 3
        public void actionPerformed(ActionEvent e) {
            Interger total = new Integer(0);
            Enumeration enu = associationProduitsPrix.keys();
            while (enu.hasMoreElement()) {
                Checkbox check = (Checkbox) enu.nextElement();
                if (check.getState()) {
                    BigInteger prix = (Integer) associationProduitsPrix.get(
                            check);
                    total = total.add(prix);
                }


            }
        }  ==> 4
    



        class ListenerQuitter implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        }



            public static void main(String[] args) {
                Frame f = new Carte();
            }
        }
    


       



les erreurs :

1 ==> "Carte.java" : attendu(e) en ligne 35, colonne 32 (apres compilation)

2 ==> "Carte.java" : attendu(e) en ligne 37, colonne 32

3 ==> "Carte.java" : attendu(e) en ligne 72, colonne 27

4 ==> "Carte.java" : ';' attendu(e) en ligne 85, colonne 10

voila !
merci!
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 7
21 juil. 2005 à 09:34
bon alors j t ai corrigé tes erreurs de compilation.
tu pourra voir comment on initalise de maniere plus propre ta frame, t avais qques erreurs de conception aussi (pkoi tu hérite de frame et que t en encapsule une autre??)
bref voila, la prochaine fois ne fais pas une copier coller tel quel de ce que je t ai mis, j t ai indiqué des pistes pdt que j etais sur msn, google et que je bossai -> logique que ca compile pas!!

package com.creperie.test;


import java.awt.Button;


import java.awt.Checkbox;


import java.awt.Color;


import java.awt.FlowLayout;


import java.awt.Frame;


import java.awt.Label;


import java.awt.event.ActionEvent;


import java.awt.event.ActionListener;


import java.math.BigInteger;


import java.util.Enumeration;


import java.util.Hashtable;


public
class Carte
extends Frame


{


Label entree =
new Label(
"entree");


Checkbox salade =
new Checkbox(
"salade");


Checkbox melon =
new Checkbox(
"melon");


Label cs =
new Label(
"crepe salee");


Checkbox jf =
new Checkbox(
"jambon fromage");


Checkbox complete =
new Checkbox(
"complete");


Label csu =
new Label(
"crepe sucree");


Checkbox su =
new Checkbox(
"crepe au sucre");


Checkbox choc =
new Checkbox(
"crepe au chocolat");


Label boi =
new Label(
"boisson");


Checkbox coca =
new Checkbox(
"coca cola");


Checkbox cidre =
new Checkbox(
"cidre");


Button bout =
new Button(
"ticket");


Button quitter =
new Button(
"quitter l'application");


Hashtable associationProduitsPrix;



public Carte()


{



super(
"creperie");


initFrame();


addBouton();


initPrix();


initBoutonsListeners();


}



private
void initFrame()


{


setSize(250, 250);


setLayout(
new FlowLayout());
//sinon n'affiche qu'un seul element ds la fenetre


setVisible(
true);


setBackground(Color.yellow);


setForeground(Color.black);


}



private
void addBouton()


{


add(entree);


add(salade);


add(melon);


add(cs);


add(jf);


add(complete);


add(csu);


add(su);


add(choc);


add(boi);


add(coca);


add(cidre);


add(bout);


add(quitter);


}



private
void initPrix()


{


associationProduitsPrix =
new Hashtable();


associationProduitsPrix.put(salade,
new BigInteger(
"10"));


associationProduitsPrix.put(melon,
new BigInteger(
"5"));


}



private
void initBoutonsListeners()


{


quitter.addActionListener(
new ListenerQuitter());


bout.addActionListener(
new ActionListener()


{



public
void actionPerformed(ActionEvent e)


{


BigInteger total =
new BigInteger(
"0");


Enumeration enu = associationProduitsPrix.keys();



while (enu.hasMoreElements())


{


Checkbox check = (Checkbox)enu.nextElement();



if (check.getState())


{


BigInteger prix = (BigInteger)associationProduitsPrix.get(check);


total = total.add(prix);


}


}


}


});


}



class ListenerQuitter
implements ActionListener


{



public
void actionPerformed(ActionEvent e)


{


System.exit(0);


}


}



public
static
void main(String[] args)


{


Frame f =
new Carte();


}


}

Toinou
0
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
22 juil. 2005 à 00:12
huuummm
est ce normal qui ne se passe rien quand je souhaite avoir le prix total d'un melon et d'une salade??
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 7
22 juil. 2005 à 11:07
ben oui, a toi de mettre le total qque part,
dans un JTextField par exemple
moi j t ai donnee le code qui met dans un BigInteger le total mais apres j sais pas ce que tu veux en faire!!!

Toinou
0
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
23 juil. 2005 à 01:20
re !!
bon j'ai mis le resultat dans un JOptionPane mais il me donne pas le prix total, il me donne juste le prix du melon puis celui de la salade mais pas d'addition des 2 prix


if (check.getState())


{


BigInteger prix = (BigInteger)associationProduitsPrix.get(check);


total = total.add(prix);
JOptionPane.showMessageDialog (null, "Total : " + total + " \u20ac");



merci encore de me dire ce que je devrait faire, un indice ou bien est ce normal que ca ne marche pas comme je voudrais?
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
26 juil. 2005 à 17:34
ton JOptionPane.showMessageDialog (null, "Total : " + total + " \u20ac"); tu devrais plutot le faire à la sortie de la boucle while
0
cs_oceane751 Messages postés 151 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
26 juil. 2005 à 18:39
oui oui mais j'avais mis un reponse disant que j'avais mis le JOptionPane en dehors du while mais le message da du mal passé :(
revoici le bout de code :

if (check.getState())

{

BigInteger prix = (BigInteger)associationProduitsPrix.get(check);

total = total.add(prix);
}
  }
  JOptionPane.showMessageDialog(null, "Total : " + total+ " \u20ac");


}

});

}




voilà
merci pour votre aide !!
0