Programme ne faisant pas ce que je lui demande

Résolu/Fermé
GrandMaitre9 Messages postés 15 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 2 octobre 2014 - 24 févr. 2014 à 13:40
GrandMaitre9 Messages postés 15 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 2 octobre 2014 - 24 févr. 2014 à 16:28
Bonjour,

Cela fait plusieurs jours que le programme ne fais pas ce que je lui demande. Je ne sais pas où ça coince. J'aurais besoin de votre aide.

Je dois réaliser une gestion des stocks. J'arrive très bien à rentrer dans la fonction du choix 1 et de le faire en entier mais dans le choix 2, le programme ne fais pas la fonction (pire, il me marque "fichier introuvable" à l'ouverture de la fonction sans me laisser appuyer sur une touche - je le vois un quart de seconde).

J'ai 2 fichiers (Commander.txt et Ajout.txt)

Travail.cpp

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string>
#include <ctype.h>
#include <iostream>
#include <fstream>
#include <strstream>
#include <iomanip>
#include <vector>

#include <windows.h>

#include "Fonction.h"
#include "Ajout.txt"
#include "Commander.txt"


using namespace std;

int main()
{

gestion principal;

int choix;

ifstream stock_ajout("Ajout.txt", ios::in);
ifstream stock_commander("Commander.txt", ios::in);

if (!stock_ajout && !stock_commander)
{

printf("Impossible d'ouvrir le fichier");
return -1;

}

do
{

do
{

system("cls");

std::cout << "Que voulez-vous faire ?" << std::endl;
std::cout << "1. Ajouter un produit en stock" << std::endl;
std::cout << "2. Voir les produits en stock" << std::endl;
std::cout << "3. Ajouter un fournisseur" << std::endl;
std::cout << "4. Voir la liste des fournisseurs" << std::endl;
std::cout << "5. Effectuer une commande" << std::endl;
std::cout << "6. Rechercher une commande" << std::endl;
std::cout << "7. Modifier une commande" << std::endl;
std::cout << "8. Valider la commande - l'ayant recu" << std::endl;
std::cout << "9. Quitter" << std::endl;

std::cin >> choix;

if (choix < 1 || choix > 9) std::cout << "Selection non valable." << std::endl;

} while (choix < 1 || choix > 9);

if (choix == 1)
{

std::cout << "coucou1";
_getch();

principal.ajout_stock();

} else if (choix == 2)
{

std::cout << "coucou";
_getch();

principal.visualisation_stock();

} else if (choix == 3)
{



} else if (choix == 4)
{



} else if (choix == 5)
{

principal.creation_commande();

} else if (choix == 6)
{

principal.rechercher_commande();

} else if (choix == 7)
{



} else if (choix == 8)
{



} else if (choix == 9)
{



}

std::cout << std::endl << std::endl;

} while (choix != 9);

stock_ajout.close(); // Ferme le fichier
stock_commander.close(); // Ferme le fichier

return 0;

}










Fonction.h

FILE *stock_ajout; // Ajouter un médicament
FILE *stock_commander; // Effectuer une commande

using namespace std;

class gestion
{

int x, y;

public: gestion();
void GotoXY(short, short); // pour déplacer le curseur
void lecture_ajout(char *); // Ajouter du stock
void lecture_commander(char *); // Ajouter une commande
char ajout_restant(char *, char *); // Ajouter un médicament au stock
void visualisation_stock(); // 2. Voir les médicaments en stock
void ajout_stock(); // 1. Ajouter un médicament en stock
void rechercher_commande(); // 6. Rechercher une commande
void creation_commande(); // 5. Effectuer une commande

char date[20]; // Date de la commande
char numero[6]; // Numéro du médicament
char libelle[14]; // Libellé du médicament
char restant[4]; // Nombre de médicaments restants
char en_commande[4]; // Nombre de médicaments en commande
char livraison[20]; // Date de livraison des médicaments

};

gestion::gestion()
{

int abs = 0, ord = 0;

x = abs;
y = ord;

}

