-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsocial network
146 lines (128 loc) · 3.88 KB
/
social network
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
#include <iostream>
#include <vector>
#include <string>
#include <ctime>
class User {
private:
std::string name;
int id;
std::vector<User*> friends;
std::vector<std::string> messages;
public:
User(std::string name, int id) : name(name), id(id) {}
std::string getName() const { return name; }
int getId() const { return id; }
void addFriend(User* user) {
friends.push_back(user);
}
void postMessage(const std::string& message) {
time_t now = time(0);
std::string timestamp = ctime(&now);
messages.push_back(timestamp + ": " + message);
}
void displayFriends() const {
std::cout << name << "'s friends:\n";
for (const auto& friendUser : friends) {
std::cout << friendUser->getName() << "\n";
}
}
void displayMessages() const {
std::cout << name << "'s messages:\n";
for (const auto& message : messages) {
std::cout << message << "\n";
}
}
};
#include <iostream>
#include <vector>
#include <string>
class SocialNetwork {
private:
std::vector<User> users;
public:
void addUser(const std::string& name) {
int id = users.size();
users.push_back(User(name, id));
std::cout << "User " << name << " added with ID " << id << "\n";
}
User* getUserById(int id) {
for (auto& user : users) {
if (user.getId() == id) {
return &user;
}
}
return nullptr;
}
void addFriendship(int userId1, int userId2) {
User* user1 = getUserById(userId1);
User* user2 = getUserById(userId2);
if (user1 && user2) {
user1->addFriend(user2);
user2->addFriend(user1);
std::cout << "Friendship added between " << user1->getName() << " and " << user2->getName() << "\n";
} else {
std::cout << "Invalid user ID(s)\n";
}
}
void postMessage(int userId, const std::string& message) {
User* user = getUserById(userId);
if (user) {
user->postMessage(message);
std::cout << "Message posted by " << user->getName() << "\n";
} else {
std::cout << "Invalid user ID\n";
}
}
void displayUserInfo(int userId) {
User* user = getUserById(userId);
if (user) {
user->displayFriends();
user->displayMessages();
} else {
std::cout << "Invalid user ID\n";
}
}
};
#include <iostream>
#include "User.h"
#include "SocialNetwork.h"
int main() {
SocialNetwork network;
int choice;
while (true) {
std::cout << "\n1. Add User\n2. Add Friend\n3. Post Message\n4. Display User Info\n5. Exit\n";
std::cin >> choice;
if (choice == 1) {
std::string name;
std::cout << "Enter user name: ";
std::cin >> name;
network.addUser(name);
} else if (choice == 2) {
int userId1, userId2;
std::cout << "Enter user ID 1: ";
std::cin >> userId1;
std::cout << "Enter user ID 2: ";
std::cin >> userId2;
network.addFriendship(userId1, userId2);
} else if (choice == 3) {
int userId;
std::string message;
std::cout << "Enter user ID: ";
std::cin >> userId;
std::cout << "Enter message: ";
std::cin.ignore(); // To ignore the newline left by std::cin
std::getline(std::cin, message);
network.postMessage(userId, message);
} else if (choice == 4) {
int userId;
std::cout << "Enter user ID: ";
std::cin >> userId;
network.displayUserInfo(userId);
} else if (choice == 5) {
break;
} else {
std::cout << "Invalid choice, try again.\n";
}
}
return 0;
}