Экспертная система для выбора необходимых организации облачных ресурсов
Определение понятия облачных ресурсов; их разновидности: хранилища данных, виртуальные машины, хостинг. Разработка экспертной системы с целью сокращения финансовых издержек компании путем выбора подходящего ей облачного ресурса; руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 28.12.2018 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РФ Федеральное государственное бюджетное образовательное учреждение
Высшего образования “Алтайский Государственный Университет”
Международный институт экономики, менеджмента и информационных систем
Кафедра “Прикладной информатики в экономике, государственном и муниципальном управлении”
ПОЯНИТЕЛЬНАЯ ЗАПИСКА К ЭКСПЕРТНОЙ СИСТЕМЕ ДЛЯ ПОМОЩИ В ВЫБОРЕ НЕОБХОДИМЫХ ОРГАНИЗАЦИИ ОБЛАЧНЫХ РЕСУРСОВ
Выполнили студенты 4 курса, группы 235а Храмцова Екатерина Владимировна
Королева Дарья Евгеньевна
Научный руководитель: доцент
Стрелягов Сергей Петрович
Барнаул 2016
СОДЕРЖАНИЕ РАБОТЫ
- 1. Введение
- 2. Постановка задачи
- 2.1 Описание предметной области
- 2.2Назначение системы (цель разработки)
- 2.3 Основные задачи
- 2.4 Бизнес-модель
- 3. Разработка системы
- 3.1 Представление знаний
- 3.2 Основные компоненты экспертной системы
- 3.2.1 Машина вывода (алгоритм принятия решений экспертом, обратная цепочка рассуждений)
- 3.2.2 Интерфейс пользователя
- 3.2.3 Интерфейс эксперта
- 3.3 Вспомогательные средства
- 4. Приложения
- 4.1 Текст программы
- 4.2Тестовый пример
- Список литературы
1. Введение
Современные компании повсеместно используют информационные технологии для хранения и обработки больших объемов данных. Зачастую увеличение масштаба компании или переход на новые технологии приводят к большим затратам, как с финансовой точки зрения, так и с точки зрения времени. Эти проблемы можно решить с помощью облачные технологии, так как на российском рынке существует достаточное количество сервисов, предоставляющих облачные продукты по приемлемой для предприятий цене.
Выделяют несколько преимуществ, связанных с использованием облачных технологий.
· Доступность. Доступ к информации, хранящейся на облаке, может получить каждый, кто имеет компьютер, планшет, любое мобильное устройство, подключенное к сети интернет. Из этого вытекает следующее преимущество.
· Мобильность. У пользователя нет постоянной привязанности к одному рабочему месту. Из любой точки мира менеджеры могут получать отчетность, а руководители -- следить за производством.
· Экономичность. Пользователю не надо покупать дорогостоящие компьютеры с большой вычислительной мощностью и ПО, а также нанимать специалиста по обслуживанию локальных IT-технологий.
· Арендность. Пользователь получает необходимый пакет услуг только в тот момент, когда он ему нужен, и платит, собственно, только за приобретенные ресурсы.
· Гибкость. Все необходимые ресурсы предоставляются провайдером автоматически.
· Высокая технологичность. Значительные вычислительные мощности, предоставляемые в распоряжение пользователя. Их можно использовать для хранения, анализа и обработки данных.
· Надежность. Некоторые эксперты утверждают, что надежность, которую обеспечивают современные облачные вычисления, гораздо выше, чем надежность локальных ресурсов, аргументируя это тем, что мало предприятий могут себе позволить приобрести и содержать полноценный ЦОД.
Примерно половина руководящих сотрудников, отвечающих за принятие бизнес-решений по всему миру, говорят, что облако позволяет им действовать более гибко при ведении бизнеса, так как облачные технологии обеспечивают масштабирование компьютерных ресурсов в сторону увеличения или уменьшения в соответствии с потребностями бизнеса. Предприятия малого и среднего бизнеса, в частности, должны рассматривать облако как возможность сокращения или полной отмены значительных начальных инвестиций с получением возможности пользоваться самыми современными платформами и программным обеспечением. Благодаря распространенности в облаке таких ценовых моделей, как подписка, самое современное программное обеспечение становится доступно всем компаниям. Организации любого размера могут получить доступ к последним инновациям.
В связи с повышающимся интересом к облачным продуктам и отсутствием специального алгоритма их выбора наша компания разработала ПП, позволяющий принять решение при выборе облачного ресурса для конкретной компании.
2. Постановка задачи
2.1 Описание предметной области
Облачные ресурсы -- это относительно новый продукт в сфере интегрирования коммуникаций бизнес-класса. В сущности, это модель предоставления повсеместного и удобного сетевого доступа по требованию клиента к необходимым вычислительным ресурсам, в качестве которых выступают серверы, всевозможные программные приложения, устройства для хранения данных, сети передачи информации (сеть VPN). Доступ предоставляется в минимальный временной промежуток и способствует оптимизации рабочего процесса.
Все ресурсы, предоставленные поставщиком, объединяются в единый пул. Таким способом гораздо легче обслужить большое количество клиентов. Здесь используется принцип множественной аренды. Ресурсы распределяются согласно требованиям клиентов.
При использовании облачных технологий происходит резервирование вычислительных возможностей в автоматическом режиме. Это необходимо для максимально быстрого масштабирования под конкретные задачи заказчика.
Что касается России, то эксперты отмечают, что на данный момент около 47% российских компаний используют те или иные категории онлайн-приложений. Самыми популярными из них являются интерактивная совместная работа, онлайн-бухгалтерия и обмен файлами. Однако объем использования бизнес-приложений российскими компаниями все же меньше, чем в более развитых странах.
Наша компания предоставляет услуги по выбору облачного сервиса следующим типам предприятий: Малые предприятия, Средние предприятия, Крупные предприятия, Вузы.
В настоящее время предприятия чаще всего используют в своей деятельности следующие виды облачных сервисов:
· Хранилища данных
· Виртуальные машины
· Хостинг
Облачное хранилище данных -- модель онлайн-хранилища, в котором данные хранятся на многочисленных распределённых в сети серверах, предоставляемых в пользование клиентам, в основном, третьей стороной. В отличие от модели хранения данных на собственных выделенных серверах, количество или внутренняя структура серверов клиенту не видна. Данные хранятся и обрабатываются в так называемом “облаке”, которое представляет собой, с точки зрения клиента, один большой виртуальный сервер. Физически же такие серверы могут располагаться удалённо друг от друга географически.
Перечень параметров, используемых при выборе хранилища данных:
Виртуальная машина -- программная система в облаке, эмулирующая работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера (включая BIOS, оперативную память, жёсткий диск и другие периферийные устройства).
Перечень параметров, используемых при выборе виртуальной машины:
Облачный хостинг -- это услуга по предоставлению платформы, на которой разворачивается система управления сайтом. Главное отличие от традиционного хостинга - неограниченное количество сайтов, доменов, баз данных и т. п. для пользователя.
Перечень параметров, используемых при выборе хостинга:
2.2 Назначение системы (цель разработки)
Целью создания экспертной системы является сокращение финансовых издержек компании путем выбора подходящего ей облачного ресурса. Это позволит отказаться от приобретения нового оборудования (вследствие чего издержки на техническую поддержку сводятся к нулю) и программных средств, необходимых для решения прикладных задач.
2.3 Основные задачи
Задачи, решаемые ЭС:
· Выбор облачного ресурса
· Сравнение возможных альтернативных решений
· Предоставление актуальной информации о выбранном продукте
2.4 Бизнес-модель
Обращаясь в нашу IT-компанию, клиент, в первую очередь, общается с специалистом, в задачи которого входит определить потребности клиента и доказать ему, что наша фирма в силах удовлетворить их. В ходе переговоров IT-специалист изучает предоставленную им информацию и, совместно с клиентом, формулирует проблему, которую необходимо решить.
На следующем IT-специалист определяет, силами каких специалистов может быть решена проблема клиента и передает им информацию, полученную от клиента, для определения параметров приобретаемого облачного продукта. На данном этапе основной задачей является введение специалистом параметров в Экспертную систему “Cloudy Brain” и последующая выработка предварительных вариантов решений для предложения их клиенту. На третьем этапе IT-специалист обсуждает с клиентом возможные варианты решения для выбора наиболее приемлемого, одновременно комментируя клиенту особенности и преимущества решения проблемы, предложенного экспертной системой.
В случае, если полученная клиентом информация о продукте соответствует его потребностям и предпочтениям, клиент принимает решение о покупке и внедрении облачного сервиса. В противном случае - клиент отказывается от приобретения.
Описанная нами технология работы может быть представлена в терминах IDEF0. IDEF0 является наиболее удобным языком моделирования бизнес-процессов, где система представляется как совокупность взаимодействующих работ или функций. Такая чисто функциональная ориентация является принципиальной -- функции системы анализируются независимо от объектов, которыми они оперируют. Это позволяет более четко смоделировать логику и взаимодействие процессов организации. Процесс моделирования системы в IDEF0 начинается с создания контекстной диаграммы -- диаграммы наиболее абстрактного уровня описания системы в целом, содержащей определение субъекта моделирования, цели и точки зрения на модель. Данная диаграмма представлена на рисунке 1.
Цель моделирования - описание бизнес-процессов IT-компании, выделение тех подпроцессов, которые были усовершенствованы внедрением экспертной системы “Cloudy Brain”.
Входными данными в нашем случае являются:
· Заказы и обращения клиентов
Управляющие воздействия:
· Информация о программных продуктах
· Требования к программному продукту
· Должностные инструкции
Механизмы модели:
· Клиенты
· IT-Специалисты
· ЭС “Cloudy Brain”
Выходные данные:
· Проданный программный продукт
· Сопутствующая документация
Рисунок 1. Модель предметной области в нотациях IDEF0
Описанный на рисунке 1 бизнес-процесс можно разбить на более простые бизнес-процесс, или бизнес-процессы более низкого уровня. Такое разбиение бизнес-процессов называется декомпозицией. Основной бизнес-процесс IT-компании можно разбить на три подпроцесса:
· Консультация со специалистом
· Выбор параметров облачного сервиса
· Предложение клиенту вариантов решения проблемы
Результаты декомпозиции приведены на рисунке 2:
Рисунок 2. Результаты декомпозиции основного бизнес-процесса
Внедрение в деятельность нашей компании экспертной системы позволило оптимизировать бизнес-процессы компании. Как показано на рисунке 2, наша компания модернизировала при помощи системы “Cloudy Brain” два подпроцесса:
· Выбор параметров облачного сервиса
· Предложение клиенту вариантов решения проблемы
Благодаря ЭС “Cloudy Brain” специалисты могут точно и быстро подбирать клиентам облачный сервис, наиболее полно удовлетворяющий их потребности.
3. Разработка системы
Экспертная система - система программных и аппаратных средств, включающая базу знаний, способная на основании методов искусственного интеллекта и предоставляемых пользователем фактов идентифицировать ситуацию, поставить диагноз, сделать прогноз, сгенерировать решение или дать рекомендацию для выбора действия.
ЭС обычно ориентируется на некоторую предметную область и способна получать, накапливать, корректировать знания из этой области, выводить новые знания из уже известных, решать практические задачи на основе этих знаний и объяснять ход решения. Помимо базы знаний, хранящей факты, закономерности и правила, в ЭС входят программы-решатели, реализующие функции планирования, поиска решения задачи, механизма логического вывода из часто неполных и нечетких знаний.
В ходе работ по созданию ЭС сложилась определенная технология их разработки, включающая шесть следующих этапов:
· идентификацию,
· концептуализацию,
· формализацию,
· выполнение,
· тестирование,
· опытную эксплуатацию
На этапе идентификации определяются задачи, которые подлежат решению, выявляются цели разработки, определяются эксперты и типы пользователей.
На этапе концептуализации проводится содержательный анализ проблемной области, выявляются используемые понятия и их взаимосвязи, определяются методы решения задач.
На этапе формализации выбираются ИС и определяются способы представления всех видов знаний, формализуются основные понятия, определяются способы интерпретации знаний, моделируется работа системы, оценивается адекватность целям системы зафиксированных понятий, методов решений, средств представления и манипулирования знаниями.
На этапе выполнения осуществляется наполнение экспертом базы знаний. В связи с тем, что основой ЭС являются знания, данный этап является наиболее важным и наиболее трудоемким этапом разработки ЭС. Процесс приобретения знаний разделяют на извлечение знаний из эксперта, организацию знаний, обеспечивающую эффективную работу системы, и представление знаний в виде, понятном ЭС. Процесс приобретения знаний осуществляется инженером по знаниям на основе анализа деятельности эксперта по решению реальных задач.
На этапе тестирования эксперт (и инженер по знаниям) в интерактивном режиме с использованием диалоговых и объяснительных средств системы проверяет компетентность ЭС. Процесс тестирования продолжается до тех пор, пока эксперт не решит, что система достигла требуемого уровня компетентности.
На этапе опытной эксплуатации проверяется пригодность ЭС для конечных пользователей. По результатам этого этапа может потребоваться существенная модификация ЭС.
Процесс создания ЭС не сводится к строгой последовательности перечисленных выше этапов. В ходе разработки приходится неоднократно возвращаться на более ранние этапы и пересматривать принятые там решения.
3.1 Представление знаний
Теория представления знаний -- это отдельная область исследований, тесно связанная с философией формализма и когнитивной психологией. Предмет исследования в этой области -- методы ассоциативного хранения информации, подобные тем, которые существуют в мозгу человека.
Описание знаний в базе знаний экспертной системы выполняется при помощи различных моделей представления знаний.
Существуют четыре основные модели представления знаний:
- логические модели
- продукционные модели
- сетевые модели
- фреймовые модели
Еще одной моделью представления знаний является модель на основе нечеткой логики и нечетких множеств.
Нечеткие экспертные системы позволяют не только учитывать неопределенность, но и моделировать рассуждения в отличие от классической логики.
Модель экспертной системы на базе нечеткой логики - это набор продукционных правил, написанных на естественном языке качественных понятий специалистами. Работа системы на основе нечеткой логики осуществляется по следующему алгоритму. На первой стадии происходит преобразование нечеткого множества входных данных в нечеткое множество Цель этого этапа - установление соответствия между значениями входной переменной и значениями лингвистической переменной.
Далее следует лингвистическая оценка параметров. После чего происходит обратное преобразование нечеткого множества в четкое множество.
Таким образом, значениями системы являются вероятности отнесения объекта к заданным лингвистическим переменным.
База знаний “Cloudy Brain” построена на основе нечеткой логики.
База знаний находится в облачной инфраструктуре Microsoft Azure.
Подключение к базе знаний происходит из программного кода приложения через SDK Microsoft.Azure.Mobile.Client, путем обращения к соответствующим методам. Сама база знаний является компонентом Мобильного сервиса Microsoft Azure. Мобильный сервис также предоставляет сервер-обработчик запросов из приложения “Cloudy Brain”
База знаний (БЗ; англ. knowledge base) -- база данных, содержащая правила вывода и информацию о человеческом опыте и знаниях в некоторой предметной области. База знаний - это центральная часть экспертной системы.
База знаний “Cloudy Brain” представляет из себя матрицу накопленных знаний в виде упорядоченных элементов (характеристик предлагаемых продуктов).
3.2 Основные компоненты экспертной системы
Основным компонентами экспертной системы являются:
· база знаний
· машина вывода
· система объяснений
· интерфейс пользователя
· интерфейс эксперта
3.2.1 Машина вывода (алгоритм принятия решений экспертом, обратная цепочка рассуждений)
Этот компонент - компьютерная программа, поддерживающая методологию обработки информации из базы знаний, получение и представление заключений и рекомендаций. Машина вывода посредством формирования и организации последовательности шагов, предпринимаемых для решения проблемы, управляет использованием системных знаний.
Механизм вывода содержит принципы и правила работы. Механизм вывода "знает", как использовать базу знаний так, чтобы можно было получать разумно согласующиеся заключения (выводы) из информации, находящейся в ней. Фактически, механизм вывода запускает экспертную систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет, когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем.
3.2.2 Интерфейс пользователя
Для запуска экспертной системы “Cloudy Brain” зайти в меню “Пуск” и нажать на ярлык с программой.
При запуске программы появляется окно приветствия пользователя, содержащее информацию об экспертной системе.
Для начала использования “Cloudy Brain” необходимо выбрать один из двух режимов работы экспертной системы: “Пользователь” или “Эксперт”.
Для входа в программу в режиме “Пользователь” необходимо выбрать в выпадающем списке пункт “Обычный пользователь”, ввести пароль: 12345 и нажать на кнопку “Войти”, при этом открывается следующая форма:
Далее появляется диалоговое окно, где необходимо выбрать тип предприятия, на котором будет внедряться облачный продукт. Предлагаемые системой типы предприятия:
После выбора происходит переход на новую вкладку, где пользователь определяет вид необходимого ему облачного сервиса. Предлагаемые системой виды облачных продуктов:
Далее открывается вкладка для определения желаемых характеристик выбранного продукта. Для каждого продукта необходимо задать набор определенных параметров.
· Для Виртуальной Машины:
· Для Хостинга:
· Для Хранилища Данных:
После выбора характеристик желаемого продукта пользователю нужно перейти на следующую вкладку для того, чтобы увидеть подобранные системой продукты на основе выбранных пользователем характеристик.
Система предлагает “Рекомендуемые” продукты (от 50% и более совпадений) и “Похожие” продукты (от 20 до 50% совпадений).
Далее пользователь может более подробно ознакомиться с каждым из “Рекомендуемых” или “Похожих” продуктов, нажав на соответствующую вкладку с продуктом.
Вузам предоставляется скидка на продукты - 50%, малым и средним предприятиям - 20%.
После того как экспертная система “Cloudy brain” помогла пользователю подобрать желаемый облачный сервис, он может приобрести его в нашей IT-компании.
С любой страницы пользователь может перейти на страницу “Справка”, где можно получить подробную информацию о каждом из предлагаемых продуктов.
Нажав на кнопку “Выйти” пользователь вернётся на ту страницу, с которой он открывал “Справку”.
3.2.3 Интерфейс эксперта
Для запуска экспертной системы “Cloudy Brain” нужно открыть папку с программой и установить приложение. Далее зайти в меню “Пуск” и нажать на ярлык с программой.
При запуске программы появляется окно приветствия пользователя, содержащее информацию об экспертной системе. Для начала использования “Cloudy Brain” необходимо выбрать один из двух режимов работы экспертной системы: “Пользователь” или “Эксперт”.
Для входа в программу в режиме “Эксперт” необходимо выбрать в выпадающем списке пункт “Эксперт”, ввести пароль: 123456 и нажать на кнопку “Войти”, при этом открывается следующая форма:
Далее появляется диалоговое окно, где Эксперт может редактировать каждый из облачных продуктов: виртуальная машина, хостинг или хранилище данных. Так как создаваемая экспертная система является учебной, то был реализован вариант редактирования одного из продуктов, а именно “Виртуальная машина”.
Нажав на кнопку “Редактировать” Эксперт может редактировать список продуктов.
Эксперту доступно две функции: удаление строки с продуктом из текущего списка и добавление нового продукта с измененными характеристиками. Отметив в списке несколько элементов, пользователь имеет возможность удалить несколько строк одновременно.
Внизу страницы редактирования располагается форма для добавления нового продукта. Она содержит 6 полей: “Имя”, “Количество ядер”, “ОЗУ”, “Размер диска”, “Тип хранилища” и “Цена”.
Поля “Имя” и “Цена” задаются экспертом вручную. При наведении курсора мыши на эти поля всплывает подсказка, в которой пользователю объясняются правила ввода данных характеристик. При ошибочном введении значений система уведомляет пользователя о том, что такой продукт не может быть добавлен в список.
Поля “Количество ядер”, “ОЗУ”, “Размер диска”, “Тип хранилища” содержат данные из базы знаний. Их необходимо выбрать из списка.
После добавления или удаления продукта появится окно уведомления.
3.2.4 Система объяснений
Подсистема объяснения объясняет, как система получила решение задачи (или почему она не получила решения) и какие знания она при этом использовала, что облегчает эксперту тестирование системы и повышает доверие пользователя к полученному результату. Возможность объяснять свои действия является одним из самых важных свойств экспертной системы, так как:
· повышается доверие пользователей к полученным результатам;
· облегчается отладка системы;
· создаются условия для пользователей по вскрытию новых закономерностей предметной области.
На первом этапе экспертная система “Cloudy Brain” получает характеристики продукта от пользователя за счет пользовательского интерфейса.
После того как пользователь выбрал соответствующие характеристики продукта, ему необходимо перейти к следующему этапу. Далее система обращается к базе знаний через канал Интернет, который находится в облачной инфраструктуре Azure. На этом этапе система через соответствующие внутренние функции получает матрицу данных и передает ее в управляющий код для выявления совпадений между выбранными пользователем характеристиками и базой знаний, содержащей параметры имеющихся продуктов.
После этапа сравнения данных система выдает пользователю “Рекомендуемые” (от 50% и больше совпадений) и “Похожие” продукты (от 20 до 50% совпадений).
Система вычисляет проценты следующим образом: количество совпадений между матрицей пользователя и матрицей базы знаний методом интерсекции, т.е. отношение совпавших элементов к общему количеству элементов базы знаний, умноженное на 100 для нахождения процентов.
3.3 Вспомогательные средства
· Облачная инфраструктура Microsoft Azure, используемая для размещения базы знаний;
· SDK Microsoft.Azure.Mobile.Client, с помощью которого происходит подключение к базе знаний из программного кода приложения.
4. Приложения
4.1 Текст программы
ExpertPage.xaml.cs
using CloudyBrain.DataModel;
using CloudyBrain.Helpers;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace CloudyBrain
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class ExpertPage : Page
{
int ServiceTypeId = 0;
int OrgTypeId = 0;
double discount = 0;
public ExpertPage()
{
this.InitializeComponent();
Init();
}
void Init()
{
SetNavButtonsEnabled(true, false);
//Добавляем типы предприятий в OrgTypeView
List<OrgTypeItem> orgTypeItems = new List<OrgTypeItem>();
orgTypeItems.Add(new OrgTypeItem { Id = "0", Icon = "ms-appx:///Assets/OrgTypeVuz.png", Title = "ВУЗ" });
orgTypeItems.Add(new OrgTypeItem { Id = "1", Icon = "ms-appx:///Assets/OrgTypeLitEnter.png", Title = "Малое предприятие" });
orgTypeItems.Add(new OrgTypeItem { Id = "2", Icon = "ms-appx:///Assets/OrgTypeMidEnter.png", Title = "Среднее предприятие" });
orgTypeItems.Add(new OrgTypeItem { Id = "3", Icon = "ms-appx:///Assets/OrgTypeBigEnter.png", Title = "Крупное предприятие" });
OrgTypeView.ItemsSource = orgTypeItems;
//Добавляем типы услуг в ServicesTypeView
List<ServiceTypeItem> serviceTypeItems = new List<ServiceTypeItem>();
serviceTypeItems.Add(new ServiceTypeItem { Id = "0", Icon = "ms-appx:///Assets/VmService.png", Title = "Виртуальная машина" });
serviceTypeItems.Add(new ServiceTypeItem { Id = "1", Icon = "ms-appx:///Assets/StorageService.png", Title = "Хранилище данных" });
serviceTypeItems.Add(new ServiceTypeItem { Id = "2", Icon = "ms-appx:///Assets/HostingService.png", Title = "Хостинг" });
ServicesTypeView.ItemsSource = serviceTypeItems;
//Для VM
//Добавляем типы Os в OsTypeBox
List<OsTypeItem> osTypeItems = new List<OsTypeItem>();
osTypeItems.Add(new OsTypeItem { Id = "0", Title = "Windows Server 2012 R2", ServiceName = "Windows Server 2012 R2" });
osTypeItems.Add(new OsTypeItem { Id = "1", Title = "Windows Server 2016", ServiceName = "Windows Server 2016" });
osTypeItems.Add(new OsTypeItem { Id = "2", Title = "Linux Server", ServiceName = "Linux Server" });
OsTypeBox.ItemsSource = osTypeItems;
OsTypeBox.SelectedIndex = 0;
//Добавляем элементы в CpuCoreBox
List<CpuCoreItem> cpuCoreItems = new List<CpuCoreItem>();
cpuCoreItems.Add(new CpuCoreItem { Id = "0", Title = "1 ядро", ServiceName = "1" });
cpuCoreItems.Add(new CpuCoreItem { Id = "1", Title = "2 ядра", ServiceName = "2" });
cpuCoreItems.Add(new CpuCoreItem { Id = "2", Title = "4 ядра", ServiceName = "4" });
cpuCoreItems.Add(new CpuCoreItem { Id = "4", Title = "8 ядер", ServiceName = "8" });
cpuCoreItems.Add(new CpuCoreItem { Id = "5", Title = "16 ядер", ServiceName = "16" });
CpuCoreBox.ItemsSource = cpuCoreItems;
CpuCoreBox.SelectedIndex = 0;
//Добавляем элементы в RamSizeBox
List<RamItem> ramItems = new List<RamItem>();
ramItems.Add(new RamItem { Id = "0", Title = "0.75 Gb", ServiceName = "0.75" });
ramItems.Add(new RamItem { Id = "1", Title = "1.75 Gb", ServiceName = "1.75" });
ramItems.Add(new RamItem { Id = "2", Title = "3.50 Gb", ServiceName = "3.50" });
ramItems.Add(new RamItem { Id = "3", Title = "7 Gb", ServiceName = "7" });
ramItems.Add(new RamItem { Id = "4", Title = "14 Gb", ServiceName = "14" });
ramItems.Add(new RamItem { Id = "5", Title = "16 Gb", ServiceName = "16" });
ramItems.Add(new RamItem { Id = "6", Title = "28 Gb", ServiceName = "28" });
ramItems.Add(new RamItem { Id = "7", Title = "56 Gb", ServiceName = "56" });
RamSizeBox.ItemsSource = ramItems;
RamSizeBox.SelectedIndex = 0;
//Добавляем элементы в StorageVolumeBox
List<StorageVolumeItem> storageVolumeItems = new List<StorageVolumeItem>();
storageVolumeItems.Add(new StorageVolumeItem { Id = "0", Title = "10 Gb", ServiceName = "10" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "1", Title = "20 Gb", ServiceName = "20" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "2", Title = "40 Gb", ServiceName = "40" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "3", Title = "50 Gb", ServiceName = "50" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "4", Title = "60 Gb", ServiceName = "60" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "5", Title = "80 Gb", ServiceName = "80" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "6", Title = "100 Gb", ServiceName = "100" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "7", Title = "120 Gb", ServiceName = "120" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "8", Title = "200 Gb", ServiceName = "200" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "9", Title = "240 Gb", ServiceName = "240" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "10", Title = "400 Gb", ServiceName = "400" });
storageVolumeItems.Add(new StorageVolumeItem { Id = "11", Title = "800 Gb", ServiceName = "800" });
StorageVolumeBox.ItemsSource = storageVolumeItems;
StorageVolumeBox.SelectedIndex = 0;
//Для хранилища
//Добавляем элементы в StorageLocationBox
List<StorageLocationItem> storageLocationItems = new List<StorageLocationItem>();
storageLocationItems.Add(new StorageLocationItem { Id = "0", Title = "Russia", ServiceName = "Russia" });
storageLocationItems.Add(new StorageLocationItem { Id = "1", Title = "United States", ServiceName = "United States" });
storageLocationItems.Add(new StorageLocationItem { Id = "2", Title = "United Kingdom", ServiceName = "United Kingdom" });
StorageLocationBox.ItemsSource = storageLocationItems;
StorageLocationBox.SelectedIndex = 0;
//Добавляем элементы в StorageVolume2Box
List<StorageVolumeItem> storageVolume2Items = new List<StorageVolumeItem>();
storageVolume2Items.Add(new StorageVolumeItem { Id = "0", Title = "20 Gb", ServiceName = "20" });
storageVolume2Items.Add(new StorageVolumeItem { Id = "1", Title = "40 Gb", ServiceName = "40" });
storageVolume2Items.Add(new StorageVolumeItem { Id = "3", Title = "60 Gb", ServiceName = "60" });
storageVolume2Items.Add(new StorageVolumeItem { Id = "4", Title = "120 Gb", ServiceName = "120" });
storageVolume2Items.Add(new StorageVolumeItem { Id = "5", Title = "240 Gb", ServiceName = "240" });
StorageVolume2Box.ItemsSource = storageVolume2Items;
StorageVolume2Box.SelectedIndex = 0;
//Для Hosting
//Добавляем типы Os в OsTypeBox
List<OsTypeItem> osType3Items = new List<OsTypeItem>();
osType3Items.Add(new OsTypeItem { Id = "0", Title = "Windows Server 2012 R2", ServiceName = "Windows Server 2012 R2" });
osType3Items.Add(new OsTypeItem { Id = "1", Title = "Windows Server 2016", ServiceName = "Windows Server 2016" });
osType3Items.Add(new OsTypeItem { Id = "2", Title = "Linux Server", ServiceName = "Linux Server" });
OsType3Box.ItemsSource = osType3Items;
OsType3Box.SelectedIndex = 0;
//Добавляем элементы в CpuCoreBox
List<CpuCoreItem> cpuCore3Items = new List<CpuCoreItem>();
cpuCore3Items.Add(new CpuCoreItem { Id = "0", Title = "1 ядро", ServiceName = "1" });
cpuCore3Items.Add(new CpuCoreItem { Id = "1", Title = "2 ядра", ServiceName = "2" });
cpuCore3Items.Add(new CpuCoreItem { Id = "2", Title = "4 ядра", ServiceName = "4" });
cpuCore3Items.Add(new CpuCoreItem { Id = "4", Title = "8 ядер", ServiceName = "8" });
cpuCore3Items.Add(new CpuCoreItem { Id = "5", Title = "16 ядер", ServiceName = "16" });
CpuCore3Box.ItemsSource = cpuCore3Items;
CpuCore3Box.SelectedIndex = 0;
//Добавляем элементы в RamSizeBox
List<RamItem> ram3Items = new List<RamItem>();
ram3Items.Add(new RamItem { Id = "0", Title = "0.75 Gb", ServiceName = "0.75" });
ram3Items.Add(new RamItem { Id = "1", Title = "1.75 Gb", ServiceName = "1.75" });
ram3Items.Add(new RamItem { Id = "2", Title = "3.50 Gb", ServiceName = "3.50" });
ram3Items.Add(new RamItem { Id = "3", Title = "7 Gb", ServiceName = "7" });
ram3Items.Add(new RamItem { Id = "4", Title = "14 Gb", ServiceName = "14" });
ram3Items.Add(new RamItem { Id = "5", Title = "16 Gb", ServiceName = "16" });
ram3Items.Add(new RamItem { Id = "6", Title = "28 Gb", ServiceName = "28" });
ram3Items.Add(new RamItem { Id = "7", Title = "56 Gb", ServiceName = "56" });
RamSize3Box.ItemsSource = ram3Items;
RamSize3Box.SelectedIndex = 0;
//Добавляем элементы в StorageVolumeBox
List<StorageVolumeItem> storageVolume3Items = new List<StorageVolumeItem>();
storageVolume3Items.Add(new StorageVolumeItem { Id = "0", Title = "10 Gb", ServiceName = "10" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "1", Title = "20 Gb", ServiceName = "20" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "2", Title = "40 Gb", ServiceName = "40" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "3", Title = "50 Gb", ServiceName = "50" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "4", Title = "60 Gb", ServiceName = "60" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "5", Title = "80 Gb", ServiceName = "80" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "6", Title = "100 Gb", ServiceName = "100" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "7", Title = "120 Gb", ServiceName = "120" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "8", Title = "200 Gb", ServiceName = "200" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "9", Title = "240 Gb", ServiceName = "240" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "10", Title = "400 Gb", ServiceName = "400" });
storageVolume3Items.Add(new StorageVolumeItem { Id = "11", Title = "800 Gb", ServiceName = "800" });
StorageVolume3Box.ItemsSource = storageVolume3Items;
StorageVolume3Box.SelectedIndex = 0;
//Добавляем элементы в HostingCmsBox
List<HostingCmsItem> hostingCmsItems = new List<HostingCmsItem>();
hostingCmsItems.Add(new HostingCmsItem { Id = "0", Title = "Joomla", ServiceName = "Joomla" });
hostingCmsItems.Add(new HostingCmsItem { Id = "1", Title = "HostCms", ServiceName = "HostCms" });
hostingCmsItems.Add(new HostingCmsItem { Id = "2", Title = "WordPress", ServiceName = "WordPress" });
hostingCmsItems.Add(new HostingCmsItem { Id = "3", Title = "Umi.Cms", ServiceName = "Umi.Cms" });
hostingCmsItems.Add(new HostingCmsItem { Id = "4", Title = "Drupl", ServiceName = "Drupl" });
HostingCms3Box.ItemsSource = hostingCmsItems;
HostingCms3Box.SelectedIndex = 0;
}
void OrgTypeView_ItemClick(object sender, ItemClickEventArgs e)
{
var clickedItem = e.ClickedItem as OrgTypeItem;
OrgTypeId = int.Parse(clickedItem.Id);
discount = 0;
if (OrgTypeId == 0)
discount = 0.50;
if (OrgTypeId == 1 || OrgTypeId == 2)
discount = 0.20;
if (OrgTypeId == 3)
discount = 0;
ExpertPivot.SelectedItem = ServicesTypeItem;
}
void ServicesTypeView_ItemClick(object sender, ItemClickEventArgs e)
{
ServiceTypeVmPanel.Visibility = Visibility.Collapsed;
ServiceTypeStoragePanel.Visibility = Visibility.Collapsed;
ServiceTypeHostingPanel.Visibility = Visibility.Collapsed;
var clickedItem = e.ClickedItem as ServiceTypeItem;
if (clickedItem.Id == "0")
{
ServiceTypeId = 0;
ServiceTypeVmPanel.Visibility = Visibility.Visible;
}
if (clickedItem.Id == "1")
{
ServiceTypeId = 1;
ServiceTypeStoragePanel.Visibility = Visibility.Visible;
}
if (clickedItem.Id == "2")
{
ServiceTypeId = 2;
ServiceTypeHostingPanel.Visibility = Visibility.Visible;
}
ExpertPivot.SelectedItem = SpecSelectionTypeItem;
}
void BackButton_Click(object sender, RoutedEventArgs e)
{
if (ExpertPivot.SelectedIndex != 0)
ExpertPivot.SelectedIndex = ExpertPivot.SelectedIndex - 1;
}
void SetNavButtonsEnabled(bool isBackEnabled, bool isForwardEnabled)
{
if (isBackEnabled)
BackButton.IsEnabled = true;
else
BackButton.IsEnabled = false;
if (isForwardEnabled)
ForwardButton.IsEnabled = true;
else
ForwardButton.IsEnabled = false;
}
void ExpertPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (ExpertPivot.SelectedItem == SpecSelectionTypeItem)
SetNavButtonsEnabled(true, true);
else
SetNavButtonsEnabled(true, false);
if (ExpertPivot.SelectedItem == OrgTypeItem)
SetNavButtonsEnabled(false, false);
}
async void ForwardButton_Click(object sender, RoutedEventArgs e)
{
if (ExpertPivot.SelectedIndex != ExpertPivot.Items.Count - 1)
ExpertPivot.SelectedIndex = ExpertPivot.SelectedIndex + 1;
if (ExpertPivot.SelectedItem == ResultItem)
{
ResultProgress.IsIndeterminate = true;
ResultView1.Items.Clear();
ResultView2.Items.Clear();
ResultView1.Visibility = Visibility.Collapsed;
ResultView2.Visibility = Visibility.Collapsed;
ResultDescriptionBlock.Text = string.Empty;
if (ServiceTypeId == 0)
{
string os = ((OsTypeItem)OsTypeBox.SelectedItem).ServiceName;
string core = ((CpuCoreItem)CpuCoreBox.SelectedItem).ServiceName;
string ram = ((RamItem)RamSizeBox.SelectedItem).ServiceName;
string diskSize = ((StorageVolumeItem)StorageVolumeBox.SelectedItem).ServiceName;
bool isHdd = HddCpuButton.IsChecked == true ? true : false;
if(HddCpuButton.IsChecked == false && SsdCpuButton.IsChecked == false)
{
App.ShowMessage("Пожалуйста, выберите тип хранилища.");
if (ExpertPivot.SelectedIndex != 0)
ExpertPivot.SelectedIndex = ExpertPivot.SelectedIndex - 1;
return;
}
var productSeparatedList = ProductsManager.GetVmProdSeparatedList(core, ram, diskSize, isHdd);
var bdProductSeparatedList = await ProductsManager.GetVmProductsTagsString();
foreach (var item in bdProductSeparatedList)
{
var percent = MlSystem.CompareListsInPercent(item.SeparatedList, productSeparatedList);
Debug.WriteLine(percent.ToString());
if (percent >= 50)
{
var prod = await ProductsManager.GetVmProduct(item.Id);
ResultView1.Items.Add(new ProductItem
{
Id = item.Id,
Name = string.Format("{0} ({1})", prod.Name, os),
Details =
"Количество ядер: " + prod.Core + Environment.NewLine +
"Размер диска: " + prod.DiskSize + " Гб" + Environment.NewLine +
"Тип диска: " + prod.StorageType + Environment.NewLine +
"ОЗУ: " + prod.Ram + " Гб",
Cost = discount == 0 ? (double.Parse(item.Cost)).ToString() + " руб. в час" : ((double.Parse(item.Cost)) - ((double.Parse(item.Cost)) * discount)).ToString() + " руб. в час (спец. цена!)"
});
}
if (percent >= 20 && percent < 50)
{
var prod = await ProductsManager.GetVmProduct(item.Id);
ResultView2.Items.Add(new ProductItem
{
Id = item.Id,
Name = string.Format("{0} ({1})", prod.Name, os),
Details =
"Количество ядер: " + prod.Core + Environment.NewLine +
"Размер диска: " + prod.DiskSize + " Гб" + Environment.NewLine +
"Тип диска: " + prod.StorageType + Environment.NewLine +
"ОЗУ: " + prod.Ram + " Гб",
Cost = discount == 0 ? (double.Parse(item.Cost)).ToString() + " руб. в час" : ((double.Parse(item.Cost)) - ((double.Parse(item.Cost)) * discount)).ToString() + " руб. в час (спец. цена!)"
});
}
}
}
if (ServiceTypeId == 1)
{
string storageLocation = ((StorageLocationItem)StorageLocationBox.SelectedItem).ServiceName;
string storageVolume = ((StorageVolumeItem)StorageVolume2Box.SelectedItem).ServiceName;
var storageProductCost = await ProductsManager.GetStorageProductCost("Basic");
ResultView1.Items.Add(new ProductItem
{
Name = "Basic",
Details =
"Расположение: " + storageLocation + Environment.NewLine +
"Размер диска: " + storageVolume + " Гб",
Cost = discount == 0 ? (double.Parse(storageProductCost) * double.Parse(storageVolume)).ToString() + " руб. в месяц" : ((double.Parse(storageProductCost) * double.Parse(storageVolume)) - ((double.Parse(storageProductCost) * double.Parse(storageVolume)) * discount)).ToString() + " руб. в месяц (спец. цена!)"
});
}
if (ServiceTypeId == 2)
{
string os = ((OsTypeItem)OsType3Box.SelectedItem).ServiceName;
string core = ((CpuCoreItem)CpuCore3Box.SelectedItem).ServiceName;
string ram = ((RamItem)RamSize3Box.SelectedItem).ServiceName;
string diskSize = ((StorageVolumeItem)StorageVolume3Box.SelectedItem).ServiceName;
string cmsName = ((HostingCmsItem)HostingCms3Box.SelectedItem).ServiceName;
bool isHdd = HddCpu3Button.IsChecked == true ? true : false;
if (HddCpu3Button.IsChecked == false && SsdCpu3Button.IsChecked == false)
{
App.ShowMessage("Пожалуйста, выберите тип хранилища.");
if (ExpertPivot.SelectedIndex != 0)
ExpertPivot.SelectedIndex = ExpertPivot.SelectedIndex - 1;
return;
}
var productSeparatedList = ProductsManager.GetVmProdSeparatedList(core, ram, diskSize, isHdd);
var bdProductSeparatedList = await ProductsManager.GetVmProductsTagsString();
var cmsCost = await ProductsManager.GetCmsProductCost(cmsName);
foreach (var item in bdProductSeparatedList)
{
var percent = MlSystem.CompareListsInPercent(item.SeparatedList, productSeparatedList);
if (percent >= 50)
{
var prod = await ProductsManager.GetVmProduct(item.Id);
ResultView1.Items.Add(new ProductItem
{
Id = item.Id,
Name = string.Format("{0} ({1} на {2})", prod.Name, cmsName, os),
Details =
"Количество ядер: " + prod.Core + Environment.NewLine +
"Размер диска: " + prod.DiskSize + " Гб" + Environment.NewLine +
"Тип диска: " + prod.StorageType + Environment.NewLine +
"ОЗУ: " + prod.Ram + " Гб" + Environment.NewLine +
"Cms: " + cmsName,
Cost = discount == 0 ? (double.Parse(item.Cost) + double.Parse(cmsCost)).ToString() + " руб. в час" : ((double.Parse(item.Cost) + double.Parse(cmsCost)) - ((double.Parse(item.Cost) + double.Parse(item.Cost)) * discount)).ToString() + " руб. в час (спец. цена!)"
});
}
if (percent >= 20 && percent < 50)
{
var prod = await ProductsManager.GetVmProduct(item.Id);
ResultView2.Items.Add(new ProductItem
{
Id = item.Id,
Name = string.Format("{0} ({1} на {2})", prod.Name, cmsName, os),
Details =
"Количество ядер: " + prod.Core + Environment.NewLine +
"Размер диска: " + prod.DiskSize + " Гб" + Environment.NewLine +
"Тип диска: " + prod.StorageType + Environment.NewLine +
"ОЗУ: " + prod.Ram + " Гб" + Environment.NewLine +
"Cms: " + cmsName,
Cost = discount == 0 ? (double.Parse(item.Cost) + double.Parse(cmsCost)).ToString() + " руб. в час" : ((double.Parse(item.Cost) + double.Parse(cmsCost)) - ((double.Parse(item.Cost) + double.Parse(item.Cost)) * discount)).ToString() + " руб. в час (спец. цена!)"
});
}
}
}
if (ResultView1.Items.Count > 0)
{
ResultView1.Visibility = Visibility.Visible;
ResultDescriptionBlock.Text = "На основе выбранных характеристик, мы подобрали для вас рекомендуемые продукты. Вы можете ознакомиться с ними ниже.";
}
else
ResultDescriptionBlock.Text = "Мы не смогли подобрать для вас рекомендуемые продукты.";
if (ResultView2.Items.Count > 0)
ResultView2.Visibility = Visibility.Visible;
ResultProgress.IsIndeterminate = false;
}
}
void ToWelcomeButton_Click(object sender, RoutedEventArgs e)
{
App.RootFrame.Navigate(typeof(WelcomePage));
}
void ResultView_ItemClick(object sender, ItemClickEventArgs e)
{
var productItem = e.ClickedItem as ProductItem;
ExpertPivot.SelectedItem = BuyItem;
BuyProdNameBlock.Text = string.Empty;
BuyProdDetailsBlock.Text = string.Empty;
BuyProdCostBlock.Text = string.Empty;
BuyProdNameBlock.Text = productItem.Name;
BuyProdDetailsBlock.Text = productItem.Details;
BuyProdCostBlock.Text = productItem.Cost;
}
}
}
EditorPage.xaml.cs
using CloudyBrain.DataModel;
using CloudyBrain.Helpers;
using System;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace CloudyBrain
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class EditorPage : Page
{
public EditorPage()
{
this.InitializeComponent();
ProductTypeBox.SelectedIndex = 0;
}
async void EditButton_Click(object sender, RoutedEventArgs e)
{
ProgressGrid.Visibility = Visibility.Visible;
await RefreshVmProducts();
ProgressGrid.Visibility = Visibility.Collapsed;
}
async Task RefreshVmProducts()
{
EditVmProductsGrid.Visibility = Visibility.Collapsed;
AddVmProductPanel.Visibility = Visibility.Collapsed;
if (ProductTypeBox.SelectedItem == VmProduct)
{
var vmProducts = await ProductsManager.GetVmProducts();
EditVmProductsView.ItemsSource = vmProducts;
if (EditVmProductsView.Items.Count > 0)
{
EditVmProductsGrid.Visibility = Visibility.Visible;
AddVmProductPanel.Visibility = Visibility.Visible;
}
}
}
async void SaveButton_Click(object sender, RoutedEventArgs e)
{
ProgressGrid.Visibility = Visibility.Visible;
if (ProductTypeBox.SelectedItem == VmProduct)
{
foreach (GeneralVmProductItem product in EditVmProductsView.Items)
{
var vmProductItem = await ProductsManager.GetVmProductItem(product.Id);
vmProductItem.Name = product.Name;
vmProductItem.Core = product.Core;
vmProductItem.Ram = product.Ram;
vmProductItem.DiskSize = product.DiskSize;
vmProductItem.Cost = product.Cost;
try
{
await App.VmProductsItemsTable.UpdateAsync(vmProductItem);
}
catch (Exception ex)
{
App.ShowMessage("Возникла проблема: " + ex.Message);
}
}
}
EditVmProductsView.ItemsSource = null;
await RefreshVmProducts();
ProgressGrid.Visibility = Visibility.Collapsed;
}
void ToWelcomeButton_Click(object sender, RoutedEventArgs e)
{
App.RootFrame.Navigate(typeof(WelcomePage));
}
async void AddVmProdButton_Click(object sender, RoutedEventArgs e)
{
ProgressGrid.Visibility = Visibility.Visible;
if (AddVmProdNameBox.Text != string.Empty && AddVmProdCoreBox.Text != string.Empty && AddVmProdRamBox.Text != string.Empty && AddVmProdDiskSizeBox.Text != string.Empty && AddVmProdCostBox.Text != string.Empty)
{
var isAdded = await ProductsManager.AddVmProduct(AddVmProdNameBox.Text, AddVmProdCoreBox.Text, AddVmProdRamBox.Text, AddVmProdDiskSizeBox.Text, AddVmProdIsHddSwitch.IsOn ? false : true, AddVmProdCostBox.Text);
if (isAdded)
{
await RefreshVmProducts();
App.ShowMessage("Продукт успешно добавлен.");
}
else
App.ShowMessage("Возникла проблема при добавлении продукта");
}
else
App.ShowMessage("Заполните все поля");
ProgressGrid.Visibility = Visibility.Collapsed;
}
void EditVmProductsView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (EditVmProductsView.SelectedItems.Count > 0)
DeleteVmProdButton.IsEnabled = true;
else
DeleteVmProdButton.IsEnabled = false;
}
async void DeleteVmProdButton_Click(object sender, RoutedEventArgs e)
{
ProgressGrid.Visibility = Visibility.Visible;
var isDeleted = await ProductsManager.DeleteVmProductItem(((GeneralVmProductItem)EditVmProductsView.SelectedItem).Id);
if (isDeleted)
{
await RefreshVmProducts();
App.ShowMessage("Продукт успешно удален.");
}
else
App.ShowMessage("Возникла проблема при удалении продукта");
ProgressGrid.Visibility = Visibility.Collapsed;
}
}
4.2 Тестовый пример
Для тестового примера зайдем в качестве пользователя. Введем пароль и нажмем на кнопку “Войти”. Результаты на рисунке 1.
Рисунок 1.
Далее выберем тип предприятия “ВУЗ”. Результаты на рисунке 2.
Рисунок 2.
Предположим, что пользователь желает преобрести продукт “Виртуальная машина”. Результаты на рисунке 3.
Рисунок 3.
Приступаем к выбору параметров желаемого продукта. Результаты на рисунке 4.
Рисунок 4.
Система подобрала для пользователя похожие продукты. Рекомендуемых продуктов система не обнаружила. Для вуза предполагается скидка на сервис в размере 50% от стоимости. Результаты на рисунке 5.
Рисунок 5.
Список литературы
1. Андрейчиков А.В., Андрейчикова О.Н. Интеллектуальные информационные системы.: Финансы и статистика, 2004, 424 с.
2. Круглов В.В., Длим И. Интеллектуальные информационные системы: компьютерная поддержка систем нечеткой логики и нечеткого вывода. - М.: Изд-во физ-мат. Лит., 2002.-256 с.
3. Попов Э.В., Фоминых И.Б., Кисель Е.В., Шапот М.Д. Статические и динамические экспертные системы. 2005.-78с.
4. Анализ данных и процессов: учеб. пособие / А. А. Барсегян, М. С. Куприянов, И. И. Холод, М. Д. Тесс, С. И. Елизаров. -- 3-е изд., перераб. и доп. -- СПб.
5. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем. - СПб.: Питер, 2001 - 384 с.
6. Корнеев В.В., Гареев А.Ф., Васютин С.В., Райх В.В. Базы данных. Интеллектуальная обработка информации. М.: “Нолидж”, 2000.
7. Полковникова Н. А., Курейчик В. М. Разработка модели экспертной системы на основе нечёткой логики,Журнал Известия Южного федерального университета. Технические науки.
8. https://azure.microsoft.com
облачный ресурс экспертный виртуальный
Размещено на Allbest.ru
Подобные документы
Модели обслуживания облачных технологий (IaaS, PaaS, SaaS). Определение облачных технологий, их основные характеристики, достоинства и недостатки. Функции и возможности облачного решения Kaspersky Endpoint Security Cloud от "Лаборатории Касперского".
курсовая работа [626,7 K], добавлен 29.06.2017Общая характеристика киноиндустрии как предметной области работы. Разработка базы данных и дерева вопросов для получения информации для выбора фильма. Программная реализация экспертной системы. Тестирование системы и создание руководства пользователя.
курсовая работа [1,9 M], добавлен 19.05.2014Реализация "облачных" технологий в корпоративных информационных системах. Применение "облачных" технологий на РУП "Белоруснефть". Пуско-наладочные работы, установка и запуск облачного сервиса, начальное конфигурирование и предложения по масштабированию.
курсовая работа [2,9 M], добавлен 24.07.2014Пример экспертной системы с использованием метода Криса-Нейлора. Структура базы данных. Стратегия вывода результатов выбора страны. Руководство пользователя, редактирование базы знаний. Режим тестирования, его завершение, блок объяснения решения.
контрольная работа [1,6 M], добавлен 29.12.2012История и факторы развития облачных вычислений. Роль виртуализации в развитии облачных технологий. Модели обслуживания и принципы работы облачных сервисов. Преимущества облака для Интернет-стартапов. Применение технологии облачных вычислений в бизнесе.
реферат [56,6 K], добавлен 18.03.2015Описание экспертной системы по подбору кадров. Требования к функциональным характеристикам программы. Состав и параметры технических средств ЭВМ. Структура входных данных. Руководство программиста и пользователя. Тестирование программного средства.
курсовая работа [897,0 K], добавлен 13.11.2016Анализ облачных сервисов для автоматизации бизнеса и обоснование преимуществ перехода на облачную обработку данных. Виды и модели облачных сервисов для бизнеса, принципы их работы и характеристики. Задачи автоматизации бизнеса на примере облачных решений.
дипломная работа [2,3 M], добавлен 06.09.2017История возникновения облачных технологий. Суть и задачи облачных технологий, их классификация, достоинства и недостатки. Исследование применения облачных технологий на примере Google диск. Сравнение Google диск с аналогом компании Apple(iCloud).
курсовая работа [573,1 K], добавлен 05.12.2016Анализ структуры и содержания плана маркетинга компании. Рынок облачных вычислений и возможность их применения. Отбор источников информации и представление полученных результатов. Разработка программной инструментальной оболочки облачных вычислений.
дипломная работа [149,8 K], добавлен 12.11.2013Основные понятия и определение теории баз данных. Обоснование выбора программного обеспечения. Разработка таблиц и схемы БД. Использование запросов. Создание отчетов и форм. Руководство пользователя. Рекомендации по дальнейшей модернизации системы.
курсовая работа [2,1 M], добавлен 04.06.2014