Mon programme de gestion des stocks ...
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:
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:
Citation:
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
Citation:
getline(cin,nom);
en
Code:
getline(cin,Fiche.nom);
Mais non..
Quelqu'un peut il me mettre sur la voie ? :calim2:
Un programme de gestion des stocks
Me revoilà après quelques modifications !
Merci énormément pour cette aide (plus haut) qui m'a été très très utile ! :ccool:
J'ai mit en place un système de mot de passe, pour toute modification dans mes données, mot de passe qui sera préalablement définit, possibilité de le modifier, et donc en possession unique du "chef".
Passons les autres modifications j'aimerais savoir si une chose est possible,
j'explique:
J'ai mit en place un syteme d'écriture et lecture de fichier avec <fstream> ... pour conserver mes données.
Seulement un petit "problème" de dérange:
MA PREMIERE SOLUTION: A chaque création d'une nouvelle fiche produit, j'aurais voulu créer un nouveau fichier texte qui contient uniquement les données de ce produit..
Vous allez me dire surement que ce n'est pas comme ça qu'il faut fonctionner, vu la quantité énooooorme de produits d'une pharmacie, autant de fichiers texte dans un répertoire serait ridicule... Je pense que oui aussi.
Dans ce cas je devrais donc (2EM SOLUTION) mettre toutes les données dans un seul fichier.
Dans ces 2 cas un problème différent se pose pour chacun:
pour la première solution je ne sais pas comment nommer le fichier texte avec le nom du produit. Voyez par exemple je veut créer une fiche produit pour le produit DAFALGAN, j'aimerais donc que le fichier texte se nomme DAFALGAN.txt ... Mais comment changer le nom du fichier en fonction du nom du produit :cfou:
(L'intérêt pour moi de cette solution est que si monsieur le Chef veut imprimer par exemple la fiche info du produit DAFALGAN, il puisse allait chercher le fichier texte correspondant dans le répertoire... En meme temps, vous me direz, pourquoi il voudrais l'imprimer .... Et si il veut la consulter, le programme qui me prend la tete actuellement :D est là pour ça! Mouai...) :)
Pour ma deuxième solution qui a l'air plus "intelligente" :) mon problème est tel:
je doit modifier, supprimer ou tout simplement consulter les données d'un seul produit, dans ce fichier texte interminable, existe-t-il un moyen de chercher le nom DAFALGAN par exemple dans ce fichier texte immmmmmmmmmmmense puis ensuite afficher uniquement ces données? (bon pour l'affichage des données, pas compliqué je sais qu'il y a tant de lignes par produit: une boucle et hop)
Voilà si quelqu'un pourrait me dire comment faire :roll: