Проектирование базы данных студенческих мероприятий института международных отношений

Анализ концептуальной схемы данных информационной системы студенческих мероприятий института международных отношений. Описание основных элементов интерфейса пользователя. Элементы формы, с помощью которой генерируются запросы на удаление элементов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.02.2019
Размер файла 560,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Введение

На сегодняшний день в мире работают сотни миллионов персональных компьютеров. Большинство этих компьютеров будет включено в мировые информационные сети. На каждом компьютере или сервере храниться определённая информация.

При такой компьютеризации практически всех отраслей жизнедеятельности человека возникает вопрос о создании программ позволяющих эффективно работать с накопленными данными. К таковым можно отнести СУБД MySQL.

В данном курсовом проектировании была спроектирована база данных студенческих мероприятий института международных отношений, а также приложение, позволяющее пользователю взаимодействовать с этой базой данных.

1. Анализ технического задания

Согласно техническому заданию инфологическое проектирование должно быть выполнено с помощью CASE- средства.

На этапе логического проектирования необходимо осуществить проверку всех таблиц на соответствие нормальным формам отношений.

Разработанное приложение должно выполнять следующие функции:

· Ввода данных.

· Добавление данных.

· Удаление данных.

· Корректировку данных.

· Поиск данных.

· Сервисные функции.

· Во время ввода данных должны происходить проверки на целостность данных.

При разработке приложение важно использование объектно-ориентированного подхода и использовать операторы языка SQL.

Организация интерфейса должна соответствовать требованиям стандарта среды Windows.

2. Описание предметной области

В данном курсовом проектировании разрабатывалась база данных студенческих мероприятий института международных отношений.

Для каждого мероприятия назначается организатор, а также указывается время и место проведения данного мероприятия. Также в базе данных храниться информация о студентах, принимающих участие в мероприятиях, информацию о факультете, на котором обучаются данные студенты.

3. Проектирований инфологической модели БД

При проектировании базы данных необходимо создать модель данных необходимой предметной области. Моделирование данных значительно понимание смысла элементов данных, так и саму процедуру создания базы данных. Концептуальная схема данных для базы данных студенческих мероприятий института международных отношений представлена на рисунке 1.

Рисунок 1

Сущность «События» имеет идентифицирующую связь многие-ко-многим с сущностью «Студенты» и реализовано это через сущность «Участники». «Факультет» имеет связь один-ко-многим с сущностями «Организатор» и «Группа». Сущность «Группа» так же имеет связь один к многим к сущности «Студенты». Все вышеперечисленные связи не идентифицирующие.

Описание всех вышеперечисленных сущностей и их атрибутов приведено в таблицах 1-6.

Табл. 1

Атрибут

Домен

Ключ

Связь

Код организатора

int

Первичный

Не идентифицирующая, Один-ко-многим с сущностью «Событие»

Код факультета

int

Внешний

Не идентифицирующая, многие-к-одному с сущностью «Фаультет»

Имя

text

Табл. 2

Атрибут

Домен

Ключ

Связь

Код факультета

int

Первичный

Не идентифицирующая, один-ко-многим с сущностью «Группы» и сущностью «Организатор».

Название

text

Декан

text

Описание

text

Табл. 3

Атрибут

Домен

Ключ

Связь

Код группы

int

Первичный

Не идентифицирующая связь Один-ко-многим с таблицей «Студенты».

Код факультета

int

Внешний

Не идентифицирующая связь Многие-к-одному с таблицей «Факультет».

Курс

text

Табл. 4

Атрибут

Домен

Ключ

Связь

Код студента

int

Первичный

Идентифицирующая связь Один -ко-многим с таблицей «Участники».

Код группы

int

Внешний

Не идентифицирующая связь «Многие-е-одному» с таблицей «Группа»

ФИО

text

Табл. 5

Атрибут

Домен

Ключ

Связь

Код студента

int

Внешний

Идентифицирующая связь Один-ко-многим с таблицей «Студенты»

Код события

int

Внешний

Идентифицирующая связь Один-ко-многим с таблицей «События»

Роль

text

Табл. 6

Атрибут

Домен

Ключ

Связь

Код события

int

Первичный

Не идентифицирующая Связь многие -к одному с таблицей «Организатор»

Код организатора

int

Внешний

Идентифицирующая Связь Один-ко-многим с таблицей «Участники»

Место

text

Дата проведения

datatime

