-
Notifications
You must be signed in to change notification settings - Fork 0
/
compte.cpp
378 lines (328 loc) · 12.1 KB
/
compte.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
/*
* Auteur: Patrick Lainesse
* Cours: IFT1166 - A19 - Mardi 16h30
*
* compte.cpp
* Classes et methodes implementant une classe abstraite pour gerer
* des operations bancaires.
*/
#include "compte.h"
// On declare globalement l'iteration des numeros de comptes pour qu'ils soient modifies a l'exterieur des classes
// afin d'eviter d'attribuer le meme numero a deux comptes differents. On debute a 1001 pour faire plus serieux.
// J'ai d'abord essaye avec le mot-cle "static" a l'interieur de comptBanq, tel que suggére, par Audrey, mais cela
// n'accomplissait pas l'effet désire (tous les comptes se retrouvaient alors avec le meme numero), et il fallait tout
// de même initialiser globalement pour que cela fonctionne, donc c'est la solution que j'ai privilégiee.
int iteration = 1001;
comptBanq::comptBanq()
{
numero = iteration;
iteration++;
}
comptBanq::comptBanq(double montant):solde(montant)
{
numero = iteration;
iteration++;
}
int comptBanq::getNumero() const
{
return numero;
}
double comptBanq::getSolde() const
{
return solde;
}
void comptBanq::depot(double montant)
{
solde += montant;
}
void comptBanq::retrait(double montant)
{
double test = 0;
test = solde - montant;
if(test < 0)
{
cout << "\nCher client, votre compte #" << getNumero() << " n'a pas suffisamment de fonds. Impossible d'effectuer un retrait. "
<< "Allez directement en prison et si vous passez Go, NE RECLAMEZ PAS 200$.\n";
}
else
solde -= montant;
return;
}
comptCheq::comptCheq(double montant) : comptBanq(montant)
{
fraisService(); // eh oui, nos radins de patrons chargent des frais meme a l'ouverture des comptes
}
comptCheq::comptCheq(double montant, double minimum): comptBanq(montant), soldeMinimum(minimum)
{
fraisService();
}
comptCheq::comptCheq() : comptBanq() {} // constructeur avec valeurs par defaut
void comptCheq::setSoldeMinimum(double minimum)
{
soldeMinimum = minimum;
fraisService();
}
double comptCheq::getSoldeMinimum() const
{
return soldeMinimum;
}
/* Il me semble necessaire de definir une methode pour les frais de service a appliquer a chaque transaction
dans le cas ou le client a un solde inferieur au solde minimum */
void comptCheq::fraisService()
{
if (getSolde() - soldeMinimum <= 0)
{
cout << "Cher client, votre compte #" << getNumero() << " contient moins que le solde minimum prevu a votre contrat. "
<< "Des frais de 50 sous ont ete debites a votre compte pour cette transaction. Veuillez agreer de nos sentiments les plus distingues.\n";
comptBanq::retrait(0.50); // utilise le retrait de la classe mere pour eviter une boulce infinie avec le retrait de comptCheq
}
}
double comptCheq::fraisMensuels() const // ces frais seront appliques a toute transaction autre que les interrogations de compte
{
if (getSolde() - getSoldeMinimum() <= 0)
return (getSoldeMinimum() - getSolde()) * 0.0025;
else return 0; // si le compte a un solde superieur au minimum, pas de frais
}
void comptCheq::retrait(double montant)
{
fraisService();
comptBanq::retrait(montant);
}
void comptCheq::depot(double montant)
{
fraisService();
comptBanq::depot(montant);
}
void comptCheq::afficher() const
{
cout << "Compte cheque #" << comptBanq::getNumero() << ":\n";
cout << "Solde: " << getSolde() << "$\n";
cout << "Solde minimum a respecter: " << getSoldeMinimum() << "$\n";
cout << "Frais mensuels: " << fraisMensuels() << "$\n";
cout << "Frais de service: 0.50$\n";
}
comptEpargn::comptEpargn(): comptBanq() {}
comptEpargn::comptEpargn(double montant, double tauxInteret): comptBanq(montant)
{
taux = tauxInteret;
}
comptEpargn::comptEpargn(double montant): comptBanq(montant) {}
void comptEpargn::setTaux(double tauxInteret)
{
taux = tauxInteret;
}
double comptEpargn::getTaux() const
{
return taux;
}
void comptEpargn::afficher() const
{
cout << "Compte epargne #" << comptBanq::getNumero() << ":\n";
cout << "Solde: " << getSolde() << "$\n";
cout << "Taux d'interet: " << getTaux() * 100 << "%\n";
cout << "A la fin du mois, vous recolterez " << getSolde() * taux / 12 << "$\n";
}
/*
int main()
{
comptEpargn test1;
comptCheq test2(300);
comptCheq test3(3);
comptCheq test4(200.672, 850);
comptEpargn test5(2000);
cout << fixed << setprecision(2); // montants s'affichent avec format usuel pour l'argent
test1.afficher();
//cout << test1.getTaux() << endl << endl;
test2.afficher();
//cout << test2.getSoldeMinimum() << endl << endl;
test3.afficher();
//cout << test3.getSoldeMinimum() << endl << endl;
test4.afficher();
//cout << test4.getSoldeMinimum();
//cout << "\n";
cout << "getSolde test3: " << test3.getSolde() << endl;
test3.retrait(35);
cout << "getSolde test3 apres retrait: " << test3.getSolde() << endl;
cout << "frais mensuels test2: " << test2.fraisMensuels() << endl;
cout << "frais mensuels test3: " << test3.fraisMensuels() << endl;
cout << "frais mensuels test4: " << test4.fraisMensuels() << endl;
test5.afficher();
}*/
/* EXECUTION
Cher client, votre compte #1001 contient moins que le solde minimum prevu a votre contrat. Des frais de 50 sous ont ete debites a votre compte pour cette transaction. Veuillez agreer de nos sentiments les plus distingues.
Affichage des comptes a l'initialisation:
======================================================
Bienvenue chez Despotagers.
Bunton, Emma Client #162018
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1001:
Solde: 99.50$
Solde minimum a respecter: 1000.00$
Frais mensuels: 2.25$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1002:
Solde: 0.00$
Taux d'interet: 1.50%
A la fin du mois, vous recolterez 0.00$
------------------------------------------------------
======================================================
======================================================
Bienvenue chez Despotagers.
B, Mel Client #162019
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1003:
Solde: 5.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 2.49$
Frais de service: 0.50$
------------------------------------------------------
======================================================
======================================================
Bienvenue chez Despotagers.
Chisholm, Melanie Client #162020
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1004:
Solde: 2500.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1005:
Solde: 4000.00$
Taux d'interet: 2.20%
A la fin du mois, vous recolterez 7.33$
------------------------------------------------------
======================================================
======================================================
Bienvenue chez Despotagers.
Halliwell, Geri Client #162021
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1006:
Solde: 300000.00$
Solde minimum a respecter: 12000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1007:
Solde: 700000.00$
Taux d'interet: 0.20%
A la fin du mois, vous recolterez 116.67$
------------------------------------------------------
======================================================
======================================================
Bienvenue chez Despotagers.
Beckham, Victoria Client #162022
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1008:
Solde: 1000000.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte cheque #1009:
Solde: 500000.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte cheque #1010:
Solde: 6400000.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1011:
Solde: 48000000.00$
Taux d'interet: 1.50%
A la fin du mois, vous recolterez 60000.00$
------------------------------------------------------
Compte epargne #1012:
Solde: 34000000.00$
Taux d'interet: 1.50%
A la fin du mois, vous recolterez 42500.00$
------------------------------------------------------
======================================================
Emma garde les enfants de Victoria et se fait payer 20$ pour la soiree.
Cher client, votre compte #1001 contient moins que le solde minimum prevu a votre contrat. Des frais de 50 sous ont ete debites a votre compte pour cette transaction. Veuillez agreer de nos sentiments les plus distingues.
Victoria est recompensee pour ce genereux salaire et se voit offrir un taux avantageux de notre banque pour son compte epargne.
Affichage des comptes apres ces operations:
======================================================
Bienvenue chez Despotagers.
Bunton, Emma Client #162018
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1001:
Solde: 119.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 2.20$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1002:
Solde: 0.00$
Taux d'interet: 1.50%
A la fin du mois, vous recolterez 0.00$
------------------------------------------------------
======================================================
======================================================
Bienvenue chez Despotagers.
Beckham, Victoria Client #162022
Voici la liste de vos comptes dans notre institution:
------------------------------------------------------
Compte cheque #1008:
Solde: 999980.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte cheque #1009:
Solde: 500000.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte cheque #1010:
Solde: 6400000.00$
Solde minimum a respecter: 1000.00$
Frais mensuels: 0.00$
Frais de service: 0.50$
------------------------------------------------------
Compte epargne #1011:
Solde: 48000000.00$
Taux d'interet: 1.50%
A la fin du mois, vous recolterez 60000.00$
------------------------------------------------------
Compte epargne #1012:
Solde: 34000000.00$
Taux d'interet: 3.00%
A la fin du mois, vous recolterez 85000.00$
------------------------------------------------------
======================================================
Sous forte pression financiere, Mel B tente de retirer plus que ce qu'elle a dans son compte.
Cher client, votre compte #1003 contient moins que le solde minimum prevu a votre contrat. Des frais de 50 sous ont ete debites a votre compte pour cette transaction. Veuillez agreer de nos sentiments les plus distingues.
Cher client, votre compte #1003 n'a pas suffisamment de fonds. Impossible d'effectuer un retrait. Allez directement en prison et si vous passez Go, NE RECLAMEZ PAS 200$.
Compte cheque #1003:
Solde: 4.50$
Solde minimum a respecter: 1000.00$
Frais mensuels: 2.49$
Frais de service: 0.50$
Mel B est punie pour sa tentative et notre banque lui impose un solde minimum plus eleve dans son compte:
Cher client, votre compte #1003 contient moins que le solde minimum prevu a votre contrat. Des frais de 50 sous ont ete debites a votre compte pour cette transaction. Veuillez agreer de nos sentiments les plus distingues.
Compte cheque #1003:
Solde: 4.00$
Solde minimum a respecter: 10000.00$
Frais mensuels: 24.99$
Frais de service: 0.50$
I'll tell you what I want, what I really, really want
So tell me what you want, what you really, really want
I wanna, (ha)I wanna, (ha)I wanna, (ha)I wanna, (ha)
I wanna really, really, really wanna zigazig ah
C:\Users\admin\Desktop\1166\tp3\191213\lafin\Debug\lafin.exe (process 2140) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .
*/