Gestion du personnel en c++

Résolu/Fermé
sony4332 Messages postés 4 Date d'inscription dimanche 16 novembre 2014 Statut Membre Dernière intervention 18 novembre 2014 - 16 nov. 2014 à 23:54
sony4332 Messages postés 4 Date d'inscription dimanche 16 novembre 2014 Statut Membre Dernière intervention 18 novembre 2014 - 18 nov. 2014 à 00:11
Bonsoir j'ai une exercice en c++ donner par mon prof et j'arrive pas a décoler si possible d'avoir votre aide merci!

Exercice:

Soit une société qui a à gérer des informations sur son personnel. Elle emploie au maximum 100 personnes.
Pour chaque employé, elle enregistre le nom, le prénom, l'adresse, le sexe et, s'il s'agit d'un homme, la
situation militaire (libéré, exempté, réformé ou incorporable), s'il s'agit d'une femme, son nom de jeune
fille. Une adresse contient un numéro, un nom de rue, un code postal et un nom de localité. Un nom ne
dépasse jamais 30 caractères.
1. Proposer les structures de données nécessaires pour représenter ces informations.
2. Ecrire une fonction permettant de saisir respectivement une adresse et un employé.(passage
par référence)
3. Ecrire une fonction permettant d'afficher respectivement une adresse et un employé
4. Ecrire une fonction permettant d'obtenir respectivement le nombre d'employés de sexe
masculin et de sexe féminin. Utiliser la fonction qui teste si un employé est un homme.
(bool)
5. Ecrire une fonction permettant d'obtenir le nombre d'employés d'un sexe donné, par défaut
le nombre d'hommes. (Paramètre par défaut)
6. Ecrire une fonction qui classe les employés par ordre alphabétique.
7. Proposer, à partir ces fonctions ci-dessus, un programme qui gère les informations du
personnel de la société.

2 réponses

Bonjour,

Commencer par écrire vos struct, contenant toute les données nécessaire pour ensuite réalisé vos fonctions :
Exemple de struct

#include <iostream>
#include <vector>

struct Date {
int jour, mois, annee;
};
struct Personne {
string nom, prenom;
Date ddn; // date de naissance
};
2
sony4332 Messages postés 4 Date d'inscription dimanche 16 novembre 2014 Statut Membre Dernière intervention 18 novembre 2014
17 nov. 2014 à 23:57
merci!!!
0
sony4332 Messages postés 4 Date d'inscription dimanche 16 novembre 2014 Statut Membre Dernière intervention 18 novembre 2014
18 nov. 2014 à 00:10
Apres concertation avec mes camarades de classe voila la solution que nous avons trouvez:

j'utilise codeblocks comme compilateur

employe.cpp


#include "employe.h"

void saisir_adresse(adresse& adr)
{
cout<<"Entrer le numero de l'adresse"<<endl;
cin>>adr.numero;
cout<<"Entrer le nom de la rue"<<endl;
cin>>adr.rue;
cout<<"Entrer le code postal"<<endl;
cin>>adr.code_postal;
cout<<"Entrer la localite"<<endl;
cin>>adr.localite;
}

void saisir_employe(employe& emp)
{
char sexe;
int s_m;
do{

cout<<"Entrer le nom de l'employe"<<endl;
cin>>emp.e_nom;
}
while(emp.e_nom.length()>30);

cout<<"Entrer le prenom de l'employe"<<endl;
cin>>emp.e_prenom;

saisir_adresse(emp.e_adresse);

cout<<"Entrer le sexe (M-F)"<<endl;
cin>>sexe;
if(sexe=='M')
{
emp.e_sexe=MASCULIN;
do
{
cout<<"Entrer le numero correspondant à la situation militaire"<<endl
<<"1--LIBERE"<<endl<<"2--EXEPMTE"<<endl<<"3--REFORME"<<endl<<"4--INCORPORABLE"<<endl;
cin>>s_m;
}while(s_m<1 && s_m>4);
switch(s_m)
{
case 1:emp.e_situation=LIBERE;
break;
case 2:emp.e_situation=EXEMPTE;
break;
case 3:emp.e_situation=REFORME;
break;
case 4:emp.e_situation=INCORPORABLE;
break;
}
}
else
{
cout<<"Entrer le nom de jeune fille"<<endl;
cin>>emp.e_jeune_fille;
}
}

void afficher_adresse(adresse& adr)
{
cout<<"Son adresse est:"<<adr.numero<<" "<<adr.rue<<" "<<adr.code_postal<<" "<<adr.localite<<endl;
}

