Vous êtes sur la page 1sur 17

#include "header.

h"

int main()

FILE*fichier=fopen("historique.txt","w");

tete= NULL;

int choix,num,res ;

char a[10];

char b[10];

char c[10];

char d[10];

char e[10];

do

choix=menu ();

switch (choix)

case 1 :

saisieWagon(&w,tete,w2);

tete=ajoutLoc(tete,w);

fichier=fopen("historique.txt","a");

fprintf(fichier,"Un Ajout A Ete Effectue\n");


fclose(fichier);

break ;

case 2 :

affiche(tete);

break;

case 3 :

//saisie numero

printf("Tapez le numero recherche : ");

scanf("%d",&num);

//recherche

res=rechercher(tete,num,&w2);

//resultat

if (res==0)

printf("Erreur Aucun Wagon Avec Ce Numero N'a Ete Trouve.\n");

else

printf("|| Numero: %d.\n",w2.numero);

if (w2.etat==0)

printf("|| Etat: Panne .\n");

else

printf("|| Etat: Fonctionnel.\n");

if(w2.type==1)

printf("|| Type: Wagon.\n");

else
printf("|| Type: Locomotive.\n");

}//fin else

break ;

case 4 :

tete=supprimer(tete);

printf("Suppresion Effectue Avec Succes\n");

fichier=fopen("historique.txt","a");

fprintf(fichier,"Une Suppression A Ete Effectue\n");

fclose(fichier);

break;

case 5 :

//SAISIE

do

printf("Tapez Le Numero Du Wagon Devant Lequel Vous Desirez Ajouter Un Wagon.\n");

printf("Si Le Numero Saisi Est Introuvable La Saisie Est A Refaire.\n");

scanf("%d",&num);

while(rechercher(tete,num,&w2)==0);

saisieWagon(&w,tete,w2);

ajoutWag(tete,num,w);

fichier=fopen("historique.txt","a");
fprintf(fichier,"Un Ajout A Ete Effectue\n");

fclose(fichier);

break;

case 6:

libererWagon(tete);

break;

case 7:

fichier=fopen("historique.txt","r");

while(!feof(fichier))

fscanf(fichier,"%s %s %s %s %s\n",a,b,c,d,e);

printf("%s %s %s %s %s\n",a,b,c,d,e);

fclose(fichier);

break;

}//FIN switch

while(choix!=0);

return 0;

}
#include "header.h"

int menu()

//DEB menu

int choix ;

do

printf("*********************************************\n");

printf("1-Ajouter Une Locomotive Ou Un Wagon.\n");

printf("2-Afficher Le Train.\n");

printf("3-Rechercher Un Wagon.\n");

printf("4-Supprimer Un Wagon.\n");

printf("5-Ajouter Un Wagon A Un Emplacement Specifique.\n");

printf("6-Liberer La Memoire Occupe .\n");

printf("7-Afficher L'Historique.\n");

printf("*********************************************\n");

printf("Choix: ");

scanf("%d",&choix);

while((choix<0)||(choix>7));

return (choix);
}//FIN menu

void saisieWagon(wagon*w,train tete,wagon w2)

//DEB saisie

int a=0;

do

printf("Tapez Le Numero: ");

scanf("%d",&(*w).numero);

if (tete!=NULL)

a=rechercher(tete,(*w).numero,&w2);

while(a==1);

do

printf("Tapez 0 Pour Type Locomotive.\nTapez 1 Pour Type Wagon.\n");

printf("Choix: ");

scanf("%d",&(*w).type);

}
while(((*w).type<0 )|((*w).type>1));

do

printf("Tapez 0 Pour Etat De Panne.\nTapez 1 Pour Etat Fonctionnel.\n");

printf("Choix: ");

scanf("%d",&(*w).etat);

while(((*w).etat<0 )|((*w).etat>1));

}//FIN saisie

train ajoutLoc(train tete,wagon w)

//DEB ajout

struct Cellule *Loc;

struct Cellule *parc=tete;

Loc=(struct Cellule*)malloc(sizeof(struct Cellule));


Loc-> w = w;

Loc-> suivant=NULL;

if(w.type==0)

//DEB ajout en tete

if(tete==NULL)

tete=Loc;

else

Loc->suivant=tete;

tete=Loc;

}//FIN ajout en tete

if(w.type==1)

//ajout en queue

if (tete==NULL)

tete=Loc;

else
{

while(parc->suivant!=NULL)

parc=parc->suivant;

parc->suivant=Loc;

}//fin else

}//fin if

return (tete) ;

}//FIN ajout

void affiche(train tete)

//DEB affiche
struct Cellule *parc=tete;

while (parc!=NULL)

printf("\n");

printf("|| Numero: %d.\n",parc->w.numero);

if (parc->w.etat==0)

printf("|| Etat: Panne .\n");

else

printf("|| Etat: Fonctionnel.\n");

if(parc->w.type==0)

printf("|| Type: Locomotive.\n");

else

printf("|| Type: Wagon.\n");

parc= parc-> suivant;

}//FIN while

int rechercher(train tete,int num,wagon *w2)


{

//DEB recherche

int res;

res=0;

struct Cellule *parc=tete;

while((parc->suivant!=NULL)&&(parc->w.numero!=num))

parc=parc->suivant;

}//fin while

if (parc->w.numero==num)

res=1;

(*w2)=parc->w;

}//fin if

return(res);

}//FIN recherche
train supprimer(train tete)

//DEB supprimer

struct Cellule * p=tete;

struct Cellule * q;

struct Cellule * parc=tete;

int verif;

do

verif=0;

q=p->suivant;

if (p->w.etat==0)

tete=q;

while((q->suivant!=NULL)&&(q->w.etat!=0))

p=p->suivant;
q=q->suivant;

if (q->w.etat==0)

p->suivant=q->suivant;

free(q);

parc=tete;

while((parc->suivant!=NULL)&&(parc->w.etat!=0))

parc=parc->suivant;

}//fin while

if (parc->w.etat==0)

verif=1;

while(verif==1);

return tete;

}//FIN supprimer
void ajoutWag(train tete,int num, wagon w)

//DEB ajout

struct Cellule* parc=tete;

struct Cellule *Loc;

Loc=(struct Cellule*)malloc(sizeof(struct Cellule));

Loc-> w = w;

Loc-> suivant=NULL;

while((parc->suivant!=NULL)&&(parc->w.numero!=num))

parc=parc->suivant;

if (parc->w.numero==num)

Loc->suivant=parc->suivant;

parc->suivant=Loc;

}//FIN AJOUT
void libererWagon(train tete)

//DEB liberer

struct Cellule* p;

while(tete!=NULL);

printf("a1\n");

p=tete;

printf("a2\n");

tete=tete->suivant;

printf("a3\n");

free(p);

printf("a4\n");

}//FIN libere
#ifndef HEADER_H_INCLUDED

#define HEADER_H_INCLUDED

#include <stdio.h>

#include <stdlib.h>

//Declaration des structures

typedef struct

int numero;

int type;

int etat;

} wagon ;

typedef struct Cellule

wagon w ;

struct Cellule * suivant ;

}*train;

train tete ;

wagon w ;

wagon w2 ;

//declaration des fonctionsd

int menu ();


void saisieWagon(wagon*w,train tete,wagon w2);

train ajoutLoc(train tete,wagon w);

void affiche(train tete);

int rechercher(train tete,int num,wagon *w2);

train supprimer(train tete);

void ajoutWag(train tete,int num,wagon w);

void libererWagon(train tete);

#endif // HEADER_H_INCLUDED

Vous aimerez peut-être aussi