Auteur |
Message |
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mer 27 Juil 2005 - 17:16 |
|
bonjour
voilà j'ai delà un code qui est presque fini mais je me suis aperçu que pour modifier ou rajouter des elemnts il fallait aller dans le code, ce qui n'est pas tres pratique...
alors l'utilisation d'un fichier texte (et non dune base de données, inutile dans ce que je veux faire)serait beaucoup plus approprié...
mais voilà, je voudrais savoir si je suis obligé de refaire totalement mon code, car je suis debitante et j'ai un peu les boulles de devoir tout refaire car j'ai vraiment du mal
alors je vous donne mon code et dites moi ce que je dois faire :
Code: |
// penser à mettre l'opportunité de choisir plusieurs fois le meme element
package com.creperiee.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;
import javax.swing.JOptionPane;
import javax.swing.*;
import java.awt.Choice;
public class Cartee extends Frame
{
Label entree = new Label("entree");
Checkbox salade = new Checkbox("salade");
Choice maCombo = new Choice();
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 Cartee()
{
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(maCombo);
maCombo.add("1");
maCombo.add("2");
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);
}
}
JOptionPane.showMessageDialog(null, "Total : " + total+ " \u20ac");
}
});
}
class ListenerQuitter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
Frame f = new Cartee();
}
}
|
voilà merci pour votre aide car suis vraiment degoutée... |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
Yipyip
Modérateur
Sexe:
Messages: 1163
Localisation: Ici, là, pas loin ...
|
Posté le:
Mer 27 Juil 2005 - 19:41 |
|
deja, pour traiter un fichier texte tu aura besoin de
Code: |
#import java.io.*; //pour utiliser les fichiers texte
#import java.util.*; //pour traiter les chaine de caractère du fichier
#import java.lang.*; //je sais plus pour quoi là, mais c'est nécessaire
|
La je vais te filer le code pour extraire d'un fichier texte des elements. Ne le recopie pas tel quel mais adapte le à ton code
Code: |
public static double rechercher_total_compte (String fic, int place_prix, int nb_lignes, int ligne_debut) throws IOException
{
//variables
String ligne;
String montant_chaine; //le montant (prix trouvé sur la chaine)
FileReader fichier_lu = null; //le fichier n'a pas encore été lu
RandomAccessFile raf = new RandomAccessFile (fic, "r"); //le fichier est lu en lecture
double total = 0.0; //le total trouvé, à 0.0 au debut
int i=0; //pour trouver la place du nombre à ajouter
int j=0; //pour le nombre de ligne
// récupération des montants directement dans le fichier
try
{
while ( (ligne = raf.readLine() ) != null)
{
if ( (j < nb_lignes) && (j > ligne_debut) )
{
StringTokenizer st = new StringTokenizer(ligne, ";");
while (st.hasMoreTokens() )
{
montant_chaine = st.nextToken();
if (i == place_prix)
{
System.out.println ("Le montant de l'opération est : " + montant_chaine);
Double D = new Double(montant_chaine);
double d = D.doubleValue();
total = total + d;
}
i++;
}
i = 0;
}
j++;
}
}
catch (IOException e)
{
System.out.println ("Erreur : " + e);
System.out.println ("Impossible de lire le fichier en cours ....");
}
return total;
}
|
Cette méthode parcours un fichier texte ou les lignes sont de type de type. Elle cherche le montant des articles sur le fichier texte pour en faire un total.
Code: |
date_ajout;code_produit; libelle_produit;prix_produit
27-07-2005;cps001;crepe au sucre;3
27-07-2005;cpc002;crepe au chocolat;4
27-07-2005;cpc003; crepe chocolat coco;4.5
|
|
_________________
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mer 27 Juil 2005 - 20:44 |
|
deja merci pour ta reponse
puis te dire que il y a un petit probleme dans le code ;
il me dit en soulignant en rouge le "double" : class ou interface attendu
j'ai tenté de faire :
Code: |
public class rechercher_total_compte // jai repris ton code pour le tester
{
static double (String fic, int place_prix, int nb_lignes, int ligne_debut) throws IOException
{
....
|
mais à coté du "double" il y a aussi une erreur : "identificateur attendu " |
|
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mer 27 Juil 2005 - 21:11 |
|
Non tu n'est pas obligé de tout recommencer bien sur !!!
Si tu veux utiliser un fichier texte, ce que tu peux faire c'est ecrire une fonction qui vas lire ton fichier ligne par ligne, par exemple, la premiere ligne c'est le nom de l'article, la deuxieme pour le prix.
Le problème c'est pour les catégories des articles, ce que tu peu faire c'est par exemple decider que si le nom est entre crochet, c'est le nom d'une catégorie et dans ce cas les articles suivant apartiendront a cette catégorie.
Ou alors une autre solution un peu plus simple peut etre a programmer, c'est d'avoir deux fichiers, un pour les articles et un pour les catégories.
Dans celui des articles, tu a une ligne pour le nom, une pour le prix et une pour l'identifiant de ta catégorie.
Dans le deuxième fichier tu as un ligne pour le nom de la catégorie et une ligne pour l'identifiant.
Un petit exemple :
Le fichier catégorie :
Code: |
Boisson
1
Crepes
2
Plats
3 |
Le fichier produits
Code: |
Coca
1.12
1
Orangina
1.12
1
Crepes au chocolat
2.5
2
Salade composé
1.21
3 |
Apres ta fonction analyse ces fichiers et renvoie une table de hashage pour les produits et pour les catégorie, et tu te sert de cette table de hashage pour créer tes elements.
Code: |
Enumeration labelProduits = produits.keys();
while (labelProduits.hasMoreElements()) {
// Tu récupère le label du produit (la clé de la table de hashage
String unProduit = (String) labelProduits.nextElement();
// Tu rajoute le prix et le label dans ta table d'association de prix
associationProduitsPrix.put(unProduit, produits.get(unProduit));
// Tu crée et ajoute le label
add(new Checkbox(unProduit));
} |
Bon il faut faire des modifs a ce code pour qu'il fonctionne, mais ca peu pt etre t'aider.
Si tu as besion d'un code plus complet demande moi
Sinon comme tu debute je sais pas qu'elle editeur tu utilise pour java mais je te conseille Eclipse qui a le gros avantage de mettre en surbrillance toutes les erreurs de syntaxe et il te propose meme des aide pour les corriger.
Et aussi te decourage pas pour la programmation, tout le monde galere au debut, mais apres ca va tt seul
Voila @+ |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mer 27 Juil 2005 - 21:16 |
|
oceane751 a écrit: |
deja merci pour ta reponse
puis te dire que il y a un petit probleme dans le code ;
il me dit en soulignant en rouge le "double" : class ou interface attendu
j'ai tenté de faire :
Code: |
public class rechercher_total_compte // jai repris ton code pour le tester
{
static double (String fic, int place_prix, int nb_lignes, int ligne_debut) throws IOException
{
....
|
mais à coté du "double" il y a aussi une erreur : "identificateur attendu " |
C'est parce que tu as pas mis le nom de la fonction rechercher_total_compte apres static double :
Code: |
public static double rechercher_total_compte (String fic, int place_prix, int nb_lignes, int ligne_debut) throws IOException |
|
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mer 27 Juil 2005 - 21:21 |
|
merci c'est gentil..
voila un peu ce que j'ai mis dans mon fichier :
Code: |
libelle; prix
jambon fromage; 10
coca; 3
|
ya pas beaucoup de truc, mais pour l'instant pas besoin de plus
et seul le libelle et le prix m'interesse vraiment...
et sinon, j'ai un bout de code qui m'a l'air pas mal et dis moi ce que t'en pense :
Code: |
Properties props;
...
props.load( anInputStream ); // chargement du fichier
...
Checkbox jf = new Checkbox( props.getProperty( "CheckBox_JF" ));
|
enfin on m'a aidé et je pense que ca peux aussi me mettre sur la voie...
mais est ce que je suis obligé de creer un class pour la connection à mon fichier?
merci de comprendre que je suis debutante et que je galere un peu |
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mer 27 Juil 2005 - 21:36 |
|
j'ai fais un truc que voila :
Code: |
Properties props = new Properties();
FileInputStream in = new FileInputStream ("carte.txt");
props.load (in); ==> erreur
Label entree = new Label("entree");
Checkbox salade = new Checkbox(props.getProperty("libelle"));
|
mais il y a une erreur entre load et (in) ==W "identificateur attendu "
a quoi ceci est du?
|
|
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Jeu 28 Juil 2005 - 11:39 |
|
Ben c'est bizarre chez moi j'ai pas d'erreur...
Est ce que tu a bien importé FileInputStream et Properties ?
Est ce que tu gère bien les exceptions FileNotFound et IOException ?
Voila mon code :
Code: |
Properties props = new Properties();
FileInputStream in;
try {
in = new FileInputStream ("carte.txt");
props.load (in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Label entree = new Label("entree");
Checkbox salade = new Checkbox(props.getProperty("libelle"));
|
|
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Jeu 28 Juil 2005 - 11:55 |
|
oceane751 a écrit: |
et sinon, j'ai un bout de code qui m'a l'air pas mal et dis moi ce que t'en pense :
Code: |
Properties props;
...
props.load( anInputStream ); // chargement du fichier
...
Checkbox jf = new Checkbox( props.getProperty( "CheckBox_JF" ));
|
|
C'est un très bon bout de code, j'avais oublié que l'on pouvait passer par la classe properties, ca t'evitera d'ecrire directement dans le fichiers.
Par contre il ne faut surtout pas que t'ecrive directement le nom des elements dans ton code, ce qu'il faut faire c'est utiliser la méthode keys() de Properties qui vas te renvoyer une énumération de toute les clés de ton fichiers, et apres pour chaque clé tu fait getProperty pour avoir le prix.
Voila un code qui peut pt etre t'aider :
Code: |
Properties props = new Properties();
// Rajout d'element avec leur prix dans le fichier propriété
props.put("Jambon fromage", "1.5");
props.put("Coca", "1.2");
Enumeration listeProduit = props.keys();
while (listeProduit.hasMoreElements()) {
String produit = (String) listeProduit.nextElement();
String prix = props.getProperty(produit);
System.out.println(produit+" : "+prix);
}
|
oceane751 a écrit: |
mais est ce que je suis obligé de creer un class pour la connection à mon fichier?
|
Tu ai obligé d'instancier une classe, mais tu n'a pas besoin de réécrire une classe juste pour la connexion a ton fichier.
oceane751 a écrit: |
merci de comprendre que je suis debutante et que je galere un peu |
C'est pas grave, le plus important c'est que quand tu maitrisera bien java t'aide aussi les autres en difficulté sans les traité de newb |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mar 09 Aoû 2005 - 21:36 |
|
me revoila !!
j'ai essayé de faire quelque chose mais voila il y a un truc qui ne marche pas dans mon code...
j'essaye de mettre des elements de mon fichier texte dans un un checkbox
je vous donne les elements de mon fichier texte :
libelle = jambon fromage
prix = 10
libelle2 = coca
prix2 = 3
bon il n'y a pas grand chose... mais quand mon code marchera j'en mettrais beaucoup plus!!
et voici mon code :
Code: |
package com.creperiee.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;
import javax.swing.JOptionPane;
import javax.swing.*;
import java.awt.Choice;
import java.util.Properties;
import java.io.*;
import java.awt.*;
public class Cartee extends Frame
{
File propertiesFile;
Properties props = new Properties() ;
FileInputStream propertiesStream;
Hashtable associationProduitsPrix;
GridLayout grid = new GridLayout(5, 0); //(ligne,colonne)
Label entree = new Label("entree");
Checkbox salade = new Checkbox(props.getProperty("libelle"));
Label lab = new Label(props.getProperty("prix"));
Choice maCombo = new Choice();
Checkbox melon = new Checkbox(props.getProperty("libelle"));
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 Cartee()
{
super("creperie");
initFrame();
addBouton();
// initPrix();
// initBoutonsListeners();
Properties props = new Properties();
File propertiesFile = new File("carte.txt");
try {
FileInputStream propertiesStream = new FileInputStream(
propertiesFile);
}
catch (FileNotFoundException e)
{
System.err.println("Fichier non trouvé");
} catch (IOException e)
{
System.err.println("Impossible de lire");
}
//props.load(propertiesStream);
// propertiesStream.close();
quitter.addActionListener(new ListenerQuitter());
// bout.addActionListener(new ActionListener());
}
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(lab);
add(maCombo);
maCombo.add("1");
maCombo.add("2");
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());
}
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);
}
JOptionPane.showMessageDialog(null,
"Total : " + total +
" \u20ac");
}
}
class ListenerQuitter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
Frame f = new Cartee();
}
}
|
j'ai mis :
Code: |
Checkbox salade = new Checkbox(props.getProperty("libelle"));
Label lab = new Label(props.getProperty("prix"));
|
--------------------------------------------------------------------------------
mais je n'arrive pas à afficher les elements que je veux dans mon checkbox, je ne comprends pas
donc si quelqu'un pourrait m'aider...
merci ! |
|
|
|
|
|