Разработка Web-приложения для аналитической обработки информации о международном научно-техническом и образовательном сотрудничестве вузов России

Обзор и анализ программных технологий создания WEB-приложений для аналитической обработки данных. Разработка многомерных моделей данных для построения OLAP-кубов по международному научно-техническому и образовательному сотрудничеству вузов России.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 16.05.2013
Размер файла 3,8 M

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

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

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

Всего 49 листов

Правообладатель: Прошунин Иван Сергеевич

Автор: Прошунин Иван Сергеевич

Прошунин И.С., 2011 г.

Санкт-Петербург

2011

Состав программы

MasterPage.Master - шаблон с набором правил для формирования всех web страниц приложения.

Default.aspx - главная страница приложения, содержащая основное меню

RussianStatDovuzovskogoObucheniya.aspx - страница с конструктором запросов для получения аналитических данных по Российской статистике довузовского обучения.

RussianStatPoslevuzovskogoObucheniya.aspx - страница с конструктором запросов для получения аналитических данных по Российской статистике послевузовского обучения.

RussianStatVuzovskogoObucheniya.aspx - страница с конструктором запросов для получения аналитических данных по Российской статистике вузовского обучения.

StatObchevuzovskaya.aspx - страница с конструктором запросов для получения аналитических данных по общевузовской статистике.

SymmeryByExecutive.aspx - страница с конструктором запросов для получения аналитических данных по исполнителям.

SymmeryByRegion.aspx - страница с конструктором запросов для получения аналитических данных по регионам мира.

ZarubejnayaStatPoslevuzovskogoObucheniya.aspx - страница с конструктором запросов для получения аналитических данных по зарубежной статистике послевузовского обучения.

ZarubejnayaStatVuzovskogoObucheniya.aspx - страница с конструктором запросов для получения аналитических данных по зарубежной статистике вузовского обучения.

Реферат

Автор: Прошунин Иван Сергеевич

Правообладатель: Прошунин Иван Сергеевич

Программа для ЭВМ: “ Web-приложение для аналитической обработки информации о международном научно-техническом и образовательном сотрудничестве вузов России ”.

Аннотация: Программный модуль предназначен для доступа к базе данных с целью оперативной обработки пользовательских запросов на основе технологии OLAP.

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

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

Тип ЭВМ: IВM РС/АТ и совместимые с ней

ОС: WINDOWS 2000/XP

Язык программирования: C#

Объем: 2 530 Кбайт.

Лицензионный договор на использование программы для ЭВМ

Стороны в Договоре:

Гражданин Прошунин Иван Сергеевич, проживающий по адресу: 194355, г. Санкт-Петербург, Суздальский проспект, д. 5, корп. 1, кв. 264, именуемый в дальнейшем “ЛИЦЕНЗИАР”, с одной стороны, и Государственное образовательное учреждение высшего профессионального образования “Санкт-петербургский государственный электротехнический университет “ЛЭТИ” им. В.И. Ульянова (Ленина)”, именуемое в дальнейшем - “ЛИЦЕНЗИАТ”, в лице ректора КУТУЗОВА В.М., действующего на основании Устава, с другой стороны,

принимая во внимание, что:

1) Лицензиар является автором и правообладателем программы для ЭВМ “ WEB-приложение для аналитической обработки информации о международном научно-техническом и образовательном сотрудничестве вузов России ”;

2) Лицензиат желает получить на условиях настоящего Договора лицензию на использование упомянутой программы для ЭВМ с целью возможности аналитической обработки информации о международном научно-техническом и образовательном сотрудничестве вузов России

3) Лицензиар готов предоставить Лицензиату такую лицензию;

договорились о следующем:

1 Термины и их определение

1.1 “ПРОГРАММА ДЛЯ ЭВМ” (ПрЭВМ) - Программное обеспечение для аналитической обработки информации о международном научно-техническом и образовательном сотрудничестве вузов России;

1.2 “ДОКУМЕНТАЦИЯ” - комплект документов, передаваемых Лицензиаром Лицензиату, включающий руководство пользователя по применению и обслуживанию программы для ЭВМ.

1.3 “ПРОИЗВОДСТВЕННАЯ ПЛОЩАДКА” - структурные подразделения Лицензиата.

1.4 “РАБОЧЕЕ МЕСТО” - конкретная ЭВМ, на которой используется программа для ЭВМ.

2 Предмет Договора

2.1 Лицензиар предоставляет Лицензиату на срок действия настоящего Договора и за вознаграждение, уплачиваемое Лицензиатом, неисключительную лицензию на использование ПрЭВМ. При этом Лицензиату предоставляется право на установку ПрЭВМ не более чем на 10 (десяти) Рабочих местах.

2.2 Лицензиар передает Лицензиату Документацию к ПрЭВМ.

2.3 Предоставленное Лицензиату в рамках настоящего Договора право ограничено Производственной площадкой.

2.4 Лицензиар осуществляет авторский контроль за соблюдением объемов использования ПрЭВМ по настоящему Договору, при этом Лицензиат обеспечивает возможность такого контроля.

2.5 Лицензиар сохраняет за собой право самому использовать ПрЭВМ и предоставлять неисключительные лицензии на право ее использования третьим лицам.

3 Обеспечение Договора

3.1 Лицензиар передает Лицензиату ПрЭВМ в объеме и виде, достаточном для ее использования, и Документацию в течение 15 (пятнадцати) дней со дня подписания настоящего Договора. ПрЭВМ передается Лицензиату в виде CD-диска в количестве 1 (одна) штука, содержащих ПрЭВМ. По факту передачи ПрЭВМ и Документации составляется акт сдачи-приемки с перечнем переданных материалов, подписываемый обеими Сторонами.

3.2 Если Лицензиат установит неполноту или неправильность полученных ПрЭВМ или Документации, то Лицензиар в течение 15 (пятнадцати) дней после сообщения ему об этом Лицензиатом обязан передать недостающие материалы или устранить недостатки ранее переданных ПрЭВМ и Документации.

3.3 Для оказания помощи в освоении ПрЭВМ Лицензиар по просьбе Лицензиата оказывает консультации пользователям ПрЭВМ.

3.4 Для целей использования ПрЭВМ в объеме, предусмотренном п. 2.1 настоящего Договора, Лицензиат может изготавливать в необходимом ему количестве копии ПрЭВМ и копии Документации.

4 Усовершенствования

4.1 Лицензиар обязуется незамедлительно информировать Лицензиата о всех произведенных им усовершенствованиях ПрЭВМ и, при желании Лицензиата, передать ему в согласованные сроки новые варианты ПрЭВМ. В отношении новых вариантов ПрЭВМ, переданных Лицензиаром Лицензиату, распространяются все условия настоящего Договора.

4.2 Лицензиат обязуется предоставлять Лицензиару информацию об использовании ПрЭВМ, которая могла бы быть полезной для усовершенствования ПрЭВМ.

5 Платежи

5.1 За предоставление прав, предусмотренных настоящим Договором, Лицензиат выплачивает Лицензиару единовременное вознаграждение в размере 10 000(десять тысяч) рублей.

5.2 Вознаграждение, предусмотренное п.5.1 настоящего Договора, выплачивается Лицензиатом в течение 30 (тридцати) дней, следующих после подписания акта приемки-сдачи.

6 Защита передаваемых прав

6.1 Лицензиат обязуется не вносить самовольно каких-либо изменений в Программу ЭВМ и Документацию и не дополнять их какими-либо комментариями. Подобные изменения или дополнения возможны только с согласия Лицензиара.

6.2 Лицензиат обязуется предпринимать все необходимые меры для предотвращения несанкционированного копирования ПрЭВМ и Документации третьими лицами, а также несанкционированной передачи ПрЭВМ и Документации работниками Лицензиата третьим лицам.

6.3 Если Лицензиату станет известно о противоправном использовании ПрЭВМ третьими лицами, то он незамедлительно сообщит об этом Лицензиару.

7 Ответственность Сторон и разрешение споров

7.1 За невыполнение или не надлежащее выполнение обязательств по настоящему Договору Стороны несут имущественную ответственность в соответствии с действующим законодательством.

7.2 Стороны освобождаются от ответственности за неисполнение или не надлежащее исполнение обязательств, принятых по настоящему Договору, если неисполнение явилось следствием обстоятельств непреодолимой силы (форс-мажор).

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

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

8 Срок действия Договора и условия его расторжения

8.1 Настоящий Договор заключен на срок 2 года и вступает в силу с даты его подписания обеими Сторонами.

8.2 По истечении срока действия настоящего Договора Лицензиат вправе использовать ПрЭВМ, включая усовершенствованные варианты, на Производственной площадке на любом количестве Рабочих мест. При этом обязательства Лицензиара, предусмотренные пп. 6.1 и 6.2 настоящего Договора,

сохраняются бессрочно.

8.3 Действие настоящего Договора по обоюдному согласию Сторон может быть досрочно прекращено, но не ранее чем через три месяца после предложения об этом одной из Сторон. При этом Лицензиат не освобождается от обязательств по платежам, возникшим до расторжения настоящего Договора.

8.4 Настоящий Договор может быть досрочно расторгнут в одностороннем порядке со стороны Лицензиара из-за невыполнения Лицензиатом своих обязательств по пп. 6.1 или 6.2. В этом случае Лицензиат лишается права дальнейшего использования ПрЭВМ в любой форме и обязан вернуть ее Лицензиару.

8.5 Если Лицензиат откажется от дальнейшего использования ПрЭВМ, то он уничтожит все имеющиеся у него копии ПрЭВМ.

9 Заключительные положения

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

9.2 Стороны не имеют права передавать свои права и обязательства по настоящему Договору третьим лицам без письменного согласия на то другой Стороны. Во всем остальном, что не предусмотрено условиями настоящего Договора, будут применяться нормы законодательства Российской Федерации.

10 Адреса Сторон

10.1 ЛИЦЕНЗИАР: Прошунин Иван Сергеевич, адрес: 194355, г. Санкт-Петербург, Суздальский проспект, д. 5, корп. 1, кв. 264

10.2 ЛИЦЕНЗИАТ: СПБГЭТУ, адрес: 197376, Санкт-Петербург, ул. Проф. Попова, д. 5.

Настоящий Договор составлен в двух экземплярах для каждой из Сторон и подписан “5” июня 2011 г. в г. Санкт-Петербурге.

Лицензиар: Прошунин И.С.

Ректор СПБГЭТУ В.М. Кутузов

Заключение

В дипломном были проекте решены следующие задачи:

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

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

3. Разработано программное обеспечение при поддержке технологии ADOMD.NET, позволяющее реализовать подключение и формирование запросов на языке MDX к разработанным OLAP-кубам. На основе платформы .NET, а точнее с использованием технологии ASP.NET был разработан пользовательский интерфейс в виде web-приложения.

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

Тестирование разработанного программного обеспечения осуществлялось в разных интернет обозревателях, среди которых Opera, Mozilla firefox, Google Chrome, Internet Explorer.

Список используемых источников

1. Троэлсен Э. Язык программирование C# 2005 и платформа .NET 2.0. - М.: Вильямс, 2009. - 1168 c.

2. Мак-Дональд М., Шпушта М. Microsoft ASP.NET 2.0 с примерами на C# - М.: Вильямс, 2007. - 1408 c.

3. Малик С. Microsoft ADO.NET 2.0 - М.: Вильямс, 2010. - 560 c.

4. Виейра Р. Программирование баз данных Microsoft SQL Server 2005 - М.:Диалектика, 2007. - 832 c.

5. http://www.zedgraph.org

6. http://www.sourceforge.net/projects/zedgraph/

7. http://www.microsoft.com/downloads/details.aspx?FamilyId=7287252C-402E-4F72-97A5-E0FD290D4B76&displaylang=en

8. http://www.lowagie.com/iText/

9. http://www.itextsharp.sourceforge.net/

10. Lowagie B. iText in Action. Creating and Manipulating PDF - NY.:Manning, 2007. - 686 p.

11. http://msdn2.microsoft.com/en-us/library/aa213568(office.11).aspx

12. http://msdn2.microsoft.com/en-us/library/aa141155(office.10).aspx

13. Гражданский Кодекс Российской Федерации от 30.11.94 г. № 51-ФЗ. Ч. 1 // Российская газета №238-239 от 08.12.94 г.

14. Гражданский Кодекс Российской Федерации от 18.12.2006 г. № 230-ФЗ. Ч. 4 // Российская газета №289 от 22.12.2006 г.

Приложение

Листинг кода приложения на примере реализации обработчика «сводные данные по исполнителям»

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.AnalysisServices.AdomdClient;

using System.Text;

using System.Web.UI.HtmlControls;

using System.Data;

using System.Collections;

using WebOLAP.Utils.Collection;

using Microsoft.Office.Interop.Owc11;

using System.Drawing;

using System.Security.Cryptography;

namespace WebOLAP

{

public partial class SymmeryByExecutive : System.Web.UI.Page

{

#region Members

/// <summary>

/// Список содержащий значения измерений

/// </summary>

List<DimentionItem> dimentionTable = new List<DimentionItem>();

#endregion

protected void Page_Load(object sender, EventArgs e)

{

// загружаем измерения куба

using (AdomdConnection conn = new AdomdConnection(@"Data Source=SOHATIK;Initial Catalog=FoodMart 2000;ConnectTo=8.0"))

{

// открываем соединение

conn.Open();

// выбираем куб

CubeDef mcube = conn.Cubes["SummeryByExecutive"];

// перебираем все измерения куба

foreach (Dimension dim in mcube.Dimensions)

{

if (!this.IsPostBack)

{

if (dim.Name != "Measures")

{

this.ddlAxisX.Items.Add(dim.Name);

this.ddlAxisY.Items.Add(dim.Name);

}

}

// перебираем значения измерений

foreach (Hierarchy h in dim.Hierarchies)

{

// просматриваем уровни иерархии

foreach (Level lv in h.Levels)

{

if (lv.LevelNumber == 0 && dim.Name != "Measures")

{

continue;

}

// заносим в хештайбл, для того чтобы можно было вывести во второй список

dimentionTable.Add(new DimentionItem(dim.Name, lv.Name, lv.UniqueName, false));

int counter = 10;

foreach (Member mem in lv.GetMembers())

{

counter--;

if (counter < 0)

{

break;

}

if (dim.Name == "Measures")

{

if (!this.IsPostBack)

{

this.ddlMeasures.Items.Add(mem.Name);

}

}

dimentionTable.Add(new DimentionItem(dim.Name, mem.Name, mem.UniqueName, true));

}

}

}

}

}

}

// Метод события при выборе измерения по оси Х

protected void ddlAxisX_SelectedIndexChanged(object sender, EventArgs e)

{

this.ddlAxisXHaracteries.Items.Clear();

foreach (DimentionItem dim in this.dimentionTable)

{

if (this.ddlAxisX.Text == dim.DimentionName)

{

this.ddlAxisXHaracteries.Items.Add(dim.MemberName);

}

}

}

/// Метод события при выборе измерения по оси Y

protected void ddlAxisY_SelectedIndexChanged(object sender, EventArgs e)

{

this.ddlAxisYHaracteries.Items.Clear();

foreach (DimentionItem dim in this.dimentionTable)

{

if (this.ddlAxisY.Text == dim.DimentionName)

{

this.ddlAxisYHaracteries.Items.Add(dim.MemberName);

}

}

}

/// Событие при нажатии на кнопку "Сформировать"

protected void btnGo_Click(object sender, EventArgs e)

{

#region Результат в виде таблицы

// ПРИМЕР ЗАПРОСА

//select [Год].[Год].Members on 0,

//[Вид вуза].[Название].Members on 1

//from SymmeryByRegionCube2

//where [Measures].[Финансирование]

// Найдем объекты описывающие измерения

DimentionItem dimAxisX = null;

DimentionItem dimAxisY = null;

DimentionItem dimMeasures = null;

foreach (DimentionItem dim in this.dimentionTable)

{

if (dim.DimentionName == this.ddlAxisX.Text && dim.MemberName == this.ddlAxisXHaracteries.Text)

{

dimAxisX = dim;

}

else if (dim.DimentionName == this.ddlAxisY.Text && dim.MemberName == this.ddlAxisYHaracteries.Text)

{

dimAxisY = dim;

}

else if (dim.DimentionName == "Measures" && dim.MemberName == this.ddlMeasures.Text)

{

dimMeasures = dim;

}

}

// Должны быть инициализирвоаны всегда, если нет- то ошибка

if (dimAxisX == null || dimAxisY == null || dimMeasures == null)

{

//Ошибка

}

// Формируем запрос к данным куба.

// Синтаксис MDX

string queryText = string.Empty;

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

// Если есть, то строим запрос по варианту с о срезом, иначе строим запрос для всех значений

if (dimAxisX.IsLastSheet || dimAxisY.IsLastSheet)

{

queryText = string.Format("SELECT @{0}# ON COLUMNS ,@{1}# ON ROWS FROM SummeryByExecutive WHERE {2}",

dimMeasures.MemberScheme,

!dimAxisX.IsLastSheet ? dimAxisX.MemberScheme + ".Members" : dimAxisX.MemberScheme,

dimAxisY.MemberScheme);

queryText = queryText.Replace("@","{").Replace("#","}");

}

else

{

queryText = string.Format("SELECT {0}.Members ON 0,{1}.Members ON 1 FROM SummeryByExecutive WHERE {2}",

dimAxisX.MemberScheme,

dimAxisY.MemberScheme,

dimMeasures.MemberScheme);

}

DataTable resultsInTable = null;

using (AdomdConnection conn = new AdomdConnection(@"Data Source=SOHATIK;Initial Catalog=FoodMart 2000;ConnectTo=8.0"))

{

// открываем соединение

conn.Open();

AdomdCommand command = new AdomdCommand();

command.CommandType = CommandType.Text;

command.Connection = conn;

command.CommandText = queryText;

resultsInTable = new DataTable();

AdomdDataAdapter dataAdapter = new AdomdDataAdapter(command);

dataAdapter.Fill(resultsInTable);

//преобразование колонок

for(int i=0; i<resultsInTable.Columns.Count;i++)

{

DataColumn dtColumn = resultsInTable.Columns[i];

string colName = string.Empty;

string baseName = "current_";

if(!BaseDataList.IsBindableType(dtColumn.DataType))

{

colName = dtColumn.ColumnName;

dtColumn.ColumnName = baseName + i.ToString();

DataColumn col = new DataColumn(colName, System.Type.GetType("System.String"), "Convert(" + dtColumn.ColumnName + ", 'System.String')");

resultsInTable.Columns.Add(col);

}

}

// если данные идут с нулями, то есть в валюте, то надо убрать последние 4ре нудя

for (int j = 0; j < resultsInTable.Rows.Count; j++)

{

DataRow row = resultsInTable.Rows[j];

string str = null;

for(int k=0; k<resultsInTable.Columns.Count;k++)

{

str = row[k].ToString();

if (string.IsNullOrEmpty(str))

{

continue;

}

if (str.EndsWith("0000"))

{

row[k] = str.Substring(0, str.Length - 4);

}

}

}

this.gvDataView.DataSource = resultsInTable;

this.gvDataView.DataBind();

#endregion

#region Результат в виде гистограммы

ChartSpace barChartspace = new ChartSpaceClass();

ChChart barChart = barChartspace.Charts.Add(0);

barChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;

barChart.HasLegend = true;

barChart.HasTitle = true;

barChart.Title.Caption = "Аналитическая гистограмма";

barChart.Axes[0].HasMajorGridlines = true;

barChart.Axes[0].HasTitle = true;

barChart.Axes[0].Title.Caption = this.ddlAxisY.Text;

barChart.Axes[1].HasTitle = true;

barChart.Axes[1].Title.Caption = this.ddlMeasures.Text;

barChart.PlotArea.Interior.Color = "White";

barChart.PlotArea.Interior.SetPatterned(ChartPatternTypeEnum.chPattern80Percent, "White", "Black");

barChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop;

// формируем значения измерений по оси Х

string stdCategory = string.Empty;

Dictionary<string, string> stdTypesValues = new Dictionary<string, string>(); ;

// сбор категории

for (int i = 0; i < resultsInTable.Rows.Count; i++)

{

DataRow row = resultsInTable.Rows[i];

stdCategory = string.Concat(stdCategory, row[0].ToString(), ",");

}

// сбор типов

for (int i = 1; i < resultsInTable.Columns.Count; i++)

{

DataColumn col = resultsInTable.Columns[i];

if (!col.Caption.StartsWith("current"))

{

//сбор значений

string stdValues = string.Empty;

for (int k = 1; k < resultsInTable.Rows.Count; k++)

{

DataRow row = resultsInTable.Rows[k];

stdValues = string.Concat(stdValues, string.IsNullOrEmpty(row[i].ToString()) ? "0" : row[i].ToString(), ",");

}

if (stdValues.Length > 0)

{

stdValues = stdValues.Substring(0, stdValues.Length - 1); // убираем последную запятую

}

stdTypesValues.Add(col.Caption, stdValues);

}

}

stdCategory = stdCategory.Substring(0, stdCategory.Length - 1); // убираем последную запятую

int idx = 0;

foreach (KeyValuePair<string,string> item in stdTypesValues)

{

barChart.SeriesCollection.Add(idx);

barChart.SeriesCollection[idx].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, stdCategory);

barChart.SeriesCollection[idx].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, item.Value);

try

{

barChart.SeriesCollection[idx].Interior.Color = this.GetRandomColor().ToKnownColor().ToString();

}

catch

{

barChart.SeriesCollection[idx].Interior.Color = "red";

}

barChart.SeriesCollection[idx].Caption = item.Key;

ChDataLabels chLblMaths = barChart.SeriesCollection[idx].DataLabelsCollection.Add();

chLblMaths.HasValue = true;

idx++;

}

String sFileName = DateTime.Now.Ticks.ToString() + ".gif";

String sPath = "C:\\OLAPProject\\WebOLAP\\WebOLAP\\" + sFileName;

String sUrl = "http://localhost:81/olap/" + sFileName;

barChartspace.ExportPicture(sPath, "gif", 900, 600);

//ну и нацеливаем картинку на Url

imChart.ImageUrl = sUrl;

#endregion

}

}

public Color GetRandomColor()

{

KnownColor[] colors = (KnownColor[])Enum.GetValues(typeof(KnownColor));

return Color.FromKnownColor(colors[GetRandomNo(colors.Length)]);

}

private int GetRandomNo(int MaxValue)

{

RandomNumberGenerator rng = RNGCryptoServiceProvider.Create();

byte[] bytes = new byte[4];

rng.GetBytes(bytes);

int rndNum = BitConverter.ToInt32(bytes, 0);

return Math.Abs(rndNum % MaxValue);

}

}

}

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


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

  • Основные сведения об OLAP. Оперативная аналитическая обработка данных. Классификация продуктов OLAP. Требования к средствам оперативной аналитической обработки. Использование многомерных БД в системах оперативной аналитической обработки, их достоинства.

    курсовая работа [67,5 K], добавлен 10.06.2011

  • Основа концепции OLAP (On-Line Analytical Processing) – оперативной аналитической обработки данных, особенности ее использования на клиенте и на сервере. Общие характеристика основных требования к OLAP-системам, а также способов хранения данных в них.

    реферат [24,3 K], добавлен 12.10.2010

  • Анализ существующих технологий создания web-приложений. Разработка сетевой технологии публикации и обработки информации о детях в детском саде №176 "Белочка" с помощью JSP-страниц и сервлетов с использованием JDBC-драйвера для доступа к базе данных.

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

  • Назначение хранилищ данных. Архитектура SAP BW. Построение аналитической отчетности на основе OLAP-кубов в системе SAP BW. Основные различия между хранилищем данных и системой OLTP. Обзор функциональных сфер BEx. Создание запроса в BEx Query Designer.

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

  • OLAP: общая характеристика, предназначение, цели, задачи. Классификация OLAP-продуктов. Принципы построения OLAP системы, библиотека компонентов CubeBase. Зависимость производительности клиентских и серверных OLAP-средств от увеличения объема данных.

    курсовая работа [113,6 K], добавлен 25.12.2013

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

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

  • Разработка Web-приложения для ООО "Научно-производственная фирма по применению информационных технологий в электрических сетях". Техническое задание, проектирование процессов, создание базы данных, разработка дизайна, тестирование и отладка сайта.

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

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

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

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

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

  • Вечное хранение данных. Сущность и значение средства OLAP (On-line Analytical Processing). Базы и хранилища данных, их характеристика. Структура, архитектура хранения данных, их поставщики. Несколько советов по повышению производительности OLAP-кубов.

    контрольная работа [579,2 K], добавлен 23.10.2010

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