Разработка архитектуры кластерной вычислительной системы

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

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

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

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

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

Введение

В первой части проекта осуществляется поисковое проектирование кластерной вычислительной системы (КВС) с использованием решателя открытых задач. Решатель открытых задач (РОЗ) - это мощный инструмент, помогающий проектировщику ставить и решать открытые задачи получения нового знания о закономерностях построения вычислительных систем, в данном случае кластерных. Оболочка решателя настраивается на данную проблемную область. Формируемая база знаний включаем на всех определяемых внутренних параметров и их порядковых значений. В состав базы знаний входит база запрещённых комбинаций, а также, база фактов, содержащая примеры удачных и неудачных проектных решений. Каждому факту соответствует упорядоченный набор порядковых значений внутренних параметров. На основании алгоритма работы решателя открытых задач осуществляется оценка влияния каждого внутреннего параметра на цель проектирования, и выдвигаются гипотезы.

Для оценки этих гипотез во второй части проекта разрабатывается блок качественной оценки (БКО), который опровергает или подтверждает, выдвинутые решателем открытых задач, гипотезы.

Актуальность выбранной задачи.

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

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

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

Имеется возможность дальнейшего увеличения производительности за счет учета топологии КВС и многопроцессорности вычислительных узлов (ВУ) кластера.

Решение открытой задачи поисковым методом.

1. Показатели и критерии оценки

Проблемной областью данного курсового проекта является разработка архитектуры КВС. Необходимо поставить и решить открытую задачу выбора аппаратной конфигурации вычислительного кластера с применением решателя открытых задач (РОЗ).

При анализе задачи будут учитываться следующие показатели:

количество вычислительных узлов в кластере

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

тип процессора, на котором строится система

частота процессора

сеть, на которой построена КВС

емкость жесткого диска

емкость оперативной памяти

операционная система

Также должен быть учтен класс задач, на который будет ориентирована система.

Критериями оценки будут являться: производительность КВС, стоимость КВС.

Стоит отметить, что пользователь должен знать, задачи какого типа (сильносвязные или слабосвязные) будут решаться на проектируемой КВС. Это связано с тем, что в сильносвязных задачах происходит больше передач данных между вычислительными узлами, а также больше объём самих данных. В слабосвязных задачах доля передач между вычислителями меньше. Из этого следует, что архитектура КВС будет изменяться в соответствии с классом задач. Так, для сильносвязных задач необходимы более эффективные и быстродействующие сети, на которых строится КВС. Также, необходимы большие емкости оперативной памяти в каждом узле, нежели в КВС, предназначенных для обработки слабосвязных задач. По той же причине, КВС выполняющие сильносвязные задачи, стоит обеспечивать жесткими дисками с большими ёмкостями. Это удорожает систему, в связи с этим, далее поговорим о таких критериях проектировки, как стоимость и производительность КВС.

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

Если необходима система с высокой производительностью, вопросов о её цене возникать не должно. Нужно быть готовым к тому, что покупка спроектированной системы выльется в немалую сумму. При данном подходе, в результате получится система, в которую будут установлена наиболее производительные процессоры, наибольшие по ёмкости модули оперативной памяти и жесткие диски. Количество вычислительных узлов, которое в итоге в большей степени и повлияет на стоимость системы, не будет ограничиваться и будет установлено столько узлов, сколько необходимо. Разумеется, всё оборудование будет выбрано и с учётом класса решаемых задач.

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

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

В ходе работы были изучены материалы, предоставленные производителями электронного оборудования, такими как, Intel, AMD, IBM и т.д. Были изучены предложения магазинов уже готовых вычислительных узлов [4 - 6]. На основе полученной информации, были определены характеристики оборудования, используемого при построении КВС. Эти характеристики позволили составить список и значения параметров, которые использовались в поисковом проектировании с применением решателя открытых задач.

Создание базы данных и настройка решателя открытых задач.

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

Рис. 1

Параметр

№ Значения

Количество узлов

Количество процессоров в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционная система

1

4

1

Intel Xeon

1.2GHz

Myrinet

20GB

4GB

Unix

2

8

2

Intel Itanium 2

1.3GHz

cLAN

80GB

12GB

Windows NT

3

16

4

Intel Pentium 4

1.4GHz

Gigabit Ethernet

250GB

24GB

4

32

8

AMD Athlon

1.7GHz

Fast Ethernet

512GB

48GB

5

64

AMD Opteron

1.8GHz

Infiniband

768GB

64GB

6

500

2.0GHz

Quadrics

1000GB

96GB

7

2000

2.2GHz

SCI

2000GB

8

4000

