Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : besoin d'aide pour mon programme java [ Divers / Débutant(e) ] (pouyoudu17)

mardi 22 mai 2007 à 23:06:24 | besoin d'aide pour mon programme java

pouyoudu17

Bonjour,
J'ai fait un programme java pour faire un annuaire mais il y a quelques erreurs.
Par exemple, je ne peux pas modifier le nom de la personne. Lorsque je supprime la base de données, "null" s'inscrit. Est ce que quelqu'un pourrait m'aider ?
Voici mon programme :

import java.io.Serializable;

public class Article implements Serializable
{ private static final long serialVersionUID = -7871316436220619545L;

String nom;
String prenom;
int num_rue;
String adresse;
int code_postal;
String ville;
String adresse_mail;
int portable;
int fixe;
int travail;
int fax;

public Article(String n, String p, int u, String a, int c, String v, String m, int po, int f, int t, int f2)
{nom = n; prenom = p; num_rue = u; adresse = a; code_postal = c; ville = v; adresse_mail = m;portable = po; fixe = f; travail = t; fax = f2;}

public String toString()
{ return nom+" "+prenom+" "+num_rue+" "+adresse+" "+code_postal+" "+ville+" "+adresse_mail; }
}

import java.io.*;
import java.util.*;

public class Bdd implements Serializable
{
private static final long serialVersionUID = -2840911939125432267L;
Map map;
public Bdd()
{
map = new TreeMap(); // ou HashMap (plus rapide mais clé non triées)
}
public String toString()
{
Article unArticle;
Set ts = map.keySet();
Iterator it = ts.iterator();
String sBdd = "--------------------------------------------------------------------------------\r\n";
while (it.hasNext())
{
unArticle = (Article) map.get(it.next());
sBdd += unArticle + "\r\n";
}
sBdd += "--------------------------------------------------------------------------------";
return (sBdd);
}
public boolean add(Article article)
{
if (!map.containsKey(article.nom))
{
map.put(article.nom, article);
return true;
}
return false;
}
public Article getArticle(String keys)
{
Article unArticle = (Article) map.get(keys);
if (unArticle == null) unArticle = new Article(keys, "Pas de fiche référencée à ce nom", 0, keys, 0, keys, keys, 0, 0, 0, 0); return unArticle;
}
public boolean remove(String nom)
{
if (map.containsKey(nom))
{
map.remove(nom);
return true;
}
return false;
}
public boolean modify (String nom, int id, Object o)
{
if (map.containsKey(nom))
{
Article unArticle = (Article) map.get(nom);
map.remove(nom);
switch (id)
{
case 1 : unArticle.nom = (String)o; break;
case 2 : unArticle.fixe= ((Integer)o).intValue(); break;
default : return false;
}
map.put(nom,unArticle);
return true;
}
return false;
}}


