erraji khalid
26 avril 2010 à 08:53
voici un programe qui contient 7 operations ajouter une liste entete,ajouter en fin,inserer une liste,afficher tous,rechercher par reference et afficher,la suppression d'une liste,modifier une liste.
concernant la gestion d'un produit(reference,nom,prix de vente ,prix d'achat)
il suffit seulement d 'avoir un sens d'imagination et de bien ce concentrer et aprés c'est sur qu'il
apparaitera que c'est simple
je souhaite qu'il vous plais,bon courage!!!
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct produit{
int ref;
char nom[30];
float p_vente,p_achat;
produit* next;
};
produit* ajouter_produit_entete(produit* list){
produit* nv=(produit*)malloc(sizeof(produit));
if(list==NULL){
printf("on va initialiser par la premiere liste\n");
}
printf("donner le ref de produit");
scanf("%d",&(*nv).ref);
produit* tmp;
tmp=list;
while(tmp!=NULL){
if(tmp->ref==nv->ref){
printf(" ce ref exist deja essayez encore\n");
return list;
goto sortie;
}
tmp=tmp->next;
}
printf("donner lenom de produit");
scanf("%s",(*nv).nom);
printf("donner la prix d'achat ");
scanf("%f",&(*nv).p_achat);
printf("donner la prix de vente");
scanf("%f",&(*nv).p_vente);
nv->next=list;
return nv ;
sortie:;
}
void afficher_tout(produit*list){
produit* tmp;
tmp=list;
if(tmp==NULL){
printf("acune liste a afficher ajoutez une\n");
}
while(tmp!=NULL){
printf("le ref de produit est:%d\n",tmp->ref);
printf("le nom de produit est:%s\n",tmp->nom);
printf("le prix d'achat de produit est:%f\n",tmp->p_achat);
printf("le prix de vente de produit est:%f\n",tmp->p_vente);
tmp=tmp->next;
}
}
produit* ajouter_enfin(produit*list){
produit* nv=(produit*)malloc(sizeof(produit));
if(list==NULL){
printf("on va initialiser par la premiere liste liste\n");
}
printf("donner le ref de produit");
scanf("%d",&(*nv).ref);
produit* tmp;
tmp=list;
while(tmp!=NULL){
if(tmp->ref==nv->ref){
printf(" ce reference concerne un autre produit\n");
return list;
goto sortie ;
}
tmp=tmp->next;
}
printf("donner lenom de produit");
scanf("%s",(*nv).nom);
printf("donner la prix d'achat ");
scanf("%f",&(*nv).p_achat);
printf("donner la prix de vente");
scanf("%f",&(*nv).p_vente);
nv->next=NULL;
if(list==NULL){
return nv;
}else{
produit*tmpe;
tmpe=list;
while(tmpe->next!=NULL){
tmpe=tmpe->next;
}
tmpe->next=nv;
return list;
}
sortie:;
}
produit* inserer_une_liste(produit* list){
if(list==NULL){
printf("on va initialiser par la premiere liste car elle n' existe aucune \n");
}
produit* nv=(produit*)malloc(sizeof(produit));
printf("donner le ref de produit");
scanf("%d",&(*nv).ref);
produit* tmp;
tmp=list;
while(tmp!=NULL){
if(tmp->ref==nv->ref){
printf(" ce ref exist deja essayez encore\n");
return list;
goto sortie ;
}
tmp=tmp->next;
}
printf("donner lenom de produit");
scanf("%s",(*nv).nom);
printf("donner la prix d'achat ");
scanf("%f",&(*nv).p_achat);
printf("donner la prix de vente");
scanf("%f",&(*nv).p_vente);
if(list==NULL){
nv->next=list;
return nv;
}else{
printf("donner le ref de produit que vous voulez inserer apre");
int a;
scanf("%d",&a);
produit* tmp;
tmp=list;
while(tmp->ref!=a ){
tmp=tmp->next;
if(tmp==NULL){
printf("ereure!!! vous ne devez pas donner le ref du produit que vous ");
printf("voulez inserer mais celui d'un autre qui existe deja\n");
return list;
goto sortie ;
}
}
nv->next=tmp->next;
tmp->next=nv;
return list;
}
sortie:;
}
void rechercher_par_ref_et_affiche(produit*list){
printf("donner le ref de produit que vous voulez afficher");
int a;
scanf("%d",&a);
produit* tmp;
tmp=list;
while(tmp->ref!=a ){
tmp=tmp->next;
if(tmp==NULL){
printf("le ref du produit que vous voulez afficher n'existe pas\n ");
goto sortie;
}
}
printf("le ref de produit est:%d\n",tmp->ref);
printf("le nom de produit est:%s\n",tmp->nom);
printf("le prix d'achat de produit est:%f\n",tmp->p_achat);
printf("le prix de vente de produit est:%f\n",tmp->p_vente);
sortie:;
}
produit* supprimer(produit* list){
if(list==NULL){
goto sortie1;
}
printf("donner le ref de produit que vous voulez supprimer");
int a;
scanf("%d",&a);
produit* tmp;
tmp=list;
while(tmp!=NULL){
if(tmp->ref==a){
printf(" la liste concernant ce produit va etre suprime\n");
goto sortie2 ;
}
tmp=tmp->next;
}
if(tmp==NULL){
printf("le ref que vous avez donner n'existe pas\n");
goto sortie3;
}
sortie2:
if(tmp==list){
list=list->next;
}else{
produit*tmp2;
tmp2=list;
while(tmp2->next!=tmp){
tmp2=tmp2->next;
}
tmp2->next=tmp->next;
free(tmp);
};
return list;
sortie1:
printf("elle n'y a aucune liste a supprimer vous devez ajouter au moins une\n");
return list;
sortie3:
return list;
}
produit* modifier(produit*list){
if(list==NULL){
printf(" elle n'existe aucune liste a modifier\n");
return list;
}else{
printf("donner le ref de produit que vous voulez modifier\n------->");
int a;
scanf("%d",&a);
produit *tmp;
tmp=list;
while(tmp->ref!=a){
tmp=tmp->next;
if(tmp==NULL){
goto sortie1;
}
}
printf("donnez le nouveau ref");
int b;
scanf("%d",&b);
produit * tmpe;
tmpe=list;
if(tmp->ref!=b){
while(tmpe!=NULL){
if(tmpe->ref==b){
goto sortie2;
}
tmpe=tmpe->next;
}
}
tmp->ref=b;
printf("donner lenom de produit");
scanf("%s",tmp->nom);
printf("donner la prix d'achat ");
scanf("%f",&tmp->p_achat);
printf("donner la prix de vente");
scanf("%f",&tmp->p_vente);
return list;
sortie1:;
printf("ce ref n'exite pas\n");
return list;
sortie2:;
printf("c'est un reference concernant un autre produit!!!!???\n");
return list;
}
}
void Menu(produit* list){
int a;
while(a!=0){
printf("--------------------------*****bonjour:******--------------------------");
printf("\n voila le menue :\n0-pour exit\n1-ajouter une liste entete");
printf("\n2-ajouter en fin\n3-inserer une liste\n4-afficher tous\n");
printf("5-rechercher par ref et afficher\n6-la suppression d'une liste\n7-modifier une liste\ndonner le numero de la tahe que vous voulez executer\n ---->");
scanf("%d",&a);
switch(a){
case 1: list= ajouter_produit_entete(list);break;
case 4: afficher_tout(list);break;
case 2: list=ajouter_enfin(list);break;
case 3:list= inserer_une_liste(list);break;
case 5: rechercher_par_ref_et_affiche(list);break;
case 6: list = supprimer(list);break;
case 7: list =modifier(list);break;
default : printf("\n ----------------------------\n ****** Indice hors limites !! *******\n-------------------------\n");break;
}
}
}
main(){
produit* la_liste;
la_liste=NULL;
Menu(la_liste);
}