#include <iostream>
#include <string>
#include <vector>
using std::string;
using std::vector;
using std::cout;
using std::endl;
/**
* Класс пользователя
* Хрнанит:
* Имя пользователя
* Id пользователя
*/
class User {
public:
// Конструктор
User(int id, string const &name) {
this->id = id;
this->name = name;
}
int getId() const {
return id;
}
string getName() const {
return name;
}
private:
int id;
string name;
};
/**
* Класс базы пользователей
* Операции:
* Добавление нового пользователя
* Удаление пользователя (По имени или по Id)
* Поиск (По имени или по id)
*/
class DataBase {
public:
/**
* Возвращаем результат добавления
* true - добавили
* false - не добавили
*/
bool add(User const &user) {
// Проверяем на уникальность id
for (auto it = user_list.begin(); it != user_list.end(); ++it) {
if (it->getId() == user.getId()) {
return false;
}
}
user_list.push_back(user);
return true;
}
/**
* Возвращаем результат удаления
* true - удалено
* false - не удалено
*/
bool remove(int id) {
// auto === vector<User>::iterator
for (auto it = user_list.begin(); it != user_list.end(); ++it) {
if (it->getId() == id) {
user_list.erase(it);
return true;
}
}
return false;
}
bool remove(string const &name) {
for (auto it = user_list.begin(); it != user_list.end(); ++it) {
if (it->getName() == name) {
user_list.erase(it);
return true;
}
}
return false;
}
/**
* Возвращаем результат:
* true - Нашлось
* false - Не нашлось
* Второй параметр - результат.
* Т.е. он будет содержать найденного пользователя
*/
bool find(int id, User &result) const {
for (auto it = user_list.begin(); it != user_list.end(); ++it) {
if (it->getId() == id) {
result = *it;
return true;
}
}
return false;
}
bool find(string const &name, User &result) const {
for (auto it = user_list.begin(); it != user_list.end(); ++it) {
if (it->getName() == name) {
result = *it;
return true;
}
}
return false;
}
private:
vector<User> user_list;
};
int main() {
setlocale(LC_ALL, "Russian");
DataBase db;
// Добавляем пользователей
db.add(User(0, "Alex"));
db.add(User(1, "Bill"));
db.add(User(2, "Ann"));
// Попытка добавить пользователя с id, который уже есть в бд
if (!db.add(User(1, "Nick"))) {
cout << "Пользователь с id == 1 уже есть в бд" << endl;
}
User result(0, "");
// Ищем пользователя по id
if (db.find(1, result)) {
cout << "Имя пользователя с id == 1: " << result.getName() << endl;
}
// Удаляем пользователя с id == 1
if (db.remove(1)) {
cout << "Пользователь с id == 1 успешно удален" << endl;
}
// Ищем пользователя с id == 1
if (!db.find(1, result)) {
cout << "Пользователя c id == 1 нет в бд" << endl;
}
system("pause");
return 0;
}
Comments
0 B
|👍
/👎