Реферат База данных интернет-провайдеров
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Содержание
ВВЕДЕНИЕ 5
2 Описание предметной области 6
3 ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ 8
4 Организация выборки информации из базы данных 14
5 Разработка представлений для отображения результатов выборки 19
6 Проектирование хранимых процедур 21
END 22
22
7 Разработка механизмов управления данными в базе при помощи
триггеров 23
7.1 Триггер для добавления данных 23
1. Триггер для вставки и обновления данных в таблице Providers, не допускающий повторения названий провайдеров 23
7.2 Триггер для удаления данных 25
Триггер для каскадного удаления данных из таблицы Affiliates при удалении записи из таблицы Providers 25
8.1 Выбор пользователей базы данных 28
8.2 Выбор пользователей базы данных 28
9 Организация обмена данными между серверной частью и клиентским приложением 28
10 Организация обмена данными между серверной частью и клиентским приложением 29
Для работы приложений требуется следующее программное обеспечение: операционной системе Windows 2000/XP/Vista c установленным .Net Framwork 2.0. Аппаратные требования данного продукта совпадают с аппаратными требованиями операционной системы, для которых он предназначен. 31
13 Инструкция по эксплуатации базы данных и клиентского приложения 32
ЗАКЛЮЧЕНИЕ 33
ПРИЛОЖЕНИЕ 1 35
Экранные формы приложения 35
ПРИЛОЖЕНИЕ 2 38
Листинг программы 38
ВВЕДЕНИЕ
Приложение «Providers» было разработано по заказу ставропольского филиала организации «StavropololoProvider», которое предоставляет услуги связи. Данное приложение разработано для мониторинга конкуренции на рынке интернет-провайдеров. База данных занимает одно из главенствующих мест в системе учета и контроля данного предприятия и требует особо внимания к своей работоспособности, при ее разработке учитывались мнение, как начальников данной организации, так и простых операторов ПК, непосредственно работающих с базой данных. Данное приложение использует технологии .Net Framework 2.0 в алгоритмически-логическом аспекте приложения. В качестве хранилища данных была использована реляционная база, управляемая языком SQL, из наличия использованных средств следует, что данное приложение будет использовано на операционных системах семейства Windows.
2 Описание предметной области
2.1 Общее описание предметной области
Существует множество предприятий, предоставляющих провайдерские услуги. У каждого из них могут быть филиалы в различных регионах.
Доступ в интернет предоставляется по различным технологиям, которым соответствуют разные тарифы. Тариф имеет следующие характеристики: наименование тарифа, скорость, размер абонентской платы, стоимость 1 минуты пользования интернета, стоимость 1 мегабайта скачанной или отправленной информации.
Кроме доступа в интернет, провайдеры могут предоставля дополнительные услуги, такие как IP-телевидение, электронная почта и т.д.
Для анализа рынка интернет-провайдеров требуется следующая статистическая информация: коэффициент интернетификации региона, количество провайдеров, работающих в регионе, количество филиалов провайдера, доля клиентов данного провайдера среди всех пользователей. В результате проектирования были разработаны методы расчета этих показателей с использованием запросов и хранимых процедур.
2.2 Описание входных документов и сообщений
Входными документами являются таблицы с данными о структуре филиалов интернет-провайдеров, демографическими данными о регионах, данными о тарифах и услугах. Входными сообщениями являются действия пользователя по выбору показателей, которые требуется рассчитать или запросов, которые необходимо исполнить, а так же значения переменных, необходимых для рассчетов.
2.3 Описание выходных документов и сообщений
Выходными документами и сообщения будут являться результаты выполнения запросов, а так же модифицированные поля таблиц.
2.4 Список ограничений
Ограничения, связанные с типом данных полей.
Максимальные длины строковых данных: названия регионов, организаций, тарифных планов и технологий – 50 символов, адреса – 100 символов, номера телефонов – 12 символов.
Ограничение связанное с форматом e-mail.
Названия организаций должны быть уникальными.
3 ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ
В данном курсовом проекте была разработана реляционная база данных для описания предметной области «Рынок интернет провайдеров». Разработанная база данных предназначена для ввода, накопления и долговременного хранения информации о провайдерах, их филиалах в различных регионах, тарифах и технологиях доступа, также в ней формируется статистическая информация о провайдерах.
3.1 Инфологическая модель базы данных
При концептуальном проектировании были выбраны основные сущности:
1) «провайдер»;
2) «филиал»;
3) «услуга»;
4) «тариф»;
5) «технология»;
6) «регион».
3.1.1 Описание сущностей
В результате изучения предметной области и проектирования базы данных, был составлен следующий список атрибутов:
1) сущность «провайдер»
Id
Название
Адрес
Телефон
Веб-сайт
2) сущность «филиал»
Id
Название
Количество пользователей
Адрес
Телефон
Веб-сайт
Провайдер
Регион
Дата открытия
3) сущность «услуга»
Id
Название
4) сущность «тариф»
Id
Название
Скорость
Месячная плата
Цена за мегабайт
Цена за час
Технология
Филиал
5) сущность «технология»
Id
Название
Максимальная скорость
Признак беспроводности
6) сущность «регион»
Id
Название
Население
3.1.2 Описание связей
Классификация связей приведена в таблице 2.1
Таблица 2.1 «Классификация связей»
-
Номер связи
Родительская сущность
Дочерняя сущность
Тип связи
1
Провайдер
Филиал
1:М
2
Филиал
Тариф
1:М
3
Филиал
Услуги Филиалов
1:М
4
Регион
Филиал
1:М
5
Услуги
Услуги Филиалов
1:М
6
Технология
Тариф
1:М
Выбор связи один ко многим обусловлен предметной областью. Так, например один провайдер может иметь несколько филиалов в разных регионах, а один филиал - множество тарифов.
3.1.3 ER-диаграмма
Рисунок 3.1 – ER-диаграмма
3.2 Даталогическая модель
3.2.1 Диаграмма связи по полям
В процессе проектирования базы данных были выявлены следующие функциональные зависимости:
Таблица 2.2– состав таблицы Providers
Имя | Функциональные зависимости |
id | |
Name | |
Address | |
Phone | |
Website | |
|
Таблица 2.3– состав таблицы Affiliates
Имя | Функциональные зависимости |
id | |
Name | |
Users | |
Address | |
Phone | |
Website | |
| |
Provider_id | |
Region_id | |
Opening_date |
Таблица 2.4 – состав таблицы Tariffs
Имя | Функциональные зависимости |
id | |
Name | |
Speed | |
MonthFee | |
TrafficPrice | |
HourPrice | |
Technology_id | |
Affiliate_id |
Таблица 2.5 – состав таблицы Technology
Имя | Функциональные зависимости |
id | |
Name | |
MaxSpeed | |
Wire |
Таблица 2.5 – состав таблицы Services
Имя | Функциональные зависимости |
id | |
Name |
Таблица 2.5 – состав таблицы AffiliateServices
Имя | Функциональные зависимости |
id | |
Affiliate_id | |
Service_id |
Таблица 2.5 – состав таблицы Regions
Имя | Функциональные зависимости |
id | |
Name | |
Population |
4 Организация выборки информации из базы данных
В данной работе используются следующие запросы:
Выборка тарифов по технологиям xDSL
SELECT DISTINCT dbo.Regions.Name, dbo.Providers.Name AS Expr1, dbo.Tariffs.Name AS Expr2
FROM dbo.Regions INNER JOIN
dbo.Affiliates INNER JOIN
dbo.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN
dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN
dbo.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id
WHERE (dbo.Technology.Name LIKE '%DSL')
Выборка тарифов с высокой скоростью (более 512 Мбит/сек)
SELECT DISTINCT
dbo.Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,
dbo.Technology.Name AS Технология, dbo.Tariffs.Speed
FROM dbo.Regions INNER JOIN
dbo.Affiliates INNER JOIN
dbo.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN
dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN
dbo.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id
WHERE (dbo.Tariffs.Speed > 512)
Выбор услуг, предоставляемых провайдером RosTelecom в различных регионах
SELECT DISTINCT dbo.Regions.Name AS Регион, dbo.Services.Name AS Услуга
FROM dbo.Regions INNER JOIN
dbo.Affiliates INNER JOIN
dbo.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id ON dbo.Regions.id = dbo.Affiliates.Region_id INNER JOIN
dbo.AffiliateServices ON dbo.Affiliates.id = dbo.AffiliateServices.Affiliate_id INNER JOIN
dbo.Services ON dbo.AffiliateServices.Service_id = dbo.Services.id
WHERE (dbo.Providers.Name = 'RosTelecom')
Выборка, показывающая какие провайдеры есть в каждом регионе, количество их филиалов и долю пользователей
SELECT DISTINCT TOP (100) PERCENT Regions_1.Name AS Регион, Providers_1.Name AS Провайдер,
(SELECT COUNT(*) AS Expr1
FROM dbo.Affiliates
WHERE (Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) AS [Количество филиалов],
(SELECT STR(SUM(Users)) AS Expr1
FROM dbo.Affiliates AS Affiliates_2
WHERE (Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) + '/' +
(SELECT STR(SUM(Users)) AS Expr1
FROM dbo.Affiliates AS Affiliates_2
WHERE (Region_id = Regions_1.id)) AS [Доля пользователей в регионе]
FROM dbo.Providers AS Providers_1 INNER JOIN
dbo.Affiliates AS Affiliates_1 ON Providers_1.id = Affiliates_1.Provider_id INNER JOIN
dbo.Regions AS Regions_1 ON Regions_1.id = Affiliates_1.Region_id
Выборка, показывающая интернетификацию регионов (отношение пользователей интернета к населению)
SELECT DISTINCT TOP (100) PERCENT Name AS Регион,
(SELECT SUM(Users) AS Expr1
FROM dbo.Affiliates AS Affiliates_2
WHERE (Region_id = Regions_1.id)) AS [Пользователей в регионе], Population * 1000 AS Население,
(SELECT CAST(SUM(Users) AS float) AS Expr1
FROM dbo.Affiliates AS Affiliates_2
WHERE (Region_id = Regions_1.id)) / (Population * 1000) AS [Кол. Интернетов]
FROM dbo.Regions AS Regions_1
ORDER BY [Кол. Интернетов]
Выборка безлимитных тарифов
SELECT DISTINCT
dbo.Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,
dbo.Technology.Name AS Технология
FROM dbo.Regions INNER JOIN
dbo.Affiliates INNER JOIN
dbo.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN
dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN
dbo.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id
WHERE (dbo.Tariffs.TrafficPrice = 0)
Выборка тарифов по беспроводным технологиям
SELECT DISTINCT
dbo.Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,
dbo.Technology.Name AS Технология
FROM dbo.Regions INNER JOIN
dbo.Affiliates INNER JOIN
dbo.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN
dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN
dbo.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id
WHERE (dbo.Technology.Wire = 'False')
5 Разработка представлений для отображения результатов выборки
Для каждого запроса было создано представление. Результаты выборок приведены ниже.
Рисунок 5.1 – представление результатов 1й выборки
Рисунок 5.2 – представление результатов 2й выборки
Рисунок 5.3 – представление результатов 3й выборки
Рисунок 5.4 – представление результатов 4й выборки
Рисунок 5.5 – представление результатов 5й выборки
Рисунок 5.6 – представление результатов 6й выборки
Рисунок 5.7 – представление результатов 7й выборки
6 Проектирование хранимых процедур
В данном проекте были созданы две хранимые процедуры:
1. Для определения интернетификации региона:
CREATE PROCEDURE [dbo].[GET_INTERNETS] @REGION varchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT CAST(SUM(Users) AS float) / (SELECT Population * 1000 FROM REGIONS WHERE Name =@REGION) AS Internets
FROM Affiliates
WHERE Region_id = (SELECT id FROM REGIONS WHERE Name =@REGION)
END
Рисунок 6.1 Результаты работы хранимой процедуры 1
2. Для увеличения (или уменьшения) населения региона:
CREATE PROCEDURE [dbo].[INCREASE_POPULATION]
@REGION varchar(50),
@NUM int
AS
BEGIN
SET NOCOUNT ON;
UPDATE REGIONS
SET POPULATION=POPULATION+@NUM
WHERE RTRIM(LTRIM(NAME))=@REGION
END
Рисунок 6.2 Результаты работы хранимой процедуры 2
7 Разработка механизмов управления данными в базе при помощи
триггеров
7.1 Триггер для добавления данных
1. Триггер для вставки и обновления данных в таблице Providers, не допускающий повторения названий провайдеров
CREATE TRIGGER [dbo].[CINSERTION_CHECK]
ON [dbo].[Providers]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT Count(*) FROM [dbo].[Providers], [inserted]
WHERE [dbo].[Providers].[Name] = [inserted].[Name])> 1
BEGIN
PRINT 'Такой провайдер уже есть' ROLLBACK TRAN
END
IF @@ERROR != 0
BEGIN
PRINT 'Error occurred during related tables' ROLLBACK TRAN
END
RETURN
END
Рисунок 7.1 Результаты работы триггера вставки таблице Providers
2. Тригер, проверяющий правильность формата e-mail
CREATE TRIGGER [dbo].[INSERTION_CHECK]
ON [dbo].[Affiliates]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT Count(*) FROM [inserted] WHERE [Email] LIKE '%@%.%' AND NOT ([Email] IS NULL ) ) = 0
BEGIN
PRINT 'Неверный формат e-mail' ROLLBACK TRAN
END
IF @@ERROR != 0
BEGIN
PRINT 'Error occurred during related tables' ROLLBACK TRAN
END
RETURN
END
Рисунок 7.2 Результаты работы триггера вставки таблице Affiliates
7.2 Триггер для удаления данных
Триггер для каскадного удаления данных из таблицы Affiliates при удалении записи из таблицы Providers
CREATE TRIGGER [dbo].[CASCADE_DEL]
ON [dbo].[Providers]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON;
DELETE Affiliates
FROM Affiliates a, deleted d WHERE a.Provider_id = d.id
IF @@ERROR != 0
BEGIN
PRINT 'Error occurred during related tables' ROLLBACK TRAN
END
RETURN
END
Рисунок 7.3 Результаты работы триггера удаления таблице Providers
7.3 Триггер для обновления данных
Тригер запрещает изменение названия организации
CREATE TRIGGER [dbo].[UPDATE_CHECK]
ON [dbo].[Providers]
FOR UPDATE AS
BEGIN
SET NOCOUNT ON;
IF (NOT ( (SELECT [Name] FROM [inserted]) = (SELECT [Name] FROM [deleted]) ) )
BEGIN
PRINT 'Нельзя поменять название' ROLLBACK TRAN
END
IF @@ERROR != 0
BEGIN
PRINT 'Error occurred during related tables' ROLLBACK TRAN
END
RETURN
END
Рисунок 7.1 Результаты работы триггера обновления в таблице Providers
8 Разработка технологий доступа к базе данных
8.1 Выбор пользователей базы данных
В данном случае было выбрано 2 группы пользователей: администраторы и пользователи.
8.2 Выбор пользователей базы данных
Серверное приложение разрешает пользователям использовать только запрос SELECT и вызывать хранимые процедуры, не вносящие изменений в БД. Администраторы имеют полный доступ ко всем элементам БД.
Клиентское приложение в зависимости от роли пользователя позволяет ему редактировать и добавлять записи, просматривать отчеты, выполнять запросы и использовать хранимые процедуры.
9 Организация обмена данными между серверной частью и клиентским приложением
Клиентское приложение осуществляет через экранные формы взаимодействие пользователя с таблицами данных и управляющим сервером по технологии ADO.NET. Экранные формы приложения показаны в Приложении 1.
10 Организация обмена данными между серверной частью и клиентским приложением
В данном проекте обмен данными с другими БД не использовался, однако в случае необходимости для этого необходимо в начале создать так называемое соединение (Connection), после чего на основании этого соединения создать удаленное представление (Remote View).
11 Экономическое обоснование результатов внедрения программного
продукта
Данный программный продукт был внедрен с целью ускорения выполнения операций по анализу рынка интернет-провайдеров. Продукт является относительно не требовательным к ресурсам как сервера, так и отдельной рабочей станции. Для сервера достаточно будет не менее 512 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4 (стоимость ~10000 руб.), для рабочей станции – не менее 256 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4 (стоимость ~8000 руб.). Так как в организации «StavropololoProvider» анализом рынка занимаются 4 человек, то необходимо приобрести 4 рабочих станции и 1 сервер. В сумме на приобретение компьютеров будет затрачено 42 000 руб. Все компьютеры находятся в одном здании на расстоянии 10, 15х2 и 25 метров от сервера. Метр сетевого кабеля стоит 5 рублей, коммутатор на 5 портов стоит 500 рублей. В сумме на прокладку ЛВС будет затрачено 825 рублей. На приобретение программного обеспечения необходимо затратить 30 000 руб. Всего необходимо 72 825 рублей.
Экономический эффект от внедрения разработки в течение года использования можно определить по формуле:
, где – калькуляция расходов на разработку программного продукта, – нормативный коэффициент капитальных вложений (0.2), – экономия от замены ручной обработки информации на автоматизированную обработку.
Экономию средств от внедрения продукта можно рассчитать по формуле:
. (5)
Здесь – затраты на ручную обработку информации, руб, , – объем информации, обрабатываемой вручную, Мбайт, Ц – стоимость одного часа работы, руб/час, - коэффициент, учитывающий дополнительные затраты времени на логические операции при ручной обработке информации, – норма выработки, Мбайт/час. За – затраты на автоматизированную обработку информации, руб, – время автоматической обработки (час), – стоимость одного часа машинного времени, руб/час; – время работы оператора, час; - стоимость одного часа работы оператора, руб./час.
Эу = Он*Ц*Гд/Нр – ta*Цм*t0*Ц0 = 200*100*1.5*2 – 50*1*5*1*200
= 60000 – 50000 = 10000
Эффективность разработки:
Er = 10000 – 0.2*10000 = 8000
Тогда эффективность разработки может быть определена по формуле:
= 8000*0.4/10000 = 0.32
Использование на предприятии разработанного программного продукта экономически целесообразно, так как значение .
12 Требования к техническому обеспечению
Для работы приложений требуется следующее программное обеспечение: операционной системе Windows 2000/XP/Vista c установленным .Net Framwork 2.0. Аппаратные требования данного продукта совпадают с аппаратными требованиями операционной системы, для которых он предназначен.
Объем ОЗУ для эффективной работы приложения определяется по формуле:
,
где – минимальные требования со стороны операционной системы, – минимальный размер подгружаемых модулей, – дополнительное пространство ОЗУ.
Итак, имеем:
V= 200+150+50=400 мегабайт
Свободное пространство на жестком диске определяется равенством:
,
где – объем инсталляционного пакета программы; – объем файлов базы данных; – объем временных файлов, создающихся программой в ходе запуска.
Итак, имеем
W=2+4+1=9 мегабайт
13 Инструкция по эксплуатации базы данных и клиентского приложения
Вызов данной программы не отличается от запуска любой другой программы из среды операционной систем: пользователю необходимо скопировать файлы приложения на жесткий диск и запустить приложение с расширением .exe в корневом каталоге программы. Данное приложение для работы требует наличие установленного .net framework 2.0 версии и выше. Никаких дополнительных действий от пользователя не требуется.
После запуска приложения пользователю необходимо ввести логин и пароль. Вызов хранимой процедуры INCREASE_POPULATION и изменение данных в таблицах разрешены, только если вход выполнен администратором. Главное меню содержит 4 подменю «Файл», «Таблицы», «Представления», «Процедуры». В первом содержатся команды для выполнения произвольного запроса; во втором – команды, открывающие окна для просмотра и редактирования таблиц БД; в третьем – для просмотра представлений; в четвертом – для вызова хранимых процедур.
ЗАКЛЮЧЕНИЕ
В итоге курсового проектирования была разработанна реляционная база «Рынок интернет провайдеров» и клиентское приложение «Providers» для организации «StavropololoProvider». Были подробно рассмотрены все аспекты функционирования этой системы, логической, программной и физической ее реализации.
Развивать полученную модель можно в сторону достижения большей функциональности и эргономичности, добавления новых возможностей, расширяющих стандартные средства.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А. Д. Хомоненко. – Издание второе, дополненное и переработанное. – СПб.: КОРОНА принт, 2002.- 672 с.
Глушаков С. В., Ломотько Д. В. Базы данных: Учебный курс. – Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. – 504 с.
Мишенин А. И. Теория экономических информационных систем –М.: Финансы и статистика, 1999. – 168 с.
Смирнова Г. Н., Сорокин А. А., Тельнов Ю. Ф. Проектирование экономических информационных систем: Учебник для высших учебных заведений / Под ред. Ю. Ф.
ПРИЛОЖЕНИЕ 1
Экранные формы приложения
Рисунок 1 - окно входа
Рисунок 2- главное окно программы
Рисунок 3 – окна просмотра и редактирования таблиц
Рисунок 4 – окно выполнения произвольного запроса
ПРИЛОЖЕНИЕ 2
Листинг программы
Файл: Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Providers
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string login;
private void увеличитьПопуляциюToolStripMenuItem_Click(object sender, EventArgs e)
{
increase_population win = new increase_population();
win.MdiParent = this;
win.Show();
}
private void регионыToolStripMenuItem_Click(object sender, EventArgs e)
{
Регионы win = new Регионы();
win.MdiParent = this;
win.Show();
}
private void филиалыToolStripMenuItem_Click(object sender, EventArgs e)
{
Филиалы win = new Филиалы();
win.MdiParent = this;
win.Show();
}
private void тарифыToolStripMenuItem_Click(object sender, EventArgs e)
{
Тарифы win = new Тарифы();
win.MdiParent = this;
win.Show();
}
private void провайдерыToolStripMenuItem_Click(object sender, EventArgs e)
{
Провайдеры win = new Провайдеры();
win.MdiParent = this;
win.Show();
}
private void услугиToolStripMenuItem_Click(object sender, EventArgs e)
{
Услуги win = new Услуги();
win.MdiParent = this;
win.Show();
}
private void технологииToolStripMenuItem_Click(object sender, EventArgs e)
{
Технологии win = new Технологии();
win.MdiParent = this;
win.Show();
}
private void выходToolStripMenuItem1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void запросыToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void новыйЗапросToolStripMenuItem_Click(object sender, EventArgs e)
{
Новый_запрос win = new Новый_запрос();
win.MdiParent = this;
win.Show();
}
private void Form1_Load(object sender, EventArgs e)
{
login win = new login();
win.okBtn.Click += delegate
{
if (win.loginTB.Text == "Администратор")
{
if (win.passwordTB.Text == "123")
{
win.Hide();
this.login = "Администратор";
}
else
{
MessageBox.Show("Неверный пароль");
}
}
if (win.loginTB.Text == "Пользователь")
{
if (win.passwordTB.Text == "123")
{
win.Hide();
this.login = "Пользователь";
}
else
{
MessageBox.Show("Неверный пароль");
}
}
};
win.FormClosed += delegate
{
this.Close();
};
win.ShowDialog();
}
}
}
Файл: Новый_запрос.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Providers
{
public partial class Новый_запрос : Form
{
public Новый_запрос()
{
InitializeComponent();
}
private void cancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void OK_Click(object sender, EventArgs e)
{
string query = queryTB.Text;
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.ProvidersConnectionString);
con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, con);
System.Data.SqlClient.SqlDataReader r = cmd.ExecuteReader();
if (r.HasRows)
{
r.Read();
for (int i = 0; i < r.FieldCount; i++)
result.Columns.Add(i.ToString(), i.ToString());
do
{
int ix = result.Rows.Add(1);
for (int i = 0; i < r.FieldCount; i++)
{
result.Rows[ix].Cells[i].Value = r[i].ToString();
}
} while (r.Read());
}
r.Close();
con.Close();
r.Close();
}
}}