-
Notifications
You must be signed in to change notification settings - Fork 3.3k
/
Copy pathSplitwiseDemo.cpp
49 lines (38 loc) · 1.54 KB
/
SplitwiseDemo.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
#include "SplitwiseSystem.hpp"
#include <iostream>
int main() {
SplitwiseSystem splitwise;
// Register users
User* user1 = splitwise.registerUser("John", "john@email.com");
User* user2 = splitwise.registerUser("Alice", "alice@email.com");
User* user3 = splitwise.registerUser("Bob", "bob@email.com");
std::cout << "Initial users:" << std::endl;
splitwise.displayUsers();
// Add expenses
std::vector<std::string> participants = {
user1->getUserId(), user2->getUserId(), user3->getUserId()
};
// Equal split expense
Expense* dinner = splitwise.addExpense("Dinner", 300.0, user1->getUserId(), participants);
// Custom split expense
std::vector<std::string> movieParticipants = {
user1->getUserId(), user2->getUserId()
};
Expense* movie = splitwise.addExpense("Movie", 100.0, user2->getUserId(),
movieParticipants, ExpenseType::EXACT);
std::map<std::string, double> movieShares = {
{user1->getUserId(), 60.0},
{user2->getUserId(), 40.0}
};
splitwise.setExpenseShares(movie->getExpenseId(), movieShares);
// Display expenses
std::cout << "\nAll expenses:" << std::endl;
splitwise.displayExpenses();
// Show balances
std::cout << "\nBalances after expenses:" << std::endl;
splitwise.showAllBalances();
// Show individual expenses
std::cout << "\nJohn's expenses:" << std::endl;
splitwise.displayUserExpenses(user1->getUserId());
return 0;
}