Проектирование базы данных студенческих мероприятий института международных отношений
Анализ концептуальной схемы данных информационной системы студенческих мероприятий института международных отношений. Описание основных элементов интерфейса пользователя. Элементы формы, с помощью которой генерируются запросы на удаление элементов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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