Création d'un programme permettant de gérer des produits
Un fichier contient des descriptions de code article et de prix. Le code d’article est un numéro entre 0 et 99. Chaque ligne du fichier contient un code et un prix séparés par un espace :
code1 prix1
code2 prix2 etc. On se propose d’organiser les données en mémoire centrale sous forme de tableaux : on trouve le prix de chaque produit de code c dans la case d’indice c du tableau.
a) Proposer une structure de données pour représenter les produits en mémoire centrale.
b) Écrire une fonction qui réalise le chargement en mémoire centrale des données.
c) Écrire une fonction qui donne le prix d’un produit à partir de son code.
d) Écrire une fonction qui permet à un utilisateur de rentrer un nouveau produit dans la base. On supposera que la base de données a été préalablement chargée en mémoire.
e) Écrire une fonction qui permet de sauvegarder la base de données dans un fichier.
f) Écrire le programme principal qui charge les données et, tant que l’utilisateur le souhaite, propose un menu avec trois options : • Ajouter un produit • Consulter un prix • Quitter En fin de programme, la sauvegarde des données sera effectuée.
Salut ! J'aimerai avoir votre avis sur ce que j'ai fais sur ce projet..je rencontre un problème lors de la consultation du prix du produit a base du code ..j'obtiens une boucle infini
Voici mon code👇
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
| //definition de la structure produit qui est un nouveau type
typedef struct Produit produit;
struct Produit
{
float prix;
int code;
};
produit p;
// fonction de charGement de donnee en memoire
int chargement( int numrech){
FILE*fic=fopen("Produits.txt","r");
do{
fscanf(fic,"%d ;%f \n", &p.code,&p.prix);
if(p.code==numrech){
fclose(fic);
return 1;
}
}while(!feof(fic));
fclose(fic);
return -1;
}
// consultation du produit a base de son code
void consult_produit(){
int codepro;
printf("entrer le code du produit\n");
scanf("%d", &codepro);
FILE*fic=fopen("Produits.txt","r");
do{
fscanf(fic,"\n code:%d;\n prix: %f\n", &p.code,&p.prix);
if(codepro==p.code){
printf("code\t:%d\n",p.code);
printf("prix\t:%f\n",p.prix);
}
}
while(!feof(fic));
fclose(fic);
}
//ajouter un nouveau produit
void ajouter_produit(){
FILE*fic=fopen("Produits.txt","a");
int num;
printf("Entrer le code du produit a ajouter\n");
scanf("%d",&num);
while(chargement(num)==1){
printf("\n ce numero existe deja\n");
printf("Entrer le code du produit a ajouter\n");
scanf("%d",&num);
}
p.code=num;
printf("entrer le prix du produit\n");
scanf("%f FCFA",&p.prix);
fprintf(fic,"%d\t%f\n",p.code,p.prix);
fclose(fic);
}
// sauvegarde des donnees dans un ficher
void save_produit(){
FILE*fic=fopen("Produits.txt","w");
fprintf(fic,"code:%d\t prix:%f",p.code,p.prix);
fclose(fic);
}
int main(){
int choix;
char reponse;
do{
printf("\n 1-Ajouter un produit \n");
printf("\n 2-Consulter un produit \n");
printf("\n 3-Quitter \n");
do{
printf("\n Entrer votre choix \n");
scanf("%d",&choix);
}while(choix<1||choix>3);
switch(choix){
case 1: ajouter_produit();
break;
case 2:consult_produit();break;
case 3:
break;
}
printf("\n voulez vous continuer?: O/N \n");
scanf("%s",&reponse);
fflush(stdin);
}while(reponse=='o'||reponse=='O');
} |