Gistrec icon

Simple bd

Gistrec | PRO | 05/03/18 04:29:51 PM UTC | 0 ⭐ | 531 👁️ | Never ⏰ | []
C++ |

3.52 KB

|

None

|

0 👍

/

0 👎

#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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