Курсовой проект. Цель изучить основы работы с субд, а также их взаимодействие с клиентскими приложениями. Задание
![]()
|
СодержаниеВведение 2 Разработка базы данных 3 Разработка клиентского приложения 5 Заключение 9 Программный код 10 ВведениеЦель: изучить основы работы с СУБД, а также их взаимодействие с клиентскими приложениями. Задание: необходимо разработать программу с графическим интерфейсом на языке программирования С# или С/С++ для поддержки базы данных, разработанной в курсе «Базы данных». Программа должна обеспечивать добавление, редактирование, удаление и визуализацию данных, хранимых в БД проекта. В рамках данной работы используется база данных SQL, а также MS SQL Server Management Studio. Для реализации клиентского приложения используется С#, тип проекта Windows Forms. Разработка базы данных Создадим таблицы otdel и people в БД ![]() Рис. 1. Таблицы БД Создадим необходимые хранимые процедуры, для обеспечения взаимодействия БД со сторонними приложениями. ![]() Рис. 2. Хранимые процедуры Основными процедурами для таблиц являются: удаление записей; добавление записей; обновление записи; получение записи; получения всех записей; Наполним таблицы данными: ![]() Рис. 3. Пример данных в таблицах в БД Разработка клиентского приложенияВ рамках данной работы, на языке С# были разработаны классы для работы с БД OtdelSQL, PeopleSQL. ![]() Рис. 4. ![]() Рис. 5. Для каждого класса реализованы обертки для хранимых процедур БД, а именно: добавление; обновление; удаление; получение записи по Id; получение всех записей. Для взаимодействия с пользовательским интерфейсом реализованы элементы паттерна «Фасад». ![]() Рис. 6. ![]() Рис. 7. ![]() Рис. 8. ![]() Рис. 9. Экранная форма программы: ![]() Рис. 10. ЗаключениеИзучены основы работы с СУБД, а также их взаимодействие с клиентскими приложениями. Разработана программа с графическим интерфейсом на языке программирования С# для поддержки базы данных. Программа обеспечивает добавление, редактирование, удаление и визуализацию данных, хранимых в БД проекта. Программный код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 Database; using DatabaseFasade; namespace DBMS_Lab3 { public partial class Form1 : Form { int CurrentRowOtdel; int CurrentRowPeople; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "dB_OTD_KADROV_QUERYDataSet.otdel". При необходимости она может быть перемещена или удалена. this.otdelTableAdapter.Fill(this.dB_OTD_KADROV_QUERYDataSet.otdel); updateDgvOtdel(); updateDgvPeople(); UpdateCurrentOtdelName(); UpdateCurrentFioName(); } private void updateDgvOtdel() { FasadeOtdel fasOtdel = new FasadeOtdel(); List dgvOtdelList.Rows.Clear(); for (int i = 0; i < otdelList.Count; i++) dgvOtdelList.Rows.Add(otdelList[i]); if (dgvOtdelList.Rows.Count > 0) { CurrentRowOtdel = 0; dgvOtdelList.Rows[CurrentRowOtdel].Selected = true; } else { dgvOtdelList.ClearSelection(); CurrentRowOtdel = -1; } } private void updateDgvPeople() { FasadePeople fasPeople = new FasadePeople(); List dgvPeopleList.Rows.Clear(); for (int i = 0; i < peopleList.Count; i++) dgvPeopleList.Rows.Add(peopleList[i]); if (dgvPeopleList.Rows.Count > 0) { CurrentRowPeople = 0; dgvPeopleList.Rows[CurrentRowPeople].Selected = true; } else { dgvPeopleList.ClearSelection(); CurrentRowPeople = -1; } } private void dgvOtdelList_CellClick(object sender, DataGridViewCellEventArgs e) { CurrentRowOtdel = e.RowIndex; UpdateCurrentOtdelName(); } void UpdateCurrentOtdelName() { if (CurrentRowOtdel >= 0) otdelNameTB.Text = dgvOtdelList.Rows[CurrentRowOtdel].Cells["Name"].Value.ToString(); else otdelNameTB.Text = string.Empty; } void UpdateCurrentFioName() { if (CurrentRowPeople >= 0) EditFioTb.Text = dgvPeopleList.Rows[CurrentRowPeople].Cells["FIO"].Value.ToString(); else EditFioTb.Text = string.Empty; } private void AddOtdelBtn_Click(object sender, EventArgs e) { FasadeOtdel fasadeOtdel = new FasadeOtdel(); fasadeOtdel.addOtdel(newOtdelNameTB.Text.Trim()); updateDgvOtdel(); } private void ChangeOtdelNameBtn_Click(object sender, EventArgs e) { int id; string name; if (CurrentRowOtdel >= 0) { name = otdelNameTB.Text; id = Convert.ToInt32(dgvOtdelList.Rows[CurrentRowOtdel].Cells["Id"].Value.ToString()); } else { MessageBox.Show("Выберите строку!"); return; } FasadeOtdel fasadeOtdel = new FasadeOtdel(); fasadeOtdel.updateOtdelById(id, name); updateDgvOtdel(); UpdateCurrentOtdelName(); } private void DeleteOtdelBtn_Click(object sender, EventArgs e) { int id; if (CurrentRowOtdel >= 0) { id = Convert.ToInt32(dgvOtdelList.Rows[CurrentRowOtdel].Cells["Id"].Value.ToString()); } else { MessageBox.Show("Выберите строку!"); return; } FasadeOtdel fasadeOtdel = new FasadeOtdel(); fasadeOtdel.deleteOtdel(id); updateDgvOtdel(); UpdateCurrentOtdelName(); } private void dgvPeopleList_CellClick(object sender, DataGridViewCellEventArgs e) { CurrentRowPeople = e.RowIndex; UpdateCurrentFioName(); } private void AddPeopleBtn_Click(object sender, EventArgs e) { FasadePeople fasadePeople = new FasadePeople(); fasadePeople.addPeople(AddFioTb.Text.Trim()); updateDgvPeople(); } private void EditPeopleBtn_Click(object sender, EventArgs e) { int id; string FIO; if (CurrentRowPeople >= 0) { FIO = EditFioTb.Text; id = Convert.ToInt32(dgvPeopleList.Rows[CurrentRowPeople].Cells["ident"].Value.ToString()); } else { MessageBox.Show("Выберите строку!"); return; } FasadePeople fasadePeople = new FasadePeople(); fasadePeople.updatePeopleById(id, FIO); updateDgvPeople(); UpdateCurrentFioName(); } private void DeleteBtn_Click(object sender, EventArgs e) { int id; if (CurrentRowPeople >= 0) { id = Convert.ToInt32(dgvPeopleList.Rows[CurrentRowPeople].Cells["ident"].Value.ToString()); } else { MessageBox.Show("Выберите строку!"); return; } FasadePeople fasadePeople = new FasadePeople(); fasadePeople.deletePeople(id); updateDgvPeople(); UpdateCurrentFioName(); } } } |