Advertisement
Gistrec

Simple bd

May 3rd, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using std::string;
  6. using std::vector;
  7. using std::cout;
  8. using std::endl;
  9.  
  10. /**
  11.  * Класс пользователя
  12.  * Хрнанит:
  13.  *     Имя пользователя
  14.  *     Id пользователя
  15.  */
  16. class User {
  17. public:
  18.     // Конструктор
  19.     User(int id, string const &name) {
  20.         this->id = id;
  21.         this->name = name;
  22.     }
  23.  
  24.     int getId() const {
  25.         return id;
  26.     }
  27.  
  28.     string getName() const {
  29.         return name;
  30.     }
  31. private:
  32.     int id;
  33.     string name;
  34. };
  35.  
  36. /**
  37.  * Класс базы пользователей
  38.  * Операции:
  39.  *     Добавление нового пользователя
  40.  *     Удаление пользователя (По имени или по Id)
  41.  *     Поиск (По имени или по id)
  42.  */
  43. class DataBase {
  44. public:
  45.     /**
  46.      * Возвращаем результат добавления
  47.      *     true - добавили
  48.      *     false - не добавили
  49.      */
  50.     bool add(User const &user) {
  51.         // Проверяем на уникальность id
  52.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  53.             if (it->getId() == user.getId()) {
  54.                 return false;
  55.             }
  56.         }
  57.         user_list.push_back(user);
  58.         return true;
  59.     }
  60.  
  61.     /**
  62.      * Возвращаем результат удаления
  63.      *     true  - удалено
  64.      *     false - не удалено
  65.      */
  66.     bool remove(int id) {
  67.         // auto === vector<User>::iterator
  68.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  69.             if (it->getId() == id) {
  70.                 user_list.erase(it);
  71.                 return true;
  72.             }
  73.         }
  74.         return false;
  75.     }
  76.     bool remove(string const &name) {
  77.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  78.             if (it->getName() == name) {
  79.                 user_list.erase(it);
  80.                 return true;
  81.             }
  82.         }
  83.         return false;
  84.     }
  85.  
  86.     /**
  87.      * Возвращаем результат:
  88.      *     true  - Нашлось
  89.      *     false - Не нашлось
  90.      * Второй параметр - результат.
  91.      * Т.е. он будет содержать найденного пользователя
  92.      */
  93.     bool find(int id, User &result) const {
  94.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  95.             if (it->getId() == id) {
  96.                 result = *it;
  97.                 return true;
  98.             }
  99.         }
  100.         return false;
  101.     }
  102.     bool find(string const &name, User &result) const {
  103.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  104.             if (it->getName() == name) {
  105.                 result = *it;
  106.                 return true;
  107.             }
  108.         }
  109.         return false;
  110.     }
  111.  
  112. private:
  113.     vector<User> user_list;
  114. };
  115.  
  116. int main() {
  117.     setlocale(LC_ALL, "Russian");
  118.  
  119.     DataBase db;
  120.  
  121.     // Добавляем пользователей
  122.     db.add(User(0, "Alex"));
  123.     db.add(User(1, "Bill"));
  124.     db.add(User(2, "Ann"));
  125.  
  126.     // Попытка добавить пользователя с id, который уже есть в бд
  127.     if (!db.add(User(1, "Nick"))) {
  128.         cout << "Пользователь с id == 1 уже есть в бд" << endl;
  129.     }
  130.  
  131.     User result(0, "");
  132.     // Ищем пользователя по id
  133.     if (db.find(1, result)) {
  134.         cout << "Имя пользователя с id == 1: " << result.getName() << endl;
  135.     }
  136.     // Удаляем пользователя с id == 1
  137.     if (db.remove(1)) {
  138.         cout << "Пользователь с id == 1 успешно удален" << endl;
  139.     }
  140.     // Ищем пользователя с id == 1
  141.     if (!db.find(1, result)) {
  142.         cout << "Пользователя c id == 1 нет в бд" << endl;
  143.     }
  144.  
  145.     system("pause");
  146.     return 0;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement