Как я должен написать код входа в систему с C#?

У меня проблема с этим кодом. Это логин для программного обеспечения. Я хотел бы ограничить доступность для каждого сотрудника. Но это не работает. На самом деле я делаю enabled=false все варианты когда menu загружен.

Это код формы. Форма имеет 2 textboxesодин из них для username а другой для password и имеет один Enter кнопка.

    private void Enter_Click(object sender, EventArgs e)
    {
        if (txtPassword.Text == "10")
        {
            FormMenu a = new FormMenu();
            this.Hide();

            a.EmployeManagement.Enabled = true;
            a.Sabtenam.Enabled = true;
            a.Shora.Enabled = true;
            a.HozorGhiab.Enabled = true;
            a.Ketabkhane.Enabled = true;
            new FormMenu().Show();
            a.Refresh();                
        }
        else
            if (txtPassword.Text == "20")
            {
                FormMenu a = new FormMenu();
                this.Hide();

                a.Sabtenam.Enabled = true;
                a.HozorGhiab.Enabled = true;
                new FormMenu().Show();
            }
            else
                if (txtPassword.Text == "30")
                {
                    FormMenu a = new FormMenu();
                    this.Hide();

                    a.Shora.Enabled = true;
                    new FormMenu().Show();
                }
                    else
                    if (txtPassword.Text == "40")
                    {
                        FormMenu a = new FormMenu();
                        this.Hide();

                        a.HozorGhiab.Enabled = true;
                        new FormMenu().Show();
                    }
                    else
                        if (txtPassword.Text == "50")
                        {
                            FormMenu a = new FormMenu();
                            this.Hide();

                            a.Shora.Enabled = true;
                            new FormMenu().Show();
                        }
                        else
                            if (txtPassword.Text == "60")
                            {
                                FormMenu a = new FormMenu();
                                this.Hide();

                                a.Ketabkhane.Enabled = true;
                                new FormMenu().Show();
                            }
                            else
                                MessageBox.Show("Invalid username or password");



    }

2 ответа

Я бы предложил вам создать таблицу базы данных SQL с данными о сотрудниках и другую таблицу, в которой есть подробности о пароле, ограничениях и ссылочном номере сотрудника для первой таблицы.

Затем в коде вы можете взять пользовательский ввод и проверить эти значения со значениями вашей базы данных.

Вы должны удалить все эти строки new FormMenu().Show(); и используйте экземпляр, в котором вы включаете параметры. IE: a.Show()

if (txtPassword.Text == "10")
{
    FormMenu a = new FormMenu();
    this.Hide();

    a.EmployeManagement.Enabled = true;
    a.Sabtenam.Enabled = true;
    a.Shora.Enabled = true;
    a.HozorGhiab.Enabled = true;
    a.Ketabkhane.Enabled = true;
    a.Show();

}

и так далее для всех остальных, если условия.....

Это требует небольшого объяснения основного принципа ООП. Когда вы вызываете new, вы создаете новый экземпляр класса, вызываемого в новом вызове. У этого экземпляра все его свойства установлены по умолчанию. (Я предполагаю, что ваши меню начинаются с свойства Enabled, установленного в false). Вы начинаете изменять свойства этого экземпляра (a экземпляр), который вы хотите включить.

Теперь, если вы снова вызовете new и создадите новый экземпляр FormMenu, тогда вся работа, выполненная на a Экземпляр бесполезен, и вы видите безымянный экземпляр, показанный на вашем экране.

Подумайте об этом, написав

new FormMenu().Show();

равно писать

FormMenu b = new FormMenu();
b.Show();

ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ:
Конечно, я предполагаю, что этот код предназначен только для простых тестов вашей системы меню. Нет смысла использовать фиксированные пароли в реальном бизнес-приложении. Здесь многое нужно изменить, чтобы иметь что-то более профессиональное. Сначала вам нужна база данных, в которой хранятся имена пользователей, пароли и роли, которые они играют в вашем приложении. Затем вам нужно предоставить вашей программе способ чтения / записи информации для входа в систему из базы данных и не забудьте сохранить все пароли в хешированной форме, а не в открытом тексте. (Вы не хотите, чтобы ваш пароль легко читал любой, кто может взглянуть на таблицу, где вы его сохранили)

Другие вопросы по тегам