В приложении А представлена схема «Сущность-связь».

4. Проектирование логической схемы БД

Следующим этапом разработки базы данных является проектирование логической схемы базы данных описывающей понятия предметной области, а также их взаимосвязь, между собой с использованием средств СУБД MySQL.

На данном этапе были соблюдены следующие требования нормализации:

1. НФ - все его атрибуты являются простыми.

2. НФ - каждый не ключевой атрибут зависит от первичного ключа.

3. НФ - каждый не ключевой атрибут функционально зависит только от ключевых атрибутов.

Логическая схема представлена на рисунке 2.

Рисунок 2

Логическая схема включает в себя следующие таблицы:

Таблица - ORG (Организатор) имеет атрибуты

1. ORGID (Код мероприятия) [PK] - int

2. FID (Код факультета) [FK] - int

3. Name (Имя организатора) - text

Имеет связь 1:n с таблицей Ivent n:1 с таблицей Faculty.

Таблица - Faculty(Факультет) имеет атрибуты

1. FID (Код факульета) [PK] - int

2. Name (Название) - text

3. Decan (Декан) - text

4. Description (Описание)- text

Имеет связь 1:n с таблицами GRP, ORG.

Таблица - GRP (Группы) имеет атрибуты

1. GID (Код группы) [PK] - int

2. FID (Код факульета) [FK] - int

3. Course (Курс) -text

Имеет связь 1:n с таблицей Student n:1 c таблицей Faculty.

Таблица - Student (Студент) имеет атрибуты

1. SID (Код студента) [PK] - int

2. GID (Код группы) [FK]- int

3. Name (ФИО) - text

Имеет связь 1:n с таблицей Artist.

Таблица - Artist (Участники) имеет атрибуты

1. IID (Код мероприятия) [FK] - int

2. SID (Код студента) [FK] - int

3. Role (Роль) - text

Имеет связь n:1 с таблицей Ivent и Student

Таблица - Ivent (Код мероприятия) имеет атрибуты

1. IID (Код мероприятия) [PK] - int

2. ORGID (Код организатора) [FK]- int

3. Place (Место) - text

4. Data (Дта проведения) -datetime

Имеет связь n:1 с таблицами ORG и 1:n c Artist.

Все вышеперечисленные таблицы в СУБД MySQL имеют тип InnoDB, а также установленное ограничение ссылочной целостности.

Проектирование физической схемы БД.

Для того, чтобы отобразить то, как база данных будет реализована непосредственно в самой СУБД необходимо спроектировать физическую схему, несущей в себе названия таблиц, атрибуты таблиц и непосредственно тип и длину каждого атрибута. Иными словами, задает структуру хранения и организацию внешних данных.

Рисунок 3 - Физическая схема

В базе данных используются кластерные индексы, созданные для каждой таблицы путем определения первичного ключа. Каждый такой индекс однозначен т.е. в столбце, для которого определен этот индекс, каждое значение данных может встречаться только один раз.

GID - индекс таблиц организаторов

FID - индекс таблицы факультета

GID - индекс таблицы групп

SID - индекс таблиц студентов

IID- индекс таблиц мероприятий

5. Структура приложения

Рисунок 4

Для взаимодействия с базой данных было написано приложение на языке C#. На рисунке 4 представлена схема алгоритма работы приложения.

Рисунок 5

Основные блоки разработанного приложения CinemaDP и их взаимодействие указаны на рисунке 5.

IventDB - основная часть разработанного приложения. Осуществляет установку соединения с базой данных, формирует SQL-запросы на отображения данных таблиц. Обеспечивает взаимодействие с компонентами приложения, а также передачу данных между ними.

Каждая часть приложения выполняет следующую функцию:

· MainW - формирование SQL-запроса на отображение данных по SQL запросу. Реализует сервисные запросы.

· DelItem - формирование SQL - запросов на удаление данных в БД

· AddItem - формирование SQL-запросов на добавление данных в БД

6. Реализация приложения

Реализуемые SQL запросы

Приложение в зависимости от выбора пользователя формирует SQL запрос на получение данных. В таблице 8 представлен список SQL-шаблонов для запросов пользователя, реализуемых приложением.

SQL-код базы данных представлен в приложении В.

Табл. 6 - Описание SQL - шаблонов

SQL запрос

Описание

SELECT * FROM `<таблица>`

Отображает список всех строк таблицы.

