Базы данных. Варинат_4_Театр. Вариант 4 Средства разработки
Скачать 175.9 Kb.
|
Вариант № 4 Средства разработки: В качестве языка программирования был выбран C# - объектно-ориентированный язык программирования. Язык входит в семью С-подобных языков. Синтаксис приближен к Java и C++. Его особенности: статистическая типизация, поддерживается полиморфизм,поддерживается перегрузка операторов,доступна делегация, атрибуты, события, обобщенные типы и анонимные функции. Разработка Microsoft много особенностей унаследовала у Delphi, Smalltalk и Java. В качестве среды разработки была выбрана Visual Studio Community 2019 - одна из версий среди линейки продуктов компании Microsoft Visual Studio, включающих интегрированную среду разработки программного обеспечения и ряд других инструментов. Структура таблиц базы данных theatre_bd.accdb Рисунок 1 –Структура таблиц Экранные формы программы Рисунок 2 –Главная форма программы Рисунок 3 –Дополнительные окна добавления/редактирования Листингпрограммы using System; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace theater_app { public partial class Form1 : Form { public string connectString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Theater\\theater_app\\theater_app\\theatre_bd.accdb"; public string name, dir, desc, date, count, count1, typeName, descType, respName; public int type; public bool add=false; public bool update = false; public bool add2 = false; public bool update2 = false; public int rowSelect, rowSelect2; public int code, code2; public OleDbConnection myConnection; OleDbDataAdapter adap; DataTable dt; public Form1() { InitializeComponent(); myConnection = new OleDbConnection(connectString); myConnection.Open(); type_table.Columns[0].Width = 70; name_table.Columns[0].Width = 70; name_table.Columns[1].MinimumWidth = 200; name_table.Columns[2].MinimumWidth = 100; name_table.Columns[3].MinimumWidth = 200; theatre_bdDataSet.Relations.Clear(); //Организация связи главной и подчиненной таблицы theatre_bdDataSet.Relations.Add("table_relations", theatre_bdDataSet.Tables["Тип спектакля"].Columns["Код"], theatre_bdDataSet.Tables["Названия спектаклей"].Columns["Тип"]); name_table.MultiSelect = false; type_table.MultiSelect = false; } private void Form1_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "theatre_bdDataSet.Тип_спектакля". При необходимости она может быть перемещена или удалена. this.тип_спектакляTableAdapter.Fill(this.theatre_bdDataSet.Тип_спектакля); // TODO: данная строка кода позволяет загрузить данные в таблицу "theatre_bdDataSet.Названия_спектаклей". При необходимости она может быть перемещена или удалена. this.названия_спектаклейTableAdapter.Fill(this.theatre_bdDataSet.Названия_спектаклей); } private void name_table_CellClick(object sender, DataGridViewCellEventArgs e) { rowSelect = e.RowIndex; } private void delete_button2_Click(object sender, EventArgs e) { if (MessageBox.Show("Вы действительно хотите удалить эту запись из базы данных?", "Подтверждение", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { string query = "DELETE FROM [Тип спектакля] WHERE [Код] = " + Convert.ToInt32(type_table.Rows[rowSelect2].Cells[0].Value); // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); show_new_data2(); } } private void delete_button1_Click(object sender, EventArgs e) { if(MessageBox.Show("Вы действительно хотите удалить эту запись из базы данных?", "Подтверждение", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { string query = "DELETE FROM [Названия спектаклей] WHERE [Код] = "+ Convert.ToInt32(name_table.Rows[rowSelect].Cells[0].Value); // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); show_new_data(); } } private void add_button2_Click(object sender, EventArgs e) { add2 = true; edit_form2 ef2 = new edit_form2(); ef2.Owner = this; ef2.Show(); } private void update_button2_Click(object sender, EventArgs e) { update2 = true; typeName = type_table.Rows[rowSelect2].Cells[1].Value.ToString(); descType = type_table.Rows[rowSelect2].Cells[2].Value.ToString(); respName = type_table.Rows[rowSelect2].Cells[3].Value.ToString(); code2 = Convert.ToInt32(type_table.Rows[rowSelect2].Cells[0].Value); edit_form2 ef2 = new edit_form2(); ef2.Owner = this; ef2.Show(); } private void type_table_CellClick(object sender, DataGridViewCellEventArgs e) { rowSelect2 = e.RowIndex; } private void search_textBox1_TextChanged(object sender, EventArgs e) { adap = new OleDbDataAdapter("select * from [Названия спектаклей] where [Название] like '" + search_textBox1.Text + "%'", myConnection); dt = new DataTable(); adap.Fill(dt); name_table.DataSource = dt; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { myConnection.Close(); } private void add_button1_Click(object sender, EventArgs e) { add = true; edit_form1 ef1 = new edit_form1(); ef1.Owner = this; ef1.Show(); } public void show_new_data() { string selectquery = "SELECT * FROM [Названия спектаклей]"; adap = new OleDbDataAdapter(selectquery, myConnection); dt = new DataTable(); adap.Fill(dt); name_table.DataSource = dt; } public void show_new_data2() { string selectquery = "SELECT * FROM [Тип спектакля]"; adap = new OleDbDataAdapter(selectquery, myConnection); dt = new DataTable(); adap.Fill(dt); type_table.DataSource = dt; } private void update_button1_Click(object sender, EventArgs e) { update = true; name = name_table.Rows[rowSelect].Cells[1].Value.ToString(); dir = name_table.Rows[rowSelect].Cells[2].Value.ToString(); desc = name_table.Rows[rowSelect].Cells[3].Value.ToString(); date = name_table.Rows[rowSelect].Cells[4].Value.ToString(); type = Convert.ToInt32(name_table.Rows[rowSelect].Cells[5].Value); count = name_table.Rows[rowSelect].Cells[6].Value.ToString(); count1 = name_table.Rows[rowSelect].Cells[7].Value.ToString(); code= Convert.ToInt32(name_table.Rows[rowSelect].Cells[0].Value); edit_form1 ef1 = new edit_form1(); ef1.Owner = this; ef1.Show(); } } } using System; using System.Windows.Forms; using System.Data.OleDb; namespace theater_app { public partial class edit_form1 : Form { public edit_form1() { InitializeComponent(); } private void edit_form1_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "theatre_bdDataSet2.Тип_спектакля". При необходимости она может быть перемещена или удалена. this.тип_спектакляTableAdapter.Fill(this.theatre_bdDataSet2.Тип_спектакля); // TODO: данная строка кода позволяет загрузить данные в таблицу "theatre_bdDataSet1.Тип_спектакля". При необходимости она может быть перемещена или удалена. this.тип_спектакляTableAdapter.Fill(this.theatre_bdDataSet1.Тип_спектакля); Form1 main = this.Owner as Form1; if (main.update) { name_textBox.Text = main.name; dir_textBox.Text = main.dir; desc_textBox.Text = main.desc; dateTimePicker.Value = DateTime.Parse(main.date); type_comboBox.SelectedIndex = main.type- 1; countTicket_textBox.Text = main.count; countTicketSale_textBox.Text = main.count1; } } private void button1_Click(object sender, EventArgs e) { Form1 main = this.Owner as Form1; if (main.add) { // текст запроса Int32 type = type_comboBox.SelectedIndex + 1; string query = "INSERT INTO [Названия спектаклей] ([Название], [Режисер], [Описание], [Дата], [Тип], [Количество билетов], [Количество оставшихся билетов]) VALUES ('" + name_textBox.Text + "', '" + dir_textBox.Text + "','" + desc_textBox.Text + "', '" + dateTimePicker.Text + "', " + type + ", " + Convert.ToInt32(countTicket_textBox.Text) + ", " + Convert.ToInt32(countTicketSale_textBox.Text) + ")"; // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, main.myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); main.add = false; } if (main.update) { // текст запроса Int32 type = type_comboBox.SelectedIndex + 1; string query = "UPDATE [Названия спектаклей] SET [Название] = '"+name_textBox.Text + "', [Режисер] = '" + dir_textBox.Text + "', [Описание] = '" + desc_textBox.Text + "', [Дата] = '" + dateTimePicker.Text + "', [Тип] = " + type + ", [Количество билетов] = " + Convert.ToInt32(countTicket_textBox.Text) + ", [Количество оставшихся билетов] =" + Convert.ToInt32(countTicketSale_textBox.Text) + " WHERE [Код] = "+main.code; // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, main.myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); main.update = false; } main.add = false; main.update = false; main.show_new_data(); this.Close(); } private void edit_form1_FormClosed(object sender, FormClosedEventArgs e) { Form1 main = this.Owner as Form1; main.add = false; main.update = false; } private void countTicket_textBox_TextChanged(object sender, EventArgs e) { } private void countTicket_textBox_KeyPress(object sender, KeyPressEventArgs e) { char number = e.KeyChar; if (!Char.IsDigit(number)) { e.Handled = true; } } private void countTicketSale_textBox_KeyPress(object sender, KeyPressEventArgs e) { char number = e.KeyChar; if (!Char.IsDigit(number)) { e.Handled = true; } } } } using System; using System.Windows.Forms; using System.Data.OleDb; namespace theater_app { public partial class edit_form2 : Form { public edit_form2() { InitializeComponent(); } private void edit_form2_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "theatre_bdDataSet1.Тип_спектакля". При необходимости она может быть перемещена или удалена. this.тип_спектакляTableAdapter.Fill(this.theatre_bdDataSet1.Тип_спектакля); Form1 main = this.Owner as Form1; if (main.update2) { typeName_textBox.Text = main.typeName; desc_textBox2.Text = main.descType; resp_textBox2.Text = main.respName; } } private void button1_Click(object sender, EventArgs e) { Form1 main = this.Owner as Form1; if (main.add2) { string query = "INSERT INTO [Тип спектакля] ([Тип], [Описание], [Ответственный за направление]) VALUES ('" + typeName_textBox.Text + "', '" + desc_textBox2.Text + "','" + resp_textBox2.Text + "')"; // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, main.myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); main.add2 = false; } if (main.update2) { string query = "UPDATE [Тип спектакля] SET [Тип] = '" + typeName_textBox.Text + "', [Описание] = '" + desc_textBox2.Text + "', [Ответственный за направление] = '" + resp_textBox2.Text + "' WHERE [Код] = " + main.code2; // создаем объект OleDbCommand для выполнения запроса к БД MS Access OleDbCommand command = new OleDbCommand(query, main.myConnection); // выполняем запрос к MS Access command.ExecuteNonQuery(); main.update2 = false; } main.add = false; main.update = false; main.show_new_data2(); this.Close(); } } } |