Accueil > Forum > > > > besoin d'aide pour mon programme java
besoin d'aide pour mon programme java
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ée 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
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|