begin process at 2012 05 29 20:08:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Problème avec liste chainée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec liste chainée

vendredi 15 juin 2007 à 20:10:23 | Problème avec liste chainée

quiz82



salut tout le monde g un programme qui gere des RDV en C++ et j aimerai rajouter des fonctions pour annuler ou supprimer un RDV, et une fonction qui m indique que le jour du RDV est ferrié.
Si quelqu'un peut m'aider ça serai Super.
merci d'avance.

#include <iostream.h>
#include <fstream.h> // pour declarer  les 2 classes ostream et istream
#include <string.h>
#include <stdio.h>


class RDV
{
      protected:
                char Nom[10+1];
                char Prenom[10+1];
                char Date[10+1];
                char Heure[10+1];
      public:
             RDV(char*No="", char*Pre="", char *Dat="", char *Heu="");

             virtual void Affiche(); //definition de fonctions virtuelles
             virtual void Saisir();

             RDV*pSuivant; // pointeur vers l'objet suivant
  
 // redefinition des operateurs de flux en liaison avec la librairie iostream
        // déclarée en friend pour acceder a tous les membres de la classe Eleve grace a un
 // pointeur de la classe Eleve*
  friend ostream& operator<<(ostream& out,RDV*v); // objet de type ostream pour ecrire
                                                    //dans un fichier
  friend istream& operator>>(istream& in,RDV*v);// objet de type istream pour lire un 
                                                  // fichier
};

// la classe Ecole gere une liste d'objet Eleve
class Liste
{
      private :
              RDV*pPremier;
              RDV*pCourant;
              public :
                     Liste();
                     virtual ~Liste();
                     void Ajouter(RDV *pEle);
                     void AfficheTout();
                     void Enregistrer();
                     void Recuperer();
};
// définition d'un constructeur pour la classe Eleve
RDV::RDV(char *No, char *Pre, char *Dat, char *Heu)
{
 // initialisation des chaines
         strcpy(Nom, No);
         strcpy(Prenom, Pre);
         strcpy(Date, Dat);
         strcpy(Heure, Heu);
         pSuivant = NULL;
}

// fonction qui affiche a l'ecran toutes les donnees membres
void RDV::Affiche()
{
 // affiche le contenu avec alignement a gauche
     cout.setf(ios::left, ios::adjustfield);
     cout<< " Nom : ";
 // width permet de definir le nombre de caractere maxi
     cout.width(10);
     cout<<Nom;
     cout<< " Prenom : ";
     cout.width(10);
     cout<<Prenom;
     cout<< " Date du RDV : ";
     cout.width(10);
     cout<<Date;
     cout<< " A  ";
     cout.width(10);
     cout<<Heure;
     cout<<endl;
}

void RDV::Saisir()
{
     cout<< " Nom : ";
 // getline() permet de saisir des chaines de caracteres avec des espaces
 // sizeof(Nom) correspond a la taille de la chaine (Nom[10+1])
     cin.getline(Nom, sizeof(Nom) );
     cout<< " Prenom : ";
     cin.getline(Prenom, sizeof(Prenom) );
     cout<< " Date du RDV : ";
     cin.getline(Date, sizeof(Date) );
     cout<< " Heure du RDV : ";
     cin.getline(Heure, sizeof(Heure) );
}

// objet de type ostream pour ecrire dans un  fichier                                            
// l'operateur << redéfini au niveau de la classe Eleve est utilise pour sauvegarder les
// données membres de chaque objet en séparant chaque valeur par un ';'            
ostream& operator <<  (ostream& out, RDV* v)
{
         out<< v->Nom       << ';';
         out<< v->Prenom    << ';';
         out<< v->Date << ';';
         out<< v->Heure << ';';
        
         return out;
}
// objet de type istream pour lire un fichier
// redefinition de l'operateur de flux >> pour la recuperation de donnees
istream& operator >> (istream& in, RDV* v)
{
   //récuperation des donnees du Fichier (voir fonction Recuperer()) jusqu'au caractere ';'
         in.getline( v->Nom, sizeof(v->Nom),';' );
         in.getline( v->Prenom, sizeof(v->Prenom),';' );
         in.getline( v->Date, sizeof(v->Date),';' );
         in.getline( v->Heure, sizeof(v->Heure),';' );
        
         return in;
}

// définition d'un constructeur pour la classe Ecole
Liste::Liste()
{
              pPremier=NULL;
              pCourant=NULL;
              Recuperer();
}

// fonction appelee par le destructeur de la classe Ecole
void Liste::Enregistrer()
{
 //destrcution du fichier ECOLE.TXT
     remove("LISTE.TXT");
 // ouverture en ecriture grace a la creation de l'objet ofstream
     ofstream Fichier("LISTE.TXT");
 // test d'ouverture du fichier
     if (!Fichier) return;
    
     RDV*pTemp;// pointeur vers l'objet Eleve
     pTemp=pPremier;
  
 // boucle qui permet de parcourir la liste chainee afin de sauvegarder chaque objet
        //de cette liste
     while(pTemp)
     {
                 Fichier<< pTemp ;
                 pTemp=pTemp->pSuivant;
     }
}

// fonction pour lire le fichier Liste rdv.TXT qui sera cree.
void Liste::Recuperer()
{
 //creation de l'objet ifstream pourlire le fichier
     ifstream Fichier("LISTE.TXT");
 // test pour savoir si l'ouverture du fichier a reussi sinon on quitte la fonction
     if (!Fichier) return;
    
     RDV *pTemp; //pointeur vers l'objet pTemp
    
 // boucle qui permet de balayer le fichier jusqu'a la fin (!Fichier.eof())
     while (!Fichier.eof())
     {
           pTemp = new RDV;// creation d'un objet de type Eleve
           Ajouter(pTemp);// puis ajouter a Ecole grace a la fonction Ajouter()
           Fichier>> pTemp;//initialisation de l'objet pTemp par le flux Fichier
           Fichier>> ws;    // enlever les espaces eventuels
     }
}
 
// fonction Ajouter avec objet de type Eleve     
void Liste::Ajouter(RDV *pEle)
{
 // condition si pointeur est sans valeur
     if (pPremier==NULL)
     {
 //initialisation des pointeurs grace a l'objet
               pPremier = pEle;
               pCourant = pEle;
     }
     else
     {
         pCourant->pSuivant = pEle;
         pCourant = pCourant->pSuivant;
     }
}

// fonction qui permet d'afficher la totalite du fichier
void Liste::AfficheTout()
{
     RDV *pTemp;
     pTemp=pPremier;
 
 // boucle qui appelle la fonction Affiche() pour afficher chaque objet du fichier a
        // la fois 
     while(pTemp)
     {
                 pTemp->Affiche();
                 pTemp=pTemp->pSuivant;
     }
}

// destructeur de la classe Ecole
Liste::~Liste()
{
 // appel de la fonction Enregistrer avant appel du destructeur
   Enregistrer();
      if (pPremier)
        delete pPremier;
}

   // fonction main()
int main()
{
 // création d'un objet Cours de type Ecole
    Liste Cours;
 // initialistion des pointeurs
    RDV *pEle=NULL;
    int Option = 0;
 
// boucle pour le choix des options  
    while (1)
    {
          cout<< "\nChoisissez une option de menu :\n";
          cout<< "  1-Saisir un RDV\n  2-Afficher La Liste des RDV\n  3-Heure du RDV\n 0-Pour quitter): ";
  //recuperation de votre choix
          cin>>Option;
    //annule le \n       
          cin.ignore();
         
          switch(Option)
          {
           case 1 : pEle = new RDV;
                    pEle->Saisir();
                    Cours.Ajouter(pEle);
                    break;

           case 2 : Cours.AfficheTout();
           break;

           case 0 : return 0;

           default : cout<< "\nChoix invalide\a\n";
           continue;
           }
    }
}



Cette discussion est classée dans : fichier, objet, liste, cout, rdv


Répondre à ce message

Sujets en rapport avec ce message

liste contenant un objet d'une de mes classes [ par Eric ] Salut,Je voudrais créer une liste contenant comme objet une de mes classes..par exemplelist ma_Liste_de_ma_Classe;mais je ne sais pas comment m'y pre Ecriture/lecture dans un fichier [ par SneakGuy ] Haaa... Merci, sa m'a aider... Enfin, j'ai encore plusieurs problemes...pour l'ecriture j'ai quelque chose qui ressemble a sa:char user[20];char pass[ tableau d'objet comme variable d'instance [ par MrKribou ] Bon dans le fichier .h (ou fait c comment qu'on appele se fichier la ? header ?) comment declare ton un tableau d'objet comme variable d'instance.Par les listes chaînées C. [ par ayour ] veuillez m evoyer une solution pour l ennonce suivant : merci a tt le monde.Matière exercée: les listes chaînées.Les services de renseignements possèd NEED HELP VISUAL STUDIO & .exe [question simple enfin je crois...] [ par starkrous ] voila j'ai visual studio j'ai mon .cpp quand je crée un .exe pas de probleme ça marche nikel, sauf que je me suis rendu compte que ce .exe ne marchait problème tri d'une liste d'objet ! [ par tomsawyerbelgique ] Bonjour, j'aimerais savoir comment on fait pour surdéfinir un foncteur de tri de liste d'objet. C'est objet sont des pointeurs sur une structure et la Lecture d'un fichier texte pour mettre dans une liste chainée [ par webgladiator ] Merci de prendre du temps à me lire.J'ai un projet d'info dont le but est d'effectuer le plus court itinéraire dans le metro parisien (opimisation).J' ouverture et écriture dans un executable [ par chycago ] bonjour je suis en train de faire une sorte de patcheur qui me permet de changer quelques octets d'un programme le problème c'est que l'ouverture du f fichier exel (lecture et ecriture) [ par rissorg ] Bonjour a tous!j'essaye de faire un programme qui doit lire differents fichiers exel ,comparer les donnees lu au donnees contenu dans un fichier text LISTE D'OBJET ... heeeeeeeeeeelpppppppppppp [ par antgre ] Bonjour,J'ai encore un petit probleme ;-)Je dois créer une liste d'obljet POINT ... La classe point a été définie et fonctionne très bien, la classe l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 17,082 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales