Здравствуйте! Чтобы помочь вам создать систему авторизации и регистрации для компании «Россгосстрах», я подготовлю подробный пример реализации в рамках Windows Forms на языке C#.
В этом примере я опишу структуру проекта, основные компоненты для каждой формы, работу с базой данных и проверки валидации. Также я учту стиль компании, логотип и расположение элементов.
Общая структура проекта
- Форма авторизации: LoginForm
- Форма регистрации: RegisterForm
- Форма-заглушка: SplashForm (или MainForm с ролью и ссылками)
- База данных: SQL Server или SQLite (например, SQLite для простоты)
Часть 1: Создание форм
1.1. LoginForm
Элементы:
- ComboBox
comboRole с вариантами: «Администратор», «Пользователь»
- TextBox
txtLogin
- TextBox
txtPassword (свойство UseSystemPasswordChar = true)
- CheckBox
chkShowPassword
- Button
btnLogin ("Войти")
- Button
btnExit (выход из приложения)
- Логотип компании (например, PictureBox)
Общие рекомендации:
- Расположить элементы аккуратно по центру или в удобной форме.
- В стиле — использовать фирменные цвета компании «Россгосстрах» (например, синий, белый, красный).
1.2. RegisterForm
Элементы:
- ComboBox
comboRole (выбор роли)
- TextBox
txtLogin
- TextBox
txtPassword (используйте UseSystemPasswordChar = true)
- TextBox
txtConfirmPassword
- CheckBox
chkShowPassword
- Button
btnRegister ("Зарегистрироваться")
- Button
btnBack (возврат на форму авторизации)
- Логотип компании
1.3. SplashForm (или MainForm)
Элементы:
- Label
lblRole (в левом верхнем углу)
- Label
lblFIO (по центру)
- Button
btnClose (закрытие формы)
- Button
btnBackAuth (возврат к форме авторизации)
Часть 2: Работа с базой данных
Используйте SQLite или SQL Server. Перед началом работы создайте таблицы:
CREATE TABLE Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Role VARCHAR(50),
Login VARCHAR(15) UNIQUE,
Password VARCHAR(50),
FullName VARCHAR(100) -- при необходимости
);
Держите пароли безопасными — лучше хранить их в хешированном виде, например, с помощью MD5, SHA-256 или более безопасных методов. Для примера — используем простое хранение (не рекомендуется для реальных приложений).
Часть 3: Логика проверок и работы формы
Валидация полей
- Поля не должны быть пустыми.
- Максимальная длина логина — 15 символов.
- Максимальная длина пароля — 8 символов.
- Логин должен быть уникальным при регистрации.
Проверка пароля и логина
if (string.IsNullOrWhiteSpace(txtLogin.Text) ||
string.IsNullOrWhiteSpace(txtPassword.Text))
{
MessageBox.Show("Поля не могут быть пустыми");
return;
}
if (txtLogin.Text.Length > 15)
{
MessageBox.Show("Логин не должен превышать 15 символов");
return;
}
if (txtPassword.Text.Length > 8)
{
MessageBox.Show("Пароль не должен превышать 8 символов");
return;
}
Часть 4: Стиль и дизайн
- Используйте цвета: синий (#003366), белый (#FFFFFF), красный (#FF0000).
- Вставьте логотип компании в каждую форму.
- Расположите элементы аккуратно с отступами.
- Сделайте интерфейс простым и удобным.
Пример кода для входа (LoginForm)
private void btnLogin_Click(object sender, EventArgs e)
{
string role = comboRole.SelectedItem.ToString();
string login = txtLogin.Text;
string password = txtPassword.Text;
if (string.IsNullOrWhiteSpace(login) || string.IsNullOrWhiteSpace(password))
{
MessageBox.Show("Пожалуйста, заполните все поля");
return;
}
// Проверка в базе данных
if (AuthenticateUser(role, login, password))
{
// Открытие формы-заглушки
var mainForm = new SplashForm(role, login);
mainForm.Show();
this.Hide();
}
else
{
MessageBox.Show("Некорректные данные");
}
}
private bool AuthenticateUser(string role, string login, string password)
{
// Здесь подключение к базе и проверка
using (var conn = new SQLiteConnection("Data Source=database.db"))
{
conn.Open();
string query = "SELECT COUNT(*) FROM Users WHERE Role=@role AND Login=@login AND Password=@password";
using (var cmd = new SQLiteCommand(query, conn))
{
cmd.Parameters.AddWithValue("@role", role);
cmd.Parameters.AddWithValue("@login", login);
cmd.Parameters.AddWithValue("@password", password);
int count = Convert.ToInt32(cmd.ExecuteScalar());
return count > 0;
}
}
}
Если у вас есть конкретные вопросы по коду или нужно помочь с конкретной частью (например, создание базы данных, дизайн или конкретная логика), скажите — я подготовлю подробное решение!