IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Création d'un panier en C++
Par Kevinternet

Le , par autran

0PARTAGES

Devant me plonger dans le C++ pour maintenir un logiciel écrit dans les années 90, je propose dans ce post une implémentation d'un panier avec la STL.
je ne pense pas que ce type de developpment merite que d'être publié sur les sources DVP C++. Si quelq'un pense que je devrais au contraire le publier je leferai alors.

Voici le main.cpp pour que tout le monde comprenne ce que peut faire ce panier basique :
Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  
#include "Panier.h" 
  
int main(int argc, char* argv[]) 
{ 
	Panier * panier = new Panier(); 
	panier->ajouterArticle(1, 2, 50); 
	panier->ajouterArticle(2, 2, 100); 
	panier->ajouterArticle(3, 1, 150); 
	panier->ajouterArticle(1, 3, 50); 
	cout << panier->calculerPanier() << endl; 
	cout << panier->supprimerArticle(2) << endl;; 
	cout << panier->calculerPanier() << endl; 
	return 0; 
}
j'ai opté comme je l'aurai fait en PHP pur une ligne panier et un panier dont voici les sources:
LignePanier.h
Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once 
  
class LignePanier 
{ 
private: 
	int codeArticle; 
	int qteArticle; 
	int prixArticle; 
public: 
	LignePanier(int code, int qte, int prix); 
	int getCode(void); 
	int ajouterQte(int qte); 
	int calculerLigne(void); 
	LignePanier(const LignePanier &ligne); 
public: 
	~LignePanier(void); 
};
LignePanier.cpp
Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "LignePanier.h" 
  
LignePanier::LignePanier(int code, int qte, int prix) 
{ 
	this->codeArticle = code; 
	this->qteArticle = qte; 
	this->prixArticle = prix; 
} 
  
LignePanier::~LignePanier(void) 
{ 
} 
int LignePanier::calculerLigne(void) 
{ 
	return (this->qteArticle * this->prixArticle); 
} 
LignePanier::LignePanier(const LignePanier &ligne) 
{ 
	this->codeArticle = ligne.codeArticle; 
	this->prixArticle = ligne.prixArticle; 
	this->qteArticle = ligne.qteArticle; 
} 
int LignePanier::ajouterQte(int qte) 
{ 
	this->qteArticle += qte; 
	return 0; 
} 
int LignePanier::getCode(void) 
{ 
	return this->codeArticle; 
}
Panier.h
Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once 
#include "LignePanier.h" 
#include <list> 
#include <iostream> 
#include <string> 
using namespace std ; 
class Panier 
{ 
private: 
	list<LignePanier> listeArticles;  
public: 
	Panier(void); 
	int ajouterArticle(int code, int qte, int prix); 
	LignePanier getArticle(int code); 
	int supprimerArticle(int code); 
	int calculerPanier(void); 
  
public: 
	~Panier(void); 
};
Panier.cpp
Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  
#include "Panier.h" 
  
Panier::Panier(void) 
{ 
} 
  
Panier::~Panier(void) 
{ 
} 
  
int Panier::ajouterArticle(int code, int qte, int prix) 
{ 
	LignePanier ligne = this->getArticle(code); 
	if (ligne.getCode() == code)  
	{ 
		ligne.ajouterQte(qte); 
		this->supprimerArticle(code); 
	} 
	else  ligne = LignePanier(code, qte, prix); 
	this->listeArticles.push_back(ligne); 
	return 0; 
} 
  
LignePanier Panier::getArticle(int code) 
{ 
	for(list<LignePanier>::iterator iter = listeArticles.begin(); iter != listeArticles.end(); ++iter)  
	{ 
		if  (code == iter->getCode()) 
			return (*iter); 
	} 
	LignePanier li = LignePanier(0, 0, 0); 
	return li; 
  
} 
int Panier::calculerPanier(void) 
{ 
	int total = 0; 
	for(list<LignePanier>::iterator iter = listeArticles.begin(); iter != listeArticles.end(); ++iter)  
	{ 
		total += iter->calculerLigne(); 
	} 
	return total; 
} 
int Panier::supprimerArticle(int code) 
{ 
	for(list<LignePanier>::iterator iter = listeArticles.begin(); iter != listeArticles.end(); ++iter)  
	{ 
		if  (code == iter->getCode()) 
		{ 
			this->listeArticles.erase(iter); 
			return 0; 
		} 
	} 
	return 0; 
}

Une erreur dans cette actualité ? Signalez-nous-la !