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