"DELETE FROM `IDB`.`<таблица> + "` WHERE ` `ID` IN("<значения>")";

Удаляет все строки таблицы с указанными ID.

"DELETE FROM `IDB`.`" <таблица> "` WHERE `product`.`ID`="<значений>"";

Удаляет одну строку таблицы

"INSERT INTO `IDB`.`"<таблица> "` ("<атрибуты>") VALUES("<значения>");"

Добавляет строки в таблицу.

SELECT * FROM ` <таблица>` INNER JOIN `<таблица>` using(<атрибуты>)

Отображает строки таблиц, где совпадает указанный атрибут

"UPDATE `IDB`.`" <таблица>"` SET `" <атрибут> "` = '" <значение> "' WHERE `" <таблица>"`.`ID` = "<значение>";";

Изменяет значение определённого атрибута таблицы

"SELECT * FROM <таблица> Where Data = (SELECT MIN(Data) FROM <таблица> WHERE Data> <значение>

Выводит строку, где значение атрибута является минимальным и удовлетворяет заданному условию.

"SELECT * FROM(SELECT ORGID, count(*) AmountMax FROM Ivent GROUP BY ORGID ORDER BY AmountMax DESC LIMIT 1) as al1 JOIN ORG USING(ORGID)"

Выводит определенную строку таблицы, найденную по максимальному количеству определённых значений указанного атрибута и соединяет полученные строки с таблицей и выводит количество найденных значений.

"SELECT * FROM(SELECT ORGID, count(*) AmountMin FROM Ivent GROUP BY ORGID ORDER BY AmountMin LIMIT 1) as al1 JOIN ORG USING(ORGID)"

Выводит определенную строку таблицы, найденную по минимальному количеству определённых значений указанного атрибута и соединяет полученные строки с таблицей и выводит количество найденных значений.

SELECT COUNT(1) as Всего FROM Ivent"

Подсчитывает количество найденных строк.

На основе SQL-шаблонов, указанных в таблице 8, формируются запросы с пользовательскими данными.

Пользователь осуществляет ввод данных в элементы управления формы - TextBox и ComboBox. Затем приложение считывает введённые данные и формирует SQL-запрос, помещая считанные данные, в соответствующие поля ( < атрибут> , <таблица> или <значение>) согласно шаблону.

Например рассмотрим запрос

"INSERT INTO `IDB`.`" + tables + "` (" + columns + ") VALUES(" + values + ");";

Пользователь осуществляет ввода данных в специальную форму, с тремя элементами типа TextBox (см.рисунок 6).

Рисунок 6 - Окно внесения данных

После того как пользователь нажмет кнопку найти введённые данные приложение поместит в SQL-запрос, заданному по шаблону:

