Курсова робота з дисципліни Організація баз даних та знань, НТУУ КПІ
« Назад
Завданняна курсову роботу по дисципліні "Організація баз даних та знань"фахове спрямування - (п.і.б.)___________________________________ Тема Курсової роботи: Дата представлення роботи до захисту до «____ » 20__ р.
Зміст Вступ. 4 Мета. 4 Предметна область. 4 1. Аналіз предметної області 5 2. Обґрунтування вибору бази даних та засобів розробки прикладного програмного продукту. 6 3. Алгоритм розв’язання завдання. 7 Запити для додавання даних. 8 Запити на оновлення даних. 9 Прості запити на вибірку. 10 Групуючі запити. 10 Запити з використанням з'єднань. 11 4. Опис програми для редагування бази даних та виведення звіту. 11 Висновки. 13 Список літератури. 15 Додаток. 16 Лістинг програми. 16 ВступМетаМетою даної курсової роботи є:
Предметна областьВ даній курсовій роботі описана розробка застосування, що буде автоматизувати процес продажу залізничних квитків. Нижче наведена повна умова завдання: Продаж залізничних квитків здійснюється таким чином. Клієнт запрошує наявність квитків на певну дату і напрям, від початкової до кінечної станції, додатково вказуючи бажаний тип вагону (купе, плацкарт і так далі). Касир здійснює пошук в базі по вказаних атрибутах, і повідомляє клієнтові можливі варіанти, які блокуються до закінчення операції. Клієнт вибирає з можливих варіантів квиток, після чого касир вносить дані до бази і отримує гроші за квиток. Дані, введені касиром, потрапляють у базу даних у центральному апараті, що унеможливлює продажу одного і того ж квитка різним пасажирам. У разі здачі квитка касир повертає клієнту гроші (за вирахуванням деякої пені), і забирає оформлений квиток, після чого позначає даний квиток як незайнятий. 1. Аналіз предметної областіВажливу роль в розробці програмних засобів займає аналіз предметної області, проектування системи, розробка схеми бази даних. Від цього етапу розробки залежить швидкодія застосування та коректність виведення результатів. В даному завданні, для початку, потрібно виділити сутності та створити ER-діаграму. Нижче наведені сутності та їх властивості:
- Назва рейсу - Кількість вагонів - Дата виїзду - Дата прибуття
- Номер вагону - Тип вагону
- Номер квитка - Ціна - Статус квитка
- Ім’я - Прізвище - Номер телефону
- Тип пільги - Розмір знижки
- Штраф за скасування На основі аналізу, можна побудувати ER-діаграму, представлену на рисунку 1. Рис. 1. ER-діаграма предметної області 2. Обґрунтування вибору бази даних та засобів розробки прикладного програмного продуктуДля даної розробки не потрібно дорогої комерційної бази даних. Оскільки об’єми інформації не дуже великі і буде створено тільки 6 таблиць в базі даних. 3. Алгоритм розв’язання завдання
- Вибір необхідного рейсу - Виведення вільних квитків на заданий рейс - Вибір будь-якого з вільних квитків - Введення необхідної інформації про особу - Якщо особа має пільгу: надати певну знижку
- Введення персональної інформації - Виведення всіх квитків що придбала особа - Вибір необхідного квитка - Якщо квиток був куплений зі знижкою: повернути гроші з урахуванням штрафу за здачу квитка
- Ввести інформацію щодо рейсу - Додати такий рейс в базу даних - Додати необхідну кількість вагонів до бази даних - Додати необхідну кількість квитків до бази даних Нижче наведені запити, які виконує програма до бази даних: Запити для додавання даних- Додавання рейсу в базу даних string com_insert = "INSERT INTO passage(passage_name,passage_number_wagons,passage_date_start,passage_date_finish) VALUES('"+ name +"','"+ number_wagons +"','" + date_start + "','" + date_arrive + "')"; - Додавання вагонів в базу даних string com_insert = "INSERT INTO wagon(wagon_number,wagon_type,passage_id) VALUES('" + wagon + "','Купе','" + id_passage + "')"; - Додавання квитків до бази string com_insert_ticket = "INSERT INTO ticket(ticket_number,ticket_price,ticket_status,wagon_id) VALUES('" + number_ticket + "','" + price[і] + "','0','" + id_wagon + "')"; Рис. 2 - Форма введення даних Рис. 3- Введенні дані: Рейс, вагони та квитки відповідно Запити на оновлення данихОновлення статусу квитка та коду клієнта при покупці string com_update_ticket = "UPDATE ticket SET client_id = '" + id_client + "',ticket_status = '1' WHERE ticket_id ='" + id_ticket + "'"; Рис. 4 - Результат після оновлення даних Прості запити на вибіркуОбирає всі квитки які куплені і прив‘язані до особи SELECT * FROM ticket WHERE ticket_status = 1 AND client_id = '" + id_client + "' Обирає необхідне поле з таблиці Рейси за ключем SELECT " + value + " FROM passage WHERE passage_id = '" + temp + "' Групуючі запитиОбрати всі рейси SELECT passage_name FROM passage GROUP BY passage_name Рис. 5 – Список рейсів Обрати всі пільги SELECT benefit_type FROM benefit GROUP BY benefit_type Рис. 6 – Можливі пільги Запити з використанням з'єднаньОбирає рейс за кодом квитка SELECT passage_id FROM wagon JOIN ticket WHERE wagon.wagon_id = ticket.wagon_id AND ticket.ticket_id = '" + id + "' 4. Опис програми для редагування бази даних та виведення звітуДля редагування БД було розроблено програму на С#. Як буде показано на screenshot-ах, запити на вибірку а також заповнення таблиць завжди відбуваються автоматично. Деякі з них були описані вище. Процес купівлі квитка: Рис. 7. – Вільні квитки на заданий рейс Рис. 8. – Введення інформації про клієнта під час купівлі квитка Рис. 9. – Покупець занесений в базу Рис.10. – Дані про квиток теж змінені Розглянемо процес скасування квитка: Рис. 11. – Введення даних про клієнта та виведення всіх квитків які він купив Рис. 12 – Підтвердження дії Рис.13. – Успішне виконання операції Також програма формує звіт: Рис. 14. – Звіт про купівлю та скасування квитків ВисновкиВ ході виконання курсової роботи, був здійснений аналіз предметної області, після чого створена ER-діаграма. На основі якої побудована база даних. При створенні системи були використані база даних MS SQL та середовище розробки Microsoft Visual Studio 2012. В даній курсовій роботі була розроблена база даних з таблицями, які містять дані про: - Квитки на потяг - Інформацію про покупців - Інформацію про рейси Для редагування таблиць в базі даних було розроблено програму. В самій програмі реалізовані перевірки на коректність введення даних і в базі даних здійснюється контроль коректності збереження. При виконанні курсової роботи були використані запити, які дозволяли дізнаватися кількість записів у таблиці, робити вибірку даних за умовами, виконувати сортування даних за вказаними полями. В подальшому дану систему можна модифікувати, додавши функціональності. Це дозволяє зробити використана СУБД. Також я здобув досвід аналізування певної предметної області та поглибив знання з дисципліни «Організація баз даних та знань». Отже, поставлена на початку виконання курсової роботи мета виконана. Список літератури
ДодатокЛістинг програмиФайл Start.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Trains { public partial class Start : Form { public Start() { InitializeComponent(); } private void button_add_passage_Click(object sender, EventArgs e) { Add_passage add_race = new Add_passage(); this.Hide(); add_race.ShowDialog(); this.Close(); } private void button_exit_Click(object sender, EventArgs e) { this.Hide(); this.Close(); } private void button_see_all_Click(object sender, EventArgs e) { Output_passeges output_passages = new Output_passeges(); this.Hide(); output_passages.ShowDialog(); this.Close(); } private void button_buy_Click(object sender, EventArgs e) { //пошук по можливим варіантом; Buy_ticket buy_ticket = new Buy_ticket(); this.Hide(); buy_ticket.ShowDialog(); this.Close(); } private void button_cancel_buy_Click(object sender, EventArgs e) { Cancel_ticket cancel_ticket = new Cancel_ticket(); this.Hide(); cancel_ticket.ShowDialog(); this.Close(); } private void button_summary_Click(object sender, EventArgs e) { Summary summary = new Summary(); this.Hide(); summary.ShowDialog(); this.Close(); } private void logInToolStripMenuItem_Click(object sender, EventArgs e) { Autorization autorization = new Autorization(); autorization.ShowDialog(); this.Start_Load(sender, e); } private void Start_Load(object sender, EventArgs e) { if (File.Exists("Avt.txt") == true) { this.pictureBox1.Location = new System.Drawing.Point(118, 27); button_see_all.Visible = true; button_add_passage.Visible = true; button_summary.Visible = true; button_buy.Visible = false; button_cancel_buy.Visible = false; logOffToolStripMenuItem.Enabled = true; logInToolStripMenuItem.Enabled = false; } else { this.pictureBox1.Location = new System.Drawing.Point(12, 27); button_summary.Visible = false; button_buy.Visible = true; button_cancel_buy.Visible = true; button_add_passage.Visible = false; button_see_all.Visible = false; logOffToolStripMenuItem.Enabled = false; logInToolStripMenuItem.Enabled = true; } } private void logOffToolStripMenuItem_Click(object sender, EventArgs e) { this.pictureBox1.Location = new System.Drawing.Point(12, 27); button_add_passage.Visible = false; button_see_all.Visible = false; button_summary.Visible = false; logOffToolStripMenuItem.Enabled = false; logInToolStripMenuItem.Enabled = true; button_buy.Visible = true; button_cancel_buy.Visible = true; if (File.Exists("Avt.txt") == true) File.Delete("Avt.txt"); } private void infoToolStripMenuItem_Click(object sender, EventArgs e) { Info info = new Info(); info.ShowDialog(); } } } Файл Add_passage.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class Add_passage : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public static int id_passage,id_wagon; public static int number_places = 40; public Add_passage() { InitializeComponent(); } private void button_back_Click(object sender, EventArgs e) { Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } public void AddTickets() { int num_wagon = Convert.ToInt32(textBox_number_wagons.Text); string name = textBox_start.Text + "-" + textBox_target.Text; int[] price = new int[3]; int[] place = new int[3]; price[0] = Convert.ToInt32(textBox_K.Text); price[1] = Convert.ToInt32(textBox_P.Text); price[2] = Convert.ToInt32(textBox_SV.Text); place[0] = Convert.ToInt32(textBox_num_K.Text); place[1] = Convert.ToInt32(textBox_num_P.Text); place[2] = Convert.ToInt32(textBox_num_SV.Text); string com_select = "SELECT passage_id FROM passage WHERE passage_name = '" + name + "'"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while(reader.Read()) { id_passage = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } for (int i = 0; i < place[0]; i++) { int wagon = i + 1; string com_insert = "INSERT INTO wagon(wagon_number,wagon_type,passage_id) VALUES('" + wagon + "','Купе','" + id_passage + "')"; MySqlCommand sql_insert = new MySqlCommand(com_insert, con); try { con.Open(); sql_insert.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_wagon = "SELECT wagon_id FROM wagon WHERE wagon_number = '" + wagon + "'"; MySqlCommand sql_select_wagon = new MySqlCommand(com_select_wagon, con); try { con.Open(); MySqlDataReader reader = sql_select_wagon.ExecuteReader(); while (reader.Read()) { id_wagon = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } for (int j = 0; j < number_places; j++) { string number_ticket = wagon.ToString() + "-0-" + (j+1).ToString(); string com_insert_ticket = "INSERT INTO ticket(ticket_number,ticket_price,ticket_status,wagon_id) VALUES('" + number_ticket + "','" + price[0] +"','0','" + id_wagon + "')"; MySqlCommand sql_insert_ticket = new MySqlCommand(com_insert_ticket, con); try { con.Open(); sql_insert_ticket.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } } for (int i = 0; i < place[1]; i++) { int wagon = place[0] + i + 1; string com_insert = "INSERT INTO wagon(wagon_number,wagon_type,passage_id) VALUES('" + wagon + "','Плацкарт','" + id_passage + "')"; MySqlCommand sql_insert = new MySqlCommand(com_insert, con); try { con.Open(); sql_insert.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_wagon = "SELECT wagon_id FROM wagon WHERE wagon_number = '" + wagon + "'"; MySqlCommand sql_select_wagon = new MySqlCommand(com_select_wagon, con); try { con.Open(); MySqlDataReader reader = sql_select_wagon.ExecuteReader(); while (reader.Read()) { id_wagon = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } for (int j = 0; j < number_places; j++) { string number_ticket = wagon.ToString() + "-0-" + (j+1).ToString(); string com_insert_ticket = "INSERT INTO ticket(ticket_number,ticket_price,ticket_status,wagon_id) VALUES('" + number_ticket + "','" + price[1] + "','0','" + id_wagon + "')"; MySqlCommand sql_insert_ticket = new MySqlCommand(com_insert_ticket, con); try { con.Open(); sql_insert_ticket.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } } for (int i = 0; i < place[2]; i++) { int wagon = place[0] + place[1] + i + 1; string com_insert = "INSERT INTO wagon(wagon_number,wagon_type,passage_id) VALUES('" + wagon + "','Спальний вагон','" + id_passage + "')"; MySqlCommand sql_insert = new MySqlCommand(com_insert, con); try { con.Open(); sql_insert.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_wagon = "SELECT wagon_id FROM wagon WHERE wagon_number = '" + wagon + "'"; MySqlCommand sql_select_wagon = new MySqlCommand(com_select_wagon, con); try { con.Open(); MySqlDataReader reader = sql_select_wagon.ExecuteReader(); while (reader.Read()) { id_wagon = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } for (int j = 0; j < number_places; j++) { string number_ticket = wagon.ToString() + "-0-" + (j+1).ToString(); string com_insert_ticket = "INSERT INTO ticket(ticket_number,ticket_price,ticket_status,wagon_id) VALUES('" + number_ticket + "','" + price[2] + "','0','" + id_wagon + "')"; MySqlCommand sql_insert_ticket = new MySqlCommand(com_insert_ticket, con); try { con.Open(); sql_insert_ticket.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } } } public void AddPassage() { string name = textBox_start.Text + "-" + textBox_target.Text; int number_wagons = Convert.ToInt32(textBox_number_wagons.Text); string date_start = Convert.ToString(maskedTextBox_start_date.Text + " " + maskedTextBox_start_time.Text); string date_arrive = Convert.ToString(maskedTextBox_arrive_date.Text + " " + maskedTextBox_arrive_time.Text); string com_insert = "INSERT INTO passage(passage_name,passage_number_wagons,passage_date_start,passage_date_finish) VALUES('"+ name +"','"+ number_wagons +"','" + date_start + "','" + date_arrive + "')"; MySqlCommand sql_insert = new MySqlCommand(com_insert, con); try { con.Open(); sql_insert.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } public string CheckForTrue() { string message = ""; if (textBox_start.Text == "") message += "\nПочатковий пункт;"; if (textBox_target.Text == "") message += "\nКінцевий пункт;"; if (textBox_number_wagons.Text == "") message += "\nКількість вагонів;"; if (maskedTextBox_start_date.Text == "" || maskedTextBox_start_time.Text == "") message += "\nДата відправлення;"; if (maskedTextBox_arrive_date.Text == "" || maskedTextBox_arrive_time.Text == "") message += "\nДата прибуття;"; if (textBox_K.Text == "") message += "\nЦіна за квиток Купе;"; if (textBox_P.Text == "") message += "\nЦіна за квиток Плацкарт;"; if (textBox_SV.Text == "") message += "\nЦіна за квиток Спальний вагон;"; if (textBox_num_K.Text == "") message += "\nКількість квитків Купе;"; if (textBox_num_P.Text == "") message += "\nКількість квитків Плацкарт;"; if (textBox_num_SV.Text == "") message += "\nКількість квитків Спальний вагон;"; return message; } private void button_continue_Click(object sender, EventArgs e) { if (CheckForTrue() == "") { AddPassage(); AddTickets(); Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } else MessageBox.Show("Не заповнені наступні поля:" + CheckForTrue(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } Файл Autorization.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Trains { public partial class Autorization : Form { public static string pin = "admin"; public static string s = ""; public Autorization() { InitializeComponent(); } public string ReturnPin() { return pin; } private void button2_Click(object sender, EventArgs e) { if (File.Exists("Avt.txt") == true) File.Delete("Avt.txt"); StreamWriter sw; if (String.Compare(s, ReturnPin()) == 0) { sw = File.CreateText("Avt.txt"); sw.Write(s); sw.Close(); this.Close(); } else { MessageBox.Show("Пароль введено невірно", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } textBox1.Text = ""; s = ""; } private void textBox1_TextChanged(object sender, EventArgs e) { string p = textBox1.Text; bool flag = false; for (int i = 0; i < p.Length; i++) if (p[i] != '*') { s += p[i]; flag = true; } if (flag == true) { textBox1.Text = ""; for (int i = 0; i < p.Length; i++) textBox1.Text += "*"; } } } } Файл Buy_ticket.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class Buy_ticket : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public static int id_passage,num_wagon; public Buy_ticket() { InitializeComponent(); this.comboBox_passage.Items.AddRange(SelectPassages()); } private static int CountPassages() { int num_pas = 0; string com_select_count = "SELECT COUNT(1) FROM passage"; MySqlCommand sql_select_count = new MySqlCommand(com_select_count, con); try { con.Open(); MySqlDataReader reader = sql_select_count.ExecuteReader(); while (reader.Read()) { num_pas = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return num_pas; } private static string[] SelectPassages() { string[] passages = new string[CountPassages()]; string com_select_passage = "SELECT passage_name FROM passage GROUP BY passage_name"; MySqlCommand sql_select_passage = new MySqlCommand(com_select_passage, con); try { con.Open(); MySqlDataReader reader = sql_select_passage.ExecuteReader(); int i = 0; while (reader.Read()) { passages[i++] = reader[0].ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return passages; } public static DataTable FillTable(MySqlCommand command) { DataTable data_table = new DataTable(); try { con.Open(); command.ExecuteNonQuery(); MySqlDataAdapter data_adapter = new MySqlDataAdapter(command); data_adapter.Fill(data_table); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return data_table; } private void button_find_Click(object sender, EventArgs e) { string com_select_passage = "SELECT passage_id FROM passage WHERE passage_name = '" + comboBox_passage.Text + "'"; MySqlCommand sql_select_passage = new MySqlCommand(com_select_passage, con); try { con.Open(); MySqlDataReader reader = sql_select_passage.ExecuteReader(); while (reader.Read()) { id_passage = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_passage1 = "SELECT passage_number_wagons FROM passage WHERE passage_name = '" + comboBox_passage.Text + "'"; MySqlCommand sql_select_passage1 = new MySqlCommand(com_select_passage1, con); try { con.Open(); MySqlDataReader reader = sql_select_passage1.ExecuteReader(); while (reader.Read()) { num_wagon = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } int[] num_wag = new int[num_wagon]; string com_select_wagon = "SELECT wagon_id FROM wagon WHERE passage_id = '" + id_passage + "'"; MySqlCommand sql_select_wagon = new MySqlCommand(com_select_wagon, con); try { int i = 0; con.Open(); MySqlDataReader reader = sql_select_wagon.ExecuteReader(); while (reader.Read()) { num_wag[i++] = Convert.ToInt32(reader.GetValue(0).ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } DataTable data_table = new DataTable(); for (int i = 0; i < num_wagon; i++) { string com_select_ticket = "SELECT * FROM ticket WHERE ticket_status = 0 AND wagon_id = '" + num_wag[i] + "'"; MySqlCommand sql_select = new MySqlCommand(com_select_ticket, con); try { con.Open(); sql_select.ExecuteNonQuery(); MySqlDataAdapter data_adapter = new MySqlDataAdapter(sql_select); data_adapter.Fill(data_table); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } dataGridView1.DataSource = data_table; } private void button_back_Click(object sender, EventArgs e) { Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { DataTable data_table = (DataTable)dataGridView1.DataSource; //get table int id_ticket = Convert.ToInt32(data_table.Rows[e.RowIndex][0].ToString()); string passage = comboBox_passage.Text; ClientInfo client_info = new ClientInfo(id_ticket,passage); this.Hide(); client_info.ShowDialog(); this.Close(); } } } Файл Cancel_ticket.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class Cancel_ticket : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public const int penalty = 35; public Cancel_ticket() { InitializeComponent(); } private void button_ok_Click(object sender, EventArgs e) { string name = textBox_name.Text; string surname = textBox_surname.Text; string phone = textBox_phone.Text; int id_client = 0; string com_select_client = "SELECT client_id FROM client WHERE client_name = '" + name + "' AND client_surname = '" + surname + "' AND client_phone = '" + phone + "'"; MySqlCommand sql_select_client = new MySqlCommand(com_select_client, con); try { con.Open(); MySqlDataReader reader = sql_select_client.ExecuteReader(); while (reader.Read()) { id_client = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_ticket = "SELECT * FROM ticket WHERE ticket_status = 1 AND client_id = '" + id_client + "'"; MySqlCommand sql_select = new MySqlCommand(com_select_ticket, con); try { con.Open(); sql_select.ExecuteNonQuery(); DataTable data_table = new DataTable(); MySqlDataAdapter data_adapter = new MySqlDataAdapter(sql_select); data_adapter.Fill(data_table); dataGridView1.DataSource = data_table; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } private string GetValue(string value,int id) { string temp = ""; string com_select_id = "SELECT passage_id FROM wagon JOIN ticket WHERE wagon.wagon_id = ticket.wagon_id AND ticket.ticket_id = '" + id + "'"; MySqlCommand sql_select_id = new MySqlCommand(com_select_id, con); try { con.Open(); MySqlDataReader reader = sql_select_id.ExecuteReader(); while (reader.Read()) { temp = reader.GetValue(0).ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_value = "SELECT " + value + " FROM passage WHERE passage_id = '" + temp + "'"; MySqlCommand sql_select_value = new MySqlCommand(com_select_value, con); try { int i = 0; con.Open(); MySqlDataReader reader = sql_select_value.ExecuteReader(); while (reader.Read()) { temp = reader.GetValue(0).ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int GetPriceOfTicket(int id) { int temp = 0; string com_select_value = "SELECT ticket_price FROM ticket WHERE ticket_id = '" + id + "'"; MySqlCommand sql_select_value = new MySqlCommand(com_select_value, con); try { con.Open(); MySqlDataReader reader = sql_select_value.ExecuteReader(); while (reader.Read()) { temp = Convert.ToInt32(reader.GetValue(0).ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { DataTable data_table = (DataTable)dataGridView1.DataSource; //get table int id_ticket = Convert.ToInt32(data_table.Rows[e.RowIndex][0].ToString()); float temp_price = GetPriceOfTicket(id_ticket) * (1 - (float)penalty / 100); string message = "Ви впевнені що хочете здати квиток?"; message += "\nІнформація про квиток:"; message += "\nЗвідки-куди:" + GetValue("passage_name",id_ticket); message += "\nЧас відправлення:" + GetValue("passage_date_start",id_ticket); message += "\nЧас прибуття:" + GetValue("passage_date_finish", id_ticket); message += "\nВам повернуть 65% вартості квитка, тобто:" + temp_price; DialogResult result = MessageBox.Show(message,"",MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { string com_insert = "INSERT INTO cancellation(cancellation_penalty,ticket_id) VALUES('" + penalty + "','" + id_ticket + "')"; MySqlCommand sql_insert = new MySqlCommand(com_insert, con); try { con.Open(); sql_insert.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_update = "UPDATE ticket SET client_id = '0', ticket_status = '0' WHERE ticket_id = '" + id_ticket + "'"; MySqlCommand sql_update = new MySqlCommand(com_update, con); try { con.Open(); sql_update.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } MessageBox.Show("Вам повернули " + temp_price + " грн.", "Квиток був успішно зданий!", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void button_back_Click(object sender, EventArgs e) { Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } } } Файл ClientInfo.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class ClientInfo : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public static int id_ticket; public static int prototype; public static string passage_name; public ClientInfo(int id,string passage) { InitializeComponent(); id_ticket = id; passage_name = passage; this.comboBox_benefit.Items.AddRange(SelectBenefits()); } private static int CountBenefits() { int num_ben = 0; string com_select_count = "SELECT COUNT(1) FROM benefit"; MySqlCommand sql_select_count = new MySqlCommand(com_select_count, con); try { con.Open(); MySqlDataReader reader = sql_select_count.ExecuteReader(); while (reader.Read()) { num_ben = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return num_ben; } private static string[] SelectBenefits() { string[] benefits = new string[CountBenefits()]; string com_select_benefit = "SELECT benefit_type FROM benefit GROUP BY benefit_type"; MySqlCommand sql_select_benefit = new MySqlCommand(com_select_benefit, con); try { con.Open(); MySqlDataReader reader = sql_select_benefit.ExecuteReader(); int i = 0; while (reader.Read()) { benefits[i++] = reader[0].ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return benefits; } private void ClientInfo_Load(object sender, EventArgs e) { } private void button_back_Click(object sender, EventArgs e) { Buy_ticket buy_ticket = new Buy_ticket(); this.Hide(); buy_ticket.ShowDialog(); this.Close(); } private string Check() { string message = ""; if (textBox_name.Text == "") message += "\nІм'я;"; if (textBox_surname.Text == "") message += "\nПрізвище;"; if (textBox_phone.Text == "") message += "\nНомер телефону;"; return message; } private void button_ok_Click(object sender, EventArgs e) { if (Check() == "") { string name = textBox_name.Text; string surname = textBox_surname.Text; string phone = textBox_phone.Text; string benefit = comboBox_benefit.Text; int id_benefit = 0; int id_client = 0; if (benefit != "") { string com_select = "SELECT benefit_id FROM benefit WHERE benefit_type = '" + benefit + "'"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while (reader.Read()) { id_benefit = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } } if (id_benefit == 0) benefit = "-"; string com_insert_client = "INSERT INTO client(client_name,client_surname,client_phone,client_benefit,benefit_id) VALUES('" + name + "','" + surname + "','" + phone + "','" + benefit + "','" + id_benefit + "')"; MySqlCommand sql_insert_client = new MySqlCommand(com_insert_client, con); try { con.Open(); sql_insert_client.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_select_client = "SELECT client_id FROM client WHERE client_name = '" + name + "' AND client_surname = '" + surname + "' AND client_phone = '" + phone + "'"; MySqlCommand sql_select_client = new MySqlCommand(com_select_client, con); try { con.Open(); MySqlDataReader reader = sql_select_client.ExecuteReader(); while (reader.Read()) { id_client = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } string com_update_ticket = "UPDATE ticket SET client_id = '" + id_client + "',ticket_status = '1' WHERE ticket_id ='" + id_ticket + "'"; MySqlCommand sql_update_ticket = new MySqlCommand(com_update_ticket, con); try { con.Open(); sql_update_ticket.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } MessageBox.Show("Квиток був успішно куплений!", "Вітаємо!", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Незаповнені наступні поля:" + Check(),"Увага!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); } } } } Файл Info.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Trains { public partial class Info : Form { public Info() { InitializeComponent(); } private void button_ok_Click(object sender, EventArgs e) { this.Hide(); this.Close(); } } } Файл Output_passages.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class Output_passeges : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public Output_passeges() { InitializeComponent(); } public static DataTable FillTableByRequest(MySqlCommand command) { DataTable data_table = new DataTable(); try { con.Open(); command.ExecuteNonQuery(); MySqlDataAdapter data_adapter = new MySqlDataAdapter(command); data_adapter.Fill(data_table); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return data_table; } private void button1_Click(object sender, EventArgs e) { Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } private void Output_passeges_Load(object sender, EventArgs e) { MySqlCommand sql_select1 = new MySqlCommand("SELECT * FROM `passage`", con); dataGridView1.DataSource = FillTableByRequest(sql_select1); MySqlCommand sql_select2 = new MySqlCommand("SELECT * FROM `wagon`", con); dataGridView2.DataSource = FillTableByRequest(sql_select2); MySqlCommand sql_select3 = new MySqlCommand("SELECT * FROM `ticket`", con); dataGridView3.DataSource = FillTableByRequest(sql_select3); MySqlCommand sql_select4 = new MySqlCommand("SELECT * FROM `client`", con); dataGridView4.DataSource = FillTableByRequest(sql_select4); MySqlCommand sql_select5 = new MySqlCommand("SELECT * FROM `benefit`", con); dataGridView5.DataSource = FillTableByRequest(sql_select5); MySqlCommand sql_select6 = new MySqlCommand("SELECT * FROM `cancellation`", con); dataGridView6.DataSource = FillTableByRequest(sql_select6); } } } Файл Summary.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace Trains { public partial class Summary : Form { public static string ConnectionString = @"Server=127.0.0.1; Database=trains; UserId=root; Password=;"; public static MySqlConnection con = new MySqlConnection(ConnectionString); public static float SumTicket; public static float CanTicket; public Summary() { InitializeComponent(); } private int SelectBenefit(int id) { int temp = 0; string com_select = "SELECT benefit_id FROM client WHERE client_id = '" + id + "'"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while (reader.Read()) { temp = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int CountTickets() { int temp = 0; string com_select = "SELECT COUNT(1) FROM ticket WHERE ticket_status = 1 AND client_id != 0"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while (reader.Read()) { temp = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int CountCancelTickets() { int temp = 0; string com_select = "SELECT COUNT(1) FROM cancellation"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while (reader.Read()) { temp = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int[] SelectParametr(string param) { int[] temp = new int[CountTickets()]; string com_select = "SELECT " + param + " FROM ticket WHERE ticket_status = 1 AND client_id != 0"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); int i = 0; while (reader.Read()) { temp[i++] = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int GetBenefitSize(int id) { int size = 0; string com_select = "SELECT benefit_size FROM benefit WHERE benefit_id = '" + id + "'"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); while (reader.Read()) { size = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return size; } private int[] SelectParametrCancel(string param) { int[] temp = new int[CountCancelTickets()]; string com_select = "SELECT " + param + " FROM cancellation"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); int i = 0; while (reader.Read()) { temp[i++] = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private int SelectPrice(int id) { int temp = 0; string com_select = "SELECT ticket_price FROM ticket WHERE ticket_id = '" + id + "'"; MySqlCommand sql_select = new MySqlCommand(com_select, con); try { con.Open(); MySqlDataReader reader = sql_select.ExecuteReader(); int i = 0; while (reader.Read()) { temp = Convert.ToInt32(reader[0].ToString()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { con.Close(); } return temp; } private void Summary_Load(object sender, EventArgs e) { SumTicket = 0; int[] price = SelectParametr("ticket_price"); int[] client = SelectParametr("client_id"); for (int i = 0; i < CountTickets(); i++) { int benefit = SelectBenefit(client[i]); if (benefit != 0) { int size = GetBenefitSize(benefit); float k = (1 - ((float)size / 100)); SumTicket += (price[i] * k); } else SumTicket += price[i]; } int number_buy = CountTickets(); CanTicket = 0; int[] ticket = SelectParametrCancel("ticket_id"); int[] penalty = SelectParametrCancel("cancellation_penalty"); for (int i = 0; i < CountCancelTickets(); i++) { number_buy++; SumTicket += SelectPrice(ticket[i]); float k = (1 - ((float)penalty[i] / 100)); CanTicket += (SelectPrice(ticket[i]) * k); } label2.Text = number_buy.ToString(); label4.Text = SumTicket.ToString(); label8.Text = CountCancelTickets().ToString(); label7.Text = CanTicket.ToString(); label10.Text = (SumTicket - CanTicket).ToString(); } private void button_back_Click(object sender, EventArgs e) { Start start = new Start(); this.Hide(); start.ShowDialog(); this.Close(); } } } З повагою ІЦ "KURSOVIKS"! |