// pour déplacer le curseur
void gestion::GotoXY(SHORT x, SHORT y)
{

/* STD_OUTPUT_HANDLE fait reference a la sortie standard du programme qui est par defaut la console */
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD Pos;

Pos.X = x;
Pos.Y = y;

SetConsoleCursorPosition(hConsole, Pos);

}

// Ajouter du stock
void gestion::lecture_ajout(char *t)
{

int compteur = 0;
int caractere;

while((caractere = getc(stock_ajout)) != EOF && compteur < 59 && caractere != '\n')
{

t[compteur] = (char)caractere;
t[compteur] = tolower(t[compteur]);
compteur++;

}

t[compteur] = 0;

}

// Ajouter une commande
void gestion::lecture_commander(char *t)
{

int compteur = 0;
int caractere;

while((caractere = getc(stock_commander)) != EOF && compteur < 59 && caractere != '\t')
{

t[compteur] = (char)caractere;
t[compteur] = tolower(t[compteur]);
compteur++;

}

t[compteur] = 0;

}

// Ajouter un médicament au stock
char gestion::ajout_restant(char *a, char *b)
{

char resultat;

resultat = (int) a + (int) b;

return resultat;

}

// 2. Voir les médicaments en stock
void gestion::visualisation_stock()
{

system("cls");

std::cout << "coucou";
_getch();

gestion ici, demande;
int choix = 0, ligne = 6;

ifstream stock_ajout("Ajout.txt", ios::in); // Ouvrir le fichier en lecture

if (!stock_ajout)
{

system("cls");

std::cout << "coucou" << std::endl << std::endl;

std::cout << "Entrer le numero du produit :\t"; std::cin >> ici.numero;

std::cout << "________________________________________________________________________________" << std::endl;
std::cout << " Numero | Libelle | Restant " << std::endl;
std::cout << "________________________________________________________________________________" << std::endl;

lecture_ajout(demande.numero);

if (!strcmp(demande.numero, ici.numero))
{

GotoXY(0,ligne); std::cout << demande.numero;
GotoXY(13,ligne); std::cout << demande.libelle;
GotoXY(29,ligne); std::cout << demande.restant;

ligne = ligne + 3;

}

stock_ajout.close();

_getch();

} else
{

std::cout << "Fichier introuvable" << std::endl;
_getch();

}

}

// 1. Ajouter un médicament en stock
void gestion::ajout_stock()
{

gestion ici, demande;
char reponse[4];
int rep = 1;

system("cls");

std::cout << "Numero du produit : "; std::cin >> ici.numero;
std::cout << "Libelle du produit : "; std::cin >> ici.libelle;
std::cout << "Quantite : "; std::cin >> ici.restant;

do
{

std::cout << std::endl << "Voulez-vous sauvegarder ? (oui/non)\t"; std::cin >> reponse;

} while (strcmp(reponse, "non") && strcmp(reponse, "oui"));

if (reponse[0] == 'o')
{

fstream stock_ajout("Ajout.txt", ios::in|ios::app); // Ouvrir le fichier en lecture/écriture

if (stock_ajout)
{

stock_ajout << "\n" << ici.numero << "\t" << ici.libelle << "\t" << ici.restant;

} else
{

std::cout << "Fichier introuvable" << std::endl;

}

stock_ajout.close();

}

}

// 6. Rechercher une commande
void gestion::rechercher_commande()
{

gestion ici, demande;
int choix = 0, ligne = 7;

ifstream stock_commander("Commander.txt", ios::in); // Ouvrir le fichier en lecture

if (stock_commander)
{

system("cls");

std::cout << "Entrer la numero du produit :\t"; std::cin >> ici.numero;

std::cout << "________________________________________________________________________________" << std::endl;
std::cout << " Date | Numero | Libelle | Restant | En commande | Livree le " << std::endl;
std::cout << "________________________________________________________________________________" << std::endl;

lecture_commander(demande.numero);
stock_commander >> demande.numero >> demande.date >> demande.libelle >> demande.restant >> demande.en_commande >> demande.livraison;

if (!strcmp(demande.numero, ici.numero))
{

GotoXY(0,ligne); std::cout << demande.date;
GotoXY(15,ligne); std::cout << demande.numero;
GotoXY(26,ligne); std::cout << demande.libelle;
GotoXY(45,ligne); std::cout << demande.restant;
GotoXY(56,ligne); std::cout << demande.en_commande;
GotoXY(69,ligne); std::cout << demande.livraison;


ligne = ligne + 3;

}

stock_commander.close();

_getch();

} else
{

std::cout << "Fichier introuvable" << std::endl;

}

}

// 5. Effectuer une commande
void gestion::creation_commande()
{

gestion ici, demande;
char reponse[4];
int rep = 1;

system("cls");

std::cout << "Date : "; std::cin >> ici.date;
std::cout << "Numero : "; std::cin >> ici.numero;
std::cout << "Libelle du produit : "; std::cin >> ici.libelle;
std::cout << "Quantite restante : "; std::cin >> ici.restant;
std::cout << "Quantite a commander : "; std::cin >> ici.en_commande;
std::cout << "Livraison prevue le : "; std::cin >> ici.livraison;

do
{

std::cout << std::endl << "Voulez-vous sauvegarder ? (oui/non)\t"; std::cin >> reponse;

} while (strcmp(reponse, "non") && strcmp(reponse, "oui"));

if (reponse[0] == 'o')
{

fstream stock_commander("Commander.txt", ios::in|ios::app); // Ouvrir le fichier en lecture/écriture

if (stock_commander)
{

stock_commander << "\n" << ici.date << "\t" << ici.numero << "\t" << ici.libelle << "\t" << ici.restant << "\t" << ici.en_commande << "\t" << ici.livraison;

} else
{

std::cout << "Fichier introuvable" << std::endl;

}

stock_commander.close();

}

}






Il y a des parties qui n'ont pas encore été utilisé, je suis désolé pour toute cette lecture mais je ne sais vraiment pas où se trouve l'erreur. Pour moi, j'ai vraiment tout essayé.

Merci d'avance.

2 réponses

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
24 févr. 2014 à 13:53
Bonjour,
nous pourrions t'aider, si tu mettais ton code source dans les balises correspondantes "
<code cpp>< /code>
" afin d'indenter ton code source et surtout qu'il soit lisible, car moi perso j'ai décroché en voyant ton code.
0
GrandMaitre9 Messages postés 15 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 2 octobre 2014
24 févr. 2014 à 16:28
Ok merci.

Le code serait

Travail.cpp


#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <conio.h> 
#include <string> 
#include <ctype.h> 
#include <iostream> 
#include <fstream> 
#include <strstream> 
#include <iomanip> 
#include <vector> 

#include <windows.h> 

#include "Fonction.h" 
#include "Ajout.txt" 
#include "Commander.txt" 


using namespace std; 

int main() 
{ 

gestion principal; 

int choix; 

ifstream stock_ajout("Ajout.txt", ios::in); 
ifstream stock_commander("Commander.txt", ios::in); 

if (!stock_ajout && !stock_commander) 
{ 

printf("Impossible d'ouvrir le fichier"); 
return -1; 

} 

do 
{ 

do 
{ 

system("cls"); 

std::cout << "Que voulez-vous faire ?" << std::endl; 
std::cout << "1. Ajouter un produit en stock" << std::endl; 
std::cout << "2. Voir les produits en stock" << std::endl; 
std::cout << "3. Ajouter un fournisseur" << std::endl; 
std::cout << "4. Voir la liste des fournisseurs" << std::endl; 
std::cout << "5. Effectuer une commande" << std::endl; 
std::cout << "6. Rechercher une commande" << std::endl; 
std::cout << "7. Modifier une commande" << std::endl; 
std::cout << "8. Valider la commande - l'ayant recu" << std::endl; 
std::cout << "9. Quitter" << std::endl; 

std::cin >> choix; 

if (choix < 1 || choix > 9) std::cout << "Selection non valable." << std::endl; 

} while (choix < 1 || choix > 9); 

if (choix == 1) 
{ 

std::cout << "coucou1"; 
_getch(); 

principal.ajout_stock(); 

} else if (choix == 2) 
{ 

std::cout << "coucou"; 
_getch(); 

principal.visualisation_stock(); 

} else if (choix == 3) 
{ 



} else if (choix == 4) 
{ 



} else if (choix == 5) 
{ 

principal.creation_commande(); 

} else if (choix == 6) 
{ 

principal.rechercher_commande(); 

} else if (choix == 7) 
{ 



} else if (choix == 8) 
{ 



} else if (choix == 9) 
{ 



} 

std::cout << std::endl << std::endl; 

} while (choix != 9); 

stock_ajout.close(); // Ferme le fichier 
stock_commander.close(); // Ferme le fichier 

return 0; 

} 




Fonction.h


FILE *stock_ajout; // Ajouter un médicament 
FILE *stock_commander; // Effectuer une commande 

using namespace std; 

class gestion 
{ 

int x, y; 

public: gestion(); 
void GotoXY(short, short); // pour déplacer le curseur 
void lecture_ajout(char *); // Ajouter du stock 
void lecture_commander(char *); // Ajouter une commande 
char ajout_restant(char *, char *); // Ajouter un médicament au stock 
void visualisation_stock(); // 2. Voir les médicaments en stock 
void ajout_stock(); // 1. Ajouter un médicament en stock 
void rechercher_commande(); // 6. Rechercher une commande 
void creation_commande(); // 5. Effectuer une commande 

char date[20]; // Date de la commande 
char numero[6]; // Numéro du médicament 
char libelle[14]; // Libellé du médicament 
char restant[4]; // Nombre de médicaments restants 
char en_commande[4]; // Nombre de médicaments en commande 
char livraison[20]; // Date de livraison des médicaments 

}; 

gestion::gestion() 
{ 

int abs = 0, ord = 0; 

x = abs; 
y = ord; 

} 

// pour déplacer le curseur 
void gestion::GotoXY(SHORT x, SHORT y) 
{ 

/* STD_OUTPUT_HANDLE fait reference a la sortie standard du programme qui est par defaut la console */ 
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
COORD Pos; 

Pos.X = x; 
Pos.Y = y; 

SetConsoleCursorPosition(hConsole, Pos); 

} 

// Ajouter du stock 
void gestion::lecture_ajout(char *t) 
{ 

int compteur = 0; 
int caractere; 

while((caractere = getc(stock_ajout)) != EOF && compteur < 59 && caractere != '\n') 
{ 

t[compteur] = (char)caractere; 
t[compteur] = tolower(t[compteur]); 
compteur++; 

} 

t[compteur] = 0; 

} 

// Ajouter une commande 
void gestion::lecture_commander(char *t) 
{ 

int compteur = 0; 
int caractere; 

while((caractere = getc(stock_commander)) != EOF && compteur < 59 && caractere != '\t') 
{ 

t[compteur] = (char)caractere; 
t[compteur] = tolower(t[compteur]); 
compteur++; 

} 

t[compteur] = 0; 

} 

// Ajouter un médicament au stock 
char gestion::ajout_restant(char *a, char *b) 
{ 

char resultat; 

resultat = (int) a + (int) b; 

return resultat; 

} 

// 2. Voir les médicaments en stock 
void gestion::visualisation_stock() 
{ 

system("cls"); 

std::cout << "coucou"; 
_getch(); 

gestion ici, demande; 
int choix = 0, ligne = 6; 

ifstream stock_ajout("Ajout.txt", ios::in); // Ouvrir le fichier en lecture 

if (!stock_ajout) 
{ 

system("cls"); 

std::cout << "coucou" << std::endl << std::endl; 

std::cout << "Entrer le numero du produit :\t"; std::cin >> ici.numero; 

std::cout << "________________________________________________________________________________" << std::endl; 
std::cout << " Numero | Libelle | Restant " << std::endl; 
std::cout << "________________________________________________________________________________" << std::endl; 

lecture_ajout(demande.numero); 

if (!strcmp(demande.numero, ici.numero)) 
{ 

GotoXY(0,ligne); std::cout << demande.numero; 
GotoXY(13,ligne); std::cout << demande.libelle; 
GotoXY(29,ligne); std::cout << demande.restant; 

ligne = ligne + 3; 

} 

stock_ajout.close(); 

_getch(); 

} else 
{ 

std::cout << "Fichier introuvable" << std::endl; 
_getch(); 

} 

} 

