Приложение "Providers"

 

Введение


Приложение «Providers» было разработано по заказу ставропольского филиала организации «StavropololoProvider», которое предоставляет услуги связи. Данное приложение разработано для мониторинга конкуренции на рынке интернет-провайдеров. База данных занимает одно из главенствующих мест в системе учета и контроля данного предприятия и требует особо внимания к своей работоспособности, при ее разработке учитывались мнение, как начальников данной организации, так и простых операторов ПК, непосредственно работающих с базой данных. Данное приложение использует технологии .Net Framework 2.0 в алгоритмически-логическом аспекте приложения. В качестве хранилища данных была использована реляционная база, управляемая языком SQL, из наличия использованных средств следует, что данное приложение будет использовано на операционных системах семейства Windows.


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


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


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

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

Кроме доступа в интернет, провайдеры могут предоставля дополнительные услуги, такие как IP-телевидение, электронная почта и т.д.

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


1.2 Описание входных документов и сообщений


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

1.3 Описание выходных документов и сообщений


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


1.4 Список ограничений


.Ограничения, связанные с типом данных полей.

.Максимальные длины строковых данных: названия регионов, организаций, тарифных планов и технологий - 50 символов, адреса - 100 символов, номера телефонов - 12 символов.

.Ограничение связанное с форматом e-mail.

.Названия организаций должны быть уникальными.


2. Проектирование базы данных


В данном курсовом проекте была разработана реляционная база данных для описания предметной области «Рынок интернет провайдеров». Разработанная база данных предназначена для ввода, накопления и долговременного хранения информации о провайдерах, их филиалах в различных регионах, тарифах и технологиях доступа, также в ней формируется статистическая информация о провайдерах.


2.1 Инфологическая модель базы данных


При концептуальном проектировании были выбраны основные сущности:

) «провайдер»;

) «филиал»;

) «услуга»;

) «тариф»;

) «технология»;

) «регион».


2.1.1 Описание сущностей

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

) сущность «провайдер»

Id

Название

Адрес

Телефон

Веб-сайт

E-mail

) сущность «филиал»

Id

Название

Количество пользователей

Адрес

Телефон

Веб-сайт

E-mail

Провайдер

Регион

Дата открытия

) сущность «услуга»

Id

Название

) сущность «тариф»

Id

Название

Скорость

Месячная плата

Цена за мегабайт

Цена за час

Технология

Филиал

) сущность «технология»

Id

Название

Максимальная скорость

Признак беспроводности

) сущность «регион»

Id

Название

Население


2.1.2 Описание связей

Классификация связей приведена в таблице 2.1


Таблица 2.1 «Классификация связей»

Номер связиРодительская сущностьДочерняя сущностьТип связи1ПровайдерФилиал1:М2ФилиалТариф1:М3ФилиалУслуги Филиалов1:М4РегионФилиал1:М5УслугиУслуги Филиалов1:М6ТехнологияТариф1:М

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

2.1.3 ER-диаграмма


Рисунок 3.1 - ER-диаграмма


.2 Даталогическая модель


.2.1 Диаграмма связи по полям

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

3. Организация выборки информации из базы данных


В данной работе используются следующие запросы:

.Выборка тарифов по технологиям xDSL

DISTINCT dbo.Regions.Name, dbo.Providers.Name AS Expr1, dbo.Tariffs.Name AS Expr2dbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id(dbo.Technology.Name LIKE '%DSL')


2.Выборка тарифов с высокой скоростью (более 512 Мбит/сек)


SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee, .Technology.Name AS Технология, dbo.Tariffs.Speeddbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.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 Услугаdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id ON dbo.Regions.id = dbo.Affiliates.Region_id INNER JOIN.AffiliateServices ON dbo.Affiliates.id = dbo.AffiliateServices.Affiliate_id INNER JOIN.Services ON dbo.AffiliateServices.Service_id = dbo.Services.id(dbo.Providers.Name = 'RosTelecom')


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


SELECT DISTINCT TOP (100) PERCENT Regions_1.Name AS Регион, Providers_1.Name AS Провайдер,

