-
Notifications
You must be signed in to change notification settings - Fork 0
/
memberhandler.cpp
136 lines (99 loc) · 2.65 KB
/
memberhandler.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
#include "memberhandler.h"
MemberHandler::MemberHandler()
{
int size = 0; //the number of elements stored
int capacity = 5;
memberArr = new Member[capacity];
}
MemberHandler::~MemberHandler()
{
delete[] memberArr;
}
void MemberHandler::addData(int membershipNumber, double totalAmountSpent)
{
bool found = false;
if(isEmpty())
{
memberArr[size].membershipNumber = membershipNumber;
memberArr[size].totalAmountSpent = totalAmountSpent;
}
else
{
// searching
// if there is a same memebrship number then update the totalAmountSpent
// if there is not any match make sure the array is not full and then add a member to the array
for(int i=0;i<size;i++)
{
if (memberArr[i].membershipNumber == membershipNumber)
{
memberArr[i].totalAmountSpent += totalAmountSpent;
found = !found;
break;
}
}
if(!found)
{
if(isFull())
{
resize();
}
memberArr[size].membershipNumber = membershipNumber;
memberArr[size].totalAmountSpent = totalAmountSpent;
}
}
size++;
}
int MemberHandler::getSize()const
{
return size;
}
bool MemberHandler::isEmpty()
{
return size == 0 ? true : false;
}
bool MemberHandler::isFull()
{
return size > capacity ? true : false;
}
void MemberHandler::resize()
{
Member* temp_arr = new Member[capacity + 5];
for (int i = 0; i < capacity; i++)
temp_arr[i] = memberArr[i];
delete[] memberArr;
capacity += 5;
memberArr = new Member[capacity];
for (int i = 0; i < capacity; i++)
memberArr[i] = temp_arr[i];
//arr = temp_arr;
delete[] temp_arr;
}
void MemberHandler::getData(int membershipNumber, double& totalAmountSpent, double& rebate)
{
bool found = false;
for(int i=0;i<size;i++)
{
if (memberArr[i].membershipNumber == membershipNumber)
{
totalAmountSpent =round(memberArr[i].totalAmountSpent);
rebate = round((memberArr[i].totalAmountSpent * REBATE_AMOUNT) / 100);
found = !found;
break;
}
}
if(!found)
{
// member did not buy anything yet!
totalAmountSpent = 0;
rebate = 0;
}
}
double MemberHandler:: round(double var)
{
// 37.66666 * 100 =3766.66
// 3766.66 + .5 =3767.16 for rounding off value
// then type cast to int so value is 3767
// then divided by 100 so the value converted into 37.67
double value = (int)(var * 100 + .5);
return (double)value / 100;
}