Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3290423
А
Аноним
27 июня 2025 05:58 · публичный вопрос
А
Аноним

Задание 1. Создать форму авторизации и регистрации компании «Россгосстрах» А) На форме авторизации должны присутствовать ComboBox позволяющий выбрать роль «Администратор» или…

Запрос пользователя

Задание 1. Создать форму авторизации и регистрации компании «Россгосстрах» А) На форме авторизации должны присутствовать ComboBox позволяющий выбрать роль «Администратор» или «Пользователь», поля «Логин», «Пароль», CheckВох скрывающий и показывающий пароль, Кнопка «Войти» и кнопка выхода из приложения Б) На форме регистрации должны присутствовать поля «Роль», «Логин», «Пароль», «Повторите пароль», CheckBox скрывающий и показывающий пароль, кнопка «Зарегистрироваться», кнопка возврата на форму Авторизации. В) Третья форма «заглушка» должна содержать в левом верхнем углу формы Label отображающий роль вошедшего в систему, так же Label по середине формы, отображающий ФИО и кнопку закрытия формы и возврата на форму авторизации. Задание 2. Данные и пользователя, и администратора, должны храниться в базе данных. При регистрации новой роли, данные должны вноситься в БД, после чего с помощью этих же данных, можно произвести авторизацию. Задание 3. Программа должна проходить проверку на валидацию: Поля не могут быть пустыми. Пароль не должен содержать более 8 символов Логин не может содержать более 15 символов и повторяться. Задание 4. Интерфейс Элементы должны отображаться четко и ровно, не должны пересекать друг друга. Цветовая гамма и дизайн, должны соответствовать стилю компании На каждой форме должен присутствовать логотип компании

Ответ нейросети
27 июня 2025 05:58

Здравствуйте! Чтобы помочь вам создать систему авторизации и регистрации для компании «Россгосстрах», я подготовлю подробный пример реализации в рамках 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;
        }
    }
}

Если у вас есть конкретные вопросы по коду или нужно помочь с конкретной частью (например, создание базы данных, дизайн или конкретная логика), скажите — я подготовлю подробное решение!