-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCaisse.cpp
59 lines (52 loc) · 2.04 KB
/
Caisse.cpp
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
//--------------------------------------------------------
//
// Caisse.cpp
//
// Définition de la classe Caisse qui permet de
// créer une caisse et ajouter des clients
// par Jonathan Boucard & Pierre-Anthony Houle, 2016
//--------------------------------------------------------
#include "Caisse.h"
#include "Constantes.h"
Caisse::Caisse() : tempsFile(0), status(FERMÉ), nbClientServis(0), eteOuvert(false), totalAchats(0), nbClientsNonServis(0), tempsFileTotal(0)
{
}
void Caisse::AjouterClientFile(Client* client, float montantAchatClient)
{
file.push_back(client);
tempsFile += client->GetTempsAttenteClient();
SetTempsFileTotal(GetTempsFileTotal() + client->GetTempsAttenteClient());
SetNbClientsNonServis(GetNbClientsNonServis() + 1);
if (client->GetTypeClient() != TYPECOMMERCIAL) client->SetMontantAchat(montantAchatClient);
else
{
montantAchatClient -= (montantAchatClient * (client->GetPourcentageRabais()/100));
client->SetMontantAchat(montantAchatClient);
}
}
void Caisse::AfficherCaisse(ofstream& flux)
{
flux << "--------------------------------------------------" << endl;
flux << "@Status: ";
if (GetStatus()) flux << "OUVERT" << endl; else flux << "FERMÉ" << endl;
flux << "@À été ouverte: ";
if (GetEteOuvert()) flux << "VRAI" << endl; else flux << "FAUX" << endl;
flux << "@Nombre de clients servis: " << GetNbClientsServis() << endl;
flux << "@Total des achats encaissés: " << GetTotalAchats() << endl;
flux << "@Nombre de clients non servis: " << GetNbClientsNonServis() << endl;
for (int i = 0; i < file.size(); i++)
{
file.at(i)->Afficher(flux);
}
flux << "@Temps d'attente à la fin: " << GetTempsFile() << endl;
flux << "@Temps total d'attente: " << GetTempsFileTotal() << endl;
flux << "--------------------------------------------------" << endl;
}
void Caisse::RetirerClientFile()
{
tempsFile -= file.at(0)->GetTempsAttenteClient();
SetTotalAchats(GetTotalAchats() + file.at(0)->GetMontantAchat());
file.pop_front();
SetNbClientsNonServis(GetNbClientsNonServis() - 1);
SetNbClientsServis(GetNbClientsServis() + 1);
}