public class Test
{
public static Bdd read() throws IOException, ClassNotFoundException
{
ObjectInputStream ofR = new ObjectInputStream(new FileInputStream(
"Data.dat"));
return (Bdd) ofR.readObject();
}

public static void write(Bdd bdd) throws IOException
{
ObjectOutputStream ofW = new ObjectOutputStream(new FileOutputStream(
"Data.dat"));
ofW.writeObject(bdd);
}

public static void main(String[] args)
{String nom;
String prenom;
int num_rue;
String adresse;
int code_postal;
String ville;
String adresse_mail;
int portable;
int fixe;
int travail;
int fax;
Vector vpers = new Vector();
Bdd bdd = new Bdd();
boolean variable = true;
while(true)
{
try
{
while (variable = true)
{
System.out.println("1 : Ajouter article");
System.out.println("2 : Retirer article");
System.out.println("3 : Modifier article");
System.out.println("4 : Afficher la base de donnée");
System.out.println("5 : Afficher un article");
System.out.println("6 : Effacer la base de donnée");

switch (KeyBoard.readChar("1, 2, 3, 4, 5, 6, ? "))
{
case '1':
nom = KeyBoard.readString("Nom : ");
prenom = KeyBoard.readString("Prénom : ");
num_rue = KeyBoard.readInt("Numéro de rue : ");
adresse = KeyBoard.readString("Adresse : ");
code_postal = KeyBoard.readInt("Code postal : ");
ville = KeyBoard.readString("Ville : ");
adresse_mail = KeyBoard.readString("Adresse mail : ");
portable = KeyBoard.readInt("Numéro de téléphone portable : ");
fixe = KeyBoard.readInt("Numéro de téléphone domicile : ");
travail = KeyBoard.readInt("Numéro de téléphone travail : ");
fax = KeyBoard.readInt("Numéro de téléphone fax : ");
bdd.add(new Article(nom, prenom, num_rue, adresse, code_postal, ville, adresse_mail, portable, fixe, travail, fax));
write(bdd); // Enregistre la nouvelle fiche
break;
case '2':
nom = KeyBoard.readString("nom de la personne recherchée : ");
bdd.remove(nom);
System.out.println(bdd.getArticle(nom));
write(bdd); // Enregistre les modifications
break;
case '3':
nom = KeyBoard.readString("nom de la personne recherchée : ");
System.out.println(bdd.getArticle(nom));
int champ = KeyBoard.readInt("champ à modifier ?(1 pour nom, 2 pour téléphone fixe) ");
switch (champ)
{
case 1 : nom = KeyBoard.readString("nom : ");
bdd.modify(nom, 1, nom);
write(bdd); // Enregistre les modifications
break;
case 2 : fixe = KeyBoard.readInt("fixe : ");
bdd.modify(nom, 2, new Integer(fixe));
write(bdd); // Enregistre les modifications
break;
}
break;
case '4':
System.out.println(bdd);
break;
case '5':
nom = KeyBoard.readString("nom de la personne à chercher : ");
System.out.println(vpers);
break;
case '6':
System.out.println("Souhaitez-vous effacer la base de donnée O/N ?");
variable = ! KeyBoard.readOuiNon();
break;
default: System.out.println("Entrez un autre choix.");
break;
}
}
}
catch (IOException e)
{
System.out.println("Exceptions :" + e);
}}}}


public class KeyBoard
{
public static String readString(String prompt) throws IOException
{
System.out.print(prompt);
BufferedReader ligne_in = new BufferedReader(new InputStreamReader(
System.in));
String ligne = ligne_in.readLine();
return ligne;
}
public static int readInt(String prompt) throws IOException
{
System.out.print(prompt);
BufferedReader ligne_in = new BufferedReader(new InputStreamReader(
System.in));
int ligne = 0;
return ligne;
}
public static char readChar(String prompt) throws IOException
{
System.out.print(prompt);
BufferedReader ligne_in = new BufferedReader(new InputStreamReader(
System.in));
char ligne = ligne_in.readLine().charAt(0);
return ligne;
}
public static boolean readOuiNon(String prompt) throws IOException
{
System.out.print(prompt);
System.out.flush();
return readOuiNon();
}
public static boolean readOuiNon() throws IOException
{
String ch = null;
ch = readString(ch);
return (ch.equals("o") || ch.equals("O"));
}
private static void erreurEntree(Exception e, String type_erreur)
{
System.out.println("Erreur de lecture : " + type_erreur);
System.out.println(e);
e.printStackTrace();
System.exit(1);
}}


Merci d'avance...

mercredi 23 mai 2007 à 08:54:16 | Re : besoin d'aide pour mon programme java

dvoraky

Bon désolé, je suis pas un expert.
De ce que j'ai vu :
    - dans une classe quand tu définis des attributs à la classe, tu ne mets ni public, ni private. Je pense (je dis bien je pense) qu'il serait préférable de mettre des private et de créer des accesseurs par la suite sur ces attributs.
    - tu auras remarqué que tes KeyBoard.readInt n'attende pas que tu saisisses quelque chose au clavier.
A mon avis, t'as un problème de tampon. Essai en vidant ton tampon parce que, je pense, que lors de la saisie de oui / non, il n'attend pas et donc dans ch (String ch = null) il reste null. Tu vois ce que je veux dire?

