Разработка программного продукта "Отдел кадров завода"
Отчет по практике - Компьютеры, программирование
Другие отчеты по практике по предмету Компьютеры, программирование
одимые команды соответствующие активной таблице, такие как поиск, удаление, добавление, редактирование. При закрытии главной рабочей формы осуществляется автоматический выход из приложения.
. Выбор методов решения задачи и разработка основных алгоритмов
Структура обработки информации представляется в следующем виде:
Рисунок 7.1 - Структура обработки информации
Соединение с базой данных производится следующим образом:
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";con;= new OleDbConnection(InstConnectString);
Для осуществления поиска по полям таблицы Сотрудники в программе предусмотрен специальный метод Search, который не только позволяет быстро находить необходимые данные по всем полям таблицы, но и начинает работать уже с первого введенного в поле для поиска символа, что значительно ускоряет этот процесс.void Search(string SQL)
{
{dt = new DataTable();da = new OleDbDataAdapter(SQL, con);.Fill(dt);.DataSource = dt;
}
{.Show("Введены некорректные данные", "Поиск", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
В данный метод передается строка SQL-запроса, которая может принимать различные значения в зависимости от выбранного в элементе ComboBox названия поля, по которому пользователю необходимо произвести поиск.
private void textBox1_TextChanged(object sender, EventArgs e)
{(tabControl1.SelectedTab.Text == "Сотрудники")
{(NameOfField == "ID" && textBox1.Text.Length != 0)("Select* from Сотрудники where CInt(Mid(CStr(Сотрудники.ID),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text));if (NameOfField == "Фамилия" && textBox1.Text.Length != 0)("Select* from Сотрудники where Сотрудники.Фамилия Like " + textBox1.Text + "%");if (textBox1.Text.Length == 0)
{dt = new DataTable("Сотрудники");da = new OleDbDataAdapter("Select* from Сотрудники", con);.Fill(dt);.DataSource = dt;
}
}
Для удаления какой-либо записи из таблицы Сотрудники необходимо в элемент TextBox ввести значение номера лицевого счета соответствующего удаляемой записи и нажать кнопку Удалить.
OleDbCommand insCom = new OleDbCommand("Delete from Сотрудники where ((Сотрудники.ID)=" + int.Parse(textBox2.Text) + ");", con);(insCom.ExecuteNonQuery() == 1).Show("Запись удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Information);.Show("Запись не удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Error);dt = new DataTable("Сотрудники");da = new OleDbDataAdapter("Select* from Сотрудники", con);.Fill(dt);.DataSource = dt;
Для редактирования данных в таблице отдельного метода не предусмотрено, но используется алгоритм, который позволяет изменять данные непосредственно в самом элементе dataGridView. Этот метод очень прост и понятен, для его работы необходимо определить позицию выделенной ячейки в таблице, запомнить все данные из этой строки, а после введения изменений и подтверждения пользователем обновить данные в элементе dataGridView.
private void dg1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{= dg1.CurrentCell.Value;= (int)dg1.CurrentRow.Cells[0].Value;= dg1.Columns[dg1.CurrentCellAddress.X].HeaderText;void dg1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
{(ColumnName == "ID")
{.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);.CurrentCell.Value = edit;;
}if (ColumnName == "Дата поступления")
{.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);.CurrentCell.Value = edit;;
}(edit.ToString() != dg1.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{com = new OleDbCommand("Update Сотрудники Set [" + ColumnName + "]=" + dg1.CurrentCell.Value + " Where ID=" + ID, con);.ExecuteNonQuery();
}.CurrentCell.Value = edit;
}
{.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);.CurrentCell.Value = edit;
}
Для таблицы Должности элемента ComboBox заполняются программно из базы данных с помощью следующего алгоритма.InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";con;rdr1, rdr2, rdr3;cmd1, cmd2, cmd3;Form2()
{();= new OleDbConnection(InstConnectString);.Open();= con.CreateCommand();.CommandText = "Select [Код подразделения] From Подразделения";= cmd1.ExecuteReader();(rdr1.Read())
{tmp = ""; //для каждого нового пункта списка очищаем(tmp != "")// если в массиве данных есть значения+= " ";+= rdr1[0].ToString(); //формируем пункт поля со списком.Items.Add(tmp); //добавляем пункт списка к объекту
}
}
Другой элемента ComboBox, необходимый для добавления записи имеет список фиксированных значений.
В данном приложении алгоритм добавления данных выглядит следующим образом.
int id = SearchID.Start("Сотрудники", "ID", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb");today = new DateTime();= Convert.ToDateTime(monthCalendar1.TodayDate.Date.ToShortDateString());
{insSQL2 = "Insert into Бухгалтерия values(" + id + ","
+ int.Parse(textBox12.Text) + "," + int.Parse(textBox13.Text) + ")";insCom2 = new OleDbCommand(insSQL2, con);insSQL = "Insert into Сотрудники values(" + id + ","
+ textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + ","
+ textBox4.Text + "," + textBox5.Text + "," + textBox6.Text + ","
+ textBox7.Text + "," + textBox8.Text + "," + textBox9.Text + ","
+ Convert.ToDateTime(today) + ")";insCom = new OleDbCommand(insSQL, con);insSQL3 = "Insert into Должности values(" + id + ","
+ int.Parse(comboBox1.SelectedItem.ToString()) + "," + textBox10.Text + "," + textBox11.Text + ","
+ int.Parse(comboBox1.SelectedItem.ToString()) + ")";insCom3 = new OleDbCommand(insSQL3, con);(insCom2.ExecuteNonQuery() == 1 && insCom.ExecuteNonQuery() == 1 && insCom3.ExecuteNonQuery() == 1).Show("Запись добавлена", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
{.Show("Введены некорректные данные", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Заключение
Разработанная программа повышает качество работы отдела кадров предприятий. Ве?/p>