2.4GHz

9

2.6GHz

10

2.66GHz

11

2.8GHz

12

3.06GHz

13

3.2GHz

14

3.4GHz

Стоит заметить, что КВС чаще строят на устаревших процессорах, так как упор в системе идет не на производительность отдельного процессора, а на параллельность вычислений. Также, такой подход позволяет снизить энергопотребление системы, что в наше время наиболее актуально. Надежность «обкатанных» устаревших процессоров повышает надежность всей системы и позволяет избежать неожиданных неисправностей. Разумеется, стоимость более старых процессоров ниже, что является ещё одним плюсом в их пользу.

Существуют комбинации параметров, которых не существуют в реальности. В данном случае это касается параметров «Тип процессора» и «Частота процессора». Эти комбинации называются запрещенными и вносятся в решатель в окне «редактор запрещенных комбинаций», представленном на рисунке 2. Таблица запрещенных комбинаций представлена в таблице 2.

Рис. 2

Параметр

№ Запр. комб.

Тип процессора

Частота процессора

1

Intel Itanium 2

1.7GHz

2

Intel Itanium 2

1.8GHz

3

Intel Itanium 2

2.0GHz

4

Intel Itanium 2

2.2GHz

5

Intel Itanium 2

2.4GHz

6

Intel Itanium 2

2.6GHz

7

Intel Itanium 2

2.66GHz

8

Intel Itanium 2

2.8GHz

9

Intel Itanium 2

3.06GHz

10

Intel Itanium 2

3.2GHz

11

Intel Itanium 2

3.4GHz

12

AMD Opteron

1.2GHz

13

AMD Opteron

1.7GHz

14

AMD Opteron

2.6GHz

15

AMD Opteron

2.66GHz

16

AMD Opteron

2.8GHz

17

AMD Opteron

3.06GHz

18

AMD Opteron

3.2GHz

19

AMD Opteron

3.4GHz

20

AMD Athlon

3.06GHz

21

AMD Athlon

3.2GHz

22

AMD Athlon

3.4GHz

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

Окна задания удачных и неудачных комбинаций решателя открытых задач приведены на рисунках 3 и 4, соответственно.

Удачные факты составляется на основе реально существующих систем [1 - 6]. Они приведены в таблице 3.

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

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

Рис. 3

Параметр

Факты

Количество узлов

Количество процессоров в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционная система

1 -Удачный

4000

8

Intel Xeon

3.4GHz

Myrinet

2000GB

48GB

Unix

2 - Удачный

2000

4

Intel Pentium 4

2.0GHz

Gigabit Ethernet

250GB

24GB

Unix

3 - Удачный

500

2

Intel Pentium 4

1.4GHz

Gigabit Ethernet

250GB

12GB

Windows NT

4 - Удачный

500

2

Intel Pentium 4

2.8GHz

Gigabit Ethernet

1000GB

64GB

Unix

5 - Удачный

2000

2

Intel Pentium 4

1.3GHz

Myrinet

250GB

12GB

Unix

6 - Удачный

500

4

Intel Xeon

1.8GHz

Myrinet

768GB

24GB

Unix

7 - Удачный

4000

2

Intel Xeon

2.8GHz

Gigabit Ethernet

512GB

64GB

Unix

8 - Удачный

2000

8

Intel Xeon

3.4GHz

Myrinet

1000GB

96GB

Unix

9 - Удачный

2000

4

Intel Xeon

3.4GHz

Myrinet

2000GB

64GB

Unix

10 - Удачный

500

4

Intel Pentium 4

2.4GHz

Myrinet

512GB

48GB

Unix

Рис. 4

Параметр

Факты

Количество узлов

Количество процессоров в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционная система

1 - Неудачный

4

1

AMD Athlon

1.2GHz

Myrinet

2000GB

96GB

Unix

2 - Неудачный

2000

1

AMD Opteron

1.2GHz

Quadrics

2000GB

96GB

Unix

3 - Неудачный

4000

2

Intel Itanium 2

1.2GHz

Fast Ethernet

1000GB

12GB

Windows NT

Построение функции выбора.

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

По окончанию построения функции выбора выдаётся информационное окно, сообщающее о количестве локальных максимумов, минимумов и нелинейных компонент (рисунок 5).

Рис. 5

Функция выбора принимает следующий вид (рисунок 6):

Рис. 6

На ней красным цветом обозначаются локальные максимумы, черным - локальные минимумы. Синим цветом обозначаются неудачные факты, зеленым - удачные (нет на картинке). Под фактом понимается сложившийся набор значений параметров.

Кликнув на один из фактов, можно увидеть набор значений параметров. На рисунке 7 представлены значения параметров для локального максимума. На рисунке 8 - двух из четырёх локальных минимумов.

Рис. 7

Рис. 8

Как видим из рисунков 7 и 8, сложившиеся локальные максимумы и минимумы соответствуют соображениям, исходя их которых, мы создавали базы удачных и неудачных фактов.

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

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

При построении функции выбора, все значения параметров КВС получают свой вес. Чем больше вес каждого из параметров факта, тем вероятнее этот факт станет положительно оцененным. Таблица весов значений параметров приведена в таблице 5.

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

Рис. 9

Параметр

№ Значения

Количество узлов

Количество процессоров в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционная система

1

-20

-20

15

-30

8

0

0

7

2

0

2

-10

-4

0

0

-4

-7

3

0

7

6

3

12

9

-20

4

0

6

-10

0

-10

3

6

5

0

-10

1

0

3

-8

6

12

3

-10

-4

-17

7

9

0

0

-14

8

-4

-16

9

0

10

0

11

6

12

0

13

0

14

9

2. Блок качественной оценки

2.1 Интерфейс блока качественной оценки

Блок качественной оценки гипотез (БКО) - это законченный программный продукт в виде динамически подключаемой библиотеки. В блоке качественной оценки был реализован интерфейс с решателем открытых задач. Это позволяет избавить пользователя от рутинной работы занесения гипотез в базу удачных и неудачных фактов.

Рис. 10

Подключение БКО осуществляется в меню «Настройка» -> «Параметры работы» -> вкладка «Блок качественной оценки». Если БКО успешно подключен, после генерации гипотез и нажатия на кнопку «OK» в окне, которое представлено на рисунке 9, на экране появляется окно программы блока качественной оценки. Оно представлено на рисунке 10.

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

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

Ниже отображается, сколько гипотез оценено положительно, сколько отрицательно, сколько оценок подтвердились, т.е. совпали с предположением решателя открытых задач (строка «Подтверждений»), а также, сколько не подтвердились (строка «Противоречий»).

В области «Класс задач» эксперт должен указать, для какого класса задач будет предназначаться КВС.

В области «Критерий выбора» эксперт выбирает критерий, по которому будет оцениваться система.

После нажатия на кнопку «Оценить», гипотезы проходят оценку блоком качественной оценки и строки тех из них, которые были оценены положительно, окрашиваются в зелёный цвет. Те, которые оценены отрицательно, окрашиваются в синий цвет. Это представлено на рисунке 11.

Рис. 11

После того, как гипотезы оценены, нажимаем кнопку «OK» и они направляются в решатель открытых задач, где они добавляются в удачные либо неудачные факты, в зависимости от полученной в БКО оценки. Решатель открытых задач выдаёт окно, показанное на рисунке 12.

Рис. 12

2.2 Логика работы блока качественной оценки

БКО при оценке гипотез учитывает, какой класс задач и критерии выбора КВС были выбраны экспертом в окне на рисунке 10. Исходя из выбора эксперта, БКО руководствуется соображениями, изложенными в пункте 2.1. Он оценивает каждую из гипотез, переходя по нужной ветви в коде оценивающей программы. Листинг программы представлен в «приложении Б».

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

3. Обучение решателя открытых задач.

3.1 Эксперимент №1

Проведем обучение решателя открытых задач. Для этого подключаем к нему блок качественной оценки. Будем производить проектирование КВС для класса сильносвязных задач по критерию производительности. Оценивать будем все гипотезы. Это позволит не «запутать» решатель открытых задач.

За время решения задачи было произведено 43 итерации. В ходе обучения количество нелинейностей росло и к 24 итерации достигло значения 358.Затем оно стало снижаться и к 41 итерации достигло значения 167.

Число гипотез колебалось, на первых итерациях их количество было около20, а на 17 итерации достигло значения 500. К 28 итерации оно снизилось до 92. Далее до 39 итерации количество гипотез колебалось в промежутке между 120 и 230. На 40 и 41 их стало 62 и далее в течение последних 4х итераций снова вернулось в диапазон значений 120 - 230.

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

На рисунке 13 и 14 показаны два случайных локальных максимума, полученных на финальной итерации. Веса каждого из значений параметров, сложившиеся к 43 итерации представлены в таблице 6.

Рис. 13

открытая задача база данных

Рис. 14

Параметр

№ Значения

Количество узлов

Количество процессоров в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционная система

1

-670599

-737805

1274491

-317037

750907

-511350

-619464

-70916

2

-467520

269656

-970104

-462362

-577095

-565407

-904270

-133921

3

-506967

