#include #include #include 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::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_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; }