ЛР3БСБД
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра безопасности информационных систем (БИС)
Отчет по лабораторной работе №3
По дисциплине «Безопасность систем баз данных» Тема ПО «Деятельность магазина»
Студент гр.731-2
__________Батаев А.С.
«__» _____2023
Принял:
Мл. науч. сотрудник
__________ ________ Перминов П.В. «__» _____2023
Томск 2023
Введение
Цель работы: изучение основных особенностей создания приложения для работы со связанными таблицами базы данных в Microsoft Visual Studio
для своей предметной области.
2
2 ХОД РАБОТЫ
Были обработаны исключения в программе, возникающие при некорректной работе с данными, результаты обработки изображены на рисунках 1.1 - 1.3. Листинг программы представлен в Приложении.
Рисунок 2.1 – Повторяющийся код сотрудника
Рисунок 2.2 – Пустое значение
Были реализованы поиск и фильтрация информации по вводу пользователем данных, которые изображены на рисунке 2.3, 2.4 Листинг программы представлен в Приложении.
3
Рисунок 2.3 – Поиск данных
Рисунок 2.4 – Фильтрация данных на фамилию
Была создана подстановочная колонка в форме Клиенты, которая изображена на рисунке 2.5.
Рисунок 2.5 – Подстановочная таблица
4
Заключение
В ходе работы были изучены основные особенности создания приложения для работы со связанными таблицами базы данных в Microsoft Visual Studio для предметной области «Деятельность магазина».
5
Приложение А (обязательное)
using System; using System.Data;
using System.Windows.Forms;
namespace БСБД_Магазин
{
public partial class FormListTransfer : Form
{
public FormListTransfer()
{
InitializeComponent();
}
private void списокСотрудниковBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate(); this.списокСотрудниковBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.shopDataSet);
}
private void FormListTransfer_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в табличу "shopDataSet.Персонал". При необходимости она может быть перемещена или удалена.
this.персоналTableAdapter.Fill(this.shopDataSet.Персонал);
// TODO: данная строка кода позволяет загрузить данные в табличу "shopDataSet.СписокСотрудников". При необходимости она может быть перемещена или удалена.
this.списокСотрудниковTableAdapter.Fill(this.shopDataSet.СписокСотрудников);
}
string GetSelectedFieldName()
{
return персоналDataGridView.Columns[персоналDataGridView.CurrentCell.ColumnIndex ].DataPropertyName;
}
private void filterButton_Click(object sender, EventArgs e)
{
if (filter.Text == "")
{
MessageBox.Show("Вы ницего не задали", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
}
int indexPos; try
{
indexPos = персоналBindingSource.Find(GetSelectedFieldName(), filter.Text);
}
catch (Exception err)
{
MessageBox.Show("Ошибка поиска \n" + err.Message); return;
}
if (indexPos > -1) персоналBindingSource.Position = indexPos;
6
else
{
MessageBox.Show("Таких сотрудников нет", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information); персоналBindingSource.Position = 0;
}
}
private void checkBoxFind_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxFind.Checked)
{
if (filter.Text == "")
MessageBox.Show("Вы ницего не задали", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
else try
{
персоналBindingSource.Filter = GetSelectedFieldName() + "='" + filter.Text + "'";
}
catch (Exception err)
{
MessageBox.Show("Ошибка фильтрачии \n" + err.Message);
}
}
else
персоналBindingSource.Filter = ""; if (персоналBindingSource.Count == 0)
{
MessageBox.Show("Нет таких"); персоналBindingSource.Filter = ""; checkBoxFind.Checked = false;
}
}
private void buttonshop_Click(object sender, EventArgs e)
{
int id = -1;
if (((DataRowView)списокСотрудниковBindingSource.Current) ["код_магазина"].ToString() != "")
{
id = (int)(((DataRowView)списокСотрудниковBindingSource.Current) ["код_магазина"]);
}
id = shop.fs.ShowSelectForm(id); if (id >= 0)
{
MessageBox.Show(id.ToString());
((DataRowView)списокСотрудниковBindingSource.Current)["код_магазина"] = id;
списокСотрудниковBindingSource.EndEdit();
}
}
private void персоналDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
7
MessageBox.Show("Ошибка в веденном знацении", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
8
Приложение Б (обязательное)
using System; using System.Data;
using System.Windows.Forms;
namespace БСБД_Магазин
{
public partial class shop : Form
{
public shop()
{
InitializeComponent();
}
static shop f;
static public shop fs
{
get
{
if (f == null || f.IsDisposed) f = new shop(); return f;
}
}
public void ShowForm()
{
Show();
Activate();
}
private void магазинСкладBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate(); this.магазинСкладBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.shopDataSet);
}
int idCurrent = -1;
public int ShowSelectForm(int id)
{
idCurrent = id;
if (ShowDialog() == DialogResult.OK)
return (int)((DataRowView)магазинСкладBindingSource.Current) ["код_магазина"];
else
return -1;
}
private void shop_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в табличу "shopDataSet.МагазинСклад". При необходимости она может быть перемещена или удалена.
this.магазинСкладTableAdapter.Fill(this.shopDataSet.МагазинСклад);
}
private void shop_Shown(object sender, EventArgs e)
{
магазинСкладBindingSource.Position = магазинСкладBindingSource.Find("код_магазина", idCurrent);
}
}
}
9
Приложение В (обязательное)
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 БСБД_Магазин.Properties;
namespace БСБД_Магазин
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("(C)ТУСУР,БИС,Батаев Александр Сергеевиц,гр.731-2,2023", "О программе",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void выходToolStripMenuItem1_Click(object sender, EventArgs e)
{
Close();
}
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = MessageBox.Show("Вы хотите закрыть программу?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes;
}
private void FormMain_FormClosed(object sender, FormClosedEventArgs e)
{
Settings.Default.Save();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
EmployeesList.fs.ShowForm();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
Transfer.fs.ShowForm();
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
ProductInfo.fs.ShowForm();
}
private void toolStripButton6_Click(object sender, EventArgs e)
10