Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System; // Підключення основних системних функцій
- using System.Data; // Робота з таблицями даних у пам'яті
- using System.Drawing; // Бібліотека для роботи з графікою (кольори, шрифти)
- using System.Windows.Forms; // Бібліотека для створення віконних форм
- using MySql.Data.MySqlClient; // Драйвер для взаємодії з базою даних MySQL
- namespace lab8 // Простір імен проекту
- {
- public partial class EnrollmentsAdd : Form // Клас форми для реєстрації студента на курс
- {
- string connectionString = "server=localhost;database=lab;uid=root;pwd=;"; // Налаштування підключення до БД
- public EnrollmentsAdd() // Конструктор форми
- {
- InitializeComponent(); // Ініціалізація візуальних компонентів вікна
- }
- private void EnrollmentsAdd_Load(object sender, EventArgs e) // Подія при відкритті форми
- {
- LoadLists(); // Заповнення списків студентів та курсів
- }
- private void LoadLists() // Метод для завантаження даних у випадаючі списки
- {
- try // Блок для обробки можливих помилок при роботі з базою
- {
- MySqlConnection conn = new MySqlConnection(connectionString); // Створення об'єкта підключення
- conn.Open(); // Відкриття з'єднання з сервером БД
- string usersQuery = "SELECT id, full_name " +
- "FROM users " +
- "WHERE role_id = 3 " + // Фільтр: вибираємо тільки користувачів з роллю "Студент"
- "AND is_active = 1 " + // Тільки активні облікові записи
- "ORDER BY full_name ASC"; // Сортування за алфавітом
- MySqlDataAdapter daUsers = new MySqlDataAdapter(usersQuery, conn); // Адаптер для завантаження користувачів
- DataTable dtUsers = new DataTable(); // Таблиця в пам'яті для списку студентів
- daUsers.Fill(dtUsers); // Заповнення таблиці даними з бази
- Student_Input.DataSource = dtUsers; // Прив'язка даних до ComboBox студентів
- Student_Input.DisplayMember = "full_name"; // Відображення імені студента в списку
- Student_Input.ValueMember = "id"; // Використання ID як прихованого значення
- string coursesQuery = "SELECT id, title FROM courses WHERE is_active = 1 ORDER BY title ASC"; // Запит на активні курси
- MySqlDataAdapter daCourses = new MySqlDataAdapter(coursesQuery, conn); // Адаптер для курсів
- DataTable dtCourses = new DataTable(); // Таблиця в пам'яті для списку курсів
- daCourses.Fill(dtCourses); // Заповнення таблиці курсами
- Course_Input.DataSource = dtCourses; // Прив'язка даних до ComboBox курсів
- Course_Input.DisplayMember = "title"; // Відображення назви курсу
- Course_Input.ValueMember = "id"; // Використання ID курсу як значення
- conn.Close(); // Закриття підключення до бази
- }
- catch (Exception ex) // Обробка виняткових ситуацій
- {
- MessageBox.Show(ex.Message); // Виведення повідомлення про помилку
- }
- }
- private void Save_Click(object sender, EventArgs e) // Обробка натискання кнопки "Зберегти"
- {
- if (Student_Input.SelectedValue == null || Course_Input.SelectedValue == null) // Перевірка, чи вибрані значення
- {
- MessageBox.Show("Будь ласка, оберіть студента та курс."); // Повідомлення про необхідність вибору
- return; // Переривання виконання методу
- }
- try // Спроба виконати операцію запису в базу
- {
- MySqlConnection conn = new MySqlConnection(connectionString); // Створення з'єднання
- conn.Open(); // Відкриття з'єднання
- string checkQuery = "SELECT COUNT(*) FROM enrollments WHERE user_id = @user AND course_id = @course"; // Перевірка на дублікат
- MySqlCommand checkCmd = new MySqlCommand(checkQuery, conn); // Створення команди перевірки
- checkCmd.Parameters.AddWithValue("@user", Student_Input.SelectedValue); // Передача ID студента
- checkCmd.Parameters.AddWithValue("@course", Course_Input.SelectedValue); // Передача ID курсу
- if (Convert.ToInt32(checkCmd.ExecuteScalar()) > 0) // Якщо такий запис уже існує в базі
- {
- MessageBox.Show("Цей студент вже записаний на цей курс."); // Попередження про дублікат
- conn.Close(); // Закриття з'єднання
- return; // Скасування операції додавання
- }
- string query = "INSERT INTO enrollments (user_id, course_id, enrollment_date) VALUES (@user, @course, NOW())"; // Запит на додавання
- MySqlCommand cmd = new MySqlCommand(query, conn); // Створення команди вставки
- cmd.Parameters.AddWithValue("@user", Student_Input.SelectedValue); // Прив'язка параметра студента
- cmd.Parameters.AddWithValue("@course", Course_Input.SelectedValue); // Прив'язка параметра курсу
- cmd.ExecuteNonQuery(); // Виконання команди додавання в базу
- conn.Close(); // Закриття з'єднання
- this.DialogResult = DialogResult.OK; // Встановлення успішного результату для головної форми
- this.Close(); // Закриття вікна додавання
- }
- catch (Exception ex) // Обробка помилок під час виконання запитів
- {
- MessageBox.Show("Помилка при записі: " + ex.Message); // Виведення детальної помилки
- }
- }
- private void Exit_Click(object sender, EventArgs e) // Обробка натискання кнопки скасування
- {
- this.Close(); // Закриття поточної форми
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment