Bonjour,
voila actuellement en etude informatique mon prof me donne un programme a faire en c++ qui repose sur l heritage et les templates de classe l 'idée est de creer une entreprise qui possede plusieur site, ayant chacun plusieur service dans lesquel travaille plusieur employe et cadre, seulement probleme en faisant comme il le souhaite le menu qui se trouve dans la classe entreprise a la fin permet d ajouter des sites et de saisir les informations relative a l entreprise mais ne permet pas de saisir de nouveaux ou employe ou cadre travaillant dans ce service. Si quelqu un voit comme faire sa m aiderai bocou.
voila le code et merci d avance a tous:
#include <string>
#include <iostream>
#include <stdlib.h>
using namespace std;
//__________________ DECLARATION DES CLASSES__________________ //
template<class T>
class element
{
private:
T donnee;
element<T> * suivant;
public:
element();
void saisir();
void afficher();
int retour_id();
string retour_critere();
void modif_suivant(element<T>*);
element<T> * retour_suivant();
T retour_donnee();
};
template<class T>
class liste
{
private:
element<T> * tete_liste;
int nbelement;
public:
liste();
void ajouter();
void afficher_tout();
void consulter();
void vider();
void supprimer();
void trier();
void gerer();
};
//__________________ REALISATION DES METHODES__________________ //
template<class T>
element <T> :: element()
{
this->suivant = NULL;
}
template<class T>
void element<T> :: saisir()
{
this->donnee.saisir();
}
template<class T>
void element<T> :: afficher()
{
this->donnee.afficher();
}
template<class T>
int element <T> :: retour_id()
{
return this->donnee.retour_id();
}
template<class T>
string element<T> :: retour_critere()
{
return this->donnee.retour_critere();
}
template<class T>
element<T> * element<T> :: retour_suivant()
{
return this->suivant;
}
template<class T>
void element<T> :: modif_suivant(element<T> *s)
{
this->suivant = s;
}
template<class T>
T element<T> :: retour_donnee()
{
return this->donnee;
}
template <class T>
liste<T> :: liste()
{
this->nbelement=0;
this->tete_liste=NULL;
}
template<class T>
void liste<T> :: ajouter()
{
element<T> *e;
e = new element<T>();
e->saisir();
if(this->tete_liste == NULL)
{
this->tete_liste=e;
}
else
{
e->modif_suivant(this->tete_liste);
this->tete_liste = e;
}
this->nbelement++;
}
template<class T>
void liste<T> :: afficher_tout()
{
element<T> * e;
e = this->tete_liste;
while(e!=NULL)
{
e->afficher();
e=e->retour_suivant();
}
}
template<class T>
void liste<T> :: consulter()
{
int id;
cout <<"Saisir l'ID a rechercher : ";
cin >> id;
bool trouve = false;
element<T> * e = tete_liste;
while(trouve == false && e!=NULL)
{
if(e->retour_id() == id)
{
trouve = true;
}
else
e=e->retour_suivant();
}
if(trouve == false)
cout <<"ID inexistant " << endl;
else
e->afficher();
}
template<class T>
void liste<T> :: vider()
{
this->tete_liste = NULL;
}
template<class T>
void liste<T> :: supprimer()
{
int id;
cout << "Saisir l'id a rechercher : "<<endl;
cin >> id;
bool trouve = false;
element<T> * e = this->tete_liste;
element<T> * prec = e;
while(trouve == false && e!=NULL)
{
if(id == e->retour_id())
trouve = true;
else
{
prec = e;
e=e->retour_suivant();
}
}
if(trouve == false)
cout << "Aucun id correspondant ";
else
{
if(e == this->tete_liste)
{
this->tete_liste = e->retour_suivant();
delete(e);
}
else if(e->retour_suivant()==NULL)
{
prec->modif_suivant(NULL);
delete(e);
}
else
{
prec->modif_suivant(e->retour_suivant());
delete(e);
}
}
}
template <class T>
void liste<T>::trier()
{
element<T> *p,*q;
element<T> *temp=new element<T>();
p=this->tete_liste;
while(p->retour_suivant()!=NULL)
{
q=p->retour_suivant();
while(q!=NULL)
{
if(p->retour_critere()>q->retour_critere())
{
*temp=*p;
*p=*q;
*q=*temp;
temp->modif_suivant(p->retour_suivant());
p->modif_suivant(q->retour_suivant());
q->modif_suivant(temp->retour_suivant());
}
q=q->retour_suivant();
}
p=p->retour_suivant();
}
delete temp;
}
template <class T>
void liste<T>::gerer()
{
int choix;
do{
cout<<"1-ajouter"<<endl;
cout<<"2-afficher tout"<<endl;
cout<<"3-consulter"<<endl;
cout<<"4-vider"<<endl;
cout<<"5-suppression"<<endl;
cout<<"6-trier"<<endl;
cout<<"Votre choix?"<<endl;
cin>>choix;
switch(choix)
{
case 1: this->ajouter();break;
case 2: this->afficher_tout();break;
case 3: this->consulter();break;
case 4: this->vider();break;
case 5: this->supprimer();break;
case 6: this->trier();break;
}
}while(choix!=0);
}
class personne
{
protected: int id_personne;
string nom,prenom;
public: personne();
void saisir();
virtual void afficher()=0;
int retour_id();
string retour_critere();
};
personne::personne()
{
this->nom=this->prenom="";
this->id_personne=0;
}
void personne::saisir()
{
cout<<"saisir l'id: "<<endl;
cin>>this->id_personne;
cout<<"saisir le nom: "<<endl;
cin>>this->nom;
cout<<"saisir le prenom: "<<endl;
cin>>this->prenom;
}
void personne::afficher()
{
cout<<"id: "<<this->id_personne<<endl;
cout<<"nom: "<<this->nom<<endl;
cout<<"prenom: "<<this->prenom<<endl;
}
int personne::retour_id()
{
return this->id_personne;
}
string personne::retour_critere()
{
return this->nom;
}
class employe:public personne
{
private: string poste;
public: employe();
void saisir();
void afficher();
};
employe::employe()
{
this->poste="";
}
void employe::saisir()
{
this->personne::saisir();
cout<<"saisir le poste occupe: "<<endl;
cin>>this->poste;
}
void employe::afficher()
{
this->personne::afficher();
cout<<"poste occupe: "<<this->poste<<endl;
}
class cadre:public personne
{
private: string responsabilite;
public: cadre();
void saisir();
void afficher();
};
cadre::cadre()
{
this->responsabilite="";
}
void cadre::saisir()
{
this->personne::saisir();
cout<<"saisir la responsabilite: "<<endl;
cin>>this->responsabilite;
}
void cadre::afficher()
{
this->personne::afficher();
cout<<"responsabilite: "<<endl;
}
class directeur:public cadre
{
private: string qualification;
public:directeur();
void saisir();
void afficher();
};
directeur::directeur()
{
this->qualification="";
}
void directeur::saisir()
{
this->cadre::saisir();
cout<<"saisir la qualification: "<<endl;
cin>>this->qualification;
}
void directeur::afficher()
{
this->cadre::afficher();
cout<<"qualification: "<<endl;
}
class service
{
private: int id,numero_etage;
string designation;
liste<employe> liste_e;
liste<cadre> liste_c;
public: service();
void saisir();
void afficher();
void gerer_cadre();
void gerer_employe();
int retour_id();
string retour_critere();
void gerer();
};
service::service()
{
this->id=this->numero_etage=0;
this->designation="";
}
void service::saisir()
{
cout<<"saisir l'id du service: "<<endl;
cin>>this->id;
cout<<"saisir la designation: "<<endl;
cin>>this->designation;
cout<<"saisir le numero de l'etage: "<<endl;
cin>>this->numero_etage;
}
void service::afficher()
{
cout<<"id du service: "<<this->id<<endl;
cout<<"designation: "<<this->designation<<endl;
cout<<"numero de l'etage: "<<this->numero_etage<<endl;
}
void service::gerer_cadre()
{
this->liste_c.gerer();
}
void service::gerer_employe()
{
this->liste_e.gerer();
}
int service::retour_id()
{
return this->id;
}
string service::retour_critere()
{
return this->designation;
}
void service::gerer()
{
int choix;
do{
cout<<"****MENU SERVICE*****"<<endl<<endl;
cout<<"1-Menu employe"<<endl;
cout<<"2-Menu cadre"<<endl;
cout<<"Votre choix?"<<endl;
cin>>choix;
switch(choix)
{
case 1: this->gerer_employe();break;
case 2: this->gerer_cadre();break;
}
}while(choix!=0);
}
class site
{
private: int id,cp;
string designation,adresse;
directeur mondirecteur;
string ville;
liste<service> liste_service;
public: site();
void saisir();
void afficher();
void gerer_service();
void gerer();
int retour_id();
string retour_critere();
};
site::site()
{
this->designation=this->adresse="";
this->id=this->cp=0;
this->ville="";
}
void site::saisir()
{
cout<<"saisir l'id: "<<endl;
cin>>this->id;
cout<<"saisir la designation: "<<endl;
cin>>this->designation;
cout<<"saisir l'adresse: "<<endl;
cin>>this->adresse;
cout<<"saisir le CP: "<<endl;
cin>>this->cp;
cout<<"saisir la ville: "<<endl;
cin>>this->adresse;
cout<<"saisir le directeur: "<<endl;
this->mondirecteur.saisir();
}
void site::afficher()
{
cout<<"id: "<<this->id<<endl;
cout<<"designation: "<<this->designation<<endl;
cout<<"adresse: "<<this->adresse<<endl;
cout<<"CP: "<<this->cp<<endl;
cout<<"ville: "<<this->adresse<<endl;
cout<<"directeur du site: "<<endl;
this->mondirecteur.afficher();
}
void site::gerer_service()
{
this->liste_service.gerer();
}
void site::gerer()
{
int choix;
do{
cout<<"****MENU SITE*****"<<endl<<endl;
cout<<"1-Menu service"<<endl;
cout<<"0-quitter"<<endl;
cout<<"Votre choix?"<<endl;
cin>>choix;
switch(choix)
{
case 1: this->gerer_service();break;
}
}while(choix!=0);
}
int site::retour_id()
{
return this->id;
}
string site::retour_critere()
{
return this->designation;
}
class entreprise
{
private: string designation;
string sigle;
directeur mon_directeur;
string secteur;
liste<site> liste_site;
public: entreprise();
void saisir();
void afficher();
void gerer_site();
void menu();
};
entreprise::entreprise()
{
this->designation="";
this->sigle="";
this->secteur="";
}
void entreprise::saisir()
{
cout<<"saisir la designation de l'entreprise: "<<endl;
cin>>this->designation;
cout<<"saisir le sigle: "<<endl;
cin>>this->sigle;
cout<<"saisir le secteur: "<<endl;
cin>>this->secteur;
cout<<"saisir directeur: "<<endl;
mon_directeur.saisir();
}
void entreprise::afficher()
{
cout<<"designation de l'entreprise: "<<this->designation<<endl;
cout<<"sigle: "<<this->sigle<<endl;
cout<<"secteur: "<<this->secteur<<endl;
cout<<"directeur: "<<endl;
mon_directeur.afficher();
}
void entreprise::gerer_site()
{
this->liste_site.gerer();
cout<<endl;
cout<<"*****menu service*****"<<endl;
this->liste_site.gerer();
}
void entreprise::menu()
{
int choix;
do{
cout<<"*********MENU GENERAL*******"<<endl<<endl;
cout<<"1-saisir"<<endl;
cout<<"2-afficher"<<endl;
cout<<"3-menu site"<<endl;
cout<<"0-quitter"<<endl;
cout<<"Votre choix?"<<endl;
cin>>choix;
switch(choix)
{
case 1: this->saisir();break;
case 2: this->afficher();break;
case 3: this->gerer_site();break;
}
}while(choix!=0);
}
int main()
{
entreprise e;
e.menu();
return 0;
}
Afficher la suite