Как стать автором
Обновить

Пишем простую систему регистрации и входа в аккаунт

Всем привет! Сегодня мы напишем простейшую систему входа и регистрации аккаунта. Данные мы будем хранить в файле. Здесь не будет базы данных, и подобных систем. Заранее говорю, не советую использовать этот код для больших проектов, т.к любой пользователь может открыть файл, и вписывать случайные данные, тем самым попасть в чужой аккаунт. И так, приступим.
PS: Целый код будет в конце.


Подключаем библиотеку fstream и iostream.


#include<iostream>
#include<fstream>
using namespace std;

Создаем класс Password, затем 2 функции, первую функцию я назвал Entrance, то есть вход, а вторую Sign_Up, то есть регистрация.


class Password
{
public:

    int Entrance()
    {

    }
    int Sign_up()
    {

    }
};

Начнем со второй функции (Sign_Up).Создаем 2 переменные типа string.Первую я назвал login, а вторую password.В них мы пишем название файла и его расширение. Как пример, я написал в переменную login название login.txt, а в password, password.txt. Также создаем 2 переменные fstream.Первую я назвал log, а вторую pass.


string login = "login.txt";
string password = "password.txt";

fstream log;
fstream pass;

Далее пишем логику создание/открытие файла. Ниже опишу код.


log.open(login, fstream::in | fstream::out | fstream::app);
pass.open(password, fstream::in | fstream::out | fstream::app);

Сверху мы создаем/открываем файл, затем, после переменной, мы подключаем чтение, запись, и сохранение текста в файл. Далее делаем проверку, создался/открылся ли наш файл.


if (!log.is_open() && !pass.is_open())
{
    cout << "Ошибка!" << endl;
}
else
{

}

Если все прошло без ошибок, то мы идем в else. Далее мы создаем 2 переменные типа string. Они будут хранить данные, которые ввел пользователь, они нам будут нужны для записи в файл.
Затем говорим пользователю, чтобы он ввел свой логин и пароль.


string log_cheker;
string pass_cheker;
cout << "Введите логин: "; cin >> log_cheker;
cout << endl;
cout << "Введите пароль: "; cin >> pass_cheker;

Далее мы записываем в файлы данные, которые ввел пользователь.


log << log_cheker;
pass << pass_cheker;
cout << "Регистрация прошла успешно!" << endl;

Всё! С регистрацией закончили, переходим ко входу. В первую функцию(Entrance) мы можем скопировать немного кода со второй, чтобы поменьше тратить время.


string login = "login.txt";
string password = "password.txt";

fstream log;
fstream pass;

log.open(login, fstream::in | fstream::out | fstream::app);
pass.open(password, fstream::in | fstream::out | fstream::app);

if (!log.is_open() && !pass.is_open())
{
    cout << "Ошибка!" << endl;
}
else
{
    string log_cheker;
    string pass_cheker;
}

Далее мы будем считывать данные с файла, который мы указали в переменную login и password.
Делать мы будем это с помощью цикла while.


while (!log.eof()) //Пока не закончатся символы, идем по циклу.
{
    log_cheker = "";
    log >> log_cheker; //Передаем данные с файла в переменную.
}
while (!pass.eof()) //Пока не закончатся символы, идем по циклу.
{
    pass_cheker = "";
    pass >> pass_cheker; //Передаем данные с файла в переменную.
}

Далее мы создаем ещё 2 переменные типа string. Они нам нужны для проверки данных, которые введет пользователь. Первую переменную я назвал login_correct, а вторую pass_correct.


string login_correct;
string pass_correct;

Далее просим пользователя ввести логин и пароль, и делаем проверку. Ниже опишу подробней.


cout << "Введите свой логин: "; cin >> login_correct;
cout << endl;
cout << "Введите свой пароль: "; cin >> pass_correct;

if (login_correct != log_cheker && pass_correct != pass_cheker)
{
    cout << "Пароль или логин введен не правильно!" << endl;
}
else
{
    cout << "Данные введены верно!" << endl;
}

