Bonjour,

Je travaille actuellement sur mon projet de fin d'étude chez Educatel (...)
et je dois créer un programme de Gestion des stocks pour une petite pharmacie.

Je commence donc et je me retrouve pour le moment avec un problème que je n'arrive pas à comprendre.

Voici tout d'abord mon code (sachez qu'il n'est pas complet! Le main, et une autre classe sont écrite à part)

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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<string>
 
using namespace std;
 
/////////////////////////////////
//*******************************
//CLASSE FICHE PRODUIT
//*******************************
/////////////////////////////////
 
class Fichep {
 
//Définition d'une fiche produit 
typedef struct TypeProduit
{
string nom; //nom du produit
vector<string>fournisseur; // nom du fournisseur
vector<string>categorie; // catégorie du produit
float prix; //pour le prix du produit
int ref; // la référence du produit
char rang[5]; // référence du lieu de rangement
string info; // informations produit
int qteStock; //quantité en stock actuel
int qteAlerte; // valeur du stock alerte
}Fiche;
 
//Définition du type catégorie
//pour les différentes catégories de produits
typedef struct TypeCateg
{
vector<char>categorie;
}Cat;
 
//définition du type fournisseur
//pour les différents fournisseurs possibles
typedef struct TypeFourn
{
vector<char>fournisseur;
}Fournisseur;
 
 
//Un tableau regroupement toute la marchandise
vector<Fiche>stock;
 
public:
      Fichep(); //constructeur
       ~Fichep(); //destructeur
 
       void Creer_Fiche(); //permet de créer une nouvelle fiche produit
       void Modifier_Fiche(); //permet la modification d'une fiche produit
       void Supprimer_Fiche(); //permet de supprimer une fiche produit
       int Recherche_ref(); //permet de rechercher un produit par sa référence
};
 
//CONSTRUCTEUR DE FICHEP
//************
 
Fichep::Fichep () {
cout<<"Creation d'une fiche produit par défaut.. "<<endl;
cout<<endl;
 
 
 
 
}
 
//DESTRUCTEUR DE FICHEP
//***********
 
Fichep::~Fichep(){
 
return;
}
 
 
//Fonction de creation de fiche produit:
//**************************************
 
void Fichep::Creer_Fiche() {
 
cout<<"********************************"<<endl;
cout<<"***CREATION UNE FICHE PRODUIT***"<<endl;
cout<<"********************************"<<endl;
cout<<endl;
cout<<endl;
 
cout<<"Nom du produit: ";
getline(cin,nom);
cout<<endl;
cout<<"Fournisseur: ";
getline(cin,fournisseur);
cout<<endl;
cout<<"Categorie produit: ";
getline(cin,categorie);
cout<<endl;
cout<<"Prix unitaire: ";
cin>>prix;
cout<<endl;
cout<<"Reference produit: ";
cin>>ref;
cout<<endl;
cout<<"Reference rangement (par exemple A1E5 pour Armoire 1 Etagere 5): ";
cin>>rang;
cout<<endl;
cout<<"Notes produit: ";
getline(cin,info);
cout<<endl;
cout<<"Quantité en stock actuel: ";
cin>>qteStock;
cout<<endl;
cout<<"Valeur stock d'alerte: ";
cin>>QteAlerte;
cout<<endl;
cout<<endl;
 
 
}
 
 
//Fonction de modification de fiche produit:
//******************************************
 
void Fichep::Modifier_Fiche(){
 
int x,i;
 
cout<<"**********************************"<<endl;
cout<<"*** MODIFIER UNE FICHE PRODUIT ***"<<endl;
cout<<"**********************************"<<endl;
cout<<endl;
cout<<endl;
 
i=recherche_ref(); //Il faut tout d'abord demander une recherche du produit
                   //a modifier ...
 
if(i!=-1) {
 
cout<<"Nouveau nom du produit: ";
getline(cin,nom);
cout<<endl;
cout<<"Nouveau Fournisseur: ";
getline(cin,fournisseur);
cout<<endl;
cout<<"Nouvelle categorie produit: ";
getline(cin,categorie);
cout<<endl;
cout<<"Nouveau Prix unitaire: ";
cin>>prix;
cout<<endl;
cout<<"Nouvelle Reference produit: ";
cin>>ref;
cout<<endl;
cout<<"Nouvelle Reference rangement: ";
cin>>rang;
cout<<endl;
cout<<"Nouvelles Notes produit: ";
getline(cin,infp);
cout<<endl;
cout<<"Modification Quantité en stock actuel: ";
cin>>qteStock;
cout<<endl;
cout<<"Modification Valeur stock d'alerte: ";
cin>>QteAlerte;
cout<<endl;
cout<<"Fin de la modification."<<endl;
cout<<endl;
cout<<endl;
}
 
//ecriref(); //Modification a effectuer ici également
//il faudra ici implanter de quoi modifier les infos dans le fichier
 
}
 
 
//Fonction de suppression de fiche produit
//***************************************
 
void Fichep::Supprimer_Fiche(){
 
int i,x;  
 
cout<<"**********************************"<<endl;
cout<<"***SUPPRESSION DE FICHE PRODUIT***"<<endl;
cout<<"**********************************"<<endl;
cout<<endl;
cout<<endl;
 
i=Recherche_ref();
 
if(i!=-1) {
 
stock[i].nom='\0';
stock[i].fournisseur.clear();
stock[i].categorie.clear();
stock[i].prix='\0';
stock[i].ref='\0';
stock[i].rang='\0';
stock[i].info='\0';
stock[i].qteStock='\0';
stock[i].qteAlerte='\0';
cout<<"Article supprime!"<<endl;
cout<<endl;
cout<<endl;
 
}
 
//ecriref(); //réinscription des données dans le fichier..
//a faire
 
 
 
}
 
 
//Fonction de recherche par référence
//***********************************
 
int Fichep::Recherche_ref(){
 
int x,i,j;
 
cout<<"****************************"<<endl;
cout<<"***RECHERCHE DE REFERENCE***"<<endl;
cout<<"****************************"<<endl;
cout<<endl;
cout<<endl;
 
i=0;
j=-1;
 
cout<<"Veuillez entrer la r\202f\202rence de l'article \205 modifier svp: ";
cin>>x;
 
for(i=0; i<stock.size)&&(j==-1); i++)
{
if(stock[i].ref==x){
j=i;
}
if(j==-1){
cout<<"R\202f\202rence non valide!"<<endl;
cout<<endl;
}
return j;
}
}
Bon en fait voilà, dans la fonction "Creer_fICHE" je me retrouve avec toute mes variables "inconnues" au bataillons:

92 : `nom' undeclared (first use this function)
95 `fournisseur' undeclared (first use this function)
...
etc jusqu'à la fin !

Idem dans la fonction de modification...

Je me dit donc qu'il y a un problème avec la déclaration de ma structure "Fiche" ...
Ou dans ma manière de réceptionner les données? (getline?)

En passant le curseur sur les variables, DEVC++ reconnait pourtant que nom par exemple est de type string, etc...

Je pensais m'être tromper dans getline et avais donc modifier
getline(cin,nom);
en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
getline(cin,Fiche.nom);
Mais non..

Quelqu'un peut il me mettre sur la voie ?