Разработка программного средства оценки

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

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

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

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

Таблица 3.6. Доход, полученный компанией за полгода

1 месяц

2 месяц

3 месяц

4 месяц

5 месяц

6 месяц

Доход с количества новых пользователей

15 000

45 000

45 000

45 000

45 000

15 000

Доход от постоянных пользователей

-

-

-

5 000

15 000

15 000

Доход от рекламы

38 000

38 000

38 000

38 000

38 000

38 000

Итого

53 000

83 000

83 000

88 000

98 000

98 000

503 000

За полгода компания сможет выручить 503 000 руб. дохода. Полученный доход не учитывает затраты на аренду офиса, на поддержку сервиса. На поддержку сервиса выделяется 8000 руб./мес. Также условно за полгода компания на прочие расходы с дохода по данному продукту выделяет 100 000 руб.

Прибыль=503 000 руб.-10 000 руб.*6 мес. - 8 000 руб.*6 мес. - 100 000 = =295 000 руб.,(3.6)

В следующие полгода компания заработает 703 000 руб.

Прибыль=703 000 руб.-10 000 руб.*6 мес.-8 000 руб.*6 мес. -100 000 руб.= =495 000 руб.,(3.6)

Через полтора года компания получит доход в размере 883 000 руб.,

Прибыль=883 000 руб. -10 000 руб.*6 мес. -8 000 руб.*6 мес.-100 000 руб. =675 000 руб.,(3.6)

За два года компания заработает суммарный доход 3 752 000 руб., а через полтора года затраты на реализацию и внедрение проекта окупятся.

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

Заключение

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

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

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

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

Библиографический список

1. Барсегян А.А., Куприянов М. С., Холод И. И., Тесс М. Д., Елизаров С. И.. Анализ данных и процессов. СПб.: БХВ-Петербург, 2009.17 c.

2.Гладун А.Я., Рогушина Ю.В. Онтологии в корпоративных системах // Корпоративные системы.2006, №1, с. 41-47.

3. Мальцев П.А., Воронина Т.В. Онтология Businessintelligence // В кн.: Математика программных систем: межвузовский сборник научных статей. Пермь.: Пермский государственный национальный исследовательский университет. 2012.

4.Фаулер М., Скотт К. UML в кратком изложении М.: Мир. 1999. 71 с.

5.Vipin K., The Top Ten Algorithms in Data Mining. London.: Taylor&FrancisGroup.2009.

6. Абернети М. Интеллектуальный анализ данных с помощью программного пакета WEKA//IBM [Электронный ресурс][Режим доступа: https://www.ibm.com/developerworks/ru/library/os-weka1/][Проверено: 30.04. 2014]

7.Камоев Т.К. Проблемы теории и практики предпринимательства: О роли розничной торговли в экономике России [Электронный ресурс] [Режим доступа: http://www.m-economy.ru/art.php?nArtId=3244 ] [Проверено:30.04.2014]

8. Кудрявцев Д. Технологии применения онтологий. [Электронный ресурс][Режим доступа: http://bigspb.ru/theory/km/onto_technologies.php] [Проверено: 30.04.2014]

9. Угаров А.С. Методы выбора местоположения торговой точки [Электронный ресурс] [Режим доступа: http://dis.ru/library/520/25648/] [Проверено: 30.04.2014]

10. Дубинин М. Расчет расстояний по их координатам. [Электронный ресурс] [Режим доступа: http://www.kobzarev.com/programming/calculation-of-distances-between-cities-on-their-coordinates.html] [Проверено: 30.04.2014]

11.Data-Mining-добыча данных // Технологии анализа данных. [Электронный ресурс] [Режим доступа: http://www.basegroup.ru/library/methodology/base/] [Проверено: 30.04.2014]

12. Определение ставки дисконтирования. Для чего нужна ставка дисконтирования. //4Consult.ru [Электронный ресурс] [Режим доступа: http://4consult.ru/info/discount.html/] [Проверено: 30.04.2014]

Приложения

Приложение А

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

Рисунок A.1. Блок-схема алгоритма с указанием адреса

Блок-схема алгоритма без указания адреса

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

Рисунок B.1. Блок-схема алгоритма с указанием адреса

Приложение Б

Исходная база данных

Рисунок С.1. Исходная база данных

Модифицированная база данных

Рисунок D.1. Модифицированная база данных

Приложение В

Распределение категорий людей по объектам

Таблица Е.1. Распределение категорий людей по объектам

Объект

Классификация по людям

Возрастная периодизация

По занятости

По интересам

Пол

1

Автозаправочная станция

Молодость, взрослость

Студент, работик

Автомобили

Все

2

Автомойка

Молодость, взрослость

Студент, работик

Автомобили

Все

3

Автосалон

Молодость, взрослость

Работник

Автомобили

Все

4

Аптека

Взрослость, старость

Работник

Медицина

Все

5

Аэропорт

Взрослость

Работник

Техника/проектирование

Все

6

Банк

Взрослость, старость

Работник

Экономика, финансы

Все

7

Бар

Юность, молодость

Студент, работник

Развлечения

Все

8

Библиотека

Школьный возраст, юность

Школьник, студент

Наука, литература

Все

9

Больница

Все

Все

Медицина

Все

10

Боулинг

Юность, молодость,

Студент, работник

Развлечения

Все

11

Бухгалтерский и налоговый отчет

Молодость, взрослость

Работник

Экономика, финансы

Все

12

Ветеринария

Молодость, взрослость

Студент, работник

Медицина

Все

13

Железнодорожный вокзал

Все

Все

Техника/проектирование

Все

4

Здание суда

Молодость, взрослость

Работник

Юриспруденция

Все

15

Зоомагазин

Все

Все

Развлечения

Все

16

Зоопарк

Школьный возраст, юность

Школьник, студент

Развлечения

Все

17

Кафе

Юность, молодость,

Студент, работник

Развлечения

Все

18

Кинотеатр

Все

Все

Развлечения

Все

19

Клуб

Юность, молодость,

Студент, работник

Развлечения

Все

20

Книжный магазин

Все

Все

Искусство, наука

Все

21

Компания: перевозчик вещей

Взрослость

Работник

Квартира

Мужской

22

Консультация юриста

Молодость, взрослость

Студент, работник

Юриспруденция

Все

23

Магазин мотоциклов

Молодость, взрослость

Работник

Техника/проектирование

Мужской

24

Магазин обуви

Все

Все

Красота

Женский

25

Магазин одежды

Все

Все

Красота

Женский

26

Магазин спиртных напитков

Молодость, взрослость

Работник

-

Все

Таблица Е.1. Распределение категорий людей по объектам(продолжение)

Объект

Классификация по людям

Возрастная периодизация

По занятости

По интересам

Пол

27

Магазин украшений

Юность, молодость,

Школьник, студент, работник

Красота

Женский

28

Магазин цветов

Юность, молодость,

Школьник, работник

-

Все

29

Магазин электрооборудования

Молодость, взрослость

Работник

Техника/проектирование

Мужской

30

Мебельный магазин

Молодость, взрослость

Работник

Строительство/квартира

Все

31

Музей

Все

Все

Искусство, наука

Все

32

Муниципальное учреждение

Молодость, взрослость

Работник

-

Все

33

Океанариум

Молодость, взрослость

Студент, работник

Развлечения

Все

34

Парк

Все

Все

-

Все

35

Парк развлечений

Все

Все

Развлечения

Все

36

Пожарная часть

Молодость, взрослость

Работник

-

Мужской

37

Похоронное бюро

Взрослость, старость

Работник, пенсионер

-

Все

38

Почтовое отделение

Взрослость, старость

Работник, пенсионер

-

Все

39

Прачечная

Молодость, взрослость

Работник

-

Женский

40

Прокат автомобилей

Молодость, взрослость

Студент, работник

Автомобили

Мужской

41

Прокат дисков

Молодость, взрослость

Работник

Автомобили

Мужской

42

Ремонт автомобилей

Молодость, взрослость

Студент, работник

Автомобили

Мужской

43

Ресторан

Молодость, взрослость

Студент, работник

Развлечение

Все

44

Риэлторское агентство

Взрослость

Работник

Строительство/квартира

Все

45

Салон красоты

Юность, молодость,

Студент, работник

Красота

Женский

46

Стадион

Юность, молодость,

Школьник, студент,

Спорт

Все

47

Стоматология

Все

Все

Медицина

Все

48

Стоянка

Молодость, взрослость

Студент, работник

Автомобили

Все

49

Стоянка для автоприцепов

Молодость, взрослость

Работник

Автомобили

Мужской

50

Стоянка такси

Молодость, взрослость

Студент, работник

Автомобили

Мужской

51

Страховое агентство

Молодость, взрослость

Работник

Экономика, финансы

Все

52

Строительная организация

Молодость, взрослость

Работник

Строительство/квартира

Все

Таблица Е.1. Распределение категорий людей по объектам(продолжение)

Объект

Классификация по людям

Возрастная периодизация

По занятости

По интересам

Пол

53

Строительный магазин, магазин технических товаров

Молодость, взрослость

Студент, работник

Строительство/квартира

Мужской

54

Товары для дома

Молодость, взрослость

Работник

Строительство/квартира

Все

55

Тренажерный зал

Все

Все

Спорт

Все

56

Турагенство

Молодость, взрослость

Работник

Развлечения

Все

57

Университет

Юность, молодость,

Студент

Наука, искусство

Все

58

Хлебозавод/булочная

Молодость, взрослость

Работник

Все

59

Художественная галерея

Все

Все

Искусство

Все

60

Школа

Раннее детство, школьный

Дошкольник, школьник

Наука, спорт, искусство

Все

Приложение Г

Техническое задание на разработку системы

Общие сведения

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

Полное наименование системы и ее условное обозначение

Наименование программного средства - «Система оценки востребованности территорий города в объектах розничной торговли».

Основания для разработки

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

Работа выполняется на основании учебного плана и темы выпускной квалификационной работы, определенной научным руководителем и утвержденной приказом от 25.11.2013 №8.2.6.2-06/698 «Об утверждении тем и руководителей выпускных квалификационных работ студентов факультета бизнес-информатики».

Разработчиком программного средства является студентка 4 курса факультета бизнес-информатики: Анкудинова Ирина.

Плановые сроки начала и окончания работ

Начало работ по проектированию и разработке системы: сентябрь 2013 года. Окончание работ по созданию системы: 20 мая 2014 года.

Назначение и цели создания модуля.

Назначение системы.

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

Основными пользователями разрабатываемой системы будут предприниматели малого и среднего бизнеса.

В основе программного средства лежит концепция спроектированной модели анализа данных:

для каждого объекта города определяются категории людей;

для каждого объекта определяются три ближайшие автобусные остановки;

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

Цель создания системы

Целью создания системы является сокращение риска разорения нового торгового объекта малого или среднего бизнеса.

Характеристика объекта автоматизации

Объектом автоматизации является процесс оценки территорий города Пермь. У данного процесса нет установленного алгоритма выполнения или стандарта. В общем случае он включает в себя:

определение целевой аудитории для нового торгового объекта. Целевая аудитория зависит от вида предоставляемой услуги или товара.

деление территорий города Пермь для удобства дальнейшего анализа (не обязательно);

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

Спроектированная модель анализа данных включает в себя экземпляры.

Объект представляет собой любое предприятие или жилое помещение. Атрибутами являются:

название;

адрес;

долгота;

широта.

Остановка. В модели рассматриваются только автобусные остановки. Остановки с одним названием, но отличными координатами считаются разными остановками. Атрибутами являются:

название;

широта;

долгота.

На данном этапе можно выделить еще два экземпляра.

Классификация по типу объекта. Данный экземпляр представляет собой классификацию объектов в городе Перми, построенную на основе классификации объектов на карте Google Maps. Атрибутом данного экземпляра является:

название.

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

пол - классификация по половому признаку;

возрастная периодизация - классификация потребителей по возрасту;

занятость - классификация потребителей по текущей занятости: школьник, студент и т.д.;

интерес - классификация определяет сферы деятельности потребителей: автомобили, наука и т.д.

Требования к системе

Требования к структуре и функционированию.

Программное средство состоит из двух функциональных подсистем.

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

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

Программное средство представляет собой приложение, состоящее из двух вкладок:

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

прибыльное местоположение;

убыточное местоположение;

Во втором случае пользователь вводит лишь предполагаемые категории потребителей. Модуль системы проводит анализ по всему городу и выводит рейтинг от 1 до 5 наиболее прибыльных местоположений.

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

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

Условия эксплуатации

Для обеспечения эксплуатации и обновления системы необходимо выделение следующих ответственных лиц:

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

знание языка SQL, умение составлять сложные SQL-запросы;

знание языков Java, C#;

умение выполнять интеграцию данных;

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

администратор подсистемы анализа данных. Данный сотрудник должен владеть следующими навыками и знаниями:

знание языка SQL, умение составлять сложные SQL-запросы;

знание и умение применять средства и методологии анализа данных;

знание языка Java.

Требования к временным показателям системы

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

сбой операционной системы;

сбой технического обеспечения.

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

Надежность программного обеспечения подсистем должна обеспечиваться за счет:

надежности общесистемного ПО и ПО, разрабатываемого разработчиком;

проведением комплекса мероприятий отладки, поиска и исключения ошибок.

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

Требования к информационному обеспечению модуля

Хранение и организация данных программного средства должна быть осуществлена средствами MySQL. Для визуального проектирования базы данных, моделирования и создания базы данных должен использоваться инструмент MySQL Workbench.

Требования к лингвистическому обеспечению

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

Требования к программному обеспечению системы

Для разработки системы должна использоваться среда Eclipse SDK. В качестве фрейма для создания графического интерфейса должна использоваться библиотека Swing.

Требования к техническому обеспечению

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

Для обеспечения работы программного средства требуется:

процессор - 2 х 3 ГГц;

объем оперативной памяти - не менее 2 Гб;

объем жесткого диска - не менее 120 Гб;

сетевая карта - с поддержкой скорости не менее 1 Гбит/сек.

Требования к эгрономике и технической эстетике.

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

В части внешнего оформления:

интерфейсы должны быть типизированы;

обеспечение наличия локализованного (русскоязычного интерфейса) пользователя;

должен использоваться шрифт: Times New Roman;

размер шрифта должен быть равен 14 кегль, для заголовков - 16 кегль.

В части диалога с пользователем:

при возникновении ошибок в работе системы на экран монитора должно выводиться сообщение с наименованием ошибки;

Требования к антивирусной защите

Средства антивирусной защиты должны быть установлены на рабочем столе пользователя и обеспечивать:

централизованное управление сканированием, удалением вирусов и протоколированием вирусной активности на рабочих местах пользователей;

централизованную автоматическую инсталляцию клиентского ПО на рабочих местах пользователей и администраторов;

централизованное автоматическое обновление вирусных сигнатур на рабочих местах пользователей и администраторов;

ведение журналов вирусной активности;

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

Порядок контроля и приемки системы

Виды испытаний системы:

Для ввода в эксплуатацию программное средство должно пройти испытания.

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

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

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

Требования к программной документации

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

описание концепции модели анализа данных;

схема базы данных и описание отдельных таблиц;

тестовые сценарии в электронной форме;

описание работы системы;

руководство пользователя;

руководство разработчика.

Стадии и этапы разработки.

Предпроектное исследование. На данном этапе описана проблема, изучена литература.

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

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

Разработка системы. На данном этапе проектируется база данных и реализуется бизнес-логика.

Тестирование. На данном этапе разрабатываются тесты для проверки корректности работы системы.

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

Приложение Д

Расчет доходов компании от работы web-приложения

Таблица G.1. Доходы компании в первый год

1 месяц

2 месяц

3 месяц

4 месяц

5 месяц

6 месяц

7 месяц

8 месяц

9 месяц

10 месяц

11 месяц

12 месяц

Доход с количества новых пользователей

15 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

Доход от постоянных пользователей

-

-

-

5 000

15 000

15 000

20 000

30 000

30 000

35 000

45 000

45 000

Доход от рекламы

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

Итого

53 000

83 000

83 000

88 000

98 000

98 000

103 000

113 000

113 000

118 000

128 000

128 000

503 000

1206000

Таблица G.2. Доходы компании во второй год

1 месяц

2 месяц

3 месяц

4 месяц

5 месяц

6 месяц

7 месяц

8 месяц

9 месяц

10 месяц

11 месяц

12 месяц

Доход с количества новых пользователей

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

45 000

Доход от постоянных пользователей

50 000

60 000

60 000

65 000

75 000

75 000

80 000

90 000

90 000

95 000

105 000

105 000

Доход от рекламы

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

38 000

Итого

133 000

143 000

143 000

148 000

158 000

158 000

163 000

173 000

173 000

178 000

188 000

188 000

883 000

1946 000

Приложение Е

Исходные коды

Листинг H.1. JavaScript для получения координат адреса

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<style type="text/css">

html { height: 100% }

body { height: 100%; margin: 0; padding: 0 }

#map-canvas { height: 100% }

</style>

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true&key=AIzaSyBWeWxnHaMKuWxHzs2cSo8QD0Mw7o6RiXw">

</script>

<script type="text/javascript">

var geocoder;

var map;

var lat=null;

var lng=null;

var marker=null;

function initialize() {

geocoder = new google.maps.Geocoder();

var latlng = new google.maps.LatLng(58.01741, 56.28552);

var mapOptions = {

zoom: 8,

center: latlng

}

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

}

function getCntr(lat, lng)

{

latlng = new google.maps.LatLng(lat, lng);

mapOptions={

zoom:10,

center:latlng

}

marker=new google.maps.Marker({

position:latlng,

map:map,

})

map.setCenter(latlng);

marker.setPosition(latlng);

}

function initCntr()

{

latlng = new google.maps.LatLng(58.01741, 56.28552);

mapOptions={

zoom:10,

center:latlng

}

marker=setMap(null);

map.setCenter(latlng);

}

function codeAddress(address) {

data=null;

geocoder.geocode({ 'address': address}, function(results, status) {

if (status == google.maps.GeocoderStatus.OK) {

map.setCenter(results[0].geometry.location);

lat=results[0].geometry.location.A;

lng=results[0].geometry.location.k;

} else {

data = false;

alert("Geocode was not successful for the following reason: " + status);

}

});

}

</script>

</head>

<body onload="initialize()">

<div id="map_canvas" style="width:100%; height:100%"></div>

</body>

</html>

Листинг H.2. Модификация БД

packagedb;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjava.util.ArrayList;

importjava.util.List;

importclassesInvoved.Organization;

importclassesInvoved.Stops;

public class PreparingData {

private void insertCategory() throws SQLException {

ConnectToMSSQLcnt = new ConnectToMSSQL();

cnt.createCon();

Connection c = cnt.con;

// Statement st = c.createStatement();

List<String>lst = new ArrayList<String>();

lst.add("Возрастная периодизация");

lst.add("Категория по интересам");

lst.add("Категория по полу");

lst.add("Категория по занятости");

PreparedStatement st2;

for (inti = 0; i<lst.size(); i++) {

st2 = c

.prepareStatement("INSERT INTO category (id_category, name_category)"

+ " VALUES (?, ?)");

st2.setInt(1, i + 1);

st2.setString(2, lst.get(i));

st2.executeUpdate();

}

cnt.disconnect();

}

private void insertCategoryDetail() throws SQLException {

ConnectToMSSQLcnt = new ConnectToMSSQL();

cnt.createCon();

Connection c = cnt.con;

int k = 1;

List<String>lst = new ArrayList<String>();// поинтересам

lst.add("Искусство");

lst.add("Спорт");

lst.add("Наука");

lst.add("Красота");

lst.add("Юриспруденция");

lst.add("Техника/проектирование");

lst.add("Строительство/квартира");

lst.add("Автомобили");

lst.add("Медицина");

lst.add("Экономика/финансы");

lst.add("Развлечение");

lst.add("Животные");

PreparedStatementst;

for (inti = 0; i<lst.size(); i++) {

st = c

.prepareStatement("INSERT INTO categ_detail (id_categ_detail, name_detail, id_categ)"

+ " VALUES (?, ?, ?)");

st.setInt(1, k);

st.setString(2, lst.get(i));

st.setInt(3, 2);

st.executeUpdate();

k++;

}

k = 13;

List<String> lst2 = new ArrayList<String>();// позанятости

lst2.add("Дошкольник");

lst2.add("Школьник");

lst2.add("Студент");

lst2.add("Работник");

lst2.add("Пенсионер");

for (inti = 0; i< lst2.size(); i++) {

st = c

.prepareStatement("INSERT INTO categ_detail (id_categ_detail,name_detail, id_categ)"

+ " VALUES (?, ?, ?)");

st.setInt(1, k);

st.setString(2, lst2.get(i));

st.setInt(3, 4);

st.executeUpdate();

k++;

}

k = 19;

List<String> lst3 = new ArrayList<String>();// возрастная

lst3.add("Раннее детство(0-6)");

lst3.add("Школьный возраст (7-12)");

lst3.add("Юность (13-20)");

lst3.add("Молодость (21-25)");

lst3.add("Взрослость (26-60)");

lst3.add("Старость (26-60)");

for (inti = 0; i< lst3.size(); i++) {

st = c

.prepareStatement("INSERT INTO categ_detail (id_categ_detail, name_detail, id_categ)"

+ " VALUES (?, ?, ?)");

st.setInt(1, k);

st.setString(2, lst3.get(i));

st.setInt(3, 1);

st.executeUpdate();

k++;

}

cnt.disconnect();

}

private static void addedMethod(Connection c, inttyp, intct)

throwsSQLException {

PreparedStatementst = c

.prepareStatement("INSERT INTO categ_and_org (id_categ, id_type)"

+ " VALUES (?, ?)");

st.setInt(1, ct);

st.setInt(2, typ);

st.executeUpdate();

}

private void matchOrgCateg() throws SQLException {

ConnectToMSSQLcnt = new ConnectToMSSQL();

cnt.createCon();

Connection c = cnt.con;

// /1

addedMethod(c, 40, 7);

addedMethod(c, 40, 22);

addedMethod(c, 40, 23);

addedMethod(c, 40, 16);

// 2

addedMethod(c, 44, 4);

addedMethod(c, 44, 22);

addedMethod(c, 44, 23);

addedMethod(c, 44, 15);

addedMethod(c, 44, 16);

// 3

addedMethod(c, 45, 4);

addedMethod(c, 45, 22);

addedMethod(c, 45, 23);

addedMethod(c, 45, 15);

addedMethod(c, 45, 16);

// 4

addedMethod(c, 46, 7);

addedMethod(c, 46, 22);

addedMethod(c, 46, 23);

addedMethod(c, 46, 16);

// 5

addedMethod(c, 48, 7);

addedMethod(c, 48, 21);

addedMethod(c, 48, 22);

addedMethod(c, 48, 14);

addedMethod(c, 48, 15);

// 6

addedMethod(c, 50, 9);

addedMethod(c, 50, 23);

addedMethod(c, 50, 24);

addedMethod(c, 50, 16);

addedMethod(c, 50, 17);

// 7

addedMethod(c, 52, 11);

addedMethod(c, 52, 22);

addedMethod(c, 52, 23);

addedMethod(c, 52, 16);

// 8

addedMethod(c, 53, 1);

addedMethod(c, 53, 3);

addedMethod(c, 53, 21);

addedMethod(c, 53, 22);

addedMethod(c, 53, 15);

addedMethod(c, 53, 16);

// 9

addedMethod(c, 56, 20);

addedMethod(c, 56, 22);

addedMethod(c, 56, 14);

addedMethod(c, 56, 16);

// 10

addedMethod(c, 57, 12);

addedMethod(c, 57, 20);

addedMethod(c, 57, 23);

addedMethod(c, 57, 14);

addedMethod(c, 57, 16);

// 11

addedMethod(c, 58, 4);

addedMethod(c, 58, 22);

addedMethod(c, 58, 23);

addedMethod(c, 58, 15);

addedMethod(c, 58, 16);

// 12

addedMethod(c, 63, 8);

addedMethod(c, 63, 22);

addedMethod(c, 63, 23);

addedMethod(c, 63, 15);

addedMethod(c, 63, 16);

// 13

addedMethod(c, 69, 7);

addedMethod(c, 69, 22);

addedMethod(c, 69, 23);

addedMethod(c, 69, 8);

addedMethod(c, 69, 16);

// 14

addedMethod(c, 70, 10);

addedMethod(c, 70, 23);

addedMethod(c, 70, 24);

addedMethod(c, 70, 16);

addedMethod(c, 70, 17);

// 15

addedMethod(c, 73, 11);

addedMethod(c, 73, 21);

addedMethod(c, 73, 22);

addedMethod(c, 73, 15);

addedMethod(c, 73, 16);

// 16

addedMethod(c, 74, 9);// стоматология

addedMethod(c, 74, 13);

addedMethod(c, 74, 14);

addedMethod(c, 74, 15);

addedMethod(c, 74, 16);

addedMethod(c, 74, 17);

// addedMethod(c, 74, 18);

addedMethod(c, 74, 19);

addedMethod(c, 74, 20);

addedMethod(c, 74, 21);

addedMethod(c, 74, 22);

addedMethod(c, 74, 23);

addedMethod(c, 74, 24);

// 17

addedMethod(c, 76, 2);

addedMethod(c, 76, 22);

addedMethod(c, 76, 23);

addedMethod(c, 76, 15);

addedMethod(c, 76, 16);

// 18

addedMethod(c, 77, 4);

addedMethod(c, 77, 22);

addedMethod(c, 77, 23);

addedMethod(c, 77, 15);

addedMethod(c, 77, 16);

// 19

addedMethod(c, 78, 11);

addedMethod(c, 78, 21);

addedMethod(c, 78, 22);

addedMethod(c, 78, 15);

addedMethod(c, 78, 16);

// 20

addedMethod(c, 79, 1);

addedMethod(c, 79, 2);

addedMethod(c, 79, 3);

addedMethod(c, 79, 20);

addedMethod(c, 79, 21);

addedMethod(c, 79, 13);

addedMethod(c, 79, 14);

// 21

addedMethod(c, 81, 3);

addedMethod(c, 81, 20);

addedMethod(c, 81, 21);

addedMethod(c, 81, 14);

addedMethod(c, 81, 15);

// 22

addedMethod(c, 82, 23);

addedMethod(c, 82, 24);

addedMethod(c, 82, 16);

addedMethod(c, 82, 17);

// 23

addedMethod(c, 86, 8);

addedMethod(c, 86, 22);

addedMethod(c, 86, 23);

addedMethod(c, 86, 15);

addedMethod(c, 86, 16);

cnt.disconnect();

}

public String fillCategory() {

try {

insertCategory();

insertCategoryDetail();

matchOrgCateg();

return "Выполнено";

} catch (Exception e) {

return "Ошибка";

}

}

public double gettingStopsForOrg(String org, String stp) {

String[] orgStr = splitTrimLtln(org);

String[] stpStr = splitTrimLtln(stp);

if ((orgStr.length == 2) && (stpStr.length == 2))

returnhaverSinus(orgStr, stpStr);

return -1;

}

private String[] splitTrimLtln(String ltln) {

String[] ltlnStr = ltln.trim().split("\\s+");// 0-latitude..1.longtit

if (ltlnStr.length == 2) {

if (ltlnStr[0].contains(","))

ltlnStr[0] = ltlnStr[0].replace(",", "");

if (ltlnStr[0].contains("("))

ltlnStr[0] = ltlnStr[0].replace("(", "");

if (ltlnStr[1].contains(","))

ltlnStr[1] = ltlnStr[1].replace(",", "");

if (ltlnStr[1].contains(")"))

ltlnStr[1] = ltlnStr[1].replace(")", "");

}

returnltlnStr;

}

private static double haverSinus(String[] orgStr, String[] stpStr) {

int R = 6371;

doubledLat = Math.toRadians(Double.parseDouble(stpStr[0])

- Double.parseDouble(orgStr[0]));

doubledLong = Math.toRadians(Double.parseDouble(stpStr[1])

- Double.parseDouble(orgStr[1]));

double lat1 = Math.toRadians(Double.parseDouble(orgStr[0]));

double lat2 = Math.toRadians(Double.parseDouble(stpStr[0]));

double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1)

* Math.cos(lat2) * Math.sin(dLong / 2) * Math.sin(dLong / 2);

double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

return c * R;

}

public static int checking(double[] mas, double i) {

for (int k = 0; k <mas.length; k++) {

if ((mas[0] >i) || (mas[0] == 0.0)) {

mas[0] = i;

return 0;

} else if ((mas[1] >i) || (mas[1] == 0.0)) {

mas[1] = i;

return 1;

} else if ((mas[2] >i) || (mas[2] == 0.0)) {

mas[2] = i;

return 2;

}

}

return -1;

}

public String соединитьОстОрг() {

ConnectToMSSQLcnt = new ConnectToMSSQL();

try {

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

Statement st2 = c.createStatement();

ResultSetrs = st.executeQuery("select* from Org");

while (rs.next()) {

double[] mas = new double[3];

Organization org = new Organization();

org.setId(rs.getString(1));

org.setName(rs.getString(2));

org.setLatlng(rs.getString(3));

String[] vs = new String[3];

double k = -1;

ResultSet rs2 = st2.executeQuery("select * from stops");

while (rs2.next()) {

Stops stp = new Stops();

stp.setId(rs2.getString(1));

stp.setName(rs2.getString(2));

stp.setLatLng(rs2.getString(3));

k = gettingStopsForOrg(org.getLatlng(), stp.getLatLng());

if (k == -1)

break;

int l = checking(mas, k);

if (l == 0)

vs[0] = stp.getId();

else {

if (l == 1)

vs[1] = stp.getId();

else if (l == 2)

vs[2] = stp.getId();

}

}

if (k != -1) {

PreparedStatementstInsert = c

.prepareStatement("INSERT INTO org_stop (id_org,id_stop)"

+ " VALUES (?, ?)");

for (inti = 0; i<vs.length; i++) {

stInsert.setString(1, org.getId());

stInsert.setString(2, vs[i]);

stInsert.executeUpdate();

}

}

}

cnt.disconnect();

return "Выполнено";

} catch (SQLException e1) {

return "Ошибка";

}

}

public String fillStops() {

ConnectToMSSQLcnt = new ConnectToMSSQL();

try {

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

//String sql =

// "ALTER TABLE Org ADD COLUMN (id_categ) REFERENCES category (id_category)";

//st.executeUpdate(sql);

List<Stops>stp = new ArrayList<Stops>();

ResultSetrs = st

.executeQuery("select * from Org, org_types, types where Org.id_organisation=org_types.id_organisation AND types.id_type=org_types.id_type AND types.id_type="

+ 64);

try {

while (rs.next()) {

Stops s = new Stops();

s.setId(rs.getString(1));

s.setName(rs.getString(2));

s.setLatLng(rs.getString(3));

stp.add(s);

}

} catch (Exception e) {

e.printStackTrace();

}

PreparedStatement st2 = c

.prepareStatement("INSERT INTO Stops (id_stop,name_stop, latlng)"

+ " VALUES (?, ?,?)");

for (inti = 0; i<stp.size(); i++) {

st2.setString(1, stp.get(i).getId());

st2.setString(2, stp.get(i).getName());

st2.setString(3, stp.get(i).getLatLng());

st2.executeUpdate();

}

cnt.disconnect();

return "Выполнено";

} catch (SQLException e1) {

return "Ошибка";

}

}

public String createNewTable() {

ConnectToMSSQLcnt = new ConnectToMSSQL();

try {

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

String sql = "CREATE TABLE Stops (id_stopNCHAR(100) PRIMARY KEY,name_stop NCHAR(100), latlng NCHAR(100))";

st.executeUpdate(sql);

sql = "CREATE TABLE org_stop (id_org NCHAR(100), id_stop NCHAR(100))";

st.executeUpdate(sql);

sql = "ALTER TABLE org_stop ADD FOREIGN KEY (id_org) REFERENCES Org (id_organisation)";

st.executeUpdate(sql);

sql = "ALTER TABLE org_stop ADD FOREIGN KEY (id_stop) REFERENCES stops (id_stop)";

st.executeUpdate(sql);

sql = "CREATE TABLE category (id_category INT PRIMARY KEY, name_category NCHAR(40))";

st.executeUpdate(sql);

sql = "CREATE TABLE categ_detail (id_categ_detail INT PRIMARY KEY, name_detail NCHAR(50), id_categ INT)";

st.executeUpdate(sql);

sql = "ALTER TABLE categ_detail ADD FOREIGN KEY (id_categ) REFERENCES category (id_category)";

st.executeUpdate(sql);

sql = "CREATE TABLE categ_and_org (id_categ INT, id_type INT)";

st.executeUpdate(sql);

sql = "ALTER TABLE categ_and_org ADD FOREIGN KEY (id_type) REFERENCES types (id_type)";

st.executeUpdate(sql);

sql = "ALTER TABLE categ_and_org ADD FOREIGN KEY (id_categ) REFERENCES categ_detail (id_categ_detail)";

st.executeUpdate(sql);

cnt.disconnect();

return "Выполнено";

} catch (SQLException e) {

return "Ошибка";

}

}

public String deleteTables() {

ConnectToMSSQLcnt = new ConnectToMSSQL();

try {

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

String sql = "DROP TABLE routes_stops";

st.executeUpdate(sql);

sql = "DROP TABLE Routes";

st.executeUpdate(sql);

sql = "DROP TABLE routes_types";

st.executeUpdate(sql);

cnt.disconnect();

return "Выполнено";

} catch (SQLException e) {

return "Ошибка";

}

}

}

Листинг H.3. Реализация алгоритма с указанием адреса

public static String estimateByAdres(ModelRating model,

String[] adress) throws SQLException {

int idInterest = model.inter.getId();

int idAge = model.age.getId();

int idOccup = model.occup.getId();

String answer = "";

ConnectToMSSQL cnt = new ConnectToMSSQL();

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

double k = -1;

double[] mas = new double[3];

List<Stops> vs = new ArrayList<Stops>();

for (int i=0; i<3; i++)

vs.add(new Stops());

ResultSet rs = st.executeQuery("select * from stops");

while (rs.next()) {

Stops stp = new Stops();

stp.setId(rs.getString(1));

stp.setName(rs.getString(2));

stp.setLatLng(rs.getString(3));

k = insertData.gettingStopsForOrg(adress, stp.getLatLng());

if (k != -1) {

if (k == -1)

break;

int l = insertData.checking(mas, k);

if (l == 0) {

vs.get(0).setId(stp.getId());

vs.get(0).setName(stp.getName());

vs.get(0).setLatLng(stp.getLatLng());

} else {

if (l == 1) {

vs.get(1).setId(stp.getId());

vs.get(1).setName(stp.getName());

vs.get(1).setLatLng(stp.getLatLng());

} else if (l == 2) {

vs.get(2).setId(stp.getId());

vs.get(2).setName(stp.getName());

vs.get(2).setLatLng(stp.getLatLng());

}

}

}

}

calculatingPortion(idInterest, idAge, idOccup, st, vs);

int kolvo = 1;

List<Stops> stp = mainEstimationMethod(idInterest, idAge, idOccup, st,

kolvo);

// Получение для остановки ближайших

ResultSet rs2 = st.executeQuery("select * from stops");

double[] mas2 = new double[3];

List<Stops> vs2 = new ArrayList<Stops>();

for (int i=0; i<2; i++)

vs2.add(new Stops());

while (rs2.next()) {

Stops stp2 = new Stops();

stp2.setId(rs2.getString(1));

stp2.setName(rs2.getString(2));

stp2.setLatLng(rs2.getString(3));

k = insertData.gettingStopsForOrg(stp.get(0).getLatLng(), stp2

.getLatLng());

if (k != -1) {

if (k == -1)

break;

int l = insertData.checking2(mas2, k);

if (l == 0) {

vs2.get(0).setId(stp2.getId());

vs2.get(0).setName(stp2.getName());

vs2.get(0).setLatLng(stp2.getLatLng());

} else {

if (l == 1) {

vs2.get(1).setId(stp2.getId());

vs2.get(1).setName(stp2.getName());

vs2.get(1).setLatLng(stp2.getLatLng());

}

}

}

}

calculatingPortion(idInterest, idAge, idOccup, st, vs2);

Double resVs = vs.get(0).getRes() +vs.get(1).getRes() + vs.get(2).getRes();

Double resVs2 = vs2.get(0).getRes() + vs2.get(1).getRes() + stp.get(0).getRes();// самая

// большая

model.currentStop.add(0.3*(vs.get(0).getPortInterest()+vs.get(1).getPortInterest()+vs.get(2).getPortInterest()));

model.currentStop.add(0.1*(vs.get(0).getPortAge()+vs.get(1).getPortAge()+vs.get(2).getPortAge()));

model.currentStop.add(0.1*(vs.get(0).getPortOccup()+vs.get(1).getPortOccup()+vs.get(2).getPortOccup()));

model.bestStop.add(0.3*(vs2.get(0).getPortInterest()+vs2.get(1).getPortInterest()+stp.get(0).getPortInterest()));

model.bestStop.add(0.1*(vs2.get(0).getPortAge()+vs2.get(1).getPortAge()+stp.get(0).getPortAge()));

model.bestStop.add(0.1*(vs2.get(0).getPortOccup()+vs2.get(1).getPortOccup()+stp.get(0).getPortOccup()));

double itog = resVs / resVs2;

if (itog >= 0.4)

answer = "Прибыльное";

else

answer = "Убыточное";

cnt.disconnect();

return answer;

Листинг H.4. Реализация алгоритма без указания адреса

public static List<Areas> запросВыборкиОстановокПоКатегориям(

int idInterest, int idAge, int idOccup) throws SQLException {

ConnectToMSSQL cnt = new ConnectToMSSQL();

cnt.createCon();

Connection c = cnt.con;

Statement st = c.createStatement();

List<Areas> areas = new ArrayList<Areas>();

int kolvo = 5;

List<Stops> stp = mainEstimationMethod(idInterest, idAge, idOccup, st,

kolvo);

for (Stops s: stp) {

Areas area = new Areas();

ResultSet rs2 = st.executeQuery("select * from stops");

double[] mas2 = new double[2];

List<Stops> vs2 = new ArrayList<Stops>();

for (int i = 0; i < 2; i++)

vs2.add(new Stops());

double k = -1;

while (rs2.next()) {

Stops stp2 = new Stops();

stp2.setId(rs2.getString(1));

stp2.setName(rs2.getString(2));

stp2.setLatLng(rs2.getString(3));

k = insertData.gettingStopsForOrg(s.getLatLng(), stp2

.getLatLng());

if (k != -1) {

if (k == -1)

break;

int l = insertData.checking2(mas2, k);

if (l == 0) {

String id = stp2.getId();

vs2.get(0).setId(id);

vs2.get(0).setName(stp2.getName());

vs2.get(0).setLatLng(stp2.getLatLng());

} else {

if (l == 1) {

vs2.get(1).setId(stp2.getId());

vs2.get(1).setName(stp2.getName());

vs2.get(1).setLatLng(stp2.getLatLng());

}

}

}

}

calculatingPortion(idInterest, idAge, idOccup, st, vs2);

Double resVs = vs2.get(0).getRes() + vs2.get(1).getRes()

+ s.getRes();

List<Stops> lst = new ArrayList<Stops>();

lst.add(s);

lst.add(vs2.get(0));

lst.add(vs2.get(1));

Collections.sort(lst);

area.setStp(lst);

area.setPortion(resVs);

areas.add(area);

}

Collections.sort(areas);

cnt.disconnect();

return areas;

}

}

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


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

  • Принципы и способы электронной торговли. Требования к разработке гипертекстовой информации для размещения в сети Интернет. Маркетинговые исследования в сфере розничной продажи в магазине обуви города Россошь. Структура сайта розничной торговли магазина.

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

  • Разработка стратегии и выбор способа автоматизации задачи снабжения для предприятия. Построение функциональной модели бизнес-процессов предметной области. Создание программного средства "1С: Конфигурация ОМТС" для оптимального решения задач снабжения.

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

  • Бизнес-процессы деятельности склада фирмы розничной торговли. Диаграмма прецедентов (приемки товара), активности и последовательности. Список классификационных справочников. Объектно-ориентированная модель программного продукта, основные диаграммы.

    контрольная работа [414,7 K], добавлен 17.06.2012

  • Создание базы данных для ведения учёта товаров и услуг на предприятиях розничной торговли на примере компании "Евросеть СПБ". Экономическая сущность задач учета складских операций. Документальное оформление приёмки товаров. Среда создания базы данных.

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

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

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

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

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

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

    курсовая работа [810,7 K], добавлен 28.12.2010

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

    курсовая работа [926,7 K], добавлен 20.05.2015

  • Разработка программного средства для поиска альтернативных решений многокритериальных задач. Проектирование программного средства с помощью объектно-ориентированного подхода. Пример листинга программного кода. Особенности работы программы на примере.

    контрольная работа [346,5 K], добавлен 11.06.2011

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

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

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