(SELECT COUNT(*) AS Expr1dbo.Affiliates(Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) AS [Количество филиалов],

(SELECT STR(SUM(Users)) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) + '/' +

(SELECT STR(SUM(Users)) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) AS [Доля пользователей в регионе]dbo.Providers AS Providers_1 INNER JOIN.Affiliates AS Affiliates_1 ON Providers_1.id = Affiliates_1.Provider_id INNER JOIN.Regions AS Regions_1 ON Regions_1.id = Affiliates_1.Region_id


4.Выборка, показывающая интернетификацию регионов (отношение пользователей интернета к населению)


SELECT DISTINCT TOP (100) PERCENT Name AS Регион,

(SELECT SUM(Users) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) AS [Пользователей в регионе], Population * 1000 AS Население,

(SELECT CAST(SUM(Users) AS float) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) / (Population * 1000) AS [Кол. Интернетов]dbo.Regions AS Regions_1BY [Кол. Интернетов]


5.Выборка безлимитных тарифов


SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,

dbo.Technology.Name AS Технологияdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id

WHERE (dbo.Tariffs.TrafficPrice = 0)


6.Выборка тарифов по беспроводным технологиям


SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,

dbo.Technology.Name AS Технологияdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id(dbo.Technology.Wire = 'False')


4. Разработка представлений для отображения результатов выборки


Для каждого запроса было создано представление. Результаты выборок приведены ниже.


5. Проектирование хранимых процедур


В данном проекте были созданы две хранимые процедуры:

1. Для определения интернетификации региона:

PROCEDURE [dbo].[GET_INTERNETS] @REGION varchar(50)NOCOUNT ON;CAST(SUM(Users) AS float) / (SELECT Population * 1000 FROM REGIONS WHERE Name =@REGION) AS InternetsAffiliatesRegion_id = (SELECT id FROM REGIONS WHERE Name =@REGION)


. Для увеличения (или уменьшения) населения региона:

PROCEDURE [dbo].[INCREASE_POPULATION]

@REGION varchar(50),

@NUM intNOCOUNT ON;REGIONS POPULATION=POPULATION+@NUM RTRIM(LTRIM(NAME))=@REGION

END


6. Разработка механизмов управления данными в базе при помощи триггеров


.1 Триггер для добавления данных


1. Триггер для вставки и обновления данных в таблице Providers, недопускающий повторения названий провайдеров


CREATE TRIGGER [dbo].[CINSERTION_CHECK][dbo].[Providers]INSERT, UPDATENOCOUNT ON;(SELECT Count(*) FROM [dbo].[Providers], [inserted][dbo].[Providers].[Name] = [inserted].[Name])> 1 'Такой провайдер уже есть' ROLLBACK TRAN@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN


2. Тригер, проверяющий правильность формата e-mail


CREATE TRIGGER [dbo].[INSERTION_CHECK][dbo].[Affiliates]INSERT, UPDATENOCOUNT ON;(SELECT Count(*) FROM [inserted] WHERE [Email] LIKE '%@%.%' AND NOT ([Email] IS NULL ) ) = 0 'Неверный формат e-mail' ROLLBACK TRAN@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN

END


6.2 Триггер для удаления данных


Триггер для каскадного удаления данных из таблицы Affiliates при удалении записи из таблицы Providers


CREATE TRIGGER [dbo].[CASCADE_DEL][dbo].[Providers]DELETENOCOUNT ON;AffiliatesAffiliates a, deleted d WHERE a.Provider_id = d.id@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN


6.3 Триггер для обновления данных

провайдер база данные приложение

Тригер запрещает изменение названия организации


CREATE TRIGGER [dbo].[UPDATE_CHECK] [dbo].[Providers]UPDATE AS NOCOUNT ON;(NOT ( (SELECT [Name] FROM [inserted]) = (SELECT [Name] FROM [deleted]) ) )

BEGIN'Нельзя поменять название' ROLLBACK TRAN

END@@ERROR != 0

PRINT 'Error occurred during related tables' ROLLBACK TRAN

RETURN

END

7. Разработка технологий доступа к базе данных


.1 Выбор пользователей базы данных


В данном случае было выбрано 2 группы пользователей: администраторы и пользователи.


7.2 Выбор пользователей базы данных


Серверное приложение разрешает пользователям использовать только запрос SELECT и вызывать хранимые процедуры, не вносящие изменений в БД. Администраторы имеют полный доступ ко всем элементам БД.

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

8. Организация обмена данными между серверной частью и клиентским приложением


Клиентское приложение осуществляет через экранные формы взаимодействие пользователя с таблицами данных и управляющим сервером по технологии ADO.NET. Экранные формы приложения показаны в Приложении 1.


9. Организация обмена данными между серверной частью и клиентским приложением


В данном проекте обмен данными с другими БД не использовался, однако в случае необходимости для этого необходимо в начале создать так называемое соединение (Connection), после чего на основании этого соединения создать удаленное представление (Remote View).

10. Экономическое обоснование результатов внедрения программного продукта


Данный программный продукт был внедрен с целью ускорения выполнения операций по анализу рынка интернет-провайдеров. Продукт является относительно не требовательным к ресурсам как сервера, так и отдельной рабочей станции. Для сервера достаточно будет не менее 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м*t00 = 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


Использование на предприятии разработанного программного продукта экономически целесообразно, так как значение .

Для работы приложений требуется следующее программное обеспечение: операционной системе Windows 2000/XP/Vista c установленным .Net Framwork 2.0. Аппаратные требования данного продукта совпадают с аппаратными требованиями операционной системы, для которых он предназначен.

Объем ОЗУ для эффективной работы приложения определяется по формуле:


,


где - минимальные требования со стороны операционной системы, - минимальный размер подгружаемых модулей, - дополнительное пространство ОЗУ.

Итак, имеем:


V= 200+150+50=400 мегабайт


Свободное пространство на жестком диске определяется равенством:


,


где - объем инсталляционного пакета программы; - объем файлов базы данных; - объем временных файлов, создающихся программой в ходе запуска.

Итак, имеем


W=2+4+1=9 мегабайт


11. Инструкция по эксплуатации базы данных и клиентского приложения


Вызов данной программы не отличается от запуска любой другой программы из среды операционной систем: пользователю необходимо скопировать файлы приложения на жесткий диск и запустить приложение с расширением .exe в корневом каталоге программы. Данное приложение для работы требует наличие установленного .net framework 2.0 версии и выше. Никаких дополнительных действий от пользователя не требуется.

После запуска приложения пользователю необходимо ввести логин и пароль. Вызов хранимой процедуры INCREASE_POPULATION и изменение данных в таблицах разрешены, только если вход выполнен администратором. Главное меню содержит 4 подменю «Файл», «Таблицы», «Представления», «Процедуры». В первом содержатся команды для выполнения произвольного запроса; во втором - команды, открывающие окна для просмотра и редактирования таблиц БД; в третьем - для просмотра представлений; в четвертом - для вызова хранимых процедур.


Заключение


В итоге курсового проектирования была разработанна реляционная база «Рынок интернет провайдеров» и клиентское приложение «Providers» для организации «StavropololoProvider». Были подробно рассмотрены все аспекты функционирования этой системы, логической, программной и физической ее реализации.

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

Список используемой литературы


1.Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А. Д. Хомоненко. - Издание второе, дополненное и переработанное. - СПб.: КОРОНА принт, 2002.- 672 с.

2.Глушаков С. В., Ломотько Д. В. Базы данных: Учебный курс. - Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. - 504 с.

.Мишенин А. И. Теория экономических информационных систем -М.: Финансы и статистика, 1999. - 168 с.

4.Смирнова Г. Н., Сорокин А. А., Тельнов Ю. Ф. Проектирование экономических информационных систем: Учебник для высших учебных заведений / Под ред. Ю. Ф.

Приложение


Листинг программы


Файл: Form1.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Providers

{partial class Form1 : Form

{Form1()

{();

}string login;void увеличитьПопуляциюToolStripMenuItem_Click(object sender, EventArgs e)

{_population win = new increase_population();.MdiParent = this;.Show();

}void регионыToolStripMenuItem_Click(object sender, EventArgs e)

{

Регионы win = new Регионы();.MdiParent = this;.Show();

}void филиалыToolStripMenuItem_Click(object sender, EventArgs e)

{

Филиалы win = new Филиалы();.MdiParent = this;.Show();

}void тарифыToolStripMenuItem_Click(object sender, EventArgs e)

{

Тарифы win = new Тарифы();.MdiParent = this;.Show();

}void провайдерыToolStripMenuItem_Click(object sender, EventArgs e)

{

Провайдеры win = new Провайдеры();.MdiParent = this;.Show();

}void услугиToolStripMenuItem_Click(object sender, EventArgs e)

{

Услуги win = new Услуги();.MdiParent = this;.Show();

}void технологииToolStripMenuItem_Click(object sender, EventArgs e)

{

Технологии win = new Технологии();.MdiParent = this;.Show();

}void выходToolStripMenuItem1_Click(object sender, EventArgs e)

{.Exit();

}void запросыToolStripMenuItem_Click(object sender, EventArgs e)

{

}void новыйЗапросToolStripMenuItem_Click(object sender, EventArgs e)

{

Новый_запрос win = new Новый_запрос();

win.MdiParent = this;.Show();

}void Form1_Load(object sender, EventArgs e)

{win = new login();.okBtn.Click += delegate

{(win.loginTB.Text == "Администратор")

{(win.passwordTB.Text == "123")

{.Hide();.login = "Администратор";

}

{.Show("Неверный пароль");

}

}(win.loginTB.Text == "Пользователь")

{(win.passwordTB.Text == "123")

{.Hide();.login = "Пользователь";

}

{.Show("Неверный пароль");

}

}

};.FormClosed += delegate

{.Close();

};.ShowDialog();

}

}

}

Файл: Новый_запрос.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Providers

{partial class Новый_запрос : Form

{Новый_запрос()

{();

}void cancel_Click(object sender, EventArgs e)

{.DialogResult = DialogResult.Cancel;.Close();

}void OK_Click(object sender, EventArgs e)

{query = queryTB.Text;.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.ProvidersConnectionString);.Open();.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, con);.Data.SqlClient.SqlDataReader r = cmd.ExecuteReader();(r.HasRows)

{.Read();(int i = 0; i < r.FieldCount; i++).Columns.Add(i.ToString(), i.ToString());

{ix = result.Rows.Add(1);(int i = 0; i < r.FieldCount; i++)

{.Rows[ix].Cells[i].Value = r[i].ToString();

}

} while (r.Read());

}.Close();.Close();.Close();

}

}}


Введение Приложение «Providers» было разработано по заказу ставропольского филиала организации «StavropololoProvider», которое предос

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