Добавлен: 29.11.2023
Просмотров: 29
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
//параметры для корректного добавления данных
myComm.Parameters.Add("@Lastname", SqlDbType.NVarChar, 50);
myComm.Parameters["@Lastname"].Value = Lastname;
myComm.Parameters.Add("@Name", SqlDbType.NVarChar, 50);
myComm.Parameters["@Name"].Value = Name;
myComm.Parameters.Add("@Fathername", SqlDbType.NVarChar, 50);
myComm.Parameters["@Fathername"].Value = Fathername;
myComm.Parameters.Add("@Position", SqlDbType.NVarChar, 50);
myComm.Parameters["@Position"].Value = position;
myComm.Parameters.Add("@Experience", SqlDbType.Int, 4);
myComm.Parameters["@Experience"].Value = experience;
myComm.Parameters.Add("@Salary", SqlDbType.Int, 4);
myComm.Parameters["@Salary"].Value = salary;
myComm.ExecuteNonQuery();
conn.Close();
stafferTableAdapter.Fill(this.staffDataSet.staffer);
}
}
-
РАЗРАБОТКА ПЕЧАТНОЙ ФОРМЫ ОТЧЕТНОЙ ДОКУМЕНТАЦИИ
В ходе разработки программы была разработана отчетная документация в программе «Excel» (отчет формируется при нажатии на кнопку «Экспорт в Excel»). Отчет представлен на рисунке 9.
Рис.9. Отчетная документация «Сотрудники».
-
РАЗРАБОТКА ДОПОЛНИТЕЛЬНЫХ ФУНКЦИЙ
Справа вверху на форме расположено поле быстрого поиска по фамилии или должности сотрудника. Пользователь начинает вводить данные в поле для ввода – моментально происходит поиск по примерному неполному или точному полному совпадению. Ниже на форме расположено поле сортировки сотрудников по стажу или окладу, числовое значение этих данных вводится ниже в поле для ввода. При нажатии на кнопку «сортировать» в таблице слева предоставляется отсортированный список сотрудников. При нажатии кнопки «Сбросить фильтр» таблица слева принимает исходный вид. Пример выполнения поиска представлен на рисунке 10. Пример выполнения сортировки сотрудников представлен на рисунке 11.
Рис.10. Пример выполнения поиска сотрудника по должности.
Рис.11. Пример выполнения сортировки сотрудников по окладу.
ЗАКЛЮЧЕНИЕ
В ходу работы были последовательно пройдены все этапы разработки программного модуля, начиная с написания технического задания, создания логической и физической модели и заканчивая созданием корректно работающего приложения.
Каждый этап сопровождался подробным анализом проделанной работы, что позволило свести к минимуму ошибки.
В процессе выполнения проекта была создана программа «Сотрудники».
В результате выполнения данного проекта был создан программный модуль связанный напрямую с базой данных SQL, позволяющий обрабатывать, добавлять, искать и фильтровать данные.
СПИСОК ЛИТЕРАТУРЫ
-
«C# in Depth» - Jon Skeet. 2019 г. – 209с. -
«Объектно-ориентированное программирование в действии» - Бадд Тимоти / [Пер. с англ. А Берднокова; Гл. ред. В. Усманов]. - СПб: Питер, 2019. - 460 с. -
«Высокоуровневые методы информатики и программирования» Учебное пособие. Бутаков С.В. Министерство образования и науки Российской Федерации, Федеральное агентство по образованию. Барнаул: изд-во ААЭП, 2020. - 72с. -
Технологии объектно-ориентированного программирования Хореев П.Б. Учебное пособие; - М.: Academia, 2018. - 447 с. -
«ПРОГРАММИРОВАНИЕ НА С#» - М. А. МЕДВЕДЕВ А. Н. МЕДВЕДЕВ. Учебное пособие / М. А. Медведев, А.Н. Медведев. — Екатеринбург: Изд-во Урал. 2021. — 64 с. -
https://learn.microsoft.com/ru-ru/dotnet/csharp/ - официальный сайт Microsoft «Документация по C#» Обновлено: 2022.
ПРИЛОЖЕНИЕ 1.
Листинг главной формы программного модуля «Сотрудники»:
//добавление библиотек
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
using Excel = Microsoft.Office.Interop.Excel;
namespace Staffer
{
//создание класса Сотрудники
public partial class Staffers : Form
{
public Staffers()
{
InitializeComponent();
}
//объявление глобальных переменных
private Excel.Sheets excelsheets;
private Excel.Worksheet excelworksheet;
private Excel.Range excelcells;
private Excel.Application excelapp;
//создание переменной для подключения к базе данных
string connStr = @"Data Source=localhost;Initial Catalog=staff;Integrated Security=True";
SqlConnection conn = null;
private void Staffers_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "staffDataSet.staffer". При необходимости она может быть перемещена или удалена.
this.stafferTableAdapter.Fill(this.staffDataSet.staffer);
}
//кнопка Добавления сотрудников
private void addBtn_Click(object sender, EventArgs e)
{
Add add = new Add();
add.ShowDialog();
if (add.DialogResult == DialogResult.OK)
{
if (add.FIO.Text == "" ||
add.position.Text == "" ||
add.experience.Text == "" ||
add.salary.Text == "")
{ MessageBox.Show("Заполните все поля", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); }
else
{
int rs = dataGridView1.RowCount;
string fio = add.FIO.Text;
string[] subs = fio.Split(' ');
string Lastname = subs[0];
string Name = subs[1];
string Fathername = subs[2];
string position = add.position.Text;
string experience = add.experience.Text;
string salary = add.salary.Text;
conn = new SqlConnection();
conn.ConnectionString = connStr;
conn.Open();
SqlCommand myComm = conn.CreateCommand();
myComm.CommandText = "insert into staffer (Lastname, Name, Fathername, Position, Experience, Salary) values (@Lastname, @Name, @Fathername, @Position, @Experience, @Salary)";
myComm.Parameters.Add("@Lastname", SqlDbType.NVarChar, 50);
myComm.Parameters["@Lastname"].Value = Lastname;
myComm.Parameters.Add("@Name", SqlDbType.NVarChar, 50);
myComm.Parameters["@Name"].Value = Name;
myComm.Parameters.Add("@Fathername", SqlDbType.NVarChar, 50);
myComm.Parameters["@Fathername"].Value = Fathername;
myComm.Parameters.Add("@Position", SqlDbType.NVarChar, 50);
myComm.Parameters["@Position"].Value = position;
myComm.Parameters.Add("@Experience", SqlDbType.Int, 4);
myComm.Parameters["@Experience"].Value = experience;
myComm.Parameters.Add("@Salary", SqlDbType.Int, 4);
myComm.Parameters["@Salary"].Value = salary;
myComm.ExecuteNonQuery();
conn.Close();
stafferTableAdapter.Fill(this.staffDataSet.staffer);
}
}
}
//реализация быстрого поиска
private void Search_TextChanged_1(object sender, EventArgs e)
{
if (lastnameRbtn.Checked == true)
{
stafferBindingSource.Filter = "Lastname LIKE '" + Search.Text + "*'";
if (Search.Text == "")
stafferBindingSource.Filter = null;
}
else if (positionRbtn.Checked == true)
{
stafferBindingSource.Filter = "Position LIKE '" + Search.Text + "*'";
if (Search.Text == "")
stafferBindingSource.Filter = null;
}
}
//реализация сортировки
private void SortBtn_Click_1(object sender, EventArgs e)
{
if (Sort.Text != "")
{
if (experienceBbtn.Checked == true)
{
stafferBindingSource.Filter = "Experience > " + Sort.Text;
}
if (salaryBbtn.Checked == true)
{
stafferBindingSource.Filter = "Salary > " + Sort.Text;
}
}
}
//реализация события кнопки Сброс фильтра
private void OffFilterBtn_Click(object sender, EventArgs e)
{
stafferBindingSource.Filter = null;
}
//кнопки выбора фамилии
private void lastnameRbtn_CheckedChanged(object sender, EventArgs e)
{
Search.Clear();
Sort.Clear();
}
//реализация закрытия программы при закрытии главной формы
private void Staffers_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
//реализация события кнопки удаления сотрудников из БД
private void DeleteBtn_Click(object sender, EventArgs e)
{
conn = new SqlConnection();
conn.ConnectionString = connStr;
conn.Open();
SqlCommand myComm = conn.CreateCommand();
int index = dataGridView1.CurrentCell.RowIndex;
string k = dataGridView1.Rows[index].Cells[0].Value.ToString();
myComm.CommandText = $"Delete from staffer where StaffID = {k}";
myComm.ExecuteNonQuery();
conn.Close();
this.stafferTableAdapter.Fill(this.staffDataSet.staffer);
}
//реализация экпорта данных в Excel
private void ExportBtn_Click(object sender, EventArgs e)
{
excelapp = new Excel.Application();
string put = Application.StartupPath.ToString();
excelapp.Workbooks.Open(put + @"\Staffer.xlsx");
excelsheets = excelapp.ActiveWorkbook.Worksheets;
excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
excelworksheet.Activate();
for (int i=0; i < dataGridView1.RowCount-1; i++)
{
for (int j = 0; j
{
excelcells = (Excel.Range)excelworksheet.Cells[i + 2, j + 1];
excelcells.Borders.ColorIndex = 1;
excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
excelcells.VerticalAlignment = Excel.Constants.xlCenter;
excelcells.Value2 = dataGridView1.Rows[i].Cells[j].Value;
}
}
excelapp.Visible = true;
}