Теперь по подробней. Мы просим пользователя ввести логин и пароль, далее идет проверка, на то, совпадают ли данные пользователя, с теми, которые мы считали с файлов, если да, то пишем "Данные введены верно", а если нет, то выводим "Пароль или логин введен не верно". Ну и теперь давайте сделаем мини меню, чтобы опробовать нашу программу. Создаем новый класс, я его назвал меню, и создаем функцию, назвал ее RunMenu.


class menu
{
public:

    int RunMenu()
    {
        int punkt;
        cout << "Добро пожаловать!" << endl;
        cout << "1.Вход" << endl;
        cout << "2.Регистрация" << endl;
        cin >> punkt;

        if (punkt != 1 && punkt != 2)
        {
            cout << "Выбран неверный пункт меню!" << endl;
        }
        if (punkt == 1)
        {
            system("cls");
            Password pass;
            pass.Entrance();
        }
        if (punkt == 2)
        {
            system("cls");
            Password pass;
            pass.Sign_up();
        }
        return 0;
    }
};

Думаю тут все понятно, теперь давайте вызовем наше меню.


int main()
{
    setlocale(LC_ALL, "ru");

    menu Menu;

    Menu.RunMenu();

    return 0;
}

Вот и всё! Мы написал простейшую систему регистрации и входа, для новичков будет полезно. Как и обещал, вот полный код.


class Password
{
public:

    int Entrance()
    {
        string login = "login.txt";
        string password = "password.txt";

        fstream log;
        fstream pass;

        log.open(login, fstream::in | fstream::out | fstream::app);
        pass.open(password, fstream::in | fstream::out | fstream::app);

        if (!log.is_open() && !pass.is_open())
        {
            cout << "Ошибка!" << endl;
        }
        else
        {
            string log_cheker;
            string pass_cheker;

            while (!log.eof()) //Пока не закончатся символы, идем по циклу.
            {
                log_cheker = "";
                log >> log_cheker; //Передаем данные с файла в переменную.
            }
            while (!pass.eof()) //Пока не закончатся символы, идем по циклу.
            {
                pass_cheker = "";
                pass >> pass_cheker; //Передаем данные с файла в переменную.
            }

            string login_correct;
            string pass_correct;

            cout << "Введите свой логин: "; cin >> login_correct;
            cout << endl;
            cout << "Введите свой пароль: "; cin >> pass_correct;

            if (login_correct != log_cheker && pass_correct != pass_cheker)
            {
                cout << "Пароль или логин введен не правильно!" << endl;
            }
            else
            {
                cout << "Данные введены верно!" << endl;
            }
            return 0;
        }
    }
    int Sign_up()
    {
        string login = "login.txt";
        string password = "password.txt";

        fstream log;
        fstream pass;

        log.open(login, fstream::in | fstream::out | fstream::app);
        pass.open(password, fstream::in | fstream::out | fstream::app);

        if (!log.is_open() && !pass.is_open())
        {
            cout << "Ошибка!" << endl;
        }
        else
        {
            string log_cheker;
            string pass_cheker;
            cout << "Введите свой логин: "; cin >> log_cheker;
            cout << endl;
            cout << "Введите свой пароль: "; cin >> pass_cheker;

            log << log_cheker;
            pass << pass_cheker;

            cout << "Регистрация прошла успешно!" << endl;

            return 0;

        }
    }

};
class menu
{
public:

    int RunMenu()
    {
        int punkt;
        cout << "Добро пожаловать!" << endl;
        cout << "1.Вход" << endl;
        cout << "2.Регистрация" << endl;
        cin >> punkt;

        if (punkt != 1 && punkt != 2)
        {
            cout << "Выбран неверный пункт меню!" << endl;
        }
        if (punkt == 1)
        {
            system("cls");
            Password pass;
            pass.Entrance();
        }
        if (punkt == 2)
        {
            system("cls");
            Password pass;
            pass.Sign_up();
        }
        return 0;
    }
};
int main()
{
    setlocale(LC_ALL, "ru");

    menu Menu;

    Menu.RunMenu();

    return 0;
}

Спасибо за внимание!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.