342309

840803

-468206

845965

863115

206977

4

-470442

-787074

-845919

-340413

-616542

-910114

202880

5

-436839

-794784

-455057

780850

-735569

-404170

6

807660

183482

-455832

988542

254252

7

833869

414865

-729039

833172

8

910838

157273

9

213425

10

254589

11

205052

12

174041

13

198344

14

200673

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

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

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

3.2 Эксперимент №2

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

Была произведена настройка решателя открытых задачна необходимый класс задач и критерий выбора. После чего, была произведена21 итерация. В ходе обучения количество нелинейностей росло и к 18 итерации достигло значения 180 и следующие 3 итерации оставалось примерно на таком же уровне.

На первой итерации количество гипотез равнялось 152. После чего, к 13 итерации достигло значения 272. Потом количество гипотез стало снижаться и к 18 итерации установилось на уровне 122.

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

На рисунке 15 показан локальный максимум, а на рисунке 16 одна из комбинаций, оцененных решателем, как положительная. Они получены на финальной 21-й итерации. Веса каждого из значений параметров, сложившиеся к 21-й итерации представлены в таблице.

Рис. 15

Рис. 16

Параметр

№ Значения

Количество узлов

Количество процессоров

в узле

Тип процессора

Частота процессора

Сеть

Емкость жесткого диска

Емкость оперативной памяти

Операционнаясистема

1

-21756

2578

7799

-13653

-3980

-32745

-34632

-56474

2

-13653

15591

-29304

-91786

23124

20342

-2176

-165389

3

16901

-13859

36353

-17093

-8094

-28857

-47856

4

17001

-4310

15233

-14985

-6763

-80734

-23751

5

-13653

-30081

-14651

-7982

77188

-17756

6

23466

-12542

-25197

-27304

-29081

7

-14870

-12987

-16312

-29080

8

-18424

-27220

9

-13875

10

-13542

11

120938

12

5122

13

28222

14

-17979

Обратим внимание на рисунки 15 и 16. Конфигурации обеих системи соответствуют соображениям, изложенным в пункте 2.1.

Первая система (рис. 15) имеет небольшое количество узлов, по одному процессору средней производительности в каждом узле, модули оперативной памяти и жесткие диски небольших емкостей, потому как система проектировалась по критерию стоимости КВС.

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

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

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

Заключение

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

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

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

Литература

1. «AMD» - продукты и технологии

2. http://www.amd.com/RU/PRODUCTS/Pages/Products.aspx

3. «Intel»- серверная продукция

4. http://www.intel.ru/content/www/ru/ru/servers/server-products.html

5. «IBM» - серверные продукты

6. http://www-03.ibm.com/systems/ru/

7. Магазин комплектующих «Intel»

8. http://ark.intel.com/products/series/53495

9. «Server-Unit» - серверное оборудование любого уровня (магазин)

10. http://www.server-unit.ru/

11. «Team-computers» - производитель компьютерной техники

12. http://www.team.ru/server/serv_main_business.php

13. Методическое пособие «Применение решателя открытых задач»

14. ДзегеленокИ.И., Кондратьев М.А.- Аляева Ю.В.- М.: Изд-во МЭИ, 2012. - 49 c.

Приложение

Листинг программы блока качественной оценки

library BKO;

{ Important note about DLL memory management: ShareMem must be the

first unit in your library's USES clause AND your project's (select

Project-View Source) USES clause if your DLL exports any procedures or

functions that pass strings as parameters or function results. This

applies to all strings passed to and from your DLL--even those that

are nested in records and classes. ShareMem is the interface unit to

the BORLNDMM.DLL shared memory manager, which must be deployed along

with your DLL. To avoid using BORLNDMM.DLL, pass string information

usingPChar or ShortString parameters. }

uses

SysUtils,

Classes,

BKOExportUnit in 'BKOExportUnit.pas',

BKOMainForm in 'BKOMainForm.pas' {fmBKOMain},

BKOOptionsForm in 'BKOOptionsForm.pas' {fmBKOOptions},

slClasses in 'units\slClasses.pas',

slConst in 'units\slConst.pas',

slFunction in 'units\slFunction.pas',

slLibs in 'units\slLibs.pas',

slNetTypes in 'units\slNetTypes.pas',

slTypes in 'units\slTypes.pas';

{$R *.res}

exports

GetRateModuleFunc name 'GetRateModuleFunc', //экспортируемая оценочная функция

GetRateModuleForm name 'GetRateModuleForm'; //Экспортируемая функция настройки системы

begin

end.

unitBKOMainForm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, slConst, slClasses, slLibs, StdCtrls, ComCtrls;

type

TfmBKOMain = class(TForm)

lvSolverHipothesis: TListView;

pnLeft: TPanel;

btnAppreciate: TButton;

rgAppreciate: TRadioGroup;

pnBottom: TPanel;

ButtonPanel: TPanel;

btnOK: TButton;

btnCancel: TButton;

Good: TLabel;

Bad: TLabel;

GoodCount: TLabel;

BadCount: TLabel;

ApCount: TLabel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Criterio: TRadioGroup;

coherence: TRadioGroup;

procedurergAppreciateClick(Sender: TObject);

procedurelvSolverHipothesisClick(Sender: TObject);

procedurebtnAppreciateClick(Sender: TObject);

procedurelvSolverHipothesisCustomDrawItem(Sender: TCustomListView;

Item: TListItem; State: TCustomDrawState; varDefaultDraw: Boolean);

private

FSolverBase: TSolverBase;

FRateFuncInfo: rRateFuncInfo;

procedureMarkHipothesisForAppreciate;

functionAppreciateHipothesis(ASolverBase: TSolverBase): boolean;

functionMarkedHipothesisCount: integer;

public

propertyHipSolverBase: TSolverBase read FSolverBase write FSolverBase;

functionGetRateFuncInfo: rRateFuncInfo;

constructor Create(AOwner: TComponent; varASolverBase: TSolverBase); reintroduce; overload;

end;

implementation

{$R *.dfm}

{ TfmBKOMain }

//Функция оценки гипотез

functionTfmBKOMain.AppreciateHipothesis (ASolverBase: TSolverBase): boolean;

var

i,nS,nUS: integer;

proc, freq, nump, nodes, net, os, ram, rom : string;

NoBadComb: boolean;

begin

withlvSolverHipothesis do begin

Items.BeginUpdate;

//Обнуляем число оцененных гипотез

FRateFuncInfo.iSuccess:=0;

FRateFuncInfo.iUnSuccess:=0;

//и счетчики противоречий и подтверждений

nS:=0; nUS:=0;

try

//Начинаем проверку списка гипотез

for i := 0 to Items.Count - 1 do

if Items[i].Checked then begin

proc := Items[i].SubItems.ValueFromIndex[1]; // Марка процессора

freq := Items[i].SubItems.ValueFromIndex[2]; //Частота процессора

nump := Items[i].SubItems.ValueFromIndex[3]; //Кол-во процессоров

nodes := Items[i].SubItems.ValueFromIndex[4]; //Кол-во узлов

net := Items[i].SubItems.ValueFromIndex[5]; //Сеть

os := Items[i].SubItems.ValueFromIndex[6]; //Операционная система

ram := Items[i].SubItems.ValueFromIndex[7]; //Емкость опер. памяти

rom := Items[i].SubItems.ValueFromIndex[8]; //Емкость жесткого диска

// ShowMessage(proctype);

//Проверяем наличие запрещенных комбинаций

if ( (proc = 'Intel Itanium 2') and (freq = '1.7GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '1.8GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.0GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.2GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.4GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.6GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.66GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '2.8GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '3.06GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '3.2GHz') ) or

( (proc = 'Intel Itanium 2') and (freq = '3.4GHz') ) or

( (proc = 'AMD Opteron') and (freq = '1.2GHz') ) or

( (proc = 'AMD Opteron') and (freq = '1.7GHz') ) or

( (proc = 'AMD Opteron') and (freq = '2.6GHz') ) or

( (proc = 'AMD Opteron') and (freq = '2.66GHz') ) or

( (proc = 'AMD Opteron') and (freq = '2.8GHz') ) or

( (proc = 'AMD Opteron') and (freq = '3.06GHz') ) or

( (proc = 'AMD Opteron') and (freq = '3.2GHz') ) or

( (proc = 'AMD Opteron') and (freq = '3.4GHz') ) or

( (proc = 'AMD Athlon') and (freq = '3.06GHz') ) or

( (proc = 'AMD Athlon') and (freq = '3.2GHz') ) or

( (proc = 'AMD Athlon') and (freq = '3.4GHz') )

thenNoBadComb := false //запрещенных комбинаций нет

elseNoBadComb := true; //запрещенные комбинации есть

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

if (coherence.itemindex = 0) and (criterio.itemindex = 0) then

if ( not(proc = 'Intel Itanium 2') and not(proc = 'AMD Opteron') and not(proc = 'AMD Athlon')) and

((freq = '2.0GHz') or(freq = '2.2GHz') or(freq = '2.4GHz') or (freq = '2.6GHz') or (freq = '2.66GHz') or (freq = '2.8GHz') or (freq = '3.06GHz') or (freq = '3.2GHz') or (freq = '3.4GHz')) and

((nump = '2') or (nump = '4') or (nump = '8')) and

((nodes = '500') or (nodes = '2000') or (nodes = '4000')) and

((net = 'Gigabit Ethernet') or (net = 'Myrinet') or (net = 'Infiniband')) and

((os = 'Unix') or (os = 'Windows NT')) and

((ram = '24GB') or (ram = '48GB') or (ram = '64GB') or (ram = '96GB')) and

((rom = '250GB') or (ram = '512GB') or (ram = '768GB') or (rom = '1000GB') or (rom = '2000GB')) and

(NoBadComb = true)

//if (net = 'Infiniband')

//if (freq = '3.4GHz')

//if (nump = '4')

//if (nodes = '100')

//if (net = 'Infiniband')

//if (os = 'Unix')

//if (ram = '2048MB')

//if (rom = '10GB')

thenbegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nUS:=nUS+1

else

nS:=nS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Уд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем удачным

TSolverObject(Items[i].Data).ObjectType := sotSuccess;

//Увеличиваем счетчик положительных гипотез

Inc(FRateFuncInfo.iSuccess);

end

//Если гипотеза не проходит по параметрам, то считаем её отрицательной

elsebegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nS:=nS+1

else

nUS:=nUS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Неуд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причемне удачным

TSolverObject(Items[i].Data).ObjectType := sotUnSuccess;

//Увеличиваем счетчик отрицательных гипотез

Inc(FRateFuncInfo.iUnSuccess);

end

else if (coherence.itemindex = 0) and (criterio.itemindex = 1) then

if ( not(proc = 'Intel Itanium 2') and not(proc = 'AMD Opteron') and not(proc = 'AMD Athlon')) and

((freq = '2.0GHz') or (freq = '2.2GHz') or (freq = '2.4GHz') or (freq = '2.6GHz') or (freq = '2.66GHz') or (freq = '2.8GHz') or (freq = '3.06GHz')) and

((nump = '1') or (nump = '2') or (nump = '4') or (nump = '8')) and

((nodes = '16') or(nodes = '32') or (nodes = '64') or (nodes = '500')) and

((net = 'Gigabit Ethernet') or (net = 'Myrinet') or (net = 'Infiniband')) and

((os = 'Unix')) and

((ram = '4GB') or (ram = '12GB') or (ram = '24GB') or (ram = '48GB') or (ram = '64GB')) and

((rom = '80GB') or (rom = '250GB') or (ram = '512GB') or (ram = '768GB') or (rom = '1000GB')) and

(NoBadComb = true)

thenbegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nUS:=nUS+1

else

nS:=nS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Уд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем удачным

TSolverObject(Items[i].Data).ObjectType := sotSuccess;

//Увеличиваем счетчик положительных гипотез

Inc(FRateFuncInfo.iSuccess);

end

//Если гипотеза не проходит по параметрам, то считаем её отрицательной

elsebegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nS:=nS+1

else

nUS:=nUS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Неуд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем неудачным

TSolverObject(Items[i].Data).ObjectType := sotUnSuccess;

//Увеличиваем счетчик отрицательных гипотез

Inc(FRateFuncInfo.iUnSuccess);

end

else if (coherence.itemindex = 1) and (criterio.itemindex = 0) then

if ((freq = '1.7GHz') or (freq = '1.8GHz') or (freq = '2.0GHz') or (freq = '2.2GHz') or (freq = '2.4GHz') or (freq = '2.6GHz') or (freq = '2.66GHz') or (freq = '2.8GHz') or (freq = '3.06GHz') or (freq = '3.2GHz') or (freq = '3.4GHz')) and

((nump = '1') or (nump = '2')or (nump = '4') or (nump = '8')) and

((nodes = '64') or (nodes = '500') or (nodes = '2000') or (nodes = '4000')) and

((net = 'Fast Ethernet') or (net = 'SCI') or (net = 'cLAN') or (net = 'Gigabit Ethernet') or (net = 'Myrinet') or (net = 'Infiniband')) and

((os = 'Unix') or (os = 'Windows NT')) and

((ram = '4GB') or (ram = '12GB') or (ram = '24GB') or (ram = '48GB') or (ram = '64GB')) and

((rom = '250GB') or (ram = '512GB') or (ram = '768GB') or (rom = '1000GB') or (rom = '2000GB')) and

(NoBadComb = true)

thenbegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nUS:=nUS+1

else

nS:=nS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Уд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем удачным

TSolverObject(Items[i].Data).ObjectType := sotSuccess;

//Увеличиваем счетчик положительных гипотез

Inc(FRateFuncInfo.iSuccess);

end

//Если гипотеза не проходит по параметрам, то считаем её отрицательной

elsebegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nS:=nS+1

else

nUS:=nUS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Неуд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем неудачным

TSolverObject(Items[i].Data).ObjectType := sotUnSuccess;

//Увеличиваем счетчик отрицательных гипотез

Inc(FRateFuncInfo.iUnSuccess);

end

else if (coherence.itemindex = 1) and (criterio.itemindex = 1) then

if ((freq = '2.8GHz') or (freq = '3.06GHz') or (freq = '3.2GHz')) and

((nump = '1') or (nump = '2')or (nump = '4') or (nump = '8')) and

((nodes = '16') or(nodes = '32') or (nodes = '64') or (nodes = '500')) and

((net = 'Fast Ethernet') or (net = 'SCI') or (net = 'cLAN') or (net = 'Gigabit Ethernet') or (net = 'Myrinet') or (net = 'Infiniband')) and

((os = 'Unix')) and

((ram = '12GB') or (ram = '24GB') or (ram = '48GB') or (ram = '64GB') or (ram = '768GB')) and

((rom = '80GB') or (ram = '250GB') or (rom = '512GB') or (rom = '768GB')) and

(NoBadComb = true)

thenbegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nUS:=nUS+1

else

nS:=nS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт. Оцен.Гип#%d.Уд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем удачным

TSolverObject(Items[i].Data).ObjectType := sotSuccess;

//Увеличиваем счетчик положительных гипотез

Inc(FRateFuncInfo.iSuccess);

end

//Если гипотеза не проходит по параметрам, то считаем её отрицательной

elsebegin

//В зависимости от веса гипотезы и ее оценки БКО обрабатываем счетчики

//противоречий и подтверждений

if (TSolverObject(Items[i].Data).ObjectWeight< 0) then

nS:=nS+1

else

nUS:=nUS+1;

//Меняем наименование

TSolverObject(Items[i].Data).ObjectName := Format('Авт.Оцен.Гип#%d.Неуд', [i]);

//Говорим что эта гипотеза будет фактом

TSolverObject(Items[i].Data).ObjectClass := ocFact;

//Причем неудачным

TSolverObject(Items[i].Data).ObjectType := sotUnSuccess;

//Увеличиваем счетчик отрицательных гипотез

Inc(FRateFuncInfo.iUnSuccess);

end

end;

finally

Items.EndUpdate;

end;

//Вывод счетчиков подтверждений и противоречий

Label1.Caption := IntToStr (nS);

Label3.Enabled := true;

Label2.Caption := IntToStr (nUS);

Label4.Enabled := true;

//Выводим число оцененных гипотез

GoodCount.Caption := IntToStr(FRateFuncInfo.iSuccess);

GoodCount.Visible := true;

BadCount.Caption := IntToStr(FRateFuncInfo.iUnSuccess);

BadCount.Visible := true;

//Показываемнадписи

ApCount.Enabled := true;

Bad.Enabled := true;

Good.Enabled := true;

end;

Result := True;

end;

{*----------------------------------------------------------------------------

Конструктор для создания формы

Параметры конструктора:

AOwner: TComponent; - обьект-владелец для формы

varASolverBase: TSolverBase; - БазаРОЗ

----------------------------------------------------------------------------*}

constructorTfmBKOMain.Create(AOwner: TComponent; varASolverBase: TSolverBase);

var

i, j: integer;

begin

inherited Create(AOwner); //Вызовконструкторавродителе

FSolverBase :=ASolverBase;

withFRateFuncInfo do begin //Начальныеустановки

iSuccess := 0;

iUnsuccess := 0;

end;

//Заполенение листа гипотез

withlvSolverHipothesis, FSolverBase do begin

Items.BeginUpdate;

try

{1. Заполнимсписокпараметров}

for i := 0 to ParamList.Count - 1 do

withColumns.Add do Caption := ParamList.Param[i].ParamName;

{2. заполнимсписокгипотез}

for i := 0 to ObjectList.Count - 1 do

ifObjectList.Objects[i].ObjectClass in [ocHipothesis] then //!!Обязательнотолькогипотезы!!

withItems.Add do begin

Caption :=ObjectList.Objects[i].ObjectName;

{3. для каждой гипотезы заполним список параметров}

SubItems.Add(FloatToStr(ObjectList.Objects[i].ObjectWeight));

for j := 0 to ParamList.Count - 1 do

SubItems.Add(' '+ParamList.Param[j].ValueByID[ObjectList.Objects[i].ParamById(ParamList.Param[j].ParamID).fValueID]);

Data := pointer(ObjectList.Objects[i]);

end;

Selected :=TopItem;

ItemFocused := Selected;

finally

Items.EndUpdate;

end;

end;

rgAppreciateClick(rgAppreciate);

//rgCrit.ItemIndex:=0;

end;

{*----------------------------------------------------------------------------

Функция подсчета гипотез (сделана только для примера) подсчитывает кол-во

помеченных на оценку гипотез в lvSolverHipothesis

----------------------------------------------------------------------------*}

functionTfmBKOMain.MarkedHipothesisCount: integer;

var

i: integer;

begin

Result := 0;

withlvSolverHipothesis do

for i := 0 to Items.Count - 1 do if Items[i].Checked then Inc(Result);

end;

{*----------------------------------------------------------------------------

Помечание обьектов для оценки в lvSolverHipothesis в соответствии с выделенным пунктом меню

----------------------------------------------------------------------------*}

procedureTfmBKOMain.MarkHipothesisForAppreciate;

var

i: integer;

_maxWeight, _minWeight: Integer;

begin

withlvSolverHipothesis do begin

Items.BeginUpdate;

try

casergAppreciate.ItemIndex of

0: for i := 0 to Items.Count - 1 do Items[i].Checked := True; //все

1: begin//макс-мин

_maxWeight := TSolverObject(Items[0].Data).ObjectWeight;

_minWeight := TSolverObject(Items[0].Data).ObjectWeight;

for i := 1 to Items.Count - 1 do begin

ifTSolverObject(Items[i].Data).ObjectWeight> _maxWeight then _maxWeight := TSolverObject(Items[i].Data).ObjectWeight;

ifTSolverObject(Items[i].Data).ObjectWeight< _minWeight then _minWeight := TSolverObject(Items[i].Data).ObjectWeight;

end;

for i := 1 to Items.Count - 1 do

Items[i].Checked := (TSolverObject(Items[i].Data).ObjectWeight = _minWeight) or (TSolverObject(Items[i].Data).ObjectWeight = _maxWeight);

end;

2: for i := 0 to Items.Count - 1 do Items[i].Checked := False; //повыбору

end;

finally

Items.EndUpdate;

end;

end;

end;

{*----------------------------------------------------------------------------

Щелчек мышкой по RadioGroup

----------------------------------------------------------------------------*}

procedureTfmBKOMain.rgAppreciateClick(Sender: TObject);

begin

with (Sender as TRadi...


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

  • Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.

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

  • Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.

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

  • Особенности создания страниц на языке APS.NET, создание и формы обращение к базам данных. Интерфейс автоматического вывода определнного столбца базы данных в элементы управления. Структура базы данных, принцип работы страниц сайта, настройка приложения.

    курсовая работа [387,3 K], добавлен 02.03.2010

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

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

  • Создание структуры базы данных на примере "Школьного журнала" с использованием метода и принципа нормализации. Понятия базы данных, архитектуры БД и проектирования. Описание предметной области; приложения для работы с базой данных TTable и TQuery.

    дипломная работа [996,4 K], добавлен 01.04.2012

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

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

  • Модели баз данных. Локальная, файл-серверная, клиент-серверная и распределенная архитектуры. Технология BDE для доступа к данным. Драйверы баз данных. Создание таблицы, интерфейс программы, дерево объектов, инсталлятор. Системы визуальной разработки.

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

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

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

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

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

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

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

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

    курсовая работа [867,3 K], добавлен 22.02.2016

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

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

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

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

  • Использование языка гипертекстовой разметки HTML. Преимущества интернет-хостинга Yutex.ru. Структура базы данных информационной системы "Электронная газета". Структура сайта, описание разделов и страниц. Интерфейс и сценарии администраторского блока.

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

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

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

  • Обоснование выбора языков разметки гипертекста HTML и стилей CSS. Описание архитектуры клиент-сервер. Разработка базы данных средствами структурированного языка запросов SQL. Пользовательский интерфейс и руководство пользователя для работы с программой.

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

  • Автоматизированные информационные системы: понятие и структура, функции и методика разработки. История развития данных технологий, этапы и принципы их проектирования. Разработка и главные критерии оценки эффективности ER-модели базы данных магазина.

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

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

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

  • Создание реляционной базы данных "Деканат ВУЗа", средствами СУБД MS SQL Server 2000. Разработка клиентского приложения с удобным пользовательским интерфейсом (сопровождающегося меню и справочной системой). Описание связей между таблицами базы данных.

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

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

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

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