// 1. Ajouter un médicament en stock 
void gestion::ajout_stock() 
{ 

gestion ici, demande; 
char reponse[4]; 
int rep = 1; 

system("cls"); 

std::cout << "Numero du produit : ";	std::cin >> ici.numero; 
std::cout << "Libelle du produit : ";	std::cin >> ici.libelle; 
std::cout << "Quantite : ";	 std::cin >> ici.restant; 

do 
{ 

std::cout << std::endl << "Voulez-vous sauvegarder ? (oui/non)\t"; std::cin >> reponse; 

} while (strcmp(reponse, "non") && strcmp(reponse, "oui")); 

if (reponse[0] == 'o') 
{ 

fstream stock_ajout("Ajout.txt", ios::in|ios::app); // Ouvrir le fichier en lecture/écriture 

if (stock_ajout) 
{ 

stock_ajout << "\n" << ici.numero << "\t" << ici.libelle << "\t" << ici.restant; 

} else 
{ 

std::cout << "Fichier introuvable" << std::endl; 

} 

stock_ajout.close(); 

} 

} 

// 6. Rechercher une commande 
void gestion::rechercher_commande() 
{ 

gestion ici, demande; 
int choix = 0, ligne = 7; 

ifstream stock_commander("Commander.txt", ios::in); // Ouvrir le fichier en lecture 

if (stock_commander) 
{ 

system("cls"); 

std::cout << "Entrer la numero du produit :\t"; std::cin >> ici.numero; 

std::cout << "________________________________________________________________________________" << std::endl; 
std::cout << " Date | Numero | Libelle | Restant | En commande | Livree le " << std::endl; 
std::cout << "________________________________________________________________________________" << std::endl; 

lecture_commander(demande.numero); 
stock_commander >> demande.numero >> demande.date >> demande.libelle >> demande.restant >> demande.en_commande >> demande.livraison; 

if (!strcmp(demande.numero, ici.numero)) 
{ 

GotoXY(0,ligne); std::cout << demande.date; 
GotoXY(15,ligne); std::cout << demande.numero; 
GotoXY(26,ligne); std::cout << demande.libelle; 
GotoXY(45,ligne); std::cout << demande.restant; 
GotoXY(56,ligne); std::cout << demande.en_commande; 
GotoXY(69,ligne); std::cout << demande.livraison; 


ligne = ligne + 3; 

} 

stock_commander.close(); 

_getch(); 

} else 
{ 

std::cout << "Fichier introuvable" << std::endl; 

} 

} 

// 5. Effectuer une commande 
void gestion::creation_commande() 
{ 

gestion ici, demande; 
char reponse[4]; 
int rep = 1; 

system("cls"); 

std::cout << "Date : ";	 std::cin >> ici.date; 
std::cout << "Numero : ";	 std::cin >> ici.numero; 
std::cout << "Libelle du produit : ";	 std::cin >> ici.libelle; 
std::cout << "Quantite restante : ";	 std::cin >> ici.restant; 
std::cout << "Quantite a commander : ";	 std::cin >> ici.en_commande; 
std::cout << "Livraison prevue le : "; std::cin >> ici.livraison; 

do 
{ 

std::cout << std::endl << "Voulez-vous sauvegarder ? (oui/non)\t"; std::cin >> reponse; 

} while (strcmp(reponse, "non") && strcmp(reponse, "oui")); 

if (reponse[0] == 'o') 
{ 

fstream stock_commander("Commander.txt", ios::in|ios::app); // Ouvrir le fichier en lecture/écriture 

if (stock_commander) 
{ 

stock_commander << "\n" << ici.date << "\t" << ici.numero << "\t" << ici.libelle << "\t" << ici.restant << "\t" << ici.en_commande << "\t" << ici.livraison; 

} else 
{ 

std::cout << "Fichier introuvable" << std::endl; 

} 

stock_commander.close(); 

} 

}



Je voudrais savoir où est-ce qu'il y aurait un problème dans le code sachant qu'il arrive à faire tout ce qu'il y a dans le choix 1 mais qu'il n'arrive pas à accéder à la fonction du choix 2.

Merci
0