INSERT INTO ` IDB `.`" + tables + "` ("ORGID,FID,Name") VALUES(`','FVT',Elena);";

В результате выполнения запроса будет добавлен сотрудник с указанными данными (см.рисунок 7).

Рисунок 7 - Результат выполнения запроса

Описание компонентов и приложения

Для взаимодействия с базой данных было написано приложение на языке C#. В качестве интегрированной среды разработки использовалась Microsoft Visual Studio 2017.

В качестве системы управления базой данных была использована свободная реляционная СУБД MySQL.

В качестве веб-интерфейса для администрирования СУБД использовался phpMyAdmin - Apache/2.2.29.

В качестве локального сервера для размещения вышеописанных компонентов использовался OpenServer 5.5.2.

Использовалась библиотеки. NetFramework - MySQL Data.Client и MySQL.Web для обеспечения взаимодействия между СУБД и приложением.

Была использована библиотека GetData.dll содержащая методы для подключения к БД.

IventDB.pdb и IventDBProject.exe.config являются файлами конфигурации приложения и служат для его корректного выполнения на ПК.

Структурная схема приложения представлена в приложении Б. На схеме показаны компоненты приложения с расширением «.cs» - формы приложения, «.resx» - файлы ресурсов приложения.

Описание метода подключения к БД

Подключение к базе данных осуществляется с помощью метода GetQueryData() из написанной библиотеки GetData.

Листинг 1

public void GetQueryData()

{

DataTable result = new DataTable();

MySqlConnection connect = new MySqlConnection(server=localhost;user=root;database=IDB;);

В фрагменте кода Листинг 1 осуществляется создание объектов для подключения к базе данных (connect) и объекта для получения результата (result).

Листинг 2

try

{

connect.Open();

}

catch

{

MessageBox.Show("Не удаёться установить соединение с БД.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

В фрагменте кода Листинг 2 осуществляется проверка на успешное соединение с базой данных, и показ уведомления в случае ошибки.

Листинг 3

MySqlCommand command = new MySqlCommand(query, connect);

MySqlDataAdapter adapter = new MySqlDataAdapter(command);

try

{

adapter.Fill(result);

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

В фрагменте кода Листинг 3 создаться объекты для выполнения запроса, хранящегося в глобальной переменной -query. В случае, если запрос выполнен с ошибкой, то она будет выведена пользователю, иначе получен результат (result).

Описание интерфейса пользователя.

Взаимодействие пользователя с приложением осуществляется через специальные формы, на которых расположены определенные элементы управления - ComboBox, Label (Текст), Button и DataGridView.

Рисунок 8 - Основное окно формы назначения участников

Рассмотрим пример работы пользователя с формой назначения сотрудника на мероприятие(см.рисунок 8).

Две таблицы (элементы DataGridView) отображают списки доступных для назначения артистов и мероприятий. С помощью расположенных снизу элементов ComboBox пользователь выбирает необходимого студента, назначает его на мероприятие с описанием его роли (см.рисунок 9).

Рисунок 9 - Выбор мероприятия и роли для назначения участнику.

Заполнив ComboBox и нажав кнопку(Button) «Добавить», в базу данных будут добавлен данные с указанием мероприятия, студента и его роли, а пользователю будет выведено соответствующее сообщение (см. рисунок 10).

Рисунок 10 - Уведомление о успешном вводе даных

Пример кода приложения

Рассмотрим алгоритм описанной ранее формы поиска по совместимым компонентам.

Листинг 4

using System;

using System.Windows.Forms;

using GetData;

namespace IventDB

{

public partial class AddArtist : Form

{

public AddArtist()

{

InitializeComponent();

}

string connStr = "server=localhost;user=root;database=IDB;";

В фрагменте кода Листинг 4 осуществляется инициализация формы и подключение необходимых библиотек.

Листинг 5

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Ivent");

dataGridView2.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Student");

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

comboBox1.Items.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());

}

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

comboBox2.Items.Add(dataGridView2.Rows[i].Cells[0].Value.ToString());

}

В фрагменте кода Листинг 5 осуществляется вывод всех доступных для назначения студентов и мероприятий. А также на данном этапе осуществляется заполнение элементов ComboBox.

Листинг 6

private void button1_Click(object sender, EventArgs e)

{

string query = "INSERT INTO `Artist`(`IID`, `SID`, `Role`) VALUES('" + comboBox1.SelectedItem.ToString() + "', '" + comboBox2.SelectedItem.ToString() + "', '" + textBox1.Text + "')";

GetMySQLData.GetQueryData(connStr, query);

MessageBox.Show("Роль назначена");

В фрагменте кода Листинг 6 осуществляется формирование SQL-запроса на назначение студенту роли и мероприятия. Формируется определённый шаблон, соответствующий ID мероприятия и студента, которые выбрал пользователь. Приложение заполняет SQL-шаблон. Затем, аналогично осуществляется вызов метода GetQueryData(), для отправки запроса и получения результата. После чего выводиться сообщение об успешном добавлении данных.

7. Описание приложения

Основное окно программы содержит в себе область, куда выводится таблица, полученная в результате выполнения SQL запроса. SQL запрос выбирается из доступного для выбора таблиц, расположенных справа основного окна программы (см.рисунок 11).

Рисунок 11

Рисунок 12 - Вод данных в базу данных

Пользователь также может взаимодействовать с данными. Например, добавить строку в текущую, активную таблицу. Для этого необходимо нажать соответствующую кнопку, для вызова дополнительного интерфейса ввода данных (см.рисунок 12).

На рисунке 13 представлена форма, с помощью которой генерируются запросы на удаление элементов.

Рисунок 13

информационный интерфейс запрос

Редактирование данных осуществляется прямым изменение значения в таблице и нажатием кнопки сохранить (см.рисунок 14).

Рисунок 14

При выборе сервисных запросов пользователю становиться доступен список доступных запросов (см.рисунок 15).

Рисунок 15 - Сервисные запросы

После выбора сервисного запроса, в основной таблице будет выведен результат данного запроса (см.рисунок 16).

Рисунок 16 - Результат сервисного запроса

Назначить участников на мероприятие можно через специальную форму. Здесь пользователь выбирает мероприятие и студента, а затем присваивает ему определённую роль (см.рисунок 17).

Рисунок 17 - Форма назначения участника

Полный исходный код программы представлен в приложении Г.

Заключение

В ходе данного курсового проектирования спроектирована база данных студенческих мероприятий института международных отношений (IDB), а также написано приложение осуществляющее взаимодействие пользователя с данными хранящимися в указанной БД на языке C#.

Разработаны инфологическая логическая и физическая модели базы данных студенческих мероприятий института международных отношений с помощью CASE-средства ERwin.

База данных создана с использованием СУБД MySQL, локального сервера OpenServer 5.5.2, а также web-интерфейса phpMyAdmin - Apache/2.2.29. Все таблицы в базе данных имеют тип InnoDB.

Разработанное приложение имеет следующие основные функции:

· Ввод данных.

· Отображение данных по запросу.

· Редактирование данных.

· Удаление данных.

· Поиск по базе данных.

· Функции организацию мероприятия

· Функции назначения сотрудников киностудии

Требования ТЗ выполнены полностью.

Список литературы

1) Изучаем PHP и MySQL -- Линн Бейли, Майкл Моррисон.; Эксмо 2010 г; - 443-449 с.

2) Электронный учебник «Базы данных» Т.В. Глотова, Е.Г. Бершадская Web-Design, Ю.О. Крючков, 2003

Приложение А

Описание сущностей и связей

Рисунок 18

Приложение Б

Схема структуры приложения

Рисунок 19

Приложение В

SQL-скрипт БД

CREATE TABLE IF NOT EXISTS `Artist` (

`IID` int(11) NOT NULL,

`SID` int(11) NOT NULL,

`Role` text NOT NULL,

KEY `IID` (`IID`,`SID`),

KEY `SID` (`SID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Faculty` (

`FID` int(11) NOT NULL AUTO_INCREMENT,

`Name` text NOT NULL,

`Decan` text NOT NULL,

`Description` text NOT NULL,

PRIMARY KEY (`FID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

CREATE TABLE IF NOT EXISTS `GRP` (

`GID` int(11) NOT NULL AUTO_INCREMENT,

`FID` int(11) NOT NULL,

`Course` text NOT NULL,

PRIMARY KEY (`GID`),

KEY `FID` (`FID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `Ivent` (

`IID` int(11) NOT NULL AUTO_INCREMENT,

`ORGID` int(11) NOT NULL,

`Place` text NOT NULL,

`Data` datetime NOT NULL,

PRIMARY KEY (`IID`),

KEY `ORGID` (`ORGID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `ORG` (

`ORGID` int(11) NOT NULL AUTO_INCREMENT,

`FID` int(11) NOT NULL,

`Name` text NOT NULL,

PRIMARY KEY (`ORGID`),

KEY `FID` (`FID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

CREATE TABLE IF NOT EXISTS `Student` (

`SID` int(11) NOT NULL AUTO_INCREMENT,

`GID` int(11) NOT NULL,

`Name` text NOT NULL,

PRIMARY KEY (`SID`),

KEY `GID` (`GID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

ALTER TABLE `Artist`

ADD CONSTRAINT `artist_ibfk_1` FOREIGN KEY (`IID`) REFERENCES `Ivent` (`IID`) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT `artist_ibfk_2` FOREIGN KEY (`SID`) REFERENCES `Student` (`SID`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `GRP`

ADD CONSTRAINT `grp_ibfk_1` FOREIGN KEY (`FID`) REFERENCES `Faculty` (`FID`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `Ivent`

ADD CONSTRAINT `ivent_ibfk_1` FOREIGN KEY (`ORGID`) REFERENCES `ORG` (`ORGID`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `ORG`

ADD CONSTRAINT `org_ibfk_1` FOREIGN KEY (`FID`) REFERENCES `Faculty` (`FID`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `Student`

ADD CONSTRAINT `student_ibfk_1` FOREIGN KEY (`GID`) REFERENCES `GRP` (`GID`) ON DELETE CASCADE ON UPDATE CASCADE;

Приложение Г

Листинг приложения

using System;

using GetData;

using MySql.Data;

namespace IventDB

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

radioButton1.Checked = true;

dataGridView1.DataSource= GetMySQLData.GetQueryData(connStr,"SELECT * FROM ORG");

comboBox1.Hide();

}

string connStr = "server=localhost;user=root;database=IDB;";

int tID;

string DID,query;

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

tID = 0;

DID = "ORGID";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM ORG");

query = "SELECT * FROM ORG";

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void radioButton2_CheckedChanged(object sender, EventArgs e)

{

tID = 1;

DID = "FID";

query = "SELECT * FROM Faculty";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Faculty");

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void radioButton3_CheckedChanged(object sender, EventArgs e)

{

tID = 2;

DID = "GID";

query = "SELECT * FROM GRP";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM GRP");

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void radioButton4_CheckedChanged(object sender, EventArgs e)

{

tID = 3;

DID = "SID";

query = "SELECT * FROM Student";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Student");

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void radioButton5_CheckedChanged(object sender, EventArgs e)

{

tID = 4;

DID = "IID";

query = "SELECT * FROM Ivent";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Ivent");

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void radioButton6_CheckedChanged(object sender, EventArgs e)

{

tID = 5;

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Artist");

button1.Show();

button2.Show();

comboBox1.Hide();

button3.Hide();

button4.Hide();

}

private void Form1_Load(object sender, EventArgs e)

{

}

Dictionary<int, string> table = new Dictionary<int, string>

{

{0,"ORG"},

{1,"Faculty"},

{2,"GRP"},

{3,"Student"},

{4,"Ivent"},

{5,"Artist"},

};

private void button1_Click(object sender, EventArgs e)

{

if (tID != 5)

{

string[] x = new string[dataGridView1.ColumnCount];

string queryOLD = query;

query = "";

for (int i = 0; i < dataGridView1.ColumnCount; i++)

{

x[i] = dataGridView1.Columns[i].HeaderText;

}

AddItem f = new AddItem(x, tID);

f.Owner = this;

f.ShowDialog();

query = f.queryIN.Text;

if (query != "")

{

try

{

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

}

catch (Exception err)

{

MessageBox.Show("Ошибка внешнего ключа", "Ошибка");

}

}

query = queryOLD;

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

}

else

{

AddArtist f = new AddArtist();

f.Owner = this;

f.ShowDialog();

query = "SELECT * FROM Artist";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

}

}

private void radioButton7_CheckedChanged(object sender, EventArgs e)

{

comboBox1.Show();

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

button3.Hide();

button4.Hide();

int index = comboBox1.SelectedIndex;

switch (index)

{

case 0:

dataGridView1.DataSource=GetMySQLData.GetQueryData(connStr,"SELECT * FROM Ivent Where Data = (SELECT MIN(Data) FROM Ivent WHERE Data>"+ DateTime.Now.ToString("yyyy-MM-dd")+")");

break;

case 1:

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT COUNT(1) as Всего FROM Ivent");

break;

case 2:

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM(SELECT ORGID, count(*) AmountMax FROM Ivent GROUP BY ORGID ORDER BY AmountMax DESC LIMIT 1) as al1 JOIN ORG USING(ORGID)");

break;

case 3:

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM(SELECT ORGID, count(*) AmountMin FROM Ivent GROUP BY ORGID ORDER BY AmountMin LIMIT 1) as al1 JOIN ORG USING(ORGID)");

break;

}

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

x = dataGridView1.CurrentCellAddress.X;

y = dataGridView1.CurrentCellAddress.Y;

head = dataGridView1.Columns[x].HeaderText;

strID = dataGridView1[0, y].Value.ToString();

button3.Show();

button4.Show();

}

string strID;

string head;

int x, y;

private void button4_Click(object sender, EventArgs e)

{

button3.Hide();

button4.Hide();

}

private void button3_Click(object sender, EventArgs e)

{

string setetxt = dataGridView1[x, y].Value.ToString();

query = "UPDATE `IDB`.`" + table[tID] + "` SET `" + head + "` = '" + setetxt + "' WHERE `" + table[tID] + "`.`"+DID+"` = " + strID + ";";

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

button3.Show();

button4.Show();

}

private void button2_Click(object sender, EventArgs e)

{

string queryOLD = query;

query = "";

Delitem f = new Delitem(tID,DID);

f.Owner = this;

f.ShowDialog();

query = f.delQ.Text;

if (query != "")

{

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

}

query = queryOLD;

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, query);

}

}

}

using System;

using System.Windows.Forms;

using GetData;

namespace IventDB

{

public partial class AddArtist : Form

{

public AddArtist()

{

InitializeComponent();

dataGridView1.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Ivent");

dataGridView2.DataSource = GetMySQLData.GetQueryData(connStr, "SELECT * FROM Student");

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

comboBox1.Items.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());

}

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

comboBox2.Items.Add(dataGridView2.Rows[i].Cells[0].Value.ToString());

}

}

string connStr = "server=localhost;user=root;database=IDB;";

private void AddArtist_Load(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

string query = "INSERT INTO `Artist`(`IID`, `SID`, `Role`) VALUES('" + comboBox1.SelectedItem.ToString() + "', '" + comboBox2.SelectedItem.ToString() + "', '" + textBox1.Text + "')";

GetMySQLData.GetQueryData(connStr, query);

MessageBox.Show("Роль назначена");

}

}

}

using System;

namespace IventDB

{

public partial class AddItem : Form

{

public AddItem(string[] x, int tiD)

{

InitializeComponent();

for (int i = 0; i < panel1.Controls.Count; i++)

{

panel1.Controls[i].Hide();

panel2.Controls[i].Hide();

}

string col = "";

int c = 0;

Form main = this.Owner as Form;

for (int i = 0; i < x.Length; i++)

{

panel1.Controls[i].Text = x[i];

panel1.Controls[i].Show();

panel2.Controls[i].Show();

panel2.Controls[i].Text = x[i];

if (i != x.Length - 1)

{

col += "`" + x[i] + "`, ";

}

else

{

col += "`" + x[i] + "`";

}

if (tiD <7)

{

if (tiD == 5)

textBox1.Enabled = true;

else

textBox1.Enabled = false;

}

c++;

}

setTID(tiD, col, c);

}

int tableID, count;

string queryI, columns, values;

Dictionary<int, string> table = new Dictionary<int, string>

{

{0,"ORG"},

{1,"Faculty"},

{2,"GRP"},

{3,"Student"},

{4,"Ivent"},

{5,"Artist"},

};

void setTID(int tID, string col, int c)

{

tableID = tID;

columns = col;

count = c;

}

private void button1_Click(object sender, EventArgs e)

{

Form main = this.Owner as Form;

string tables = table[tableID];

values = getValues();

queryIN.Text = "INSERT INTO `IDB`.`" + tables + "` (" + columns + ") VALUES(" + values + ");";

queryIN.Hide();

Close();

}

string getValues()

{

string val = "";

for (int i = 0; i < count; i++)

{

if (i != count - 1)

{

val += "'" + panel2.Controls[i].Text + "',";

}

else

{

val += "'" + panel2.Controls[i].Text + "'";

}

}

return val;

}

private void AddItem_Load(object sender, EventArgs e)

{

}

}

}

using System;

namespace IventDB

{

public partial class Delitem : Form

{

public Delitem(int tiD,string DID1)

{

InitializeComponent();

setTid(tiD);

delQ.Hide();

DID = DID1;

}

int tID;

string tables = "", DID;

void setTid(int x)

{

tID = x;

}

Dictionary<int, string> table = new Dictionary<int, string>

{

{0,"ORG"},

{1,"Faculty"},

{2,"GRP"},

{3,"Student"},

{4,"Ivent"},

{5,"Artist"}

};

private void button1_Click(object sender, EventArgs e)

{

string[] array = textBox1.Text.Split(',');

string value = "";

tables = table[tID];

for (int i = 0; i < array.Length; i++)

{

if (i != array.Length - 1)

{

value += array[i] + ", ";

}

else

{

value += array[i];

}

}

if (array.Length > 1)

{

delQ.Text = "DELETE FROM `IDB`.`" + tables + "` WHERE `" + tables + "`.`"+DID+"` IN(" + value + ")";

}

else

{

delQ.Text = "DELETE FROM `IDB`.`" + tables + "` WHERE `" + tables + "`.`"+DID+"`=" + value + "";

}

Close();

}

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.

    курсовая работа [186,9 K], добавлен 18.12.2010

  • Разработка концептуальной и логической моделей базы данных "Отдела кадров (института)". Примеры построения запросов для получения данных по различным критериям выборки, описание получения отчетных документов. Формы для ввода и редактирования данных.

    курсовая работа [1,8 M], добавлен 16.12.2015

  • Проектирование концептуальной и логической модели. Установление связи между объектами. Описание входных (таблицы) и выходных (запросы, отчеты) данных. Описание используемых элементов управления и идентификаторов. Разработка интерфейсной части приложения.

    курсовая работа [3,2 M], добавлен 24.10.2014

  • Виды доступа к записям базы данных. Поиск, фильтрация, добавление, удаление и изменение записей. Визуальные компоненты доступа к ним. Изменение данных средствами сервера, параметризованные запросы. Связывание элементов пользовательского интерфейса.

    презентация [7,6 K], добавлен 19.08.2013

  • Операции обработки, преобразования, упорядочения отношений базы данных для оптимизации её ответов на запросы пользователя. Инфологическое моделирование предметной области. Анкеты описания сущностей, атрибутов и связей. SQL-скрипт схемы базы данных.

    курсовая работа [1,4 M], добавлен 03.03.2015

  • Функциональные зависимости и нормализация отношений. Ограничения целостности данных. Описание таблиц на языке SQL. Интерфейс пользователя и надёжность программ обработки данных. Обработка данных с помощью запросов. Работа с данными из внешних источников.

    дипломная работа [1,6 M], добавлен 25.04.2015

  • Схема принятого в компании бизнес-процесса планирования организационно-технических мероприятий. Проектирование пользовательского интерфейса и главного меню, основных форм входной и выходной информации, структуры базы данных информационной системы.

    дипломная работа [2,4 M], добавлен 26.05.2012

  • Разработка базы данных и сайта с портфолио преподавателей политехнического института. Формирование таблиц со сведениями о преподавателях. Создание графического интерфейса пользователя клиентских приложений. Обоснование выбора языка программирования.

    контрольная работа [1,1 M], добавлен 14.05.2013

  • Схема взаимодействия подразделений предприятия. Выбор и обоснование технологии проектирования базы данных. Описание объектов базы данных. Разработка запросов на выборку, изменение, обновление и удаление данных. Интерфейсы взаимодействия с базой данных.

    курсовая работа [1,4 M], добавлен 25.05.2023

  • Разработка базы данных для информационной поддержки деятельности аптеки с целью автоматизированного ведения данных о лекарствах аптеки. Проектирование схемы базы данных с помощью средства разработки структуры базы данных Microsoft SQL Server 2008.

    курсовая работа [3,6 M], добавлен 18.06.2012

  • Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.

    курсовая работа [1,8 M], добавлен 04.02.2013

  • Проектирование системы управления базой данных "Почтовые отделения" для создания единой информационной системы: создание таблиц для хранения данных, ввод данных, разработка элементов базы, предназначенных для просмотра, редактирования и вывода информации.

    курсовая работа [1,4 M], добавлен 31.03.2010

  • Разработка и анализ интерфейса пользователя базы данных. Ознакомление с процессом поэтапного создания проекта и добавления файла локальной базы данных. Исследование и характеристика главных принципов программирования функциональной части интерфейса.

    дипломная работа [3,0 M], добавлен 27.09.2017

  • Проектирование и создание информационной базы данных для управления предприятием "Завод металлоизделий". Данные для базы, предметная область, атрибуты объектов базы данных. Объектные отношения, их ключи, связи объектов и отношений базы данных предприятия.

    реферат [26,9 K], добавлен 04.12.2009

  • Проектирование информационной системы. Построение диаграммы потоков данных. Описание порядка построения DFD-диаграммы. Создание базы данных с помощью SQL сервера. Описание основных бизнес-правил и их физической реализации. Заполнение таблиц данными.

    курсовая работа [1,5 M], добавлен 13.12.2011

  • Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.

    курсовая работа [1,1 M], добавлен 09.12.2014

  • Проектирование информационной системы бронирования билетов кассы аэропорта. Анализ информационных задач и круга пользователей системы. Составление реляционных отношений. Дополнительные ограничения целостности. Физическое проектирование базы данных.

    курсовая работа [949,1 K], добавлен 28.03.2011

  • Проектирование реляционной базы данных с помощью прикладного программного средства MS ACCESS. Описания особенностей использования запросов для извлечения, изменения и удаления информации из базы данных. Характеристика структуры интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.11.2012

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Создание базы данных, выполнение поиска, изменение и удаление записей, обработка, проектирование и обмен данными. Определение формул для вычисляемой части базы данных. Заполнение таблицы с помощью Мастера форм. Формы представления и анализ информации.

    учебное пособие [5,0 M], добавлен 12.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.