#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct recette { char * nom;
struct ingredient * ing;
char * tps;
char * facon;
struct recette * rec_suiv;
}recette;
typedef struct ingredient {char * nom_ing;
char * quantite;
struct ingredient * ing_suiv;
}ingredient;
typedef struct recette * liste_recettes;
void affiche_ingredient(ingredient i){
printf(" %s : %d \n",i.nom_ing,i.quantite);
if (i.ing_suiv!=NULL) affiche_ingredient(*i.ing_suiv);}
void affiche_recette(recette r){
printf("\n\n %s \n\n",r.nom);
affiche_ingredient(*r.ing);
printf("temps de preparation : %d minutes \n\n",r.tps);
printf("instructions : %s ",r.facon);
system("PAUSE" );
system("cls" );
menu();}
void recherche_selon_nom(liste_recettes l){
char *chaine;
chaine=malloc(sizeof(char));
printf("\n\n\n Ecrivez le nom de la recette que vous souhaitez afficher : " );
getchar();gets(chaine);
if (l==NULL) printf("la recette ne fais pas partie du fichier source" );
else if (strcmp(chaine,l->nom)==0) affiche_recette(*l);
else recherche_selon_nom(l->rec_suiv);
}
void recherche_selon_tps_mini(liste_recettes l,int i){
int f;
if (l==NULL) {printf(" " );}
else {f=i;}
}
void recherche_noms_ingredients(liste_recettes l){
}
void recherche_ingredient_quantite(liste_recettes l){
}
void inserer_recette_fin_liste(char a[1000],liste_recettes l) {
char t0[1000];
recette *r;
strcpy(t0,a);
if (l==NULL) {r=(liste_recettes )malloc(sizeof(recette));
r->nom=strtok(t0,":" );
strtok(NULL,":" );
// creer_ingredient(t0,(*r).liste_ing);
r->tps=strtok(NULL,":" );
r->facon=strtok(strrchr(t0,':'),"\n" );
r->rec_suiv=NULL;
r->ing=NULL;
l=r; }
else inserer_recette_fin_liste(t0,l->rec_suiv);
}
void effacer_tab(char t[1000]){
int i;
for (i=0;i<strlen(t);i++) {
t[i]=' ';}
t[0]='\0';}
void structure (liste_recettes l) {
FILE *r;
char a[1000],c;
int i=0,k;
r= fopen("recettes.dat", "r" );
if (!r) {printf ("*** Impossible d'ouvrir le fichier ***\n" );
system("PAUSE" );
menu();
}
else{
do {
if( k=!feof(r))
{
do{
c=fgetc(r);
a[i]=c;
i++;
} while (c!='\n');
// inserer_recette_fin_liste(a,l);
i=0;
// effacer_tab(a);
}
} while(k);
}
}
liste_recettes creer_liste(){
return NULL ; }
void ajout_recette(){
FILE *recet;
char mot[200];
int i,j;
recet= fopen ("recettes.dat", "a" );
if (!recet)
{printf ("*** Impossible d'ouvrir le fichier ***\n" );
system("PAUSE" );
system("cls" );
menu();
}
else system("cls" );printf("\n\n" );
fseek(recet, 0, SEEK_END);
printf("Ecrivez le nom de la recette:" );
getchar();gets(mot);
strcat(mot,":" );
fprintf(recet, "%s", mot);
printf("combien y a t il d ingredients differents ? " );scanf("%d",&i);
while(i!=0){
printf("Ecrivez le nom de l ingredient : " );
getchar();gets(mot);
strcat(mot,"," );
fprintf(recet, "%s", mot);
printf("Ecrivez la quantite de l\' ingredient : " );
scanf("%d",&j);
fprintf(recet, "%d", j);
if (i==1) {fprintf(recet, "%s", ":" );}
else {fprintf(recet, "%s", ";" );}
i=i-1; }
printf("Ecrivez la duree approximative en minute de preparation de la recette : " );
scanf ("%s", &mot);
strcat(mot,":" );
fprintf(recet, "%s", mot);
printf("Saisissez la recette : " );
getchar();gets(mot);
strcat(mot,"\n" );
fprintf(recet, "%s", mot);
fclose(recet);
}
int menu(liste_recettes l){
int i,j;
l=NULL;
structure(l);
printf(" ==================\n | Projet de C |\n ==================\n\n\n\n\n 1.Recherche de Recette \n\n\n\n 2.Ajout de recette \n\n\n\n 3.Exit\n\n\n\n\n\n" );
printf("Faites votre choix 1 , 2 ou 3 : " );scanf("%d",&i);
if ((i!=1)&&(i!=2)&&(i!=3)) {system("cls" );
printf("\n\n\n\n Vous n\' avez pas tape le bon chiffre , appuyez sur une touche et recommencez \n\n\n" );
system("PAUSE" );
system("cls" );
menu(l);}
switch(i){
case 1: system("cls" );
printf(" \n\n\nRecherche:\n----------\n\n\n 1.selon le nom de la recette \n\n\n 2.selon le temps de preparation \n\n\n 3.selon les ingredients presents dans la recette \n\n\n 4.selon le(s) couple(s) quantite-ingredient \n\n\n 5.Retour \n\n\n\n Faites votre choix : " );scanf("%d",&j);
switch(j){case 1: system("cls" );
recherche_selon_nom(l);
system("PAUSE" );
system("cls" );
menu(l);
break;
case 2:break;
case 3:break;
case 4:break;
case 5:system("cls" );
menu(l);
break;
}
break;
case 2: system("cls" );
printf(" \n\n\n\n\n\n 1.Ajouter Recette \n\n\n\n 2.Retour \n\n\n\n\n\n Faites votre choix : " );scanf("%d",&j);
switch(j){case 1:ajout_recette();
system("cls" );
menu(l);
break;
case 2:system("cls" );
menu(l);
break;
}
case 3:system("cls" );
printf("\n\n\n\n\n\n\n A BIENTOT \n\n\n\n\n\n\n\n\n\n\n" );
break;
}
}
main ()
{
liste_recettes l;
menu(l);
system("PAUSE" );
}