C'est après des heures de codage que j'ai compris pourquoi les mecs de Java ont choisi une tasse de café comme logo!

mercredi 23 mai 2007 à 20:25:28 | Re : besoin d'aide pour mon programme java

pouyoudu17

Bonjour,
pour vider mon tampon,  faut -il que je rajoute la ligne suivante dans ma classe Bdd simplement ?
Bdd.flush();
Merci d'avance.

jeudi 24 mai 2007 à 09:38:39 | Re : besoin d'aide pour mon programme java

dvoraky

Euh... essaie :)
Non, mais bon après chaque saisie, je pense qu'il faudrait vider le tampon. Donc dans tes fonctions readString, readInt...
Essaie de creuser cette idée là, je ne te garantie pas que c'est une bonne piste, mais bon c'est déjà ca ;)
Bonne chance
++

C'est après des heures de codage que j'ai compris pourquoi les mecs de Java ont choisi une tasse de café comme logo!

jeudi 24 mai 2007 à 16:37:13 | Re : besoin d'aide pour mon programme java

pouyoudu17

En faite, je ne pense pas qu'il faut vider le tampon dans chaque fonction readString, readInt, ... car sinon java ne pourrait pas retourner ce qui a été saisi au clavier lorsqu'il lira la base de données.
Donc, je ne pense pas que ce soit la bonne méthode...


jeudi 24 mai 2007 à 16:48:40 | Re : besoin d'aide pour mon programme java

dvoraky

Ben tu mets ce que tu lis dans des variables... je ne sais pas, moi je le voit comme ca.
De plus, vu qu'il n'attend pas du tout que tu saisisses quelques choses pour readOuiNon, ben c'est forcément à cause du tampon.

C'est après des heures de codage que j'ai compris pourquoi les mecs de Java ont choisi une tasse de café comme logo!



Cette discussion est classé dans : public, int, string, system, bdd


Répondre à ce message

Sujets en rapport avec ce message

applet print [ par neo1260 ] Salut, c encore moi avec mon probléme d'applet, j'ai laissé tombé la classe interne mais il me met une erreude compilation au niveau du book.append (p methode paint appelée mais qui ne peint rien [ par seb87 ] bonjour, je me bats toujour avec mes images.ma nouvelle question est a propos de la surdefinition de paint.j'ai une image sur laquelle je dessine des HELP HELP HELP !!!!!!!! [ par poupoule00 ] Boonjour et merci d'avance de me repondre. J'ai un projet a faire en jCreator qui consiste a entrer une date(jourdelasemaine, numero du jour, mois, an JTable éditeur de couleur [ par jc_romeo ] BonjourJe voudrais faire une JTable avec le fait que quand on clique sur une des cases on puisse changer sa couleur de fond.j'ai donc créer la classe: non-static variable this cannot be referenced from a static context [ par organik ] Bonjour..j'ai un souci à la compilation d'un programme... j'ai le message d'erreur : "non-static variable this cannot be referenced from a static con char et if [ par Skyffer3 ] public class Tableauchar { public static void main(String args[]) { String a = "allo"; int b = a.length(); char[] x = new char[b]; for(int i=0 ; i ch AIDE sur Connexion BDD MySQL [ par zeldoi5 ] Bonjour tout le monde!Je sais que le problème dont je vais parler a déjà été traité plusieurs fois... Mais impossible de me connecter à ma base de don jtable [ par KERKENNAH ] bonjour;je suis un etudiant et je besoin d'aide a propos de jtable je veux ajouter 2 boutton à mon travail un qui ajoute une ligne dans jtable et l'au Piles [ par Flooby ] Bonjour, je suis vraiment debutant en JAVA et j'ai besoin d'aide pour mon cours d'algo car j'ai un exposé a rendre demain.J'aimerai effectuer l'implem Implementation d'une pile [ par Flooby ] Bonjour, je suis vraiment debutant en JAVA et j'ai besoin d'aide pour mon cours d'algo car j'ai un exposé a rendre demain.J'aimerai effectuer l'implem


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.