Pull to refresh

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

Всем привет! Сегодня мы напишем простейшую систему входа и регистрации аккаунта. Данные мы будем хранить в файле. Здесь не будет базы данных, и подобных систем. Заранее говорю, не советую использовать этот код для больших проектов, т.к любой пользователь может открыть файл, и вписывать случайные данные, тем самым попасть в чужой аккаунт. И так, приступим.
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;
}

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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.