void afficher_employe(employe& emp)
{
cout<<"L'employe s'appelle "<<emp.e_nom<<" "<<emp.e_prenom<<" de sexe "<<(emp.e_sexe==MASCULIN?"Masculin":"Feminin")<<"."<<endl;
afficher_adresse(emp.e_adresse);
if(emp.e_sexe==MASCULIN)
{
cout<<"Sa situation militaire est ";
switch(emp.e_situation)
{
case LIBERE:cout<<"LIBERE";
break;
case EXEMPTE:cout<<"EXEMPTE";
break;
case REFORME:cout<<"REFORME";
break;
case INCORPORABLE:cout<<"INCORPORABLE";
break;
}
cout<<endl<<endl;
}
else
cout<<"Son nom de jeune fille est "<<emp.e_jeune_fille<<endl<<endl;
}

bool est_homme(employe& emp)
{
if(emp.e_sexe==MASCULIN)
return true;
else
return false;
}

int nombre_hommes(employe emp[],int taille)
{
int nb=0;
for(int i=0;i<taille;i++)
if(est_homme(emp[i]))
nb++;
return nb;
}

int nombre_femmes(employe emp[],int taille)
{
int nb=0;
for(int i=0;i<taille;i++)
if(!est_homme(emp[i]))
nb++;
return nb;
}

int nombre_selon_sexe(employe emp[],int taille,sexe sex)
{
if(sex==MASCULIN)
return nombre_hommes(emp,taille);
else
return nombre_femmes(emp,taille);
}

void classer_employes(employe emp[],int taille)
{
int pos;
employe perm;

for(int i=1;i<taille;i++)
{
perm=emp[i];
pos=i-1;
while(emp[pos].e_nom>perm.e_nom && pos>=0)
{
emp[pos+1]=emp[pos];
pos=pos-1;
}
emp[pos+1]=perm;
}
}


employe.h


#ifndef EMPLOYE_H
#define EMPLOYE_H

#include "iostream"
#include "string.h"
using namespace std;
struct adresse{
int numero;
string rue;
int code_postal;
string localite;
};
enum sexe{MASCULIN,FEMININ};
enum situation{LIBERE,EXEMPTE,REFORME,INCORPORABLE};

struct employe{
string e_nom;
string e_prenom;
adresse e_adresse;
sexe e_sexe;
situation e_situation;
string e_jeune_fille;
};


void saisir_adresse(adresse& adr);

void saisir_employe(employe& emp);

void afficher_adresse(adresse& adr);

void afficher_employe(employe& emp);

bool est_homme(employe& emp);

int nombre_hommes(employe emp[],int taille);

int nombre_femmes(employe emp[],int taille);

int nombre_selon_sexe(employe emp[],int taille,sexe sex=MASCULIN);

void classer_employes(employe emp[],int taille);

#endif // EMPLOYE_H


main.cpp

//#include <QtCore/QCoreApplication>
#include "iostream"
#include "employe.h"

using namespace std;

int main(int argc, char *argv[])
{

int nbEmp;
employe emp[100];
int choix;
cout<<"-----Bienvenue dans le programme de gestion du personnel!-----"<<endl<<endl;
cout<<"Combien d'employes voulez-vous gerer?"<<endl;
cin>>nbEmp;

for(int i=0;i<nbEmp;i++)
{
cout<<" Employe n"<<i+1<<endl;
saisir_employe(emp[i]);
}

do
{
cout<<"----------Menu----------"<<endl;
cout<<"1--Connaitre le nombre d'employes en fonction du sexe"<<endl;
cout<<"2--Afficher tous les employes"<<endl;
cout<<"3--Classer les employes par ordre alphabetique"<<endl;
cout<<"Entrer 0 pour sortir"<<endl;
cin>>choix;
switch(choix)
{
char sexe;
case 1:cout<<"Veuillez entrer le sexe choisi (M-F)"<<endl;
cin>>sexe;
if(sexe=='M')
cout<<"Le nombre d'hommes est "<<nombre_selon_sexe(emp,nbEmp)<<endl;
else
cout<<"Le nombre de femmes est "<<nombre_selon_sexe(emp,nbEmp,FEMININ)<<endl;
break;
case 2:cout<<"La liste des employes est:"<<endl;
for(int i=0;i<nbEmp;i++)
{
afficher_employe(emp[i]);
}
break;
case 3:classer_employes(emp,nbEmp);
break;
}
}
while(choix>=1 && choix<=3);

return 0;
}
0
sony4332 Messages postés 4 Date d'inscription dimanche 16 novembre 2014 Statut Membre Dernière intervention 18 novembre 2014
18 nov. 2014 à 00:11
Toute suggestion pour l'amélioration de ce code sera la bienvenu!
0