В данном порядке выполнения лабораторной работы будет разработано приложение, которое будет работать с данными с базы данных (отображать, добавлять удалять, редактировать данные). Доступ к базе будет осуществляться с применением технологии ADO.NET. В качестве СУБД был выбран PostgreSQL. Предметная область будет состоять из двух объектов: «Группа» и «Студент», которые состоят в отношении один ко многим.
1. Установите PostgreSQL, если он у вас еще не установлен. Создайте в СУБД PostgreSQL базу данных univer, создайте в базе таблицы Groups и Students. Запросы для создания таблиц приведены ниже:
--Таблица групп
CREATE TABLE Groups(
id bigserial NOT NULL,
groupname varchar(20),
curatorname varchar(20),
headmanname varchar(20),
PRIMARY KEY (id));
--Таблица студентов
CREATE TABLE Students(
id bigserial NOT NULL,
firstname varchar(20),
lastname varchar(20),
sex varchar(1) NOT NULL CHECK (sex = 'М' or sex = 'Ж'),
age integer,
groupid bigint,
PRIMARY KEY (id),
FOREIGN KEY (groupid) REFERENCES Groups ON UPDATE CASCADE ON DELETE CASCADE);
2. Создайте новое приложение Windows Forms.
3. Добавьте в каталог с проектом библиотеку для работы с СУБД PostgreSQL. Данную библиотеку можно скачать по ссылке http://www.postgresql.org/. В данном проекте был использован архив Npgsql2.0.10-bin-ms.net.zip. Были использованы библиотеки Npgsql.dll и Mono.Security.dll.
4. Подключите библиотеку Npgsql.dll к проекту (нажмите правой кнопкой на «Ссылки» в дереве объектов, потом на «Добавить ссылку…», перейдите на закладку «Обзор», выберите необходимые файлы).
Рисунок 3.2 – Подключение библиотеки Npgsql.dll к проекту
5. Приступим к созданию главной формы. На главной форме разметите компонент MenuStrip, добавьте к нему пункт меню «Источник данных», а к пункту «Источник данных» пункты «Подключение к базе» и «Отключение от базы», создайте обработчики нажатия на эти два пункта меню.
6. Установите на форму компонент SplitConteiner для того, чтобы разделить рабочую область формы на две части.
7. Установите с левую и правую части компонент GoupBox. Установите у левого GoupBox свойство Text в значение «Группы», а у правого свойство Text в значение – «Студенты», установите у обоих GoupBox свойство Dock в значение Fill.
8. Разместите на левом и на правом GoupBox компоненты DataGridView. Установите у них свойство Dock в значение Fill. Левый DataGridView будет использоваться для отображения списка групп, а правый для отображения списка студентов в группе. Настройте каждый из DataGridView следующим образом: ReadOnly – True, MultiSelect – False, RowHeadersVisible – False, SelectionMode – FullRowSelect, AllowUserToAddRows - False.
9. Добавьте два компонента ContextMenuStrip, свяжите одно контекстное меню с левым DataGridView, а другое с правым DataGridView через свойство ContextMenuStrip. Добавьте в каждом меню три пункта «Добавить», «Удалить», «Заменить», к каждому пункту меню добавьте обработчик на нажатие.
10. Создайте три дополнительные формы. Одна будет использоваться для ввода настроек подключения, вторая - для добавления и изменения группы, третья – для добавления и изменения студента. Добавить новую форму можно нажав на проект правой кнопкой мыши, в контекстном меню выбрать «Добавить», «Создать элемент», в дереве выбрать «Windows Forms», выбрать в списке «Форма Windows Forms».
11. Приступим к реализации функций подключения к базе данных и отключения от базы данных. Откройте Form2 в режиме конструктора. Добавьте пять компонентов TextBox и компонент Button. Назовите компонент Button – «Подключиться». Первый TextBox будет использоваться для ввода адреса сервера баз данных, второй – для ввода порта, третий – для ввода имени базы данных, четвертый – для ввода имени пользователя, пятый – для ввода пароля. Компонент Button будет использоваться для подключения к базе данных. Подпишите каждое поле ввода с использованием компонента Label. Результат проектирования формы для ввода настроек подключения к базе данных приведен на рисунке 3.3.
Рисунок 3.3 – Внешний вид формы ввода настроек подключения к базе данных
12. Откройте Form2 с использованием редактора CSharp. Добавьте над конструктором формы поле:
private Form1 perent;
Это поле необходимо для доступа к родительской форме. Также добавьте метод по установлению значения этого поля:
public void setPerent(Form1 perent)
{
this.perent = perent;
}
13. Добавьте обработчик нажатия на кнопку «Подключиться»:
Функции подключения и отключения от базы реализованы, теперь приступим к реализации функций добавления, удаления и редактирования группы.
19. Откройте Form3 в режиме конструктора. Назовите форму «Группа», добавьте три компонента TextBox и два компонента Button. Первый компонент TextBox будет использоваться для ввода названия группы, второй – для ввода ФИО куратора группы, третий – для ввода ФИО старосты группы. Назовите одну кнопку «Добавить», а вторую – «Заменить». Подпишите поля ввода компонентами Label. Результат проектирования формы добавления и редактирования групп представлен на рисунке 3.4.
Рисунок 3.4 – Внешний вид формы добавления и редактирования студентов
20. Откройте Form3 с использованием редактора CSharp. Добавьте над конструктором формы поля:
private Form1 perent = null;
private int row;
Первое поле необходимо для хранения ссылки на родительскую форму, а второе для хранения номера редактируемой строки.
21. Добавьте методы по установлению значений полей:
public void setPerent(Form1 perent)
{
this.perent = perent;
}
public void setRow(int row)
{
this.row = row;
}
22. Добавьте методы для установления свойств компонентов формы:
public void setTextBox1Text(string text)
{
textBox1.Text = text;
}
public void setTextBox2Text(string text)
{
textBox2.Text = text;
}
public void setTextBox3Text(string text)
{
textBox3.Text = text;
}
public void setButton1Visible(bool value)
{
this.button1.Visible = value;
}
public void setButton2Visible(bool value)
{
this.button2.Visible = value;
}
23. Добавьте обработчики нажатия на кнопки «Добавить» и «Заменить»:
28. Приступим к реализации функций добавления удаления и замены студентов. Откройте Form4 (форму добавления и редактирования студентов) с использованием конструктора форм. Добавьте 4 компонента TextBox и два компонента Button. Первый компонент TextBox, будет использоваться для ввода имени студента, второй – для ввода фамилии студента, третий – для ввода пола студента, четвертый - для ввода года рождения студента. Назовите одну кнопку «Добавить», а вторую «Заменить». Подпишите каждый компонент TextBox с использование компонента Label. Результат проектирования формы добавления и замены студентов представлен на рисунке 3.5.
Рисунок 3.5 – Внешний вид формы добавления и замены студентов
29. Откройте Form4 с использованием редактора CSharp. Добавьте над конструктором формы поля:
private Form1 perent = null;
private string groupName;
private long groupId;
private int row;
Первое поле предназначено для хранения ссылки на родительскую форму, второе для хранения имени группы, третье для хранения идентификатора группы, четвертое для хранения номера редактируемой строки.
30. Добавьте методы по установлению вышеописанных полей:
public void setPerent(Form1 perent)
{
this.perent = perent;
}
public void setGroupName(string groupName)
{
this.groupName = groupName;
}
public void setGroupId(long groupId)
{
this.groupId = groupId;
}
public void setRow(int row)
{
this.row = row;
}
31. Добавьте методы для установления свойств компонентов формы:
public void setTextBox1Text(string text)
{
textBox1.Text = text;
}
public void setTextBox2Text(string text)
{
textBox2.Text = text;
}
public void setTextBox3Text(string text)
{
textBox3.Text = text;
}
public void setTextBox4Text(string text)
{
textBox4.Text = text;
}
public void setButton1Visible(bool value)
{
this.button1.Visible = value;
}
public void setButton2Visible(bool value)
{
this.button2.Visible = value;
}
32. Добавьте обработчики нажатия на кнопки «Добавить» и «Удалить»: