База данных по обработке информации для биржи труда
Заказать уникальную курсовую работу- 72 72 страницы
- 13 + 13 источников
- Добавлена 31.01.2023
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Введение 3
Постановка задачи 4
Проектирование и создание объектов базы данных 5
Анализ предметной области 5
Информационная модель 7
Проектирование реляционной модели 8
Создание представлений 9
Создание хранимых процедур и триггеров 11
Проектирование, разработка и тестирование приложения баз данных 14
Выбор языка программирования 14
Функции разрабатываемого приложения: 15
Разработка приложения 15
Администрирование и методы защиты баз данных 21
Заключение 25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 26
Приложение 1 28
Приложение 2 29
Приложение 3 30
Приложение 4 35
Приложение 5 36
Приложение 6 70
Open(); MySqlDataAdapter SDA = new MySqlDataAdapter("SELECT * FROM phoneoflaborexchange.employersview", conn); DataTable DATA = new DataTable(); SDA.Fill(DATA); dataGridViewEmployers.DataSource = DATA; dataGridViewEmployers.Columns[0].HeaderText = "Город"; dataGridViewEmployers.Columns[1].HeaderText = "Организация"; dataGridViewEmployers.Columns[2].HeaderText = "Директор"; dataGridViewEmployers.Columns[3].HeaderText = "Адрес"; dataGridViewEmployers.Columns[4].HeaderText = "Телефонный номер"; dataGridViewEmployers.Columns[5].HeaderText = "Время собеседования от"; dataGridViewEmployers.Columns[6].HeaderText = "Время собеседования до"; dataGridViewEmployers.Columns[0].Width = 90; dataGridViewEmployers.Columns[1].Width = 160; dataGridViewEmployers.Columns[2].Width = 76; dataGridViewEmployers.Columns[3].Width = 120; dataGridViewEmployers.Columns[4].Width = 90; dataGridViewEmployers.Columns[5].Width = 90; dataGridViewEmployers.Columns[6].Width = 90;}catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }privatevoid FillListVacancy() {// Создаем и открываем соединение с MySQLstring @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlDataAdapter SDA = new MySqlDataAdapter("SELECT * FROM phoneoflaborexchange.listvacancyforadd", conn); DataTable DATA = new DataTable(); SDA.Fill(DATA); dataGridViewListVacancy.DataSource = DATA; dataGridViewListVacancy.Columns[1].HeaderText = "Вакансия"; dataGridViewListVacancy.Columns[2].HeaderText = "Город"; dataGridViewListVacancy.Columns[3].HeaderText = "Организация"; dataGridViewListVacancy.Columns[4].HeaderText = "Стартовый оклад"; dataGridViewListVacancy.Columns[5].HeaderText = "Статус"; dataGridViewListVacancy.Columns[0].Width = 0; dataGridViewListVacancy.Columns[1].Width = 220; dataGridViewListVacancy.Columns[2].Width = 100; dataGridViewListVacancy.Columns[3].Width = 220; dataGridViewListVacancy.Columns[4].Width = 80; dataGridViewListVacancy.Columns[5].Width = 80;}catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }privatevoid FillTowns() {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlDataAdapter townsDA = new MySqlDataAdapter("SELECT * FROM phoneoflaborexchange.townsview", conn); DataTable townsDATA = new DataTable(); townsDA.Fill(townsDATA); dataGridViewTowns.DataSource = townsDATA; dataGridViewTowns.Columns[1].HeaderText = "Город"; dataGridViewTowns.Columns[2].HeaderText = "Телефонный код"; dataGridViewTowns.Columns[0].Width = 0; dataGridViewTowns.Columns[1].Width = 160; dataGridViewTowns.Columns[2].Width = 180;}catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }privatevoid FillVacancy() {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlDataAdapter vacaDA = new MySqlDataAdapter("SELECT * FROM phoneoflaborexchange.vacancyview", conn); DataTable vacaDATA = new DataTable(); vacaDA.Fill(vacaDATA); dataGridViewVacancy.DataSource = vacaDATA; dataGridViewVacancy.Columns[1].HeaderText = "Название вакансии"; dataGridViewVacancy.Columns[1].Width = 280; dataGridViewVacancy.Columns[0].Width = 0; }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }privatevoid EmploersForm_Load(object sender, EventArgs e) { AddTownbtn.Enabled = false; EditTownbtn.Enabled = false; DelTownbtn.Enabled = false; SaveTownbtn.Enabled = false; Form1 main = this.Owner as Form1;if (main != null) {if (main.EditOn == 1) { tabControlEmployers.SelectedTab = tabPageEmployers; }else {if (main.EditOn == 2) { tabControlEmployers.SelectedTab = tabPageVacancy; }else {if (main.EditOn == 3) { tabControlEmployers.SelectedTab = tabPageTowns; }else { tabControlEmployers.SelectedTab = tabPageNameVacancy; } } }if (main.UserMode != 0) { AddTownbtn.Enabled = false; EditTownbtn.Enabled = false; DelTownbtn.Enabled = false; SaveTownbtn.Enabled = false; AddVacancybtn.Enabled = false; EditVacancybtn.Enabled = false; DelVacancybtn.Enabled = false; SaveVacancybtn.Enabled = false; } } FillEmployers(); Townscombo.SelectedIndex = -1; EmployerscomboBox.SelectedIndex = -1; StatuscomboBox.SelectedIndex = -1; VacancycomboBox.SelectedIndex = -1; FillListVacancy(); FillVacancy(); FillTowns(); }privatevoid Closebtn_Click(object sender, EventArgs e) {this.Close(); }privatevoid tabControlEmployers_Selecting(object sender, TabControlCancelEventArgs e) { Form1 main = this.Owner as Form1;if (main != null) {if (main.UserMode == 0) { AddTownbtn.Enabled = true; EditTownbtn.Enabled = true; DelTownbtn.Enabled = true; SaveTownbtn.Enabled = true; }else { AddTownbtn.Enabled = false; EditTownbtn.Enabled = false; DelTownbtn.Enabled = false; SaveTownbtn.Enabled = false; } }if (tabControlEmployers.SelectedTab.Name == "tabPageEmployers") { FillEmployers(); }if (tabControlEmployers.SelectedTab.Name == "tabPageEmployers") { FillListVacancy(); }if (tabControlEmployers.SelectedTab.Name == "tabPageTowns") { FillTowns(); }if (tabControlEmployers.SelectedTab.Name == "tabPageVacancy") { FillVacancy(); } }privatevoid AddEmployerbtn_Click(object sender, EventArgs e) {if (Townscombo.SelectedIndex != -1 && textBoxNameEmployer.Text != "" && textBoxAdress.Text != "" && textBoxDirector.Text != "" && textBoxPhone.Text.Length == 7 && maskedTextBoxBeginTime.Text != " :" && maskedTextBoxEndTime.Text != " :") { MessageBox.Show("Всё заполнено");string SQLStr = "INSERT INTO phoneoflaborexchange.employers (NameEmployer,IdT, Adress,Director,Phone,BeginTime,EndTime) VALUES ("; SQLStr = SQLStr + "'" + textBoxNameEmployer.Text + "', "; SQLStr = SQLStr + "'" + Convert.ToInt32(Townscombo.SelectedValue) + "', "; SQLStr = SQLStr + "'" + textBoxAdress.Text + "', "; SQLStr = SQLStr + "'" + textBoxDirector.Text + "', "; SQLStr = SQLStr + "'" + textBoxPhone.Text + "', "; SQLStr = SQLStr + "'" + Convert.ToDateTime(maskedTextBoxBeginTime.Text).ToString("HH:mm:ss") + "', "; SQLStr = SQLStr + "'" + Convert.ToDateTime(maskedTextBoxEndTime.Text).ToString("HH:mm:ss") + "')";//MessageBox.Show(SQLStr);string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlCommand cmnd = new MySqlCommand(SQLStr, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillEmployers(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }else { MessageBox.Show("Должны быть заполнены все поля!"); } }privatevoid EditEmployerbtn_Click(object sender, EventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewEmployers.Rows.Count;if (n == 1) return;if (dataGridViewEmployers.CurrentRow.Index >= 0) { Townscombo.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[0].Value.ToString(); townId = Convert.ToString(Convert.ToInt32(Townscombo.SelectedValue)); textBoxNameEmployer.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[1].Value.ToString(); empName = textBoxNameEmployer.Text; textBoxAdress.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[3].Value.ToString(); textBoxDirector.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[2].Value.ToString(); textBoxPhone.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[4].Value.ToString(); textBoxPhone.Text = textBoxPhone.Text.Substring(textBoxPhone.Text.Length - 7, 7); maskedTextBoxBeginTime.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[5].Value.ToString(); maskedTextBoxEndTime.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[6].Value.ToString(); } }privatevoid dataGridViewEmployers_CellClick(object sender, DataGridViewCellEventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewEmployers.Rows.Count;if (n == 1) return;if (dataGridViewEmployers.CurrentRow.Index >= 0) { Townscombo.Text = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[0].Value.ToString(); townId = Convert.ToString(Convert.ToInt32(Townscombo.SelectedValue)); empName = dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[1].Value.ToString();string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open();// выполнить SQL-командуstring sIDSql = "Select IdE From Employers WHERE NameEmployer = '" + empName + "' AND IdT = '" + townId + "'"; sIDSql += " AND Adress = '" + dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[3].Value.ToString();string txt= dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[4].Value.ToString(); sIDSql += "' AND Phone = '" + txt.Substring(txt.Length - 7, 7); sIDSql += "' AND Director = '" + dataGridViewEmployers.Rows[dataGridViewEmployers.CurrentRow.Index].Cells[2].Value.ToString() + "'";// Создаем команду ... MySqlCommand cmdID = new MySqlCommand(sIDSql, conn);// Выполняем команду ..int empID = Convert.ToInt32(cmdID.ExecuteScalar()); ID = empID.ToString(); conn.Close(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } } }privatevoid AddVacInListbtn_Click(object sender, EventArgs e) {if (VacancycomboBox.SelectedIndex != -1 && EmployerscomboBox.SelectedIndex != -1 && SalarytextBox.Text != "" && StatuscomboBox.SelectedIndex != -1) {string SQLStr = "INSERT INTO phoneoflaborexchange.listvacancy (IdV, IdE,StartSalary,Status) VALUES ("; SQLStr = SQLStr + "'" + Convert.ToInt32(VacancycomboBox.SelectedValue).ToString() + "', "; SQLStr = SQLStr + "'" + Convert.ToInt32(EmployerscomboBox.SelectedValue).ToString() + "', ";SQLStr = SQLStr + "'" + SalarytextBox.Text + "', ";SQLStr = SQLStr + "'" + StatuscomboBox.SelectedIndex.ToString() + "')";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlCommand cmnd = new MySqlCommand(SQLStr, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillListVacancy(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }else { MessageBox.Show("Должны быть заполнены все поля!"); } }privatevoid dataGridViewListVacancy_CellClick(object sender, DataGridViewCellEventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewListVacancy.Rows.Count;if (n == 1) return;if (dataGridViewListVacancy.CurrentRow.Index >= 0) { ID = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[0].Value.ToString(); } }privatevoid EditVacInListbtn_Click(object sender, EventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewListVacancy.Rows.Count;if (n == 1) return;if (dataGridViewListVacancy.CurrentRow.Index >= 0) { VacancycomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[1].Value.ToString(); EmployerscomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[2].Value.ToString(); EmployerscomboBox.SelectedIndex = (int) dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[2].Value; SalarytextBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[4].Value.ToString(); StatuscomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[5].Value.ToString(); } }privatevoid SaveVacInListbtn_Click(object sender, EventArgs e) {//MessageBox.Show(Convert.ToString(Convert.ToInt32(VacancycomboBox.SelectedValue)) + ", "+ Convert.ToString(Convert.ToInt32(EmployerscomboBox.SelectedValue)) + ", "+ SalarytextBox.Text+ ", "+StatuscomboBox.SelectedIndex.ToString());string SqlText = "UPDATE listvacancy SET ";if (VacancycomboBox.SelectedIndex > -1 && EmployerscomboBox.SelectedIndex > -1 && SalarytextBox.Text.Trim() != "" && StatuscomboBox.SelectedIndex>-1) { SqlText += "IdV = '" + Convert.ToString(Convert.ToInt32(VacancycomboBox.SelectedValue)) + "'"; SqlText += "IdE = '" + Convert.ToString(Convert.ToInt32(EmployerscomboBox.SelectedValue)) + "'"; SqlText += ", StartSalary = '" + SalarytextBox.Text.Trim() + "'"; SqlText += ", Status = '" + StatuscomboBox.SelectedIndex.ToString() + "'"; SqlText += " WHERE listvacancy.IdV = '" + ID + "'";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MessageBox.Show(SqlText); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillListVacancy(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); }// отобразить таблицу ListVacancy FillEmployers(); Townscombo.SelectedIndex = -1; textBoxNameEmployer.Text = ""; textBoxAdress.Text = ""; textBoxDirector.Text = ""; textBoxPhone.Text = ""; maskedTextBoxBeginTime.Text = ""; maskedTextBoxEndTime.Text = ""; }else MessageBox.Show("Нельзя сохранить незаполненную строку!"); }privatevoid EditVacInListbtn_Click_1(object sender, EventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewListVacancy.Rows.Count;if (n == 1) return;if (dataGridViewListVacancy.CurrentRow.Index >= 0) { VacancycomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[1].Value.ToString(); EmployerscomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[3].Value.ToString(); SalarytextBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[4].Value.ToString(); StatuscomboBox.Text = dataGridViewListVacancy.Rows[dataGridViewListVacancy.CurrentRow.Index].Cells[5].Value.ToString(); } }privatevoid DelVacInListbtn_Click(object sender, EventArgs e) {int n;string SqlText = "DELETE FROM ListVacancy WHERE ListVacancy.IdV = ";// проверка, есть ли вообще записи в таблице n = dataGridViewListVacancy.Rows.Count;if (n == 1) return;if (dataGridViewListVacancy.CurrentRow.Index >= 0)if (MessageBox.Show("Вы действительно хотите удалить запись?Это действие нельзя будет отменить", "Удаление записи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { SqlText += ID; conn.Open(); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillListVacancy(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } } }privatevoid AddTownbtn_Click(object sender, EventArgs e) {if (textBoxNameTown.Text != "" && textBoxPhoneCode.Text !="") {string SQLStr = "INSERT INTO phoneoflaborexchange.towns (NameTown, PhoneCod) VALUES ("; SQLStr = SQLStr + "'" + textBoxNameTown.Text + "', ";SQLStr = SQLStr + "'" + textBoxPhoneCode.Text + "')";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlCommand cmnd = new MySqlCommand(SQLStr, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillTowns(); textBoxNameTown.Text = ""; textBoxPhoneCode.Text = ""; }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }else { MessageBox.Show("Должны быть заполнены все поля!"); } }privatevoid EditTownbtn_Click(object sender, EventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewTowns.Rows.Count;if (n == 1) return;if (dataGridViewTowns.CurrentRow.Index >= 0) { textBoxNameTown.Text = dataGridViewTowns.Rows[dataGridViewTowns.CurrentRow.Index].Cells[1].Value.ToString(); textBoxPhoneCode.Text = dataGridViewTowns.Rows[dataGridViewTowns.CurrentRow.Index].Cells[2].Value.ToString(); } }privatevoid dataGridViewTowns_CellClick(object sender, DataGridViewCellEventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewTowns.Rows.Count;if (n == 1) return;if (dataGridViewTowns.CurrentRow.Index >= 0) { ID = dataGridViewTowns.Rows[dataGridViewTowns.CurrentRow.Index].Cells[0].Value.ToString(); } }privatevoid SaveTownbtn_Click(object sender, EventArgs e) {string SqlText = "UPDATE towns SET ";if (textBoxNameTown.Text.Trim() != "" && textBoxPhoneCode.Text.Trim() != "") { SqlText += " NameTown = '" + textBoxNameTown.Text.Trim() + "'"; SqlText += ", PhoneCod = '" + textBoxPhoneCode.Text.Trim() + "'"; SqlText += " WHERE towns.IdT = '" + ID + "'";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MessageBox.Show(SqlText); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillTowns(); textBoxNameTown.Text = ""; textBoxPhoneCode.Text = ""; }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); }// отобразить таблицу ListVacancy FillTowns(); textBoxNameTown.Text = ""; textBoxPhoneCode.Text = ""; }else MessageBox.Show("Нельзя сохранить незаполненную строку!"); }privatevoid DelTownbtn_Click(object sender, EventArgs e) {int n;string SqlText = "DELETE FROM towns WHERE towns.IdT = ";// проверка, есть ли вообще записи в таблице n = dataGridViewTowns.Rows.Count;if (n == 1) return;if (dataGridViewTowns.CurrentRow.Index >= 0)if (MessageBox.Show("Вы действительно хотите удалить запись?Это действие нельзя будет отменить", "Удаление записи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { SqlText += ID; conn.Open(); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillTowns(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } } }privatevoid AddVacancybtn_Click(object sender, EventArgs e) {if (textBoxNameVacancy.Text != "") {string SQLStr = "INSERT INTO phoneoflaborexchange.vacancy (NameVacancy) VALUES (";SQLStr = SQLStr + "'" + textBoxNameVacancy.Text + "')";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MySqlCommand cmnd = new MySqlCommand(SQLStr, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillVacancy(); textBoxNameVacancy.Text = ""; }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }else { MessageBox.Show("Должны быть заполнены все поля!"); } }privatevoid EditVacancybtn_Click(object sender, EventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewVacancy.Rows.Count;if (n == 1) return;if (dataGridViewVacancy.CurrentRow.Index >= 0) { textBoxNameVacancy.Text = dataGridViewVacancy.Rows[dataGridViewVacancy.CurrentRow.Index].Cells[1].Value.ToString(); } }privatevoid dataGridViewVacancy_CellClick(object sender, DataGridViewCellEventArgs e) {int n;// проверка, есть ли вообще записи в таблице n = dataGridViewVacancy.Rows.Count;if (n == 1) return;if (dataGridViewVacancy.CurrentRow.Index >= 0) { ID = dataGridViewVacancy.Rows[dataGridViewVacancy.CurrentRow.Index].Cells[0].Value.ToString(); } }privatevoid SaveVacancybtn_Click(object sender, EventArgs e) {string SqlText = "UPDATE vacancy SET ";if (textBoxNameVacancy.Text.Trim() != "") { SqlText += " NameTown = '" + textBoxNameVacancy.Text.Trim() + "'"; SqlText += " WHERE vacancy.IdV = '" + ID + "'";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MessageBox.Show(SqlText); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillVacancy(); textBoxNameVacancy.Text = ""; }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } }else MessageBox.Show("Нельзя сохранить незаполненную строку!"); }privatevoid DelVacancybtn_Click(object sender, EventArgs e) {int n;string SqlText = "DELETE FROM vacancy WHERE vacancy.IdV = ";// проверка, есть ли вообще записи в таблице n = dataGridViewVacancy.Rows.Count;if (n == 1) return;if (dataGridViewVacancy.CurrentRow.Index >= 0)if (MessageBox.Show("Вы действительно хотите удалить запись?Это действие нельзя будет отменить", "Удаление записи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { SqlText += ID; conn.Open(); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillVacancy(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } } }privatevoid SaveEmployerbtn_Click(object sender, EventArgs e) {//MessageBox.Show(Convert.ToString(Convert.ToInt32(Townscombo.SelectedValue)) + ", " + textBoxNameEmployer.Text.Trim() + ", " + textBoxAdress.Text.Trim() + ", " + textBoxDirector.Text.Trim() + ", " + textBoxPhone.Text + ", " + maskedTextBoxBeginTime.Text.Trim() + ", " + maskedTextBoxEndTime.Text.Trim());string SqlText = "UPDATE Employers SET ";if (Townscombo.SelectedIndex > -1 && textBoxNameEmployer.Text.Trim() != "" && textBoxAdress.Text.Trim() != "" && textBoxDirector.Text.Trim() != "" && textBoxPhone.Text.Length == 7 && maskedTextBoxBeginTime.Text.Trim() != ":" && maskedTextBoxEndTime.Text.Trim() != ":") { SqlText += "IdT = '" + Convert.ToString(Convert.ToInt32(Townscombo.SelectedValue)) + "'"; SqlText += ", NameEmployer = '" + textBoxNameEmployer.Text.Trim() + "'"; SqlText += ", Adress = '" + textBoxAdress.Text.Trim() + "'"; SqlText += ", Director='" + textBoxDirector.Text.Trim() + "'"; SqlText += ", Phone = '" + textBoxPhone.Text + "'"; SqlText += ", BeginTime = '" + maskedTextBoxBeginTime.Text + "'"; SqlText += ", EndTime = '" + maskedTextBoxEndTime.Text + "'"; SqlText += " WHERE Employers.IdE = '" + ID + "'";string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { conn.Open(); MessageBox.Show(SqlText); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillEmployers(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); }// отобразить таблицу Employers FillEmployers(); Townscombo.SelectedIndex = -1; textBoxNameEmployer.Text = ""; textBoxAdress.Text = ""; textBoxDirector.Text = ""; textBoxPhone.Text = ""; maskedTextBoxBeginTime.Text = ""; maskedTextBoxEndTime.Text = ""; }else MessageBox.Show("Нельзя сохранить незаполненную строку!"); }privatevoid DelEmployerbtn_Click(object sender, EventArgs e) {int n;string SqlText = "DELETE FROM Employers WHERE Employers.IdE = ";// проверка, есть ли вообще записи в таблице n = dataGridViewEmployers.Rows.Count;if (n == 1) return;if (dataGridViewEmployers.CurrentRow.Index >= 0)if (MessageBox.Show("Вы действительно хотите удалить запись?Это действие нельзя будет отменить", "Удаление записи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {string @strConn = "";using (StreamReader sr = new StreamReader("BDConnect.ini")) {while (sr.Peek() >= 0) { strConn = @sr.ReadLine(); } } MySqlConnection conn = new MySqlConnection(@strConn);try { SqlText += ID; conn.Open(); MySqlCommand cmnd = new MySqlCommand(SqlText, conn); cmnd.ExecuteNonQuery(); conn.Close(); FillEmployers(); }catch (Exception ex) { MessageBox.Show(ex.Message); }finally { conn.Close(); } } } }}Приложение 6Начальная форма ввода пароляГлавная форма приложения в режиме соискателяГлавная форма приложения в режиме работы работника биржиГлавная форма приложения в режиме работодателяГлавная форма приложения в режиме администратора БДФорма добавления данныхФорма добавления пользователей
2. Документация по C# [Электрон. ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp/
3. Доступ к базам данных. [Электрон. ресурс]. – Режим доступа: https://ami.nstu.ru/~vms/method7/
4. Казанский А.А. Программирование на Visual C# 2013: учеб. пособие для СПО / А.А. Казанский.- М.: Издательство Юрайт, 2019. – 191 с.
5. Лекция 3: Механизм выполнения SQL-операторов. [Электрон. ресурс]. – Режим доступа: https://intuit.ru/studies/courses/79/79/lecture/28177?page=1
6. Нормализация отношений. Шесть нормальных форм [Электронный ресурс] – Электрон. текстовые данные. Режим доступа: https://habr.com/ru/post/254773/, свободный, загл. с экрана.
7. НОУ ИНТУИТ. Работа с базами данных. Лекция 6: Реляционный подход к построению инфологической модели. [Электронный ресурс] – Электрон. текстовые данные. Режим доступа: https://intuit.ru/studies/courses/3439/681/lecture/14024, свободный, загл. с экрана.
8. Основы проектирования баз данных. [Электронный ресурс] – Электрон. текстовые данные. Режим доступа: https://github.com/kolei/PiRIS/blob/master/articles/5_1_1_1_erd2.md, свободный, загл. с экрана.
9. Практика программирования на С# для Windows и Web в Microsoft Visual Studio. [Электрон. ресурс]. – Режим доступа: http://wladm.narod.ru/C_Sharp/index.html
10. Работа с базой данных MySQL на C#. [Электрон. ресурс]. – https://betacode.net/10517/work-with-mysql-database-in-csharp#a1815178
11. Работа с хранимыми процедурами в MySQL. [Электрон. ресурс]. – https://sql-ex.ru/blogs/?/Rabota_s_hranimymi_procedurami_v_MySQL.html
12. Триггеры в MySQL. [Электрон. ресурс]. – Режим доступа: https://habr.com/ru/post/37693/
13. Ilhom Buriev. Есть ли смысл изучать C# в 2021 году: карьерные перспективы новичка. – Режим доступа: https://proglib.io/p/est-li-smysl-izuchat-c-v-2021-godu-karernye-perspektivy-novichka-2021-07-29
Вопрос-ответ:
Какие задачи решает база данных для биржи труда?
База данных для биржи труда решает такие задачи, как хранение и обработка информации о вакансиях, резюме соискателей, организация поиска работы и подбора персонала, анализ рынка труда и другие задачи, связанные с биржей труда.
Как проектируется и создается база данных для биржи труда?
Проектирование и создание базы данных для биржи труда включает в себя анализ предметной области, разработку информационной модели, проектирование реляционной модели, создание представлений, хранимых процедур и триггеров. Этот процесс заключается в определении структуры данных, способов их хранения и обработки, а также руководств по использованию базы данных.
Какие функции реализует разработанное приложение баз данных для биржи труда?
Разработанное приложение баз данных для биржи труда реализует функции хранения и обработки информации о вакансиях и резюме соискателей, поиска работы и подбора персонала, анализа рынка труда и другие функции, необходимые для работы биржи труда.
Какие языки программирования могут быть использованы при разработке приложения баз данных для биржи труда?
При разработке приложения баз данных для биржи труда могут быть использованы различные языки программирования, такие как Java, C#, Python и другие. Выбор конкретного языка зависит от требований проекта, опыта разработчиков и других факторов.
Как обеспечивается безопасность и защита баз данных для биржи труда?
Обеспечение безопасности и защиты баз данных для биржи труда осуществляется путем применения различных методов и технологий, таких как аутентификация, авторизация, шифрование данных, резервное копирование, физическая и логическая защита серверов и других мер безопасности. Дополнительно могут быть использованы специализированные системы и программы для обеспечения безопасности баз данных.
Какая задача решается с помощью базы данных по обработке информации для биржи труда?
База данных предназначена для обработки информации о работодателях и соискателях работы, а также для управления процессом поиска и подбора персонала.
Какие объекты базы данных создаются при проектировании?
При проектировании создаются объекты, такие как таблицы, представления, хранимые процедуры и триггеры, которые позволяют хранить, обрабатывать и обновлять информацию о работодателях и соискателях работы.
Какие функции выполняет разрабатываемое приложение баз данных?
Разрабатываемое приложение выполняет функции поиска и подбора персонала, хранения и обновления информации о работодателях и соискателях работы, а также предоставляет удобный интерфейс для взаимодействия с базой данных.
Какие методы защиты баз данных используются в администрировании?
Для защиты баз данных используются методы, такие как установка паролей на доступ к базе данных, шифрование данных, контроль доступа пользователей к информации, резервное копирование и восстановление данных.
Какой язык программирования используется при разработке приложения?
При разработке приложения баз данных используется язык программирования, который обеспечивает взаимодействие с базой данных, например, SQL или язык программирования, поддерживающий работу с конкретной базой данных, такой как PL/SQL для Oracle.
Зачем нужна база данных по обработке информации для биржи труда?
База данных по обработке информации для биржи труда нужна для эффективной организации и управления информацией о вакансиях и соискателях работы. Она позволяет хранить и обрабатывать большой объем данных, а также проводить аналитику и генерировать отчеты.
Какие задачи стоят перед базой данных для биржи труда?
База данных для биржи труда должна решать задачи по поиску и связыванию вакансий и соискателей работы, а также обеспечивать доступ к актуальной информации о рынке труда. Она также может использоваться для аналитики, прогнозирования и рекомендации на основе имеющейся информации.