Bonjour,
J'ai fait un programme java pour faire un annuaire mais il y a quelques erreurs.
- J'ai créé une fonction modify dans la classe Bdd pour pouvoir changer le nom de la personne. Cependant, lorsque je change le nom de la personne, le nouveau nom ne s'enregistre pas. Peut etre faut-il supprimer l'autre avant ???
Est ce que quelqu'un pourrait m'aider ?
Voici mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 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; }}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 import java.io.*; import java.util.*; public class Bdd implements Serializable { private static final long serialVersionUID = -2840911939125432267L; // La bdd est mémorisée dans un dictionnaire Map map; public Bdd() { map = new TreeMap(); // ou HashMap (plus rapide mais clé non triées) } /** * Affiche la bdd * Représentation textuelle de la bdd */ 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); } /** * Ajoute un article dans la bdd * @param article : enregistrement à ajouter * @return true si l'enregistrement ne figure pas dans la bdd */ public boolean add(Article article) { if (!map.containsKey(article.nom)) { map.put(article.nom, article); return true; } else System.out.println ("Ce nom est déjà référencié."); return false; } /** * Retourne un enregistrement de la bdd * @param keys : élément identifiant l'enregistrement * @return */ public Article getArticle(String nom) { Article unArticle = (Article) map.get(nom); if (unArticle == null) System.out.print("Pas de fiche référencée pour le nom :" + nom); return unArticle; } /** * Supprime un enregistrement de la bdd * @param keys : élément identifiant l'enregistrement * @return : true si l'enregistrement figure dans la bdd */ public boolean remove(Article article) { if (map.containsKey(article)) { map.remove(article); return true; } return false; } /** * Modifie un élément de l'enregistrement * @param ref : référence de l'enregistrement * @param id : numéro du champ dans l'enregistrement * @param o : valeur à modifier * @return true si l'enregistrement figure dans la bdd */ public Article 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: System.out.println("Entrez un autre choix."); break; } map.put(nom,unArticle); return unArticle; } return null; } /** * Enregistre la base de données * @param bdd * @throws IOException */ public static void write(Bdd bdd) throws IOException { ObjectOutputStream ofW = new ObjectOutputStream(new FileOutputStream( "Data.dat")); ofW.writeObject(bdd); ofW.close(); } /** * Supprime la base de données */ public Bdd clear() { return null; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 import java.io.*; import java.util.Vector; 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(); while(true) { try { while (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)); // Ajoute la nouvelle fiche dans la base de donnée write(bdd); // Enregistre la nouvelle fiche dans la base de donnée break; case '2': nom = KeyBoard.readString("nom de la personne recherchée : "); System.out.println("Etes-vous sur de vouloir supprimer : " + bdd.getArticle(nom)+ " ? O/N " ); boolean del = KeyBoard.readOuiNon(); if (del = true) { bdd.remove(bdd.getArticle(nom)); // Supprime l'article System.out.println("Article retiré"); write(bdd); // Enregistre les modifications } else System.out.print(" Action annulée"); 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 ?"); boolean variable = ! KeyBoard.readOuiNon(); if (variable = true ) { bdd.clear(); } break; default: System.out.println("Entrez un autre choix."); break; } } } catch (IOException e) { System.out.println("Exceptions :" + e); } } } }Merci d'avance...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import java.io.*; import java.util.Scanner; 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); int x; Scanner s = new Scanner(System.in); return x = s.nextInt(); } 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; } // on lit au clavier une réponse de type oui/non. public static boolean readOuiNon(String prompt) throws IOException { System.out.print(prompt); System.out.flush(); return readOuiNon(); } // on lit au clavier une réponse de type oui/non public static boolean readOuiNon() throws IOException { String ch = " "; ch = readString(ch); return (ch.equals("o") || ch.equals("O")); } //quand une erreur se produit lors de la lecture, on affiche un message indiquant le type d'erreur. 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); } }
Partager