0% ont trouvé ce document utile (0 vote)
49 vues6 pages

Gestion de produits finis en C++

Transféré par

ghofrane.dhaouadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues6 pages

Gestion de produits finis en C++

Transféré par

ghofrane.dhaouadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

FACULTE DES SCIENCES DE TUNIS

DEPARTEMENT DES SCIENCES DE L'INFORMATIQUE

TP C++

SECTION: MI-PI

On vous présente dans les programmes p1.cpp et p2.cpp un exemple pour l'implémentation de
quelques classes.

Le programme p1.cpp implémente la classe étudiant qui dérive de la classe personne.

Le programme p2.cpp illustre une implémentation d'une classe pour une liste chainée.

En s'inspirant de ces deux programmes on vous demande d'écrire un programme C++ qui permet
d'implémenter une classe pour gérer une liste chainée pour des produits finis.

Un article est caractérisé par :

*un Code (entier)

* Une désignation (chaine de 30 caractères)

* Une quantité en Stock (entier)

Un produit fini est un article et caractérisé par:

* La marque (chaine de 30 caractères)

*Le prix de revient (réel)

*Le nombre d'opérations nécessaires pour sa fabrication

*Les opérations nécessaires pour sa fabrication (un tableau e 10 chaines de 30 caractères)

Le programme devra permettre de développer les classes ARTCLE, PRODUIT_FINI, ET


LISTE_PRODUIT_FINI en plus des autres classes que vous jugez nécessaires.

Chaque classe devra contenir des méthodes pour initialiser chacun des attributs et des méthodes qui
retournent les attributs (Exemple int get_code(), void set_code(int code), char *get_designation(),
void set_designation (char *designation) etc.. )

Des méthodes qui s'occupent de la lecture des données doivent être prévues.

La classe LISTE_PRODUIT_FINI doit prévoir une sur-définition de l'opérateur + pour l'addition de deux
listes de produits finis.

La fonction main() doit permettre de charger deux listes de produits finis et de tester le résultat de
leurs addition.
//p1.cpp

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
class personne
{
private:
char nom[50];
char prenom[50];
int age;
int nb_enfants;
char enfants[10][50];

public:
personne()
{
*nom='\0';
*prenom='\0';
age=0;
nb_enfants=0;
}

personne(char *nom,char *prenom, int age)


{
strcpy(this->nom,nom);
strcpy(this->prenom,prenom);
this->age=age;
nb_enfants=0;
}

void print()
{
cout << "\nNom :" << nom;
cout << "\nPreom :" << prenom;
cout << "\nAge :" << age;
for(int i=0;i<nb_enfants;i++)
cout << "\n Enfant " << i+1 << enfants[i];
}
void operator ++()
{
age++;
}

void operator ++(int i)


{
age++;
}

void operator +=(personne p)


{
strcpy(enfants[nb_enfants],p.prenom);
nb_enfants++;
}
};

class etudiant : public personne


{
private:
float ds;
float exam;
char section[50];
public:

etudiant()
{
ds=0.;
exam=0.;
*section='\0';
}

etudiant(char *nom,char *prenom, int age, char *section, float ds,


float exam): personne(nom,prenom,age)
{
this->ds=ds;
this->exam=exam;
strcpy(this->section,section);
}
void print()
{
personne::print();
cout << "\nSection" << section << "DS:"<< ds<< "Exam:" << exam;
}
};

int main()
{
personne a;
personne b((char*)"Ben Mohamed",(char*)"Zied",40);
personne c((char*)"Ben Mohamed",(char*)"Wassim",15);
personne d((char*)"Ben Mohamed",(char*)"Wassima",12);
etudiant e((char*)"Mabrouk",(char*)"Alia",22,(char*)"IF3",15.5,16);

a.print();
b.print();
++b;
b.print();
b++;
b.print();
c.print();
d.print();
b+=c;
b+=d;
b.print();
e.print();
cout << "\n";
return(1);
}
p2.cpp

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

class data
{
private:
int id;
char nom[30];
char prenom[30];
char ville[20];

public:
void set_data_id(int l_id)
{
id=l_id;
}

void set_data_nom(char *l_nom)


{
strcpy(nom,l_nom);
}

void set_data_prenom(char *l_prenom)


{
strcpy(prenom,l_prenom);
}

void set_data_ville(char *l_ville)


{
strcpy(ville,l_ville);
}

int get_data_id()
{
return(id);
}

char *get_data_nom()
{
return(nom);
}

char *get_data_prenom()
{
return(prenom);
}

char *get_data_ville()
{
return(ville);
}

int lire_data()
{
cout << "Identifiant:";
cin >> id;

if(id==-1) return(0);
cout << "Nom:";
cin >> nom;
cout << "Prenom:";
cin >> prenom;
cout << "Ville:";
cin >> ville;
return(1);
}
};

class element_liste
{
private:
data d;
element_liste *next;

public:
element_liste(data l_d)
{
d.set_data_id(l_d.get_data_id());
d.set_data_nom(l_d.get_data_nom());
d.set_data_prenom(l_d.get_data_prenom());
d.set_data_ville(l_d.get_data_ville());
next=NULL;
}

friend class liste;


};

class liste
{
private:
element_liste *first;

public:
liste()
{
first=NULL;
}

~liste();
void inserer(data);
void creer();
element_liste *tete()
{
return(first);
}
void view(element_liste *);
};
liste::~liste()
{
element_liste *p,*save;

for(p=first;p;)
{
save=p;
p=p->next;
delete save;
}
}

void liste::inserer(data v)
{
element_liste *p=new element_liste(v);

p->next=first;
first=p;
}

void liste::creer()
{
data p;

while( p.lire_data())
inserer(p);
}

void liste::view(element_liste *p)


{
if(p)
{
cout << "Ici"<<'\n';
cout << p->d.get_data_id() <<" "<< p->d.get_data_nom() <<" "<< p-
>d.get_data_prenom() <<" " << p->d.get_data_ville()<< '\n';
view(p->next);
}
}

int main()
{
liste lc;

lc.creer();
cout << "Resultat" <<'\n';
lc.view(lc.tete());
}

Vous aimerez peut-être aussi