Advertisement
Gistrec

Simple bd v2

May 4th, 2018
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.54 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. using std::cin;
  10.  
  11. /**
  12.  * Класс пользователя
  13.  * Хрнанит:
  14.  *     Имя пользователя
  15.  *     Id пользователя
  16.  */
  17. class User {
  18. public:
  19.     // Конструктор
  20.     User(int id, string const &name) {
  21.         this->id = id;
  22.         this->name = name;
  23.     }
  24.  
  25.     int getId() const {
  26.         return id;
  27.     }
  28.  
  29.     string getName() const {
  30.         return name;
  31.     }
  32. private:
  33.     int id;
  34.     string name;
  35. };
  36.  
  37. /**
  38.  * Класс базы пользователей
  39.  * Операции:
  40.  *     Добавление нового пользователя
  41.  *     Удаление пользователя (По имени или по Id)
  42.  *     Поиск (По имени или по id)
  43.  */
  44. class DataBase {
  45. public:
  46.     /**
  47.      * Возвращаем результат добавления
  48.      *     true - добавили
  49.      *     false - не добавили
  50.      */
  51.     bool add(User const &user) {
  52.         // Проверяем на уникальность id
  53.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  54.             if (it->getId() == user.getId()) {
  55.                 return false;
  56.             }
  57.         }
  58.         user_list.push_back(user);
  59.         return true;
  60.     }
  61.  
  62.     /**
  63.      * Возвращаем результат удаления
  64.      *     true  - удалено
  65.      *     false - не удалено
  66.      */
  67.     bool remove(int id) {
  68.         // auto === vector<User>::iterator
  69.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  70.             if (it->getId() == id) {
  71.                 user_list.erase(it);
  72.                 return true;
  73.             }
  74.         }
  75.         return false;
  76.     }
  77.     bool remove(string const &name) {
  78.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  79.             if (it->getName() == name) {
  80.                 user_list.erase(it);
  81.                 return true;
  82.             }
  83.         }
  84.         return false;
  85.     }
  86.  
  87.     /**
  88.      * Возвращаем результат:
  89.      *     true  - Нашлось
  90.      *     false - Не нашлось
  91.      * Второй параметр - результат.
  92.      * Т.е. он будет содержать найденного пользователя
  93.      */
  94.     bool find(int id, User &result) const {
  95.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  96.             if (it->getId() == id) {
  97.                 result = *it;
  98.                 return true;
  99.             }
  100.         }
  101.         return false;
  102.     }
  103.     bool find(string const &name, User &result) const {
  104.         for (auto it = user_list.begin(); it != user_list.end(); ++it) {
  105.             if (it->getName() == name) {
  106.                 result = *it;
  107.                 return true;
  108.             }
  109.         }
  110.         return false;
  111.     }
  112.  
  113.     /**
  114.      * Возвращаем всех пользователей
  115.      */
  116.     vector<User> getAll() const {
  117.         return user_list;
  118.     }
  119.  
  120. private:
  121.     vector<User> user_list;
  122. };
  123.  
  124. int main() {
  125.     setlocale(LC_ALL, "Russian");
  126.  
  127.     DataBase db;
  128.  
  129.     int action = 0;
  130.  
  131.     while (action != 7) {
  132.         cout << "1 - добавить пользователя" << endl;
  133.  
  134.         cout << "2 - найти пользователя по id" << endl;
  135.         cout << "3 - найти пользователя по имени" << endl;
  136.        
  137.         cout << "4 - удалить пользователя по id" << endl;
  138.         cout << "5 - удалить пользователя по имени" << endl;
  139.        
  140.         cout << "6 - вывести всех пользователей" << endl;
  141.         cout << "7 - выйти" << endl;
  142.  
  143.         cin >> action;
  144.         system("cls"); // Отчищаем экран
  145.  
  146.  
  147.         int id;
  148.         string name;
  149.         User user(0, "");
  150.  
  151.         if (action == 1 || action == 2 || action == 4) {
  152.             cout << "Введите id пользователя" << endl;
  153.             cin >> id;
  154.         }
  155.         if (action == 1 || action == 3 || action == 5) {
  156.             cout << "Введите имя пользователя" << endl;
  157.             cin >> name;
  158.         }
  159.  
  160.         switch (action) {
  161.             // Добавляем пользователя
  162.             case 1:
  163.                 if (db.add(User(id, name))) {
  164.                     cout << "Пользователь добавлен" << endl;
  165.                 } else {
  166.                     cout << "Пользователь с таким id уже существует" << endl;
  167.                 }
  168.                 break;
  169.             // Поиск пользователя по id
  170.             case 2:
  171.                 if (db.find(id, user)) {
  172.                     cout << "Имя пользователя с id == " << id << ": " << user.getName() << endl;
  173.                 } else {
  174.                     cout << "Пользователь с таким id не найден" << endl;
  175.                 }
  176.                 break;
  177.             // Поиск пользователя по имени
  178.             case 3:
  179.                 if (db.find(name, user)) {
  180.                     cout << "Id пользователя с именем " << name << ": " << user.getId() << endl;
  181.                 } else {
  182.                     cout << "Пользователь с таким именем не найден" << endl;
  183.                 }
  184.                 break;
  185.             // Удаление пользователя по id
  186.             case 4:
  187.                 if (db.remove(id)) {
  188.                     cout << "Пользователь удален" << endl;
  189.                 } else {
  190.                     cout << "Пользователя с таким id не существует" << endl;
  191.                 }
  192.                 break;
  193.             // Удаление пользователя по имени
  194.             case 5:
  195.                 if (db.remove(name)) {
  196.                     cout << "Пользователь удален" << endl;
  197.                 } else {
  198.                     cout << "Пользователя с таким именем не существует" << endl;
  199.                 }
  200.                 break;
  201.             // Вывод всех пользователей
  202.             case 6:
  203.             {
  204.                 cout << "Все пользователи:" << endl;
  205.                 vector<User> users = db.getAll();
  206.                
  207.                 for (auto user : users) {
  208.                     cout << "Id:" << user.getId() << " Name:" << user.getName() << endl;
  209.                 }
  210.             }
  211.         }
  212.     }
  213.     system("pause");
  214.     return 0;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement