#include #include #include #include using namespace std; class PersonData { public: PersonData() : flag(false) {} ~PersonData() { if (flag) save(path); } bool load(const string& path) { ifstream inp(path); if (inp.is_open()) { string login; string password; while (inp >> login >> password) pd.insert({ login, password }); inp.close(); return true; } return false; } void save(const string& path) { if (flag) { ofstream out(path); if (out.is_open()) { for (const auto& [login, password] : pd) out << login << ' ' << password << '\n'; flag = false; } } } bool check(const string& login, const string& password)const { return pd.contains(login) && pd.at(login) == password; } bool add(const string& login, const string& password) { if (pd.contains(login)) return false; pd.insert({ login, password }); flag = true; return true; } private: bool flag; string path; map pd; }; class User { public: bool entry() { PersonData pd; if (!pd.load(location)) { puts("Ошибка: сервис не доступен в данный момент!"); return false; } string password = attempt(); if (!pd.check(login, password)) { puts("Ошибка: неверный Логин или Пароль"); return false; } return true; } bool registration() { puts("Зарегистрируйтесь..."); PersonData pd; if (!pd.load(location)) { puts("Ошибка: сервис не доступен в данный момент!"); return false; } string first_password = attempt(); string second_password; while (first_password != second_password) { if (!second_password.empty()) puts("Пароли не совпадают!"); cout << "Повторите пароль: "; cin >> second_password; } if (!pd.add(login, first_password)) { puts("Пользователь с таким логином уже существует!"); login.clear(); return false; } pd.save(location); puts("Регистрация завершена!"); return true; } string username()const { return login; } private: string login; inline static const string location{ "pd.txt" }; // создайте файл pd.txt string attempt() { cout << "Логин: "; cin >> login; cout << "Пароль: "; string password; cin >> password; return password; } }; int main() { system("chcp 1251 > nul"); User user; if (!user.entry()) user.registration(); cout << "Добро пожаловать, " << user.username() << "!\n"; system("pause > nul"); }