Сохрани и опубликуйсвоё исследование
О проекте | Cоглашение | Партнёры
Выпускная квалификационная работа 09.03.03 Прикладная информатика
Источник: Белгородский государственный университет - национальный исследовательский университет (НИУ «БелГУ»)
Комментировать 0
Рецензировать 0
Скачать - 3,0 МБ
Enter the password to open this PDF file:
-
ФФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ» ( Н И У « Б е л Г У » ) ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК Кафедра прикладной информатики и информационных технологий Разработка web-сайта оптово-розничной фирмы по торговле кондитерскими изделиями «ИП Бровков Г.Е». Выпускная квалификационная работа студента очной формы обучения направления подготовки 09.03.03. Прикладная информатика 4 курса группы 07001204 Донцова Андрея Михайловича Научный руководитель к.г.н., доцент Петина М.А. БЕЛГОРОД 2016
СОДЕРЖАНИЕ Введение ............................................................................................................... 4 1 Аналитическая часть ........................................................................................ 7 1.1 Технико-экономическая характеристика предметной области ............. 7 1.1.1 Характеристика организации .............................................................. 7 1.1.2 Краткая характеристика подразделения или видов его деятельности .................................................................................................. 9 1.2 Экономическая сущность задачи ............................................................ 12 1.3 Обоснование необходимости и цели использования вычислительной техники для решения задачи ......................................................................... 13 1.4 Постановка задачи .................................................................................... 19 1.4.1 Цель и назначение автоматизированного варианта решения задачи ....................................................................................................................... 19 1.4.2 Общая характеристика организации решения задачи на ЭВМ ..... 19 1.5 Анализ существующих разработок и обоснование выбора технологии проектирования............................................................................................... 22 2 Обоснование проектных решений ................................................................ 27 2.1 Обоснование проектных решений по техническому обеспечению .... 27 2.2 Обоснование проектных решений по информационному обеспечению .......................................................................................................................... 29 2.3 Обоснование проектных решений по программному обеспечению .. 31 2.4 Обоснование проектных решений по технологическому обеспечению .......................................................................................................................... 38 2.5 Обоснование выбора программных средств ......................................... 40 3 Проектная часть.............................................................................................. 44 3.1 Информационное обеспечение задачи «Разработка web-сайта оптоворозничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» ................................................................................................................. 44 3.1.1 Информационная модель и ее описание ............................................ 44 2
3.1.2 Характеристика первичных документов с нормативно-справочной и входной оперативной информацией ...................................................... 47 3.1.3 Характеристика базы данных ............................................................ 47 3.1.4 Характеристика результативной информации ................................ 52 3.2 Программное обеспечение задачи «Разработка web-сайта оптоворозничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» ................................................................................................................. 53 3.2.1 Общие положения .............................................................................. 53 3.2.2 Описание программных модулей ..................................................... 55 3.3 Технологическое обеспечение задачи «Разработка web-сайта оптоворозничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» ................................................................................................................. 61 3.4 Описание контрольного примера ........................................................... 62 3.5 Оценка экономической эффективности ................................................. 64 3.5.1 Целесообразность разработки с экономической точки зрения ..... 64 3.5.2 Выбор методики и расчет экономической эффективности разработки .................................................................................................... 66 Заключение ........................................................................................................ 79 Список использованных источников .............................................................. 81 Приложение А ................................................................................................... 85 Приложение Б .................................................................................................... 86 Приложение В.................................................................................................... 87 Приложение Г .................................................................................................... 90 Приложение Д.................................................................................................... 94 Приложение Е .................................................................................................... 96 Приложение Ж ................................................................................................... 97 Приложение К.................................................................................................. 119 Приложение Л.................................................................................................. 127 Приложение М ................................................................................................. 129 3
ВВЕДЕНИЕ Современные интернет технологии не стоят на месте. С каждым годом в свет выходят новые, более усовершенствованные, версии программ и различные проекты. И если еще 10 лет назад не каждая компания могла себе позволить собственный интернет сайт, то сегодня не осталось практически ни одного частного предпринимателя, который бы не реализовывал свои услуги или продукцию посредством интернет ресурса. Зачастую, если человек хочет приобрести какой-то товар, он в первую очередь заходит в интернет, чтобы определиться с моделью и её стоимостью, и только после этого решает, отправиться ли ему в магазин в её поисках или заказать её через интернет с доставкой на дом. Большинство пользователей выбирает второй вариант, поскольку разница в стоимости довольно не значительна, но таким образом они могут сэкономить свое время. Федеральная налоговая служба определяет наличие интернет-сайта и рекламы в средствах массовой информации как главные определяющие профессионализма и серьезного подхода к делу частных компаний. В противном случае глава ФНС призывает убедиться в том, что это не компания-однодневка. На сегодняшний день данные поисковых систем не соответствуют действительной численности частный предприятий в городах страны. Таким образом, актуальность создания сайта очевидна. Для каждой компании создание сайта - это огромное преимущество, поскольку за достаточно короткий срок клиентская база увеличится в разы. Сайт – является одним из эффективных инструментом рекламы, который позволяет сэкономить средства. Современные интернет технологии позволяют создавать сайт не только по шаблону, но и делать его уникальным, что значительно повышает его рейтинг. Актуальность выпускной квалификационной работы обусловлена тем, что в текущее время пользователям удобно заказывать продукцию или 4
смотреть информацию о компании через Интернет. Разработанный webсайт для организации ИП Бровков Г.Е. позволит повысить продажи и прибыль организации. Цель выпускной квалификационной работы – разработать web-сайт для оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е. Исходя из поставленной цели, определены следующие задачи: 1) Исследовать деятельность организации ИП Бровков Г.Е. «Конфеты оптом»; 2) Произвести функциональное моделирование каждого этапа деятельности организации ИП Бровков Г.Е. «Конфеты оптом»; 3) Проанализировать существующие web-сайты по продаже кондитерских изделий и продукции; 4) Описать технологии проектирования web-сайтов; 5) Дать техническое, технологическое, информационное и программное обоснование проектных решений; 6) Дать обоснование экономической эффективности проекта. Предмет исследования – технология проектирования и разработки сайтов для электронной коммерции. Объект исследования – ИП Бровков Г.Е. «Конфеты оптом». Информационной базой выступает первичные документы компании, внутренние регламенты, инструкции, положения, ГОСТы. В выпускной квалификационной работе будут рассмотрены следующие вопросы: 1) Почему появилась необходимость в проектировании и разработке web-сайта; 2) Почему была использована технология проектирования Webсайтов «с нуля» с использованием фреймворков; 3) Почему была выбрана интегрированная среда разработки PhpStorm; 5
4) Почему использовалась концепция проектирования Model-ViewController. В первом разделе (аналитическая часть) будут расписаны теоретические основы деятельности организации ИП Бровков Г.Е. «Конфеты оптом». Во втором разделе будет дано обоснование проектных решений по техническому, информационному, программному и технологическому обеспечению. Выбраны соответствующие инструменты и программные продукты для проектирования и разработки Web-сайта. В третьем разделе (проектная часть) будет описано, каким образом будет происходить разработка Web-сайта. В данном разделе будет построена инфологическая модель данных, дана характеристика первичных документов и результативной информации, также в данном разделе будет рассмотрен контрольный пример работы web-сайта – процесс демонстрации электронного каталога с возможностью оставить заявку на приобретение кондитерского изделия. Будет обоснована целесообразность разработки с экономической токи; выбрана методика и произведен расчет экономической эффективности разработки. В ходе выполнения выпускной квалификационной работы будет разработан Web-сайт. Выпускная квалификационная работа состоит из 3 разделов, введения, заключения, списка использованных источников и приложений. Количество страниц 85, рисунков 16, приложений 10. 6
1 АНАЛИТИЧЕСКАЯ ЧАСТЬ 1.1 Технико-экономическая характеристика предметной области 1.1.1 Характеристика организации ИП Бровков Г.Е. «Конфеты Оптом» –оптово-розничная организация по торговлепеченьем, конфетами и другими кондитерские изделиями в магазины, оптовые склады. Полное наименование организации –индивидуальный предприниматель Бровков Геннадий Егорович. Действует с 19.10.2004 года. Юридический адрес организации – г. Белгород, Корочанская 85а. Основноенаправение деятельности – розничная торговля сахаристыми кондитерскими изделиями, включая шоколад. Ассортимент ИП Бровков Г.Е. «Конфеты оптом» насчитывает более 5000 наименований. Вся продукция разделена на следующие категории: печенье, мармелад, зефир, пряники, сушки, торты, шоколад, конфеты, вафли и др. Продукция хранится на складах площадью 700 кв.м. При приемке товаров в магазине устанавливают соответствие количества, качества и комплектности сопроводительным документам, ГОСТам, техническим условиям. Принимают товар кладовщики, на которых возложена материальная ответственность за их сохранность. Приемке и оприходованию подлежат только доброкачественные товары. Приемка товаров по количеству заключается в сопоставлении веса, числа мест, единиц товара с данными сопроводительных документов и маркировки на товаре и таре. Приемка производится по товарнотранспортным накладным, счетам-фактурам и другим сопроводительным 7
документам. В случае отсутствия сопроводительных документов приемка производится в установленном порядке, но составляется акт о фактическом количестве и качестве товаров. Перед подачей в выставочный зал большинство продовольственных товаров подготавливают Предварительная способствует в подготовка сокращению специальном повышает потерь помещении склада. производительность товара, увеличению труда, пропускной способности выставочного зала, лучшему использованию площади, облегчает труд менеджеров. Предварительная подготовка к продаже кондитерских товаров состоит из следующих операций: распаковка товаров и освобождение их от тары, проверка цен на некоторые товары, сортировка, фасовка, приготовление наборов, обвязка коробок, выкладка. Реклама и продажа кондитерской продукции – это наиболее ответственная операция, так как связана она с непосредственным обслуживанием клиентов. Процесс рекламирования и продажи продукции состоит из следующих элементов: а) Встреча клиента и предоставление ему необходимой информации; б) Предложение и показ товаров, консультация; в) Подсчет стоимости товаров; г) Оплата купленных товаров; д) Упаковка приобретенных товаров и укладка либо доставка до необходимого места. Основными индивидуальные клиентами являются предприниматели розничные общественного торговые центры и частные физические лица. 8 магазины, питания, мелкие
1.1.2 Краткая характеристика подразделения или видов его деятельности Структура управления организации ИП Бровков Г.Е. «Конфеты оптом» представлена линейно-функциональной структурой управления. Это наиболее распространенный вид иерархических структур, когда структура органов управления состоит из линейных подразделений, осуществляющих в организации основную работу и обслуживающие функциональные подразделения. В данной структуре управления линейные звенья принимают решения, а функциональные подразделения информируют и помогают линейному руководителю вырабатывать и принимать конкретные решения. В приложении А представлена схема организационной структуры управления организации ИП Бровков Г.Е. «Конфеты оптом». Главным линейным звеном является директор. Вторым по значимости линейным звеном является руководитель по работе с поставщиками и производителями. Данные элементы структуры принимают основные решения, которые влияют на работу организации. Функциональными подразделениями являются: отдел сбыта, склад, бухгалтерия, отдел логистики. За счет данных подразделений происходят основные операционные процессы в организации. Достоинства рассматриваемой организационной структуры управления: улучшение координации деятельности в функциональных областях; адекватная и эффективная производственная реакция организации; уменьшение дублирования в функциональных областях. Недостатки линейно-функциональной 9 структуры управления
следующие: отсутствие тесных взаимосвязей и взаимодействий на горизонтальном уровне; ориентация подразделений на свои локальные цели, а не цели организации в целом; слабая инновационная и предпринимательская активность организации. Финансовый директор – следит за финансовым состоянием предприятия в целом. Задачи, стоящие перед финансовым директором: стратегическое планирование финансовой деятельности компании, налоговое планирование; анализ финансово-хозяйственной деятельности компании, разработка финансовой политики; контроль работы бухгалтерии, экономического и финансового отделов; внедрение системы бюджетирования; формирование консолидированной отчетности; постановка управленческого учета; оценка финансовых рисков; кредитование и управление денежными потоками компании; автоматизация работы финансового отдела и внедрение ERP. Директор по работе с поставщиками и производителями решает следующие задачи: организует и лично руководит закупками товара по всему торговому ассортименту организации; формирует ассортимент, определяет объемы закупки и участвует в ценообразовании; обеспечивает максимальную конкурентоспособность цен и 10
условий на закупаемую продукцию; обеспечивает выполнение целевых показателей по марже, при сохранении конкурентоспособности выходных цен организации. Директору по работе с поставщиками и производителями подчиняется отдел логистики. К функциям отдела относится: поддержание стандартов обслуживания потребителей; управление закупками; транспортировку; управление запасами; управление процедурами заказов; управление производственными процедурами; ценообразование; физическое распределение. Финансовому директору подчиняется отдел сбыта, который выполняет следующие задачи: продажа – продажа товара, исследование покупателей, оптовиков, дилеров, организация обратной связи для планирования сбытовой деятельности; обеспечение качества сервисного обслуживания – предложения по улучшению сервиса, приём и обработка рекламаций; подготовка информации – организация обратной связи с посредниками, подготовка данных для маркетинга; административная поддержка сбытовой деятельности – обработка бумажных потоков, контроль дебиторской задолженности, обеспечение организационной поддержки. На складе поступающей и сотрудники отгружаемой занимаются контролем качества продукции, фасовщики, которые упаковывают продукцию в коробки для доставки покупателю и кладовщики, которые ведут учет запасов и хранения кондитерской и 11
другой продукции. Бухгалтерия занимается учетом финансово-хозяйственной деятельности организации ИП Бровков Г.Е. «Конфеты оптом», а такжевыполняет следующие функции: организация взаимоотношений организации с другими субъектами хозяйствования; поиск внутренних и внешних краткосрочных и долгосрочных источников финансирования, выбор оптимального их сочетания; своевременное обеспечение финансовыми ресурсами текущей деятельности организации; эффективное использование финансовых ресурсов для достижения стратегических и тактических целей организации; сохранение и рациональное использование основного и оборотного капитала, собственного и заемного капитала; обеспечение своевременности платежей по обязательствам организации. 1.2 Экономическая сущность задачи Для определения экономической сущности задачи необходимо рассмотреть деятельность объекта исследования – организация ИП Бровков Г.Е. «Конфеты оптом», а именно: Анализ деятельности организации ИП Бровков Г.Е. «Конфеты оптом»; Анализ процессов и инструментов для проектирования и разработкиweb-сайта. Для анализа деятельности организации ИП Бровков Г.Е. «Конфеты оптом» необходимо: Исследовать и проанализировать первичные документы; 12
Произвести функциональное моделирование деятельности объекта исследования. Для проектирования и разработки web-сайта необходимо: Изучить техническую литературу по проектированию и разработке web-сайтов; Изучить интегрированные среды разработки для web- проектирования, системы управления сайтами. Экономическая сущность заключается в том, что организация на данный момент не имеет площадку электронной коммерции (web-сайт или интернет-магазин) в сети Интернет. На сегодняшний день технологии и возможности Интернета оказывают большее влияние на жителей страны. Покупатели охотнее обращаются к web-сайтам и интернет-магазинам за информацией, услугой или товаром. Разработкаweb-сайта для ИП Бровков Г.Е. «Конфеты оптом» позволит повысит эффективность работы организации, рост продаж, конкурентоспособность и авторитет компании на рынке кондитерских изделий. 1.3 Обоснование необходимости и цели использования вычислительной техники для решения задачи Для обоснования необходимости использования вычислительной техники для решения поставленных задач необходимо произвести структурно-функциональный анализ деятельности организации ИП Бровков Г.Е. «Конфеты оптом». На рисунке 1.1 представлена контекстная диаграмма «Деятельность «Конфеты Оптом»». 13
US E D A T : A UT HOR: А ндрей DA T E :03.04.2016 W ORK ING P ROJ E CT: Деяталельнос ть Конфеты Оптом RE V : 06.06.2016 DRA FT RE A DE R DA T E CONT E X T: TOP RE COMMENDE D NOT E S : 1 2 3 4 5 6 7 8 9 10 P UB LICA TION Накладная и акт пос тавки Денежные с редс тва 0р. 1 Клиенты 0 Заявка 3 Продукция Накладная Деятельность "Конфеты Оптом" Поставщики Заявка на пос тавку Кондитерс кие изделия Денежные с редс тва Отчетнос ть Налоговые отчис ления Формы отчетнос ти 2 Налоговые органы NODE : T IT LE : Деят ельност ь "Конфет ы Опт ом" NUMB E R: A-0 Рисунок 1.1 – Контекстная диаграмма «Деятельность «Конфеты Оптом»» Бизнес процесс описывает деятельность компании ИП Бровков Г.Е. «Конфеты оптом». Для изучения бизнес процесса необходимо произвести декомпозицию контекстной диаграммы на сущности и связи. На рисунке 1.2 представлена декомпозиция диаграммы «Деятельность «Конфеты оптом». 14
USED AT: AUTHOR: Андрей DATE: 03.04. 2016 WORKING PROJECT: Деятал ельность Конфеты Оптом REV: DRAFT 06.06. 2016 READER DATE CONTEXT: RECOMMENDED NOTES: 1 2 3 4 5 6 7 8 9 10 PUBLICATION A-0 Денежные средства 0р. Заявк а 1 Отдел продаж Оформл енный заказ 0р. 2 Денежные средства Информация о продукции Первичные данные по заказу Бухгалтерия Налоговые отчисления Заявк а поставщику 1 База данных Обработанные данные по заказу Данные по остаткам со скл ада Заявк а на выдачу продукции 0р. Отчетность Продукция 3 Продукция 0р. Отдел логистики 4 Склад Накладная поставщика Накладная 0р. Данные получателя 5 Отдел доставки Кондитерские изделия Заявк а на поставку Накладная Накладная и ак т поставки Кондитерские изделия Формы отчетности NODE: TI TLE: Деятельность "Конфеты Оптом" NUMBER: A0 Рисунок 1.2 – Детализация контекстной диаграммы «Деятельность «Конфеты оптом»» Бизнес процесс выглядит следующим образом: 1) Клиент посещает отдел продаж, где оформляет заявку на поставку кондитерских изделий и оплачивает её через бухгалтерию. 2) Оформленный заказ заносится в БД отделом продаж; 3) Бухгалтерия получает из БД первичные данные и проверяет, оплачен ли заказ; 4) Если заказ оплачен, и на складе присутствует данная кондитерская продукция, то бухгалтерия оформляет заявку на выдачу продукции на складе. Иначе бухгалтерия оформляет заявку поставщику на доставку изделий и продукции, отсутствующих на складе, и передает ее в отдел логистики. 5) Отдел взаимодействует с производителями и поставщиками, а те в свою очередь поставляют готовую продукцию в необходимом количестве на склад ИП Бровков Г.Е. «Конфеты оптом»; 15
На 6) складе отгружается полученная продукция и подготавливается к выдаче клиенту; При необходимости курьеры ИП Бровков Г.Е. «Конфеты 7) Оптом» доставляют всю партию клиента по необходимому адресу. На рисунке 1.3 представлена декомпозиция блока «Отдел продаж» в нотации IDEF3. USED AT: AUTHOR: Андрей DATE: 03.04. 2016 WORKING PROJECT: Деятал ельность Конфеты Оптом REV: DRAFT 06.06. 2016 READER DATE CONTEXT: RECOMMENDED NOTES: 1 2 3 4 5 6 7 8 9 10 PUBLICATION A0 0р. 0р. Добавление зак аза Анализ заявк и Заявк а Оформл енный заказ 8 1 0р. 0р. Запол нение данных заказчика Дегустация и демонстрация конд. изд елий 5 3 0р. & J5 0р. 0р. Консультация кл иента Оформл ение заказа & & 21 J1 J6 2 & Запол нение заявки J2 6 0р. 0р. Оплата Получение первичных данных от кл иента 7 4 NODE: TI TLE: Отдел продаж NUMBER: A.1.1 Рисунок 1.3 – Декомпозиция А1.1 блока «Отдел продаж» в нотации IDEF3 Сначала обрабатывается заявка от клиента. Клиенту предоставляется консультация по готовой продукции. В выставочном зале клиент может продегустировать любое изделие. Для совершения покупки клиент обязан предоставить следующие данные: фамилия и инициалы, контактные данные (телефон, email); Выбранные кондитерские изделия (артикул товара, количество); 16
Дата отгрузки; Для доставки до определенного адреса – адрес доставки. Далее клиент совершает оплату оформленного заказа. После того, как все данные будут заполнены – оформляется заказ, который поступает в БД «Конфеты Оптом». На рисунке 1.4 представлена декомпозиция блока «Бухгалтерия». US E D A T : A UT HOR: А ндрей DA T E :03.04.2016 W ORK ING P ROJ E CT: Деяталельнос ть Конфеты Оптом RE V : 06.06.2016 DRA FT RE A DE R DA T E CONT E X T: RE COMMENDE D NOT E S : 1 2 3 4 5 6 7 8 9 10 P UB LICA TION 0р. Денеж ные с редс тва 0р. Подготовка документов пос тавщику для оформления заказа на пос тавку Новый заказ требующий пос тавки конд.изделий от пос тавщика Денеж ные с редс тва A0 11 12 Обработанные данные по заказу 0р. Обработка первичных данных 0р. 0р. А нализ накладной пос тупивших конд.изделий X 10 J3 Формы отчетнос ти Подготовка документов к выдаче конд. изделий 13 14 0р. 15 Подготовка налоговой отчетнос ти T IT LE : Налоговые отчис ления 23 24 NODE : J4 Передача подготовленных данных 0р. Обработка форм наголовой отчетнос ти Первичные данные по заказу 0р. X Бухгалт ерия NUMB E R: A.2.1 Рисунок 1.4 – Декомпозиция А2.1 блока «Бухгалтерия» в нотации IDEF3 Диаграмма декомпозиции блока «Бухгалтерия» разработана с помощью нотации IDEF3. На рисунке 1.5 проиллюстрирована детализация блока «Склад». 17
USED AT: AUTHOR: Андрей DATE: 03.04. 2016 WORKING PROJECT: Деятал ельность Конфеты Оптом REV: DRAFT 06.06. 2016 READER DATE CONTEXT: RECOMMENDED NOTES: 1 2 3 4 5 6 7 8 9 10 PUBLICATION A0 Заявк а на выдачу продукции 0р. Данные по остаткам со ск лад а 4 Анализ заявки на выдачу 0р. 5 Накладная Подготовка конд. изд елий к выд аче Данные получателя 1 База данных 0р. Кондитерские изделия 3 Размещение продук ции дл я хранения на ск лад е Продукция 0р. 1 Приемка продукции от поставщика Накладная поставщика NODE: TI TLE: 0р. 2 Контроль качества Склад NUMBER: A4 Рисунок 1.5 – Декомпозиция А4 блока «Склад» в нотации DFD На текущий момент, перед организацией существует проблема низкой конкурентоспособности и эффективности работы из-за отсутствия своего сайта в сети Интернет, а именно: 1) Отсутствие площадки для электронной коммерции; 2) Отсутствие информации о компании на тематических сайтах, в интернет каталогах и других ресурсах сети Интернет; 3) Отсутствие электронного каталога продаваемой продукции (наименование, фотография, описание, цена); 4) Отсутствие возможности оформления заказа с помощью сети Интернет или другим электронным способом для клиента. 18
1.4 Постановка задачи 1.4.1 Цель и назначение автоматизированного варианта решения задачи Целью и назначениемавтоматизированного варианта решения задачи является разработка программного продукта, который повысит: 1) конкурентоспособность и рейтинг компании за счет распространения информации об организации в сети Интернет, а именно создание страницы с отзывами клиентов, наградами и грамотами, гарантиями качества. 2) количество заказов и рост продаж за счет площадки электронной коммерции в сети Интернет с возможностью онлайн оформления заказа; 3) мобильность и удобство работы с электронным каталогом продукции организации за счет локальной версии сайта (без наличия доступа в сети Интернет). 1.4.2 Общая характеристика организации решения задачи на ЭВМ Программным продуктом будет являться web-сайт, размещенный на хостинге в сети Интернет. Данный web-сайт не будет работать с базой данных программного продукта для учета и ведения заказов ИП Бровков Г.Е. «Конфеты оптом», которая используется в текущей технологии работы организации, из-за её закрытости. Поэтому на web-сайте не будет представлена актуальная информация о наличии товаров. Задача состоит в реализации возможности бронирования и оплаты товаров. Средой разработки web-сайта будет являться JetBrains PhpStorm – коммерческая кроссплатформеннаяинтегрированная среда разработкидля 19
PHP. PhpStorm представляет дляPHP,HTMLиJavaScript с предотвращения собой интеллектуальныйредактор возможностями ошибок анализа кода в на лету, коде автоматизированнымисредствамирефакторингадля и PHP и JavaScript.Автодополнениекода в PhpStorm поддерживает спецификацию PHP 5.3, 5.4, 5.5 и 5.6 (современные и традиционные проекты), включая генераторы, сопрограммы, пространства имен, замыкания, типажи и синтаксис коротких массивов. Имеется полноценныйSQL-редактор с возможностью редактирования полученных результатов запросов В процессе проектирования архитекутры приложения проектируется макет web-сайта из html, css и js файлов. Для макетирования сайта будет использоваться фреймворк Bootstrap–свободный набор инструментов для создания сайтов и Web-приложений. Включает в себя HTML и CSS шаблоны оформления длятипографики, Web-форм, кнопок, меток, блоков навигации и прочих компонентов Web-интерфейса, включаяJavaScript-расширения. Локальным тестирования сайта сервером для проектирования, будет являться web-сервер разработки Denwer – и набор дистрибутивов (локальный сервер WAMP) и программная оболочка, предназначенные для создания и отладки сайтов (Web-приложений, прочего динамического содержимого интернет-страниц) на локальном ПК (без необходимости подключения к сети Интернет) под управлением ОС Windows. С помощью данного web-сервера проектирование сайта будет удобным, а отладка ошибок будет эффективной. Пакет Denwer состоит из: Web-серверApacheсподдержкойSSI,SSL, mod_rewrite, mod_php; Интерпретатор PHP с поддержкой GD, MySQL, SQLite; СУБД MySQL с поддержкой транзакций (mysqld-max); Система управления виртуальными 20 хостами, основанная
на шаблонах; Система управления запуском и завершением; Панель phpMyAdmin для администрирования СУБД; Ядро интерпретатора Perl без стандартных библиотек (поставляются отдельно); Эмулятор sendmail и сервера SMTP с поддержкой работы совместно с PHP, Perl, Parser и др; Установщик. В основе идеологии проектирования web-сайта будет заложен шаблон MVC проектирования, – это с схема использования помощью которых нескольких шаблонов модель приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные. Концепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента: Модель; Представление, вид; Контроллер. Готовый web-сайт будет располагаться на хостинге в сети Интернет. Пользователь сможет посетить сайт, набравв адресной строке его домен. Любое действие пользователя на сайте – это запрос к web-серверу. Данный запрос обрабатывает Контроллерweb-сайта. Он определяет, что необходимо пользователю и отправляет команду в Модель. Модель формирует необходимые данные и отправляет в Контроллер. После этого Контроллер полученные данные обрабатывает и отправляет массив данных в Представление, который с помощью цикла и условий выводит необходимые записи и показывает страницу пользователю. Решения поставленной задачи организуется следующим образом: 21
а) Изучение технической литературы для проектирования webсайта; б) Определение необходимых функций web-сайта; в) Моделирование функциональных диаграмм web-сайта; г) Проектирование web-страниц; д) Разработка web-сайта; е) Отладка работы web-сайта, отображения страниц и работы в целом; ж) Внедрение web-сайта в деятельность ИП Бровков Г.Е. «Конфеты оптом». Продолжительность выполнения этапов занимает 14 календарных дня. 1.5 Анализ существующих разработок и обоснование выбора технологии проектирования При проектировании и разработки любого программного продукта необходимо оценить и проанализировать существующие готовые разработки. На основе полученных результатов анализа можно сделать вывод о том, как будет выглядеть, какие функции будет выполнять и какие задачи будет решать разработанный web-сайт. Для анализа будет рассмотрено 3 web-сайта, посвященные продаже кондитерских изделий, печенья и конфет: Магазин кондитерских изделий Сказка, http://skazkatd.ru/ (рисунок 1.6); Фабрика печенья Авангард, http://www.avangard-pf.ru/ (рисунок 1.7); Оптовая Компания ООО Паллада, http://www.pallada-mo.ru/ (рисунок 1.8). 22
Рисунок 1.6 – Магазин кондитерских изделий Сказка, http://skazkatd.ru/ Рисунок 1.7 – Фабрика печенья Авангард, http://www.avangard-pf.ru/ Рисунок 1.8 – Оптовая Компания ООО Паллада, http://www.pallada-mo.ru/ 23
На рассматриваемых будут web-сайтах проанализированы следующие характеристики: Эргономичный дизайн; Наличие электронного каталога с названием, описанием, фотографией, ценой; Возможность оформить заказ онлайн; Возможность безналичной оплаты онлайн; Возможность отправить заявку менеджеру. Для оценки характеристик будет использоваться 5 бальная шкала, где 1 – функция отсутствует, а 5 – функция есть. В таблице Б.1 приложения Б представлено сравнение характеристик рассматриваемыхweb-сайтов. По анализу сайтов сделаны следующие выводы: Оптимальным сайтом является сайт оптовой компании Паллада, http://www.pallada-mo.ru/– данный сайт имеет функционал для просмотра кондитерских изделий, печенья и конфет с возможностью оставить заявку на приобретение интересующей продукции. Недостаток сайта заключается в устаревшем дизайне, из-за чего конверсия продаж не растет. Оптимальный дизайн представлен сайтом Фабрика печенья Авангард, http://www.avangard-pf.ru/. Проектирование и разработка сайта достаточно трудоемкий и долгий процесс. Выбор подходящей технологии проектирования определяет: Как быстро будет происходить разработка сайта; Возможность доработки и оптимизации кода; Возможность отладки кода и быстрого исправления ошибок. На практике существует 3 технологии проектирования: Проектирование «с нуля»; Проектирование «с нуля», но с использованием фреймворков 24
(frameworks); Проектирование с использование готовых систем управления сайтамиCMS; Проектирование«с нуля» заключается в разработке сайта с «чистого листа». В данной технологии необходимо описывать каждую функцию сайта, метод, алгоритм, каждую страницу сайта, функции, классы, продумывать бизнес-логикуполностью «с нуля». Это долгий трудоемкий процесс, но более свободный и независимый. Проектирование «с нуля», но с использованием фреймворков заключается в том, что сайт также проектируется «с нуля», но используются готовые решения и модули, где уже все необходимые функции, методы и алгоритмы описаны и протестированы. Ещё преимущество в том, что фреймворки постоянно обновляются и дорабатываются, поэтому они всегда актуальны, а в случае проблем проектировании можно найти справочный материал или обратиться в поддержку. Сложность в использовании фреймворков больше, т.к. тут необходимо знать основы языков программирования и принципы ООП. Но фреймворки предоставляют огромный потенциал как для сайтов, так и для Web-приложений. Фреймворки также автоматизируют многие этапы разработки сайта. Популярные php-фреймворки: ZendFramework, Symfony, Yii. Популярные css-фреймворки и js-фреймворки: Bootstrap, Angular.js. Использование систем управления сайтами. Это информационнаясистема или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом (то есть содержимым). Основные функции CMS: Предоставление инструментов для создания содержимого, организация совместной работы над содержимым; Управление содержимым: хранение, контроль версий, соблюдение режима доступа, управление потоком документов и т. п.; Публикация содержимого; 25
Представление информации в виде, удобном для навигации, поиска. Таким образом, система управления сайтом (контентом) позволяет в минимальные сроки разработать сайт (часто в автоматическом режиме) по определенному готовому шаблону. Сложность здесь в том, что данные CMS необходимо изучать, чтобы с ними можно было полноценно работать. Одни из самых популярных систем управления сайтом (контентом): Joomla!, WordPress, 1С Битрикс. Для проектирования web-сайта будет использоваться технология проектирования «с нуля» с использованием фреймворков. Выводы: Была изучена и проанализирована деятельность организации ИП Бровков Г.Е. «Конфеты оптом». Проанализированы первичные документы. Описан процесс оформления заказа, поставки, приемки, упаковки и доставки кондитерских изделий и продукции клиенту. Были рассмотрены существующие web-сайты и дана характеристика их структуре и выполняемым функциям. Проанализированы технологии проектирования web-сайтов и дан выбор в пользу технологии проектирования «с нуля» с использованием фреймворков. Исследовав деятельность ИП Бровков Г.Е. «Конфеты оптом», возникла необходимость в разработке web-сайта для ведения торговли через сеть Интернет. Решение поставленной задачи организуется следующим образом: изучается технической литературы для проектирования web-сайта; определяются функциональных необходимые диаграмм функции web-сайта; web-сайта; моделируются проектируются web-страниц; разрабатывается web-сайта; отлаживается работа web-сайта, отображения страниц и работы в целом; внедряется web-сайт в деятельностьИП Бровков Г.Е. «Конфеты оптом». 26
2 ОБОСНОВАНИЕ ПРОЕКТНЫХ РЕШЕНИЙ 2.1 Обоснование проектных решений по техническому обеспечению Техническое обеспечение – это совокупность технической и сетевой инфраструктуры организации, обеспечивающая беспрерывную работу всей деятельности1. Техническое обеспечение информационных состоит из серверов, персональных компьютеров, систем хранения данных, сети и коммуникационных приложений2. Техническая инфраструктура организации ИП Бровков Г.Е. состоит из 12 блоков персональных компьютеров, принтеров, мониторов, устройств управления и ввода информации (мышь, клавиатура), компьютеров обладают коммутаторов и сетевых кабелей. Все блоки персональных средними характеристиками: процессорIntel Celeron 2х2700 LGA 1150МГц G1620 OEM; оперативная памяти DDR2объемом 2 Гб; сетевая плата Realtek PCIe GBE 1000 Мбит/с; жесткий диск HDDфирмы WDобъемом 200 Гб. Компьютер директора и главного бухгалтера обладают более мощными системными характеристиками: процессорIntel Core i3-4130 LGA 1150 2x3400 МГцOEM ; оперативная памяти DDR2объемом 8 Гб; сетевая плата Realtek PCIe GBE 1000 Мбит/с; жесткий диск HDDфирмы WDобъемом 1 Тб. Паттерсон Д., Хеннесси Дж. Архитектура компьютера и проектирование компьютерных систем. СПб.: Питер, 2013. С.126-129 2 Паттерсон Д., Хеннесси Дж. Архитектура компьютера и проектирование компьютерных систем. С.130 27 1
Все персональные компьютеры оснащены следующей технической периферией: мышь Logitech; клавиатураLogitech; монитор Samsung S20D300NH 19.5”; принтер LaserJet 1015; Все компьютеры образуют единую корпоративную сеть. Локальная сеть состоит из следующего оборудования и компонентов: два коммутатора D-Linkна 5 портов; витая пара RJ-45; Для работы разработанного средства необходимо: выделенный персональный компьютер со средними техническими характеристиками или сервер, который должен иметь доступ к сети Интернет; выделенный статический IP-адрес («белый адрес»), предоставляемый Интернет-провайдером за отдельную плату; источник бесперебойного питания, чтобы обеспечить стабильную работу разработанного программного средства и исключить критические ошибки, который бы позволил сотрудникам организации заблаговременно остановить работу программного средства при потери основного питания от источника электрической сети и оповестить клиентов. Таким образом, необходимо купить следующее оборудования: а) блок персонального компьютера со средними техническими характеристиками (AMD A4 6300, 2x3700 МГц, DDR3 4 Гб, HDD 500 Гб, RealtekPCIe GBE 1000 Мбит/с, Windows 764 bit) –20 000 руб. Данных технических характеристик достаточно для работы webсервера, кроме того можно дополнительно проинсталлировать интегрированную среду разработки для отладки и модернизации кода интернет-магазина. 28
б) источник бесперебойного питанияCyberPower VALUE800EI-B – 5000 руб. Данного оборудования достаточно, чтобы остановить работу webсервера и выключить персональный компьютер при возникновения сбоя с электричеством. Кроме того, данный блок обеспечит стабильное и ровное напряжение, чтобы персональный компьютер и его периферия не вышли из строя из-за короткого замыкания. в) Статический IP-адрес – 150 руб./мес. Наличие организовать собственного работу статического интернет-магазина. IP-адреса, На позволит интернет-магазин пользователи могут переходить по IP-адресу или DNS-имени. 2.2 Обоснование проектных решений по информационному обеспечению Информационное обеспечение – это совокупность массива данных (входные, промежуточные, выходные), программ для решения задач,систем классификации и кодирования оперативных документов, нормативно-справочной информации1. Одно из важных требований к информационному обеспечению – это достоверность данных информационной базы.Необходимая достоверность данных в информационных базах обеспечивается высокой степенью контроля на всех стадиях работы с данными2. Особенности технологии обработки данных связаны с такими факторами, как: функционирование в режиме диалога с пользователем, наличие накопителей информации, исключение бумажных технологий для обработки информации. Благодаря диалоговому режиму отсутствует четко установленная Овчинников В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. М.: Компания Спутник, 2015. С.121 2 Овчинников В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. С.144 29 1
заранее последовательность операций по обработке данных. В состав технологических операций входят: загрузка программы; ввод данных; контроль информации и возможность корректировки; справочно-информационное обслуживание; формирование информационных массивов; вывод информации. Существует несколько способов регистрации первичной информации1: документальный с регистрацией на машинном носителе; автоматический. В разработанном программном средстве будет использоваться оба способы регистрации информации. Ввод, обработка и выдача информации производятся в диалоговом режиме. В основе диалогового режима лежит динамическое взаимодействие интерфейса и пользователя посредством приема и передачи данных через устройства ввода/вывода. При диалоговом режиме обеспечивается поиск необходимой информации, быстрая обработка команд, сообщений, активное воздействие пользователя на ход обработки данных. Организация диалога осуществляется посредством установки связей между данными, которые представляют собой информационные модели. По способу установления связей между данными различают реляционную, иерархическую и сетевую модели2. Реляционная модель является простейшей и наиболее привычной формой представления данных в виде таблиц. Иерархическая и сетевая модели предполагают наличие связей 1 2 Берд Д. Веб-дизайн. Руководство разработчика. СПб. : Питер, 2012. С. 138 Берд Д. Веб-дизайн. Руководство разработчика. С. 169 30
между данными, имеющими какой-либо общий признак. В иерархической модели такие связи могут быть отражены в виде дерева-графа, в сетевой возможны связи «всех со всеми». В настоящее время реляционные системы лучше соответствуют техническим возможностям персональных компьютеров. Скоростные характеристики этих СУБД поддерживаются специальными средствами ускоренного доступа к информации – индексирование баз данных1. Таким образом, будет разработано программное средство с удобным интерфейсом для работы пользователя (клиента) и администратора (сотрудника). 2.3 Обоснование проектных решений по программному обеспечению Программное обеспечение – совокупность программ, обеспечивающих функционирование вычислительной системы (системное программное обеспечение), а также программ, предназначенных для решения конкретных задач пользователя (прикладное программное обеспечение)2. К выбираемому программному обеспечению в данном случае относятся операционная система (ОС) и среда программирования. Все ОС подразделяются на: однопользовательские и многопользовательские; однозадачные и многозадачные. Для работы интернет-магазина необходим web-сервер, который можно установить практически на любую операционную систему: Linux, MacOSX, Windows.В текущем проекты будет использоваться операицонная система Windows7. Дюбуа П. MySQL. М. : Вильямс, 2013. С.119. Смирнов, А. Архитектура вычислительных систем. М. : Эксмо, 2014. С.210 31 1 2
В качестве системы управления базами данных (СУБД) выбрана MySQL под Windows. Данная СУБД была выбрана, потому что1: MySQL запускается на любой операционной системе (Windows, Mac OS, Linux); Полнофункциональная MySQL полностью бесплатна, в отличие от MSSQL и других СУБД; Для работы требует низкое количество системных ресурсов; MySQL использует все web-хостинги; Подходит для высоконагруженных проектов, обладает высоким набором стандартных функций для работы с данными. Для удобной работы с СУБД MySQLбудет использоваться утилита phpMyAdmin –программа, написаннаянаPHPи предназначенная для управления сервером MySQL через локальную или Интернет сеть. Данная утилита поддерживает широкий набор операций над MySQL. Наиболее часто используемые операции поддерживаются с помощью пользовательского интерфейса (управление базами данных, таблицами, полями, связями, индексами, пользователями, правами, и т. д.), одновременно вы можете напрямую выполнить любой SQL запрос2. Возможности phpMyAdmin: интуитивно понятный Web-интерфейс поддержка большинства функций MySQL: просмотр и удаление баз данных, таблиц, вьюшек, полей и индексов, создание, копирование, удаление, переименование и изменение баз данных, таблиц, полей и индексов, управление сервером, базами данных и таблицами, с советами по настройке сервера, выполнение, редакция и сохранение любого SQLвыражения, включая пакетные запросы, управление пользователями 1 2 Дари К., Баланеску Э. PHP и MySQL. Создание интернет-магазина. М. : Вильямс, 2014. С.236 Ульман Л. MySQL. Создание интернет-магазинов. М. : Вильямс, 2015. С.341. 32
MySQL и их привилегиями, работа с хранимыми процедурами и триггерами; поддержка импорта данных из CSV и SQL; поддержка экспорта в различные форматы CSV, SQL, XML, PDF, ISO/IEC 26300 - OpenDocument текст и таблицы, Word, Excel, LATEX и другие; администрирование нескольких серверов; генерирование наглядных схем баз данных в виде PDF; создание комплексных запросов с помощью функции Запрос по шаблону; глобальный или частичный поиск в базе данных. Для работы интернет-магазина необходим любой web-сервер: Apacheили IIS. Apache – это полнофункциональный, расширяемый Webсервер, полностью поддерживающий протокол HTTP/1.1 и распространяющийся с открытым исходным кодом. Сервер может работать практически на всех распространенных платформах. Существуют готовые исполняемые файлы сервера для Windows NT, Windows 9x, OS/2, Netware 5.x и нескольких UNIX-систем. При этом он очень прост в установке и конфигурации. Apache настраивается с помощью текстовых конфигурационных файлов. Основные параметры уже настроены «по умолчанию» и будут работать в большинстве случаев. Самая простая функция, которую может выполнять Apache – обслуживать HTML-сайт. При получении запроса на определенную страницу сервер отправляет в ее ответ браузеру1. Совместно с web-сервером Apacheнеобходимо использовать интерпретатор PHP –это серверный язык создания сценариев. Конструкции PHP, вставленные в HTML-текст, выполняются сервером при каждом посещении страницы. Результат их обработки вместе с HTML-текстом Хокинс С. Администрирование Web-сервера Apache и руководство по электронной коммерции. Москва: Диалектика, 2012. С.209 33 1
передается в браузер пользователю1. Выбранные программные обеспечения бесплатны. ПО должно быть проинсталлировано на выделенном персональном компьютере. Кроме вышеперечисленного программного обеспечения для работы с web-приложением компьютеры пользователей (клиентов) должны быть оснащены программами для просмотра web-сайтов, например: Google Chrome. Браузер, разрабатываемый компанией Googleна основе свободного браузера Chromium и движка Blink; Mozilla Firefox. Браузер нового поколения от Mozilla Foundation, обладающий высокой степенью безопасности, скорости работы, гибкостью и расширяемостью; Opera. Web-браузер и пакет прикладных программ для работы в Интернете, выпускаемый компанией Opera Software. По умолчанию у пользователей с операционной системой Windows установлен web-браузер InternetExplorer. Далее будет обоснован выбор программных средств проектирования и разработки интернет-магазина. Были рассмотрены несколько программных продуктов: MicrosoftOfficeFrontPage 2003 – это визуальный конструктор сайтов. Он подходит для создания простых сайтов, без использования мощных php-фреймворков. При разработке интернет-магазина с помощью данного программного средства могут возникнуть трудности при отладке кода (т.к. нету встроенного отладчика кода), будет затрачено большое время (т.к. нету авдополнения кода и перемещения между функциями), трудности организации архитектуры сайта из большого количества webстраниц. На рисунке В.1 в Приложении В представлен интерфейс MicrosoftOfficeFrontPage 20032. Мерсер, К. PHP 5 для начинающих. Москва: Вильямс, 2015. С.194 Бабаев А. Создание сайтов. М. : 2016. С.66 34 1 2
Adobe Dreamweaver CS6 – программное обеспечение для webдизайна и создания визуальных проектов. Программа Adobe Dreamweaver помогает разрабатывать реалистичную среду для интерактивного просмотра, управлять проектами на уровне пикселов или с помощью специально созданного кода. Встроенные подсказки в Adobe Dreamweaver позволяют более точно создавать код в HTML, JavaScript, Ajax, Spry, jQuery и Prototype. На рисунке В.2 Приложения В представлен интерфейс Adobe Dreamweaver CS61. Основныефункции Adobe Dreamweaver CS62: Поддержка CSS3/HTML5. Работа со стилями через панель CSS, в которой реализована поддержка CSS3. Создание кода с помощью технологии HTML5 с удобными подсказками по коду и визуализацией в представлении «Дизайн»; Интерактивный просмотр. Проверка страниц перед публикацией при помощи механизма рендера WebKit с поддержкой контента HTML5; Создание комплексных проектов. Разработка web-сайтов с бесплатными пробными версиями ПО, использование интегрированного решения электронной торговли Adobe Business Catalyst при создании коммерческих онлайн-проектов. Встроенная поддержка CMS-систем, включая WordPress, Joomla! и Drupal. Вывод подсказок по кодированию нестандартизированных файлов в Dreamweaver. Поддержка протоколов FTPS и FTPeS; Поддержка ведущих технологий. Дизайн и разработка в среде с поддержкой HTML, XHTML, CSS, XML, JavaScript, Ajax, PHP, Adobe ColdFusion и ASP; Интеграция с Adobe BrowserLab. Тестирование web-контента на различных web-браузерах и операционных системах; Бабаев А. Создание сайтов. М. : 2016. С.79 Бабаев А. Создание сайтов. М. : 2016. С.82 35 1 2
Поддержка передовых возможностей работы. Создание стандартного кода HTML5 и CSS3, в том числе с использованием переходов CSS3, при разработке онлайн-проектов. Внедрение webшрифтов и современной типографики в проекты. Добавление файлов FLV в любые web-страницы и создание кода на основе стандартов; JetBrains PhpStorm 9.0 – это интегрированная среда разработки на PHP с интеллектуальным редактором, которая глубоко понимает код, поддерживает PHP 7.0, 5.6, 5.5, 5.4 и 5.3 для современных и классических проектов, обеспечивает лучшее автодополнение кода, рефакторинги, предотвращение ошибок налету и поддерживает смешивание языков (см.рисунок В.3 Приложения В). Вданномпрограммномобеспечениеподдерживаютсяпередовыетехно логииWeb-разработки, включаяHTML5, CSS, Sass, SCSS, Less, Stylus, Compass, CoffeeScript, TypeScript, ECMAScriptHarmony, шаблоныJade, ZenCoding, Emmet, и, конечноже, JavaScript. PhpStorm включает в себя всю функциональность WebStorm(HTML/CSS редактор, JavaScript редактор) и добавляет полнофункциональную поддержку PHP и баз данных / SQL. Ключевые возможности: Интеллектуальный редактор PHP кода с подсветкой синтаксиса, автодополнением кода, расширенными настройками форматирования кода, предотвращением ошибок налету; Поддерживает PHP 7.0, 5.6, 5.5, 5.4 и5.3, генераторы, сопрограммы и все синтаксические улучшения; PHP рефакторинги, code (re)arranger, детектор дублируемого кода; Поддержка Vagrant, Composer, Command Line Tools, SSH консоль; 36 встроенный REST клиент,
Поддержкафреймворков (MVC view для Symfony2, Yii) испециализированныеплагиныдляведущих PHP фреймворков (Symfony, Magento, Drupal, Yii, CakePHP имногиедругие); Визуальный отладчик для PHP приложений, валидация конфигурации отладчика, PHPUnit с покрытием кода (поддержка PHPUnit 5), а также интеграция с профилировщиком; HTML, CSS, JavaScript редактор. Отладка и модульное тестирование для JS. Поддержка HTML5, CSS, Sass, SCSS, Less, Stylus, Compass, CoffeeScript, TypeScript, ECMAScript Harmony, Emmet и других передовых технологий Web-разработки; Полный набор инструментов для фронтенд-разработки; Поддержка стилей кода, встроенные стили PSR1/PSR2, Symfony2, Zend, Drupal и другие; Интеграция с системами управления версиями, включая унифицированный интерфейс; Удаленное развертывание приложений; Автоматическая синхронизация с использованием FTP, SFTP, FTPS и др.; Live Edit: изменения в коде можно мгновенно просмотреть в браузере без перезагрузки страницы; PHP UML; Интеграция с баг-трекерами; Инструменты работы с базами данных, SQL редактор; Кросс-платформенность (Windows, Mac OS X, Linux). Была выбрана интегрированная среда разработки JetBrains PhpStorm 9.0, потому что данный редактор отлично подойдет как для продвинутых web-разработчиков, так и для программиста с базовым уровнем html и css. Возможность автодополнения кода позволяет не запоминать все стандартные функции языкаphp, а лишь начинать писать 37
код и необходимый фрагмент кода вставится. Также данный среда разработки индексирует весь сайт, что позволяет быстро перемещаться между пользовательскими функциями и переменными для работы с ними. Кроме того, встроенный отладчик кода позволит эффективно разрабатывать web-сайт. 2.4 Обоснование проектных решений по технологическому обеспечению Технологическое обеспечение – это разделение информационной системы рассматриваемой организации на подсистемы по технологическим этапам обработки различных видов информации1: первичной информации (этапы технологического процесса сбора, передачи, накопления, хранения, обработки первичной информации, получения и выдачи результатной информации); организационно-распорядительной документации (этапы получения входящей документации, передачи на исполнение, этапы формирования и хранения дел, составления и размножения внутренних документов и отчетов); технологической документации и чертежей (этапы ввода в систему и актуализации шаблонов изделий, ввода исходных данных и формирования проектной документации для новых видов изделий, выдачи на плоттер чертежей, актуализации банка ГОСТ, ОСТ, технических условий, нормативных данных, подготовки и выдачи технологической документации по новым видам изделий); баз данных и знаний (этапы формирования баз данных и знаний, ввода и обработки запросов на поиск решения, выдачи варианта решения и объяснения к нему); 1 Федотова Д.Э., Семенов Ю.Д., Чижик К.Н. CASE-технологии. Москва: Горячая Линия, 2015. С.102 38
научно-технической информации, ГОСТ и технических условий, правовых документов и дел (этапы формирования поисковых образов документов, формирования информационного фонда, ведения тезауруса справочника ключевых слов и их кодов, кодирования запроса на поиск, выполнения поиска и выдачи документа или адреса хранения документа)1. Технологическое обеспечение заключается в создание нового инструмента продаж – электронная коммерция. Это «надстройка» над деятельностью рознично-оптовой точкой фирмы, но только в сети Интернет. На текущей практики деятельности ИП Бровков Г.Е. все коммуникации с клиентом осуществляются непосредственно в офисе компании или по телефону. Если клиент заинтересован в продукции, то он приезжает в офис и посещает выставочный зал готовых изделий, где консультант даст полную характеристику по каждому виду продукции – дегустация, срок годности, вес, вкус, окрас, срок изготовления, состав изделия и тд. Недостатками в текущей технологии работы являются то, что клиенту необходимо посетить офис, чтобы ознакомиться непосредственно с продукцией. Это занимает дополнительные временные и трудовые затраты как для клиента, так и я для сотрудников ИП Бровков Г.Е. Кроме того, клиенту тяжело сразу принимать решения о покупке той или иной продукции. Т.к. компания занимается в основном оптовыми продажами, то для клиента необходимо время, чтобы принять весомое решение о покупке большой партии продукции. При внедрении разработанного средства электронной коммерции сотрудникам необходимо будет дополнительно обрабатывать заказы через специальный web-интерфейс. В данном интерфейсе будет доступна вся необходимая информация о заказе, чтобы сотрудник компании мог его 1 Федотова Д.Э., Семенов Ю.Д., Чижик К.Н. CASE-технологии. Москва: Горячая Линия, 2015. С.136 39
быстро обработать и отгрузить соответствующую продукцию, или заказать поставку у производителя кондитерских изделий. Вся коммуникация (обработка заказов) по интернет-магазину будет дублироваться на электронную почту сотрудников компании и клиентов – об оформление нового заказа и об изменении статуса или данных по заказу. Необходимость внедрения новой технологии обосновывается быстрорастущими темпами Интернет-торговли. Создание интернет- магазина позволит1: повысить оборот денежных средств; увеличить количество продаж; увеличить доход и чистую прибыль организации; поднять имидж организации; повысить конкурентоспособность предлагаемой продукции. Результатом работы интернет-магазина будет являться каталог товаров с возможностью заказать и оплатить необходимый товар. При работе с интернет-магазином могут возникнуть следующие ошибки: ошибки при вводе данных; ошибки отображения изображений; ошибки при оплате заказа. 2.5 Обоснование выбора программных средств Программные средства для решения поставленной цели выпускной квалификационной работы можно разделить на следующие категории: Программные средства для моделирования бизнес процессов технологии работы; 1 Прохорова М., Коданина А. Организация работы интернет-магазина. М. : Дашков и Ко, 2015. С.174 40
Программные средства для проектирования модели данных; В основе первых двух категорий лежат CASE-технологии – это технология автоматизированной разработки систем, обеспечивающие с помощью предназначенного для этих целей инструментария (CASEсредств) комплексную поддержку разработки либо поддержку отдельных стадий жизненного цикла специфицирование, сложных программных проектирование, реализацию, систем – их тестирование, сопровождение и развитие1. Для моделирования бизнес процессов технологии работы было выбранопрограммное средство AllFusionProcessModeler 7. AllFusionProcessModeler 7 – инструмент для моделирования, анализа. Документирования и оптимизации бизнес-процессов (см.рисунок В.4 Приложения В)2. Основные возможности системы: Поддержка различных технологий моделирования; Анализ показателей затрат и производительности; Интеграция процессов/данных; Поддержка стандартных нотаций –IDEF0 (функциональное моделирование), DFD (моделирование потоков данных) и IDEF3 (моделирование потоков работ); Экспорт объектов и свойств в другие модели; Документирование информации в пределах всей модели; Масштабируемость отчетности без потери качества графиков. Для проектирования модели данных было выбрано программное средство AllFusionErwinDataModeler 7. AllFusionErwinDataModeler 7 – средство для проектирования и документирования баз данных, которое позволяет создавать, Федотова Д.Э., Семенов Ю.Д., Чижик К.Н. CASE-технологии. Москва: Горячая Линия, 2015. 1 С.109 Маклаков С.В. Моделирование бизнес-процессов с AllFusion Process Modeler. Москва: Диалог-МИФИ, 2014. С.94 41 2
документировать и сопровождать базы данных, хранилища и витрины данных (см.рисунок В.5 Приложения В)1. Ключевые характеристики2: Синхронизация моделей/баз данных; Автоматизированное создание структуры базы данных и обратное проектирование; Публикация моделей; Поддержка нотаций (IDEF1X, IE, Dimensional); Совместная работа группы проектировщиков; Документирование структур баз данных; Перенос структур баз данных из одного типа СУБД в другой. Выводы: С точки зрения технического обеспечения было дано обоснование в покупке дополнительного оборудования: персональный компьютер, блок бесперебойного питания, статический («белый») IPадрес. С точки зрения информационного обеспечения было описания текущая модель информационной системы и была выбрана реляционная модель организации. Описана особенность ввода первичных данных, обработки и их представления. С точки зрения программного обеспечения выбраны дополнительное прикладное программное обеспечение для работы интернет-магазина: Web-сервер Apache, система управления базами данных MySQL, интерпретатор PHP, утилита управления MySQL – phpMyAdmin. Проектирование и разработка интернет-магазина будет происходить интегрированной среде разработки JetBrains PhpStorm 9.0. С точки зрения технологического обеспечения, была описана Дубейковский В.И. Эффективное моделирование с CA ERwin Process Modeler и AllFusion Process Modeler. Москва: Диалог-МИФИ, 2013. С.86 2 Дубейковский В.И. Эффективное моделирование с CA ERwin Process Modeler и AllFusion Process Modeler. Москва: Диалог-МИФИ, 2013. С.104 42 1
технология работы текущей деятельности ИП Бровков Г.Е. Определены недостатки и ошибки данной технологии работы. Обоснована новая технология работы при внедрении интернет-магазина, описаны её достоинства и преимущества. Выбор технологиях. программных Для средств проектирования основывается информационной на модели CASEбудет использовано Fusion Erwin Data Modeler 7, а для описания технологии работы – AllFusion Process Modeler 7. 43
3 ПРОЕКТНАЯ ЧАСТЬ 3.1 Информационное обеспечение задачи «Разработка Web-сайта оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» 3.1.1 Информационная модель и ее описание Информационная модель – это совокупность информации об объекте, описывающая свойства и состояние объекта, процесса или явления, а также связи и отношения с окружающим миром1. Цель выпускной квалификационной работы состоит не в модернизации текущей технологии работы, а в дополнение к ней дополнительной технологии – за счет которой, будет повышена эффективность деятельности и рост продаж организации. Таким образом, будет рассмотрена общая информационная модель, а именно: модель блока «Деятельность «Конфеты Оптом»», которая представлена в нотации DFD (см.рисунок1.2). Данная модель полностью описывает технологию работы организации. Отражена вся цепочка движения заявки – от отдела продаж до курьеров. Также в ней используется местное программное обеспечение с базой данных для хранения заказов, информации о продукции и клиентов. Для решения поставленной задачи, необходимо провести реинжиниринг данной модели, а именно: добавить блок «Web-сайт». В результате информационная модель будет иметь вид как на рисунке 3.12. Маклаков, С.В. BPwin и ERwin. CASE – средства разработки информационных. Москва: Диалог-МИФИ, 2014. С.129 2 Абдикеев Н.М., Данько Т.П., Ильдеменов С.В., Киселев А.Д. Реинжиниринг бизнеспроцессов. Москва: Эксмо, 2013. С.302 44 1
USED AT: AUTHOR: Андрей DATE: 03.04. 2016 WORKING PROJECT: Деятал ельность Конфеты Оптом REV: DRAFT 15.06. 2016 READER DATE CONTEXT: RECOMMENDED NOTES: 1 2 3 4 5 6 7 8 9 10 PUBLICATION A-0 Денежные средства 0р. Заявка 1 Отдел продаж 0р. 6 Оформл енный заказ 0р. 2 Денежные средства Первичные данные по заказу Информация о продукции Бухгалтерия Налоговые отчисления Оформ ленный заказ 1 База данных Заявк а поставщику Web-сайт Отчетность Обработанные данные по заказу Продукция 0р. 3 Данные по остаткам со ск лад а Заявк а на выдачу продукции Продукция 0р. Отдел логистики 4 Склад Накладная поставщика Накладная 0р. Данные получателя 5 Отдел доставки Кондитерские изделия Заявк а на поставку Накладная Накладная и ак т поставки Кондитерские изделия Формы отчетности NODE: TI TLE: Деятельность "Конфеты Оптом" NUMBER: A0 Рисунок 3.1 – Декомпозиция контекстной диаграммы «Деятельность «Конфеты оптом»» после реинжиниринга в нотации DFD В новой информационной модели клиент сможет оформлять заказ в режиме онлайн, т.е. через web-сайт. На сайте будет отражено, что товар есть в наличии, представлен внешний вид продукции,ее описание. Также покупатель может оплатить банковской картой и выбрать, куда доставить заказ. Готовый заказ будет поступать в элемент хранилище данных «База данных». Менеджер будет дальше сопровождать заказ, менять статусы и отгружать его на склад для доставки. Функционально блок «Web-сайт» представлен на рисунке 3.2. 45
USED AT: AUTHOR: Андрей DATE: 17.04.2016 WORKING PROJECT: Деяталел ьность К онфеты Оптом REV: DRAFT 06.06.2016 READER DATE CONTEXT: RECOMMENDED NOTES: 1 2 3 4 5 6 7 8 9 10 Заявка PUBLICATION 0р. 0р. Поиск и выбор интересующй продукции Просмотр информации о продукции 29 21 A0 0р. Ввод информации о зак азчике 24 0р. Ввод информации о пол учателе 0р. 25 Добавление прод укции в корзину X J5 X 0р. Оформление заказа (корзины) & 0р. 0р. 22 J8 Заполнение информации или продолжение выбора продукции & 26 J6 30 J7 Ввод дополнительной информации 0р. 23 Выьор способа оплаты 27 Оформленный заказ 0р. Опл ата заказа 28 NODE: Web-сайт TITLE: NUMBER: A.6.1 Рисунок 3.2 – Декомпозиция блока «Web-сайт» в нотации IDEF3 Данный блок представляет технологию работы web-сайта в узком смысле. Сначала клиент осуществляет поиск и выбор интересующей продукции. После открытия карточки товара, он просматривает информацию о данной продукции или кондитерском изделии. Клиент может добавить интересующий товар в корзину или сразу перейти к оформлению заказа. Чтобы оформить заказ, необходимо обязательно заполнить следующие поля: ввести информацию о заказчике, о получателе, дополнительную информацию и выбрать способ оплаты. После заполнения всех полей пользователь нажимает кнопку «Заказать» и попадает на страницу «Оплаты заказа». Заказ при этом помещается в базу данных. 46
3.1.2 Характеристика первичных документов с нормативносправочной и входной оперативной информацией Первичный документ – документ, содержащий сведения, полученные в процессе анализа, наблюдения, исследования, разработок, сбора и другого вида деятельности1. Первичными документами для работы web-сайта являются: 1) Каталог кондитерских изделий и готовой продукции; Данный документ содержит описание всей продукции, которая продается организацией. Здесь отражено название товара, состав, цена, срок, годности, фотография. 2) Договор на покупку кондитерских изделий. Первичный документ отражает факт покупки/продажи кондитерских изделий. В нем отражена № заказа, дата, данные клиента, дата и время доставки, состав заказа, сумма и прочие комментарии. Информация из первичных документов заносятся в соответствующие разделы web-сайта непосредственно в код и в базу данных. Формы для ввода первичных данных имеют удобный, понятный интерфейс, что повышает эффективность персонала по работе с данной разработкой. 3.1.3 Характеристика базы данных Инфологическая модель данных является человеко- ориентированной моделью и полностью независима от физических параметров среды хранения, данных2. Остальные модели, даталогическая и физическая, являются компьютеро-ориентированными моделями данных. Овчинников, В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. Москва: Компания Спутник, 2015. С.197 2 Дунаев В. Базы данных. Язык SQL для студента. СПб. : БХВ-Петербург, 2012. С.183 47 1
Таким образом, цель инфологического моделирования – это обеспечить способы сбора и представления информации для хранения в моделируемой базе данных. Основными объектами инфологической модели БДявляются: 1) Сущности – это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. 2) Связь – это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою. Связи позволяют по одной сущности находить другие сущности, связанные с нею. 3) Атрибут– это поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей. 4) Ключ–минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Инфологическая модель базы данных web-сайта состоит из 8 таблиц, связанные между собой. Схема представлена на рисунке 3.3. Рисунок 3.3 – Инфологическая модель базы данных Физические диаграммы строятся по инфологической модели данных и представляют собой прообраз конкретной базы данных. 48
Нарисунке 3.4 представлена физическая модель базы данных1. Рисунок 3.4 – Физическая модель базы данных База данных состоит из 14таблиц. Но на схеме представлены не все таблица, т.к. некоторые таблицы используются для дополнительного хранения информации и не связаны с общей архитектурой базы данных. Поэтому их целесообразно не отображать. Внизу перечислены все сущности базы данных: 1 Категории; Населенные пункты; Заказчики; Тип доставки; Email; Ссылки меню; Заказы; Товары в заказе; Способы оплаты; Статусы заказа; Продукция; Дунаев В. Базы данных. Язык SQL для студента. СПб. : БХВ-Петербург, 2012. С.204 49
Получатели; Отзывы; Служебная информация. Сущность «Населенные пункты» содержит5 атрибутов: номер, название, цена, позиция, расстояние. Сущность «Заказчики» включает 4 атрибута. Здесь содержится номер заказчика, ФИО,email и номер телефона. Сущность «Заказы» включает 8 атрибутов: номер заказа,дата заказа, сумма заказа, номер заказчика, номер получателя, цена доставки, дата доставки, время доставки, номер статуса заказа, номер способа оплаты, дата оплаты, номер населенного пункта. Сущность «Товары_Заказы» включает 4 атрибута. В данной сущности хранится уникальный номер товар_заказа, номер заказа, номер продукции, количество. Сущность «Способы оплаты» состоит из 2 атрибутов: номер и название. Сущность «Статусы заказа» имеет 2 атрибута: номер и название. Сущность «Продукция» включает 7 атрибутов. В данной сущности хранится номер продукции, название, состав, категории, изображения, прочие атрибуты, цена. Сущность «Получатели» включает 5 атрибутов. В данной сущности хранится номер, ФИО, телефон, адрес. Сущность «Отзывы» содержит 7 атрибутов: номер, имя, сайт, текст отзыва, дата публикации, флаг видимости, фотография. Сущность «Служебная информация» включает 5 атрибутов: номер, страница, описание заголовка, описание тега h1, описание тега h2. Сущность «Тип доставки» имеет2 атрибута: номер и название. Сущность «Email» включает 2 атрибута: номер и электронный почтовый ящик. Сущность «Ссылки меню» состоит из8 атрибутов. В данной 50
сущности хранится номер ссылки, название ссылки на русском языке, название ссылки в транслите, позиция ссылки и номер родительской категории. Сущность «Категории» включает 4 атрибута. В данной сущности хранится номер категории, название в русском языке,называние в транслите, позиция ссылки. Все сущности находятся в третьей нормализованной форме. Это означает, что она находится во второй нормальной форме, и отсутствуют транзитивные функциональные зависимости не ключевых атрибутов от ключевых. Сущности «Населенные пункты» и «Заказы» имеют тип связи «один-ко-многим». Данные сущности связаны между собой по ключу «Номер населенного пункта». Сущности «Заказчики» и «Заказы» имеют тип связи «один-комногим». Данные сущности связаны между собой по ключу «Номер заказчика». Сущности «Получатели» и «Заказы» имеют тип связи «один-комногим». Данные сущности связаны между собой по ключу «Номер получателя». Сущности «Продукция» и «Заказы» имеют тип связи «многие-комногим». Но чтобы не было избыточности данных, создана таблица «Товар_Заказы». Теперь «Продукция» и «Товар_Заказы», «Заказы» и «Товар_Заказы» имеют тип связи один-ко-многим. Данные сущности связаны между собой по ключу «Номер товара» и «Номер заказа» соответственно. Сущности «Способ оплаты» и «Заказы» имеют тип связи «один-комногим». Данные сущности связаны между собой по ключу «Номер способа оплаты». Сущности «Статуса заказа» и «Заказы» имеют тип связи «один-комногим». Данные сущности связаны между собой по ключу «Номер 51
статуса заказа». Модели должны быть описаны на языке описания данных этой СУБД. Такое описание называют даталогической моделью данных. Трехуровневая архитектура (инфологический, даталогический и физический уровни) позволяет обеспечить независимость хранимых данных от использующих их программ1. Разработчик может при необходимости переписать хранимые данные на другие носители информации или реорганизовать их физическую структуру, изменив лишь физическую модель данных. АБД может подключить к системе любое число новых пользователей (новых приложений), дополнив, если надо, даталогическую модель. Указанные изменения физической и даталогической моделей не будут замечены существующими пользователями системы (окажутся "прозрачными" для них), так же как не будут замечены и новые пользователи. Следовательно, независимость данных обеспечивает возможность развития системы баз данных без разрушения существующих приложений. В таблице Д.1 приложения Д представлена даталогическая модель базы данных. 3.1.4 Характеристика результативной информации Результативной информацией разрабатываемого web-сайта является конечная информация, по которой пользователь может принять решение2. Например, такой информацией может быть страница с контактной информацией, отзывами клиентов, информация о способах оплаты и доставки. Также к результативной информации можно отнести карточку интересующего товара, продукции, кондитерского изделия, по которой пользователь может оценить данный продукт и совершить покупку. Дунаев В. Базы данных. Язык SQL для студента. СПб. : БХВ-Петербург, 2012. С.93 Хоган Б., Уоррен К. Книга веб-программиста. Секреты профессиональной разработки вебсайтов. СПб. : Питер, 2013. С.142 52 1 2
Итогом работы web-сайта, или итоговой результативной информацией является страница оформления заказа. Ниже перечислена краткая характеристика результативной информации: Web-страница Контакты – на данной странице содержится информация о компании, контактный номер, электронная почта, юридический адрес и схема проезда, также на данной странице содержатся реквизиты; Web-страница Доставка – на данной странице содержится список населенных пунктов и цены, в которые компания осуществляет доставку; Web-страница Оплата – на данной странице содержится информация о том, как и чем можно оплатить на данном web-сайте. Web-страница Отзывы–содержатсяотзывы клиентов. Web-страница Карточка товара – содержит всю информацию о товаре, продукции или кондитерском изделии, а именно: артикул, название, состав, цена, другая информация. Web-страница Оформление заказа – содержит форму для оформления заказа. Email-уведомления – полная информация о заказе и информация об изменении статусов заказа. 3.2 Программное обеспечение задачи «Разработка web-сайта оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» 3.2.1 Общие положения В любой разработке программного обеспечения оно должно в первую очередь выполнять главную поставленную перед ним задачу. В текущей выпускной квалификационной работе перед web-сайтом стоит 53
задача представлять клиентам необходимую информацию об оптоворозничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е. «Конфеты оптом» и оформлять заказы в режиме онлайн. Чтобы решить эти задачи, необходимо описать функции программного обеспечения (webсайта). К основным функциям относятся: служебные функции – выполняют косвенные, неявные функции программного обеспечения (например, проверка пароля, архивация базы данных); основные функции управления и обработки данных – выполняют прямые функции: ввода первичной информации, обработки, анализа, выдача итоговых данных, ответы на запросы. К основным функциям работы web-сайта относятся: Предоставление информации о необходимой продукции и кондитерских изделиях; Предоставление информации о деятельности оптово-розничной фирмы ИП Бровков Г.Е. «Конфеты оптом»; Оформление заказа; Проверка статуса заказа; Оформление обратного звонка. Служебными функциями являются: Хранение персональных данных о заказчиках (получателей); Сопровождение заказа (изменение статуса, редактирование данных); Уведомление на почту клиента; Выставление счета на оплату на почту клиента; Проверка на валидность вводимых данных; Экранирование sql-инъекций и опасного PHP-кода. Описанные основные и служебные функции можно представить в 54
виде дерева функций. Дерево функций – иерархическая модель видов деятельности предприятия, обеспечивающих достижение дерева целей. На рисунке 3.5 изображена схема – дерево функций разрабатываемого web-сайта. Основные функции Предоставление информации о необходимой продукции и кондитерских изделиях Предоставление информации о деятельности оптоворозничной фирмы ИП Бровков Г.Е. «Конфеты оптом» Оформление заказа Проверка статуса заказа Оформление обратного звонка Служебные функции Хранение персональных данных о заказчиках (получателей) Сопровождение заказа Проверка на валидность вводимых данных Уведомление на почту клиента Выставление счета на оплату на почту клиента Экранирование sqlинъекций и опасного PHP-кода Рисунок 3.5 – Дерево выполняемых функций 3.2.2 Описание программных модулей Программный модуль – это часть программы, имеющая конкретное назначение, выполняющая специальные функции, характерные для данного программного модуля, полностью или частично зависящая от других модулей1. Различают следующие программные модули: головной модуль – управляет запуском программного продукта 1 Скиена С. Алгоритмы. Руководство по разработке. СПб. : БХВ-Петербург, 2011. С.306 55
(существует в единственном числе). Головным модулем web-сайта является файл index.php, который автоматически запускается при открытии сайта по его URL; управляющий модуль – обеспечивает вызов других модулей на обработку. В данной разработке управляющим модулем является controller.php – его задача состоит в получение и обработке запросов пользователя, передача подготовленных данных в сервисный модуль (model.php) для получения необходимых результативных данных, и передача этих данных в рабочий модуль (view/); рабочие модули – выполняют функции представления данных. В web-сайте рабочим модулем является шаблоны и макеты web-страниц в формате html и php, которые отображают полученные данные из model.php пользователю; сервисные модули и библиотеки, утилиты – осуществляют обслуживающие функции. К таким модулям относится model.php, задача которого состоит в отправке определенных запросов (добавление, редактирование, удаление, выборка информации) к базе данных. Web-сайт построен по архитектуре программирования MVC1. MVC (Model-view-controller, «Модель-представление-поведение», «Модель-представление-контроллер») – это шаблон проектирования приложений, при котором управляющая логика поделена на три отдельных компонента таким образом, что модифицирование одного из них дает минимальное влияние на остальные2. MVC Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своё состояние. MVC Представление (View). Отвечает за отображение информации (пользовательский интерфейс). Скиена С. Алгоритмы. Руководство по разработке. СПб. : БХВ-Петербург, 2011. С.452 Скиена С. Алгоритмы. Руководство по разработке. С.469 56 1 2
MVC Поведение (Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции. Особенностью при использовании MVC в PHP, является то, что существует одна точка входа в php приложение – index.php Данные о PHP модели содержатся в ее атрибутах и могут быть изменены только через специальные функции. Модель может содержать в себе несколько представлений. Функции могут добавлять данные в БД, удалять, редактировать и читать. Ниже представлен код получения списка товаров для главной страницы web-сайта1: <?php function select_products(){ $query = "SELECT * FROM products WHERE visible = '1' AND not_available = '0' ORDER BY position LIMIT 18"; $res = mysql_query($query) or die(mysql_error()); $arr = array(); while($row = mysql_fetch_assoc($res)){ $arr[] = $row; } return $arr; } ?> $query – переменная, которая хранит sql-запрос. Данный запрос выбирает все данные из таблицы products, где поле visible равно 1 (флаг видимости на сайте) и not_available = 0 (флаг есть в наличие). Полученные данные сортируют по полю position и отбираются только первые 18 записей. Функция mysql_query($query) выполняет запрос к БД, а результат заносится в переменную $res. Если в запросе ошибка, или нет подключения к БД то вернется ошибка с помощью функции mysql_error(). Колисниченко Д.Н. PHP 5 и MySQL 6. Разработка Web-приложений. СПб: БХВ-Петербург, 2014. С.363 57 1
Переменная $arr – хранит многомерный массив, в который будут помещаться обработанные данные из БД. В цикле while() с помощью функции mysql_fetch_assoc($res) получается ассоциативный массив. На каждой итерации которого заносятся записи в подготовленный массив $arr. С помощью функции return $arr возвращается результат в контролер. Ниже представлена функция модели, которая добавляет заказчика в БД: <?php function add_customer($phone, $email){ $query = "INSERT INTO customers (phone, email) VALUES ('$phone', '$email')"; $res = mysql_query($query) or die(mysql_error()); // еслизаказчикдобавлен - получаемего ID if(mysql_affected_rows() > 0){ return mysql_insert_id(); }else{ return false; } } ?> Аналогично работают функции на редактирование данных и удаление1. PHP контролеры получают запросы пользователей, которые направляются через index.php, и в соответствии с ними, корректируют работу модели, т.е.web-сайта. Ниже представлен пример работы контролера: <?php $view = empty($_GET['view']) ? 'hits' : $_GET['view']; switch($view){ 1 Колисниченко Д.Н. PHP 5 и MySQL 6. Разработка Web-приложений. СПб: БХВ-Петербург, 2014. С.429 58
case('hits'): $products = select_products(); $menu_left = getLeftMenu() break; } require_once TEMPLATE.'index.php'; ?> Данный код можно описать следующим образом: Если при получении через метод $_GET['view'] параметр view – пустой, то инициализируем переменную $view = ‘hits’, иначе если он не пустой, то инициализируем $view значением, котроое хранится в данном параметре. Далее оператор switch($view) получает данную переменную и проверяет условие. Если есть описание условия, например, для $view = ‘hits’, то он попадает в блок case(‘hits’), где выполняются определенные действия, в данном случае получается массив записей с товарами для главной страницы и массив с ссылками для левого меню. Затем с помощью функции require_once подключается файл index.php, а данный файл подключает шаблон со значением $_GET['view'], например hits.php. Данный шаблон будет являться представлением модели. Представление отслеживает изменение в модели и создает или меняет интерфейс web-сайта. Ниже представлен пример вывода названия и цены продукции на карточке товара. <div class="bg_product"> <?php if($products): ?> <?php foreach($products as $product): ?> <!-- Названиетовара: --> <p class="name"> <?=$product['name']?> </p> <!-- Ценатовара: --> 59
<p class="cena"> <?=$product['price_total']?>руб. </p> endforeach; ?> <?php else: ?> <div class="bread_crumbs"> <h1>Здесьтоваровнет!</h1> </div> </div> Программный код всех php-страниц представлен в Приложении Ж. При обращении пользователем по нужному URL выбирается соответственный контролер, который обращается к представлению и модели, и выводится информация. Другими словами контролер в MVCявляется связующим звеном модели и представления. На рисунке 3.6 представлен процесс обработка запроса в схеме MVC. Рисунок 3.6 – Процесс обработки запроса в схеме MVC Блок-схема программных модулей web-приложения представлена в Приложении Е. Для создания базы данных нужен дамп-файл с sql-запросами на создания таблиц и вставки данных. Код sql-запроса на создание таблиц 60
представлен в Приложении К. 3.3 Технологическое обеспечение задачи «Разработка web-сайта оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е.» Организация технологии сбора, передачи, обработки и выдачи информации состоит в последовательности организованных операций1. Технология сбора информации основывается на считывание данных с материалов, которые представлены в приложении2. Пользователь при оформлении заказа вводит в печатную форму персональные данные о себе: email, телефон, фамилия, имя, отчество, адрес доставки, а также дата и время доставки, и список кондитерской продукции. Технология передачи данных заключается в занесениисобранных данных в базу данных3. Данный процесс происходит, когда пользователь нажимает кнопку «Заказать». Вводимые данные заносятся в базу данных для обработки заказа. Технология обработки данных заключается в анализе, корректировке введенных данных. После занесения данных в БД менеджер проверяет корректность введенных данных, а именно существует ли адрес, перезванивает по номеру телефона. Если все данные корректны, то менеджер передает заказ на сборку, при наличии необходимой продукции. Технология выдачи – это результат совокупности проделанных операций сбора, передачи, обработки данных. Результатом работы является email уведомления клиенту о том, что заказ доставлен. Также клиент может проверить обработанные данные на вкладке «Статус заказа». 1 Овчинников В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. Москва: Компания Спутник, 2015. С.206. 2 Овчинников В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. Москва: Компания Спутник, 2015. С.207. 3 Овчинников В.В. Методология проектирования автоматизированных информационных систем. Основы системного подхода. 2015. С.209. 61
3.4 Описание контрольного примера Для демонстрации работы web-сайт будет рассмотрен процесс заказа нескольких позиций продукции и кондитерских изделий и оплата заказа с помощью банковской карты. Чтобы запустить web-сайт необходимо в адресной строке ввести http://konfety-optom.loc. Откроется главная страница web-сайта, где расположены элементы главной навигации, фильтры, блок с отзывами о работе и представлены популярные товары (продукция). Результат представлен на рисунке Г.1 Приложения Г. Для просмотра состава продукции необходимо кликнуть по фотографии или названию интересующей продукции. Например, кликнуть по «Вафли Артек». На рисунке Г.2 Приложения Г изображена карточка данного товара. На карточке товара представлена полная информация о товаре, а именно: название товара, цена, фотография товара, состав, пищевая ценность, энергетическая ценность, условия хранения и срок годности. Для добавления продукции в корзину необходимо нажать кнопку «Заказать». Данный товар попадет в корзину, которая визуально расположена внизу-справа (см.рисунок Г.3). Дополнительно поместим в корзину: «Тульский Пряник с фруктовой начинкой 140 г» в количестве 3 шт.; «Коломенское Вафли сливочные» в количестве 5 шт.; «Вафли Артек-супер 240 г» в количестве 2 шт. После добавление необходимо оформить данный заказ. Для этого на странице «Оформления заказа» заполняются данные заказчика, дополнительная информация и выбирается способ оплаты. На рисунке Г.4Приложения Г представлена заполненная страница «Оформление 62
заказа». После заполнения всех поле необходимо нажать кнопку «Проверить». Все данные сохраняются в базе данных, а именно: сохраняются данные о заказчике, данные о заказе, данные о корзины. Если все сохранено успешно, то генерируется номер заказа и пользователь перенаправляется на страницу «Проверка заказа». На рисунке Г.5 представлена страница «Проверка заказа». Оплаченный заказ необходимо оплатить с помощью банковской карты через платежную систему Яндекс.Деньги (см.рисунок Г.6). В системе управления заказами можно просмотреть данный заказ, отредактировать или изменить статус. Например, поставить статус «Заказ оплачен. Передан на сборку». Данная система представлена на рисунке Г.7. Таким образом, был оформлен заказ и продемонстрированы основные функции web-сайта. Выводы: В данном разделе представлена практическая часть разрабатываемого программного средства – web-сайта оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е. «Конфеты оптом»; Спроектирована технологическом информационная процессе. Дано модельв описание текущем бизнес-процессов рассматриваемой информационной модели; Проведен реинжиниринг бизнес-процессов и показаны преимущества новой информационной модели. Информационная модель была реализована в нотации IDEF0, а декомпозиция проведена в нотации IDEF3. Далее в работе приведено описание первичных документов с нормативно-справочной информацией. представлены в Приложении. 63 Все первичные документы
Спроектирована база данных с описанием таблиц, схем данных, необходимые запросы. Описана даталогическая, инфологическая и физическая модели баз данных Описана характеристика результативной информации, описаны результативные web-страницы. Дано детальное описание выполняемым основным и служебным функциям разработанного web-сайта. Спроектировано дерево функций, где сгруппированы все функции разработанного программного средства. Представлена структура, задачи и назначения каждого программного модуля. Дано обоснование архитектуры MVC. Описаны организация сбора, передачи, обработки и выдачи информации. В конце раздела дано описание контрольного примера – оформление заказа и оплата банковской картой. Представлены твердые копии экрана работающего web-сайта. 3.5 Оценка экономической эффективности 3.5.1 Целесообразность разработки с экономической точки зрения Web-сайты (интернет магазины) на сегодняшний день являются самым популярным форматом коммерческих ресурсов сети. Они позволяют расширять географию продаж в виртуальном сегменте, делая весомый вклад в прибыльность бизнеса. Интернет сегодня обеспечивает половину и больше продаж любой производственной или торговой компании, однако бывают ситуации, при которых создание онлайн магазина не оправдывает себя. Прежде чем разработать web-сайт (интернет-магазин), необходимо произвести расчёт экономической 64 целесообразности коммерческого
интернет проекта. Для этого нужно определить сколько примерно валового дохода площадка будет приносить в месяц. Сделать это в реальном экономическом сегменте можно, опираясь на данные маркетингового исследования рынка, а в сети определить ёмкость доли рынка можно только по статистике релевантных запросов с большой погрешностью. Практика показывает, что разработка интернет-магазина является экономически целесообразной только в том случае, если прогнозируемый доход от интернет-продаж хотя бы на 20-25% выше, чем совокупные затраты. Это будет означать, что примерно четверть валовых поступлений от реализации продукции с интернет магазина будет оставаться на развитие бизнеса, а остальная часть пойдёт на покрытие операционных расходов площадки1. Планировать купить домен для web-сайта (интернет-магазина) и открыть собственный интернет проект следует только в том случае, если примерные прогнозные значения дохода имеют перспективы роста, то есть не весь потенциальный спрос активизирован. Оценить объём потенциального спроса на конкретный продукт в сети очень просто. Для этого достаточно узнать статистику тематических запросов, то есть выяснить, сколько людей ищут данный продукт в сети. Если предположить, что каждый из таких пользователей потенциально готов купить искомый товар, то совокупное количество всех релевантных запросов, идентифицирующих данный товар, и будет означать потенциальный объём продаж. Чтобы его добиться, необходимо вплотную заниматься интернет маркетингом, то есть проводить рекламные кампании в сети, продвигать продукт посредством участия в партнёрских программах, регистрировать сайт в различных товарных каталогах и многое другое. Эффективное продвижение продукта в интернете требует солидных капиталовложений, и эти расходы тоже должны учитываться Прохорова М., Коданина А. Организация работы интернет-магазина. М. : Дашков и Ко, 2015. 1 С.139 65
при первичных экономических расчётах экономической целесообразности проекта1. Внедрение web-сайтав деятельность ИП Бровков Г.Е. «Конфеты оптом» приведёт к следующим результатам: увеличение клиентской аудитории; повышение уровня обслуживания клиентов; проведение маркетинговых исследований; выход на новые рынки; снижение издержек; создание новой торговой площадки в виде электронного магазина; увеличение стоимости компании. 3.5.2 Выбор методики и расчет экономической эффективности разработки В рамах выпускной квалификационной работы было разработано web-сайт, которое является универсальной разработкой и его можно распространять на рынке программного обеспечения и реализовывать в организациях по продаже продуктов и кондитерской продукции. Чтобы описать методику, по которой будет происходить расчет экономической эффективности разработки, необходимо проанализировать слабые и сильные стороны проекта, а также угрозы и возможности от реализации разработки. Данный анализ называется SWOT-анализ и представляется в виде SWOT-матриц. В Приложении Л представлен результат SWOT-анализа. Чтобы определить целесообразность разработки необходимо провести технико-экономическое обоснование разработки программного Прохорова М., Коданина А. Организация работы интернет-магазина. М. : Дашков и Ко, 2015. 1 С.209 66
средства по следующей методике: рассчитать технико-экономические показатели и выбрать базы сравнения; определить трудоемкость и стоимость разработкиweb-сайта; рассчитать ценуразработанного web-сайта; рассчитать капитальные и эксплуатационные затраты на разработку; определить показатели финансово-экономической эффективности. Исходные данные для проведения технико-экономического обоснования представлены в таблице М.1 Приложения М. Расчет затрат на разработку web-приложения. Суммарные затраты на разработку web-сайта рассчитываются по следующей формуле: SРП = SЗП+SНАК , где: SЗП – затраты по заработной плате инженера-программиста; SНАК – накладные расходы. Затраты по заработной плате инженера-программиста рассчитываются по формуле: SЗП = ОЗП (1+с) (1+д) tрi , где: ОЗП – основная заработная плата инженера-программиста за месяц; tpi – время, необходимое для разработки web-сайта программистом i-го разряда (чел.-мес.); д – коэффициент, учитывающий дополнительную заработную плату разработчика web-сайта, в долях к сумме основной заработной платы; с – коэффициент, учитывающий начисления органам социального страхования на заработную плату разработчика web-сайта, в долях к сумме 67
основной заработной плате разработчика. Web-сайт разрабатывался60 дней, если учесть, что в одном месяце 22 рабочих дня, то месяцев на разработку одним программистом было затрачено: tp1 = 60/22 = 2,73(чел. –мес.) Таким образом, затраты по заработной плате программиста составят: SЗП = 15000 (1+0,356) (1+0,25) 2,73 = 69340,91 (руб.) Накладные затраты рассчитываются с учетом н – коэффициента, определяющего уровень накладных расходов организации по формуле: SНАК = ОЗПнtр12 , SНАК = 15000 1,2 2,73 = 490090,91(руб.) Таким образом, суммарные затраты на разработку web-приложения составляют: SРП = 69340,91+49090,91= 118431,8 (руб.) Расчет цены разработанной программы. Оптовая цена разработанногоweb-сайта определяется по следующей формуле: ZП = SРП + П , где: ZП – оптовая цена (цена разработчика) (руб.); SРП – суммарные затраты на разработку web-сайта (руб.); П –прибыль, рассчитанная по формуле: П = нSРП , где: н – норматив рентабельности, учитывающий прибыль организации, разрабатывающей данное web-приложение в долях ко всем затратам данной организации на разработку web-приложения. Итак, 68
ZП = SРП (1+ н), ZП = 118431,8 (1+ 0,3) = 153961,4 (руб.) Розничная цена web-сайта рассчитывается с учетом налога на добавленную стоимость (НДС = 18%) по формуле: 𝑍Пр = 𝑍П + НДС = 𝑍П + 𝑍П × 18 = 𝑍П × (1 + 0,18) 100 ZПр = 153961,4 (1+0,18) = 181674,4 (руб.) Выручка от продаж при условии nп = 10 – количество организаций, желающих прибрести web-сайт, составит: В = ZПр nп , В = 181674,410 = 1816744 (руб.) Расчет капитальных вложений. Капиталовложения, связанные с работой электронно- вычислительной машины, рассчитываются по формуле: КЭВМ = СЭВМ+SТ+SМ+SЗ+SПЛ , где: СЭВМ – стоимость ЭВМ (руб.); ST – стоимость транспортировки ЭВМ (руб.); SМ – стоимость монтажа ЭВМ (руб.); SЗ – стоимость запасных частей (руб.); SПЛ – стоимость площади установки ЭВМ (руб.). Расчет коэффициентов, входящих в формулу расчета величины капиталовложений: ST = 0,008 СЭВМ ; ST = 0,00825000 = 200 (руб.); SЗ = 0,15 СЭВМ ; SЗ = 0,15 25000 = 3750 (руб.); SМ= 0,2 (СЭВМ + S3); SМ = 0,2 (25000+3750) = 5750 (руб.). Капиталовложения в электронно-вычислительной составляют: КЭВМ = 25000 + 200 + 3750 + 5750 = 34700 (руб.) Расчет эксплуатационных расходов. 69 машине
Эксплуатационные расходы на электронно-вычислительную машину (ЭВМ) рассчитываются по формуле: 𝐸 = (𝑇М.В. × 𝑒ч ) + 𝑍П ТС где: ТМ.В. – машинное время для решения задач с помощью разработанного web-приложения, (маш.час/год); еч – эксплуатационные расходы, приходящиеся на 1 час работы электронно-вычислительной машины; ZП – цена, по которой продается web-приложение (руб.); ТС – срок службы программы (г). Полезный фонд времени работы электронно-вычислительной машины рассчитывается по формуле: 𝑇ПОЛ = 𝑇ОБЩ × 𝑡СМ × 𝑁СМ × (1 − 𝛼 ) 100 где: ТОБЩ – общий фонд времени работы электронно-вычислительной машины (дни); ТОБЩ = ТР; NСМ – количество смен работы электронно-вычислительной машины; tСМ –время одного рабочего дня (час); – простои ЭВМ ( в % от общего фонда времени работы электронно-вычислительной машины). Полезный фонд времени работы электронно-вычислительной машины получим: 𝑇ПОЛ = 264 × 10 × 1 × (1 − 20 ) = 2112 (маш. час/год) 100 Машинное время для решения задач с помощью разработанного web-приложения рассчитывается по формуле: ТМ.В. = 𝑞𝐼 × 𝑡М.В.𝐼 , 70
где: qI – количество I-задач, решаемых потребителем в год (шт.); tМ.В.I – время решения I-ой задачи, разработанного web-приложения (маш.час). ТМ.В. = 50 1 = 50 (маш.час / год). Эксплуатационные расходы, приходящиеся на 1 час работы электронно-вычислительной машины, оцениваются по формуле: 𝑒ч = (𝐴О + 𝑆ЗП + 𝑆ЭЛ + 𝑅РМ ) ТПОЛ , где: АО – амортизационные отчисления (руб.); SЗП – затраты по заработной плате инженера в год (руб./год); SЭЛ – стоимость потребляемой энергии (руб.); RРМ – затраты на ремонт электронно-вычислительной машины (руб.); ТПОЛ – полезный годовой фонд работы ЭВМ, (маш.час/год). Амортизационные отчисления рассчитываются с учетом нормы амортизации (ан =12,5 %); АО = анКЭВМ = 0,125 34700 = 4337,5 (руб.). Затраты по заработной плате инженера за год рассчитывается по формуле: SЗП = (1+с) (1+д) ОЗП 12, где: с – коэффициент, учитывающий начисления органам социального страхования на заработную плату разработчика программы, в долях к сумме основной заработной плате разработчика. д – коэффициент, учитывающий дополнительную заработную плату разработчика программы, в долях к сумме основной заработной платы; ОЗП – основная заработная плата программиста за месяц 71
(15000 руб.); Рассчитываем годовые затраты по заработной плате и социальным отчислениям для инженера: SЗП = (1+ 0,356) (1+ 0,25) 15000 12 = 305100 (руб./ год) Стоимость потребляемой энергии оценивается по формуле: SЭЛ = PТПОЛZЭЛ , где: P – мощность, потребляемая ЭВМ (кВт); ТПОЛ – полезный годовой фонд работы ЭВМ (маш. час/год); ZЭЛ – тариф за 1 кВт/час (руб. /кВт). Итак, произведем расчет стоимости потребляемой энергии: SЭЛ = 0,4 2112 1,3 = 1098,24 (руб.). Затраты на ремонт ЭВМ вычисляются по формуле: RРМ = NСРSД , где: NСР – среднее количество ремонтов в год; SД – стоимость деталей заменяемых при одном ремонте, в среднем. RРМ = 2 1000 = 2000 (руб.). Произведем вычисление эксплуатационных расходов, приходящихся на 1 час работы электронно-вычислительной машины: еч = (4337,5 + 305100 + 1098,24 + 2000)/ 2112 = 147,99 (руб./час) Далее вычислим эксплуатационные расходы на электронновычислительной машине: Е = (50 * 147,98) + 153964,4 / 3 = 58719,5 (руб.) Расчет денежного годового экономического эффекта. Денежный годовой экономический эффект оценивается по следующей формуле: WГЭ = ЕМ.Э. + нКЭ , где: 72
ЕМ.Э. – экономия стоимости машинного времени (руб.); н – нормативный коэффициент эффективности капитальных вложений; КЭ – экономия капитальных вложений (руб.). Расчет экономии капитальных вложений производится по формуле: ∆КЭ = (ТМ.В.1− ТМ.В.2)× КЭВМ ТПОЛ , где: ТМ.В.2 – машинное время для решения задач с помощью разработанной web-приложения (маш. час/год); КЭВМ – капиталовложения в ЭВМ (руб.); ТПОЛ – полезный годовой фонд работы ЭВМ (маш. час/год); ТМ.В.1 – машинное время для решения задач базовой программой рассчитывается с учетом t’М.В.I – время решения I-ой задачи базовой программой: ТМ.В.1 = qIt’М.В.I , ТМ.В.1 = 50 5 = 250 (маш. час/год). Произведем расчет экономии капитальных вложений по формуле: ∆КЭ = (250 − 50)× 34700 2112 = 3285,98 (руб.), Расчет экономии стоимости машинного времени производится по формуле: ЕМ.Э. = еч (ТМ.В.1-ТМ.В.2) , где: еч – эксплуатационные расходы, приходящиеся на 1 час работы ЭВМ; ТМ.В.1 – машинное время для решения задач базовой программой (маш. час/год); ТМ.В.2 – машинное время для решения задач с помощью разработанной программы (маш. час/год); Произведем расчет экономии стоимости машинного времени по 73
формуле: ЕМ.Э. = 147,98 (250 - 50) = 29596,19 (руб.) Теперь определим денежный годовой экономический эффект по формуле: WГЭ = 29596,19 + 0,25 3285,98 = 30417,68 (руб.) Определение показателей эффективности инвестиций. Для определения показателей эффективности инвестиций необходимо рассчитать норму дисконта (Е). Е=а+b+с, где: а – цена капитала; b – коэффициент учитывающий риск; с – уровень инфляции на валютном рынке. Е = 0,14 + 0,04 + 0,02 = 0,20. Приведение осуществляется путем умножения затрат и результатов на коэффициент дисконтирования (КД), равный: КД = 1 (1+Е)𝑟 , где: Т – период дисконтирования (гг.) Оценка проекта, сравнение вариантов и выбор оптимального производится с использованием следующих показателей: Чистая дисконтированная стоимость (текущая дисконтированная стоимость), т.е. доход; Внутренняя норма доходности (рентабельность); Индекс доходности; Срок окупаемости. Для того чтобы рассчитать данные показатели, необходимо составить план денежных потоков (см. таблицуМ.2 Приложения М). Размер выручки от реализации 74 определяется с учетом
прогнозируемой средней потребности в разработанной программе (10 шт.) и розничной цены (181674,4 руб.). Чистая дисконтированная стоимость (ЧДС) определяется как сумма потоков реальных денег, приведенная за весь расчетный период к начальному году: ЧДС = ∑Т𝑡=0(Р𝑡 − З𝑡 ) × КД𝑡 , где: Рt – результат в t-ом году; Зt – затраты в t-ом году; Т – период дисконтирования. Вычисление чистой дисконтированной стоимости и текущей дисконтированной стоимости приведено в таблице М.3 Приложения М. Внутренняя норма доходности (рентабельность) представляет собой ту ставку дисконта (ЕВН), при которой ЧДС = 0. Ее вычисление является итеративным процессом, который начинается с барьерной ставки (Е), если при этом ЧДС положительная, то в следующей итерации используют более высокую ставку, если отрицательная – то более низкую. Точное значение ЕВН вычисляется по формуле: ЕВН = ЕЧДС(+) + ЧДС(+) ЧДС(+)−ЧДС(−) , где: ЕЧДС(+) – значение ставки дисконта, при которой ЧДС принимало последнее положительное значение; ЧДС(+) – последнее положительное значение ЧДС; ЧДС(-) – последнее отрицательное значение ЧДС. Зависимость чистой дисконтированной стоимости от нормы дисконта представлена в таблице М.4 Приложения М. Данная зависимость отражена на рисунке 3.7. 75
Зависимость ЧДС от нормы дисконта 2 500,00 2 000,00 1 500,00 1 000,00 500,00 0,00 -500,00 0,2 0,4 0,6 0,8 1 2 3 4 5 5,2 5,4 5,5 Рисунок 3.7 – Зависимость ЧДС от нормы дисконта Расчет внутренней нормы дисконта представлен в таблице М.5 Приложения М. Точное значение внутренней нормы доходности (рентабельность) составит: Eвн = 540% + ( 1641,85% / (1641,85% – (–1785,69%)) = 540,48% Рассчитанное значение ЕВН, составляющее 540,48%, превышает фактическую норму дисконта ЕВН = 20%, следовательно, инвестиции в данный проект оправданы. Индекс доходности (ИД) рассчитывается по формуле: ИД = 1 К × ∑𝑇𝑡=0(Р𝑡 − З𝑡 ) × КД, где: К – приведенная величина инвестиций, рассчитывающаяся по формуле: К = ∑𝑇𝑡=0(К𝑡 × КД), где: Kt – величина инвестиций в t-ом году. Индекс доходности (ИД) проекта составляет: 859643,8 + 716369,8 + 596974,8 = 11,52 −188661 Рассчитанное значение ИД = 11,52 больше единицы, следовательно, ИД = 76
разработку программы можно считать эффективной и экономически обоснованной. Средняя рентабельность разработки рассчитывается по формуле: РП = ИД Т × 100%, где: ИД – индекс доходности проекта; Т – срок службы программы. Средняя рентабельность разработки в нашем случае составит: 11,52 × 100% = 383,93% Т3 Срок окупаемости инвестиционного проекта (ТОК) – это период РП = времени, который потребуется для возмещения инвестиций. ТОК определяют с учетом дисконтирования, путем суммирования ежегодных поступлений до определенного периода, в котором они превзойдут первоначальные расходы денежных средств. Определим ТОК графическим методом, график, изображенный на рисунке 3.8, строится по данным таблицы М.5 Приложения М. Определение срока окупаемости проекта 2500000 2000000 1500000 1000000 859643,7546 716369,7955 596974,8296 500000 0 0 -188661,3636 1 2 -500000 ТДС ТДС с нарастающим итогом Рисунок 3.8 – Определение срока окупаемости проекта 77 3
Как видно из графика, значение ТОК составляет меньше 1 года. Выводы: Обобщенные технико-экономические показатели разработки программы сведены в таблицу М.6 Приложения М. По полученным результатам проведенных вычислений величина ТДС> 0, значение индекса доходности ИД> 1, а рассчитанная ЕВН = 540% превышает фактическую норму дисконта ЕВН = 20 %. Это позволяет сделать вывод о том, что вложение инвестиций в разработку данного проекта является экономически целесообразным. 78
ЗАКЛЮЧЕНИЕ В результате проведения научно-технических исследований в организации ИП Бровков Г.Е. «Конфеты оптом» были изучены бизнеспроцессы по оформлению заказа на поставку покупку и поставку кондитерских изделий и продукции в текущей автоматизированной информационной системе, определены задачи менеджера, требования к первичным документам, проанализированы сильные и слабые стороны текущего технологического процесса. В итоге выполнения выпускной квалификационной работы была выполнена основная цель – разработан web-сайт для оптово-розничной фирмы по торговле кондитерскими изделиями ИП Бровков Г.Е. Эта цель была достигнута за счет решения следующих задач: Исследована деятельность организации ИП Бровков Г.Е. «Конфеты оптом»; Произведено функциональное моделирование каждого этапа деятельности организации ИП Бровков Г.Е. «Конфеты оптом»; Проанализированы существующие web-сайты по продаже кондитерских изделий и продукции; Описаны технологии проектирования web-сайтов; Дано техническое, технологическое, информационное, программное обоснование выбора обеспечения. Разработанный web-сайт является полностью законченным программным продуктом и готов к внедрению в деятельность ИП Бровков Г.Е. «Конфеты оптом» после выделения организацией бюджета на покупку необходимого оборудования. В дальнейшем сайт можно усовершенствовать, за счет: 1) Настройки служебных файлов robot.txt и sitemap.xml, а также специальных мета и других html-тегов продвижения сайта в поисковых системах; 79 для эффективного SEO-
2) Добавления агрегатора платежных систем Robokassa или Payonline, чтобы покупатель мог оплатить заказ любым удобным для него способом; 3) Добавления сервисов метрики и аналитики, чтобы выявлять ошибки, покупательский спрос, востребованность в тех или иных функциях сайта и дальнейшей их модернизации; 4) Добавления личного кабинета для покупателя, систему лояльности, сервисы обратного звонка и онлайн-чата для повышения лояльности клиентов к интернет-магазину. Web-сайты (интернет магазины) на сегодняшний день являются самым популярным форматом коммерческих ресурсов сети. Они позволяют расширять географию продаж в виртуальном сегменте, делая весомый вклад в прибыльность бизнеса. Интернет сегодня обеспечивает половину и больше продаж любой производственной или торговой компании. Сегодня в России всё больше предприятий из самых различных отраслей воспринимают Интернет в качестве дополнительного эффективного инструмента организации продаж. Наличие в данном сегменте минимальных издержек и с каждым годом растущей покупательской способности – интернет-магазины являются необходимой и важной «надстройкой» для любого бизнеса. 80
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1 Абдикеев, Н.М. Реинжиниринг бизнес-процессов [Текст] / Н.М. Абдикеев, Т.П. Данько, С.В. Ильдеменов, А.Д. Киселев. – Москва: Эксмо, 2013. – 592 с. 2 Акила, К. Интернет-магазин с нуля. Полное пошаговое руководство [Текст] / К. Акила, А. Еремеевский.- СПб. : Питер, 2013. – 176 с. 3 Бабаев, А. Создание сайтов [Текст] / А. Бабаев, Н. Евдокимов. – М. : 2016. – 304 с. 4 Берд, Д. Web-дизайн. Руководство разработчика [Текст] / Д. Берд. – СПб. : Питер, 2012. – 224 с. 5 Брауде, Дж. Технология разработки программного обеспечения [Текст] / Дж. Брауде. – СПб. : Питер, 2014. – 656 с. 6 Бьюли, А. Изучаем SQL [Текст] / А. Бьюли. – М. : Символ- Плюс, 2014. – 312 с. 7 Вейтман, В. Программирование для Web [Текст] / В. Вейтман. – Москва: Диалектика, 2015 – 368 с. 8 Вора, П. Шаблоны проектирования Web-приложений [Текст] / П. Вора. – М. : Эксмо, 2013. – 312 с. 9 Дари, К. PHP и MySQL. Создание интернет-магазина [Текст] / К. Дари, Э. Баланеску. – М.: Вильямс, 2014. – 640 с. 10 Дубейковский, В.И. Эффективное моделирование с CA ERwin Process Modeler и AllFusion Process Modeler [Текст] / В.И. Дубейковский. – Москва: Диалог-МИФИ, 2013. – 384 с. 11 Дунаев, В. Базы данных. Язык SQL для студента [Текст] / В. Дунаев. – СПб.: БХВ-Петербург, 2012. – 312 с. 12 Дюбуа, П. MySQL [Текст] / П. Дюбуа. – М. : Вильямс, 2013. – 450 с. 81
13 Кантор, М. Управление программными проектами. Практическое руководство по разработке успешного программного обеспечения [Текст] / М. Кантор. – М.: Вильямс, 2013. – 176 с. 14 Коггзолл, Д. PHP 5. Полное руководство [Текст] / Д. Коггзолл. – Москва: Диалектика, 2014. – 752 с. 15 Колисниченко, Д.Н. PHP 5 и MySQL 6. Разработка Webприложений [Текст] / Д.Н. Колисниченко. – СПб: БХВ-Петербург, 2014. – 528 с. 16 Кроудер, Д. Создание web-сайта для чайников [Текст] / Д. Кроудер. – М.: Вильямс, 2016. – 336 с. 17 Макаровских, Т. Документирование программного обеспечения. В помощь техническому писателю. Учебное пособие[Текст] / Т. Макаровских. – М.: Ленанд, 2015. – 266 с. 18 Макдональд, М. Создание Web-сайта. Недостающее руководство [Текст] / М. Макдональд. – СПб. : БХВ-Петербург, 2016. – 624 с. 19 Макконнелл, С. Профессиональная разработка программного обеспечения [Текст] / С. Макконнелл. – М. : Символ-Плюс, 2016. – 240 с. 20 Маклаков, С.В. BPwin и ERwin. CASE – средства разработки информационных систем [Текст] / С.В. Маклаков. – Москва: ДиалогМИФИ, 2014. – 256 с. 21 Маклаков, С.В. Моделирование бизнес-процессов с AllFusion Process Modeler [Текст] / С.В. Маклаков. – Москва: Диалог-МИФИ, 2014. – 224 с. 22 Мержевич, В. HTML и CSS на примерах [Текст] / В. Мержевич. – СПб. : БХВ-Петербург, 2015. – 448 с. 23 Мерсер, К. PHP 5 для начинающих [Текст] / К. Мерсер. – Москва: Вильямс, 2015. – 848 с. 24 Мотев, А. Уроки MySQL [Текст] / А. Мотев. – СПб. : БХВПетербург, 2014. – 208 с. 82
25 Никсон, Р. Создаем динамические web-сайты с помощью PHP, MySQL и JavaScript / Р. Никсон. – Спб: Питер, 2015. – 496 с. 26 Оболенски, Н. Практический реинжиниринг бизнеса [Текст] / Н. Оболенски. – Москва: ЛОРИ, 2014. – 368 с. 27 Овчинников, автоматизированных В.В. Методология информационных систем. проектирования Основы системного подхода / В.В. Овчинников. – М: Компания Спутник, 2015. – 285 с. 28 Паттерсон, Д. Архитектура компьютера и проектирование компьютерных систем [Текст] / Д. Паттерсон, Дж. Хеннесси. – СПб. : Питер, 2013. – 784 с. 29 Пилон, Д. Управление разработкой ПО [Текст] / Д. Пилон. – СПб. : Питер, 2015. – 455 с. 30 Прохорова, М. Организация работы интернет-магазина [Текст] / М. Прохорова, А. Коданина. – М. : Дашков и Ко, 2015. – 256 с. 31 Пфаффенбергер, Б. HTML, XHTML и CSS. Библия пользователя [Текст] / Б. Пфаффенбергер, С. Шафер, Ч. Уайт, Б. Кароу. – Москва: Диалектика, 2014 – 752 с. 32 Робсон, М. Практическое руководство по реинжинирингу бизнес процессов [Текст] / М. Робсон, Ф. Уллах. – Москва: Аудит, ЮНИТИ, 2014. – 224 с. 33 Ручкин, В. Архитектура компьютерных сетей [Текст] / В. Ручкин. – М . : Диалог-МИФИ, 2014. – 240 с. 34 Скиена, С. Алгоритмы. Руководство по разработке [Текст] / С. Скиена. – СПб. : БХВ-Петербург, 2011. – 720 с. 35 Скотт, Б. Проектирование Web-интерфейсов [Текст] / Б. Скотт. – М. : Символ-Плюс, 2013. – 352 с. 36 Смирнов, А. Архитектура вычислительных систем [Текст] / А. Смирнов. – М. : Эксмо, 2014. – 320 с. 37 Соловьев, Д. Интернет-магазин без правил [Текст] / Д. Соловьев. – СПб. : Питер, 2013. – 176 с. 83
38 Степаненко, О. Сборка компьютера [Текст] / О. Степаненко. – М. : Вильямс, 2014. – 544 с. 39 Тахакхогхи, С. Руководство по MySQL [Текст] / С. Тахакхогхи. – М. : Русская Редакция, 2013. – 544 с. 40 Тельнов, Ю.Ф. Реинжиниринг бизнес-процессов [Текст]: учебное пособие / Ю.Ф. Тельнов. – Москва: Московский международный институт эконометрики, информатики, финансов и права, 2013. – 99 с. 41 Ульман, Л. PHP и MySQL. Создание интернет-магазинов [Текст] / Л. Ульман. – М. : Вильямс, 2015. – 544 с. 42 Уэнц, К. PHP и MySQL. Карманный справочник [Текст] / К. Уэнц. – М. : Вильямс, 2016. – 155 с. 43 Федотова, Д.Э. CASE-технологии [Текст]: практикум / Д.Э. Федотова, Ю.Д. Семенов, К.Н. Чижик. – Москва: Горячая Линия, 2015. – 160 с. 44 Фримен, Э. Паттерны проектирования[Текст] / Э. Фримен. – СПб. : Питер, 2016. – 656 с. 45 Харрис, Э. PHP/MySQL для начинающих [Текст] / Э. Харрис. – Москва: Кудиц-образ, 2015. – 384 с. 46 Хоган, Б. Книга Web-программиста. Секреты профессиональной разработки web-сайтов [Текст] / Б. Хоган, К. Уоррен. – СПб. : Питер, 2013. – 288 с. 47 Хокинс, С. Администрирование Web-сервера Apache и руководство по электронной коммерции [Текст] / С. Хокинс. – Москва: Диалектика, 2012. – 336 с. 48 Шкляр, Л. Архитектура Web-приложений [Текст] / Л. Шкляр, Р. Розен. – М. : Эксмо, 2015. – 640 с. 49 Якубайтис, Э. Архитектура вычислительных сетей [Текст] / Э. Якубайтис. – М. : Статистика, 2015. – 280 с. 50 Янк, К. PHP и MySQL. От новичка к профессионалу [Текст] / К. Янк. – М. : Эксмо, 2014. – 384 с. 84
ПРИЛОЖЕНИЕ А Организационная структура управления Организации ИП Бровков Г.Е. «Конфеты оптом» Руководитель Директор по работе с поставщиками и производителями Финансовый директор Отдел логистики Отдел сбыта Склад Курьеры и водители Контроль качества Менеджеры Фасовщики Кладовщики Рисунок А.1 – Схема управления 85 Бухгалтерия
ПРИЛОЖЕНИЕ Б Сравнение характеристик рассматриваемых web-сайтов Таблица Б.1 – Сравнение характеристик рассматриваемых web-сайтов Характеристика Web-сайты Магазин кондитерских изделий Сказка, http://skazkatd.ru/ Фабрика печенья Авангард, http://www.avangardpf.ru/ Оптовая Компания ООО Паллада, http://www.palladamo.ru/ 1.Эргономичность 3 дизайна (дизайн сайта устарел, не отслеживается структура сайта) 5 2.Наличие электронного каталога с названием, описанием, фотографией, ценой 3.Возможность оформить заказ онлайн 4.Возможность безналичной оплаты онлайн 5.Возможность отправить заявку менеджеру 2 (отсутствует описание, фотография и цена) 4 (отсутствует цена) 4 (устаревшая структура сайта, неудобное расположение элементов) 5 1 1 1 1 1 1 1 4 (реализовано, но не как функция «быстрого заказа») Итого 8 3 (быстро заявку по рассматриваемому товару отправить нельзя, есть форма обратной связи на странице Контакты) 14 86 16
ПРИЛОЖЕНИЕ В Интерфейсы программных средств РисунокВ.1 – ИнтерфейсMicrosoft Office FrontPage 2003 РисунокВ.2 – ИнтерфейсAdobe DreamweaverCS6 87
РисунокВ.3 – Интерфейс JetBrains PhpStorm 9.0 РисунокВ.4 – Интерфейс AllFusion Process Modeler 7 88
РисунокВ.5 – Интерфейс AllFusion Erwin Data Modeler 7 89
ПРИЛОЖЕНИЕ Г Рисунок Г.1 – Главная страница web-сайта Рисунок Г.2 – Карточка товара «Вафли Артек 75 г 4 шт» 90
Рисунок Г.3 – Карточка товара «Вафли Артек 75 г 4 шт» с открытой корзиной товаров Рисунок Г.4 – Оформление заказа 91
Рисунок Г.5 – Проверка заказа Рисунок Г.6 – Оплата заказа через платежную систему Яндекс.Деньги 92
Рисунок Г.7 – Система управления заказами 93
ПРИЛОЖЕНИЕ Д Таблица Д.1 – Даталогическая модель базы данных Сущность Категории Населенный пункт Идентификатор таблицы Category city_delivery Заказчики Customers Способы доставки Delivery Email Email Ссылки Links Заказы Orders Товары в заказе orders_products Способы оплаты Payment_method Атрибут Идентификатор поля Тип поля РК Номер категории Название категории Название категории транслит Позиция Номер населенного пункта Название Цена Позиция Расстояние Номер заказчика Название Email Телефон Номер способов доставки Название Номер email Название Номер ссылки Название ссылки Название на транслите Позиция Номер категории Номер заказа Дата заказа Сумма заказа Номер заказчика Номер получателя Номер доставки Цена доставки Дата доставки Время доставки С Время доставки До Номер статуса заказа Примечание Флаг смс информирования Флаг вайбер уведомления Комментарии Способ оплаты Дата оплаты Номер связки Номер заказа Номер товара Количество Номер способа оплаты Название category_id category_name Integer(11) Varchar(255) + category_name_eng Varchar(255) category_position city_delivery_id Integer (11) Integer(11) name cost position km customer_id name email phone delivery_id Varchar(255) Integer (11) Integer (11) Integer (11) Integer(11) Varchar(255) Varchar(255) Varchar(255) Integer(11) name email_id email link_id link_name link_name_eng Varchar(255) Integer(11) Varchar(255) Integer(11) Varchar(255) Varchar(255) link_position parent_category order_id date_order amount customer_id recipient_id delivery_id delivery_cost date_delivery time_with_delivery time_to_delivery status Integer(11) Integer(11) Integer(11) datetime float Integer(11) Integer(11) Integer(11) Integer(11) datetime time time Integer(11) prim_order bonus_smsinfo Text Varchar(10) bonus_viberinfo Varchar(10) comments pay_method_id date_payment order_product_id orders_id products_id quantity pay_method_id Varchar(255) Integer(11) datetime Integer(11) Varchar(255) Integer (11) name Varchar(255) 94 Integer(11) + + + + + + + +
Статусы заказа Продукция Payment_status Products Получатели Recipient Отзывы клиентов Reviews_clients Служебная информация Seo_tags Номер статуса Название Номер товара Название Состав Категории Флаг видимости Флаг главной страницы Изображение Флаг стикера Название файла стикера Название файла для стикера 2 Дата опубликования Флаг нет в наличие Позиция на сайте Цена поставщика Отпускная цена Номер получателя ФИО Телефон Адрес Номер отзыва ФИО Сайт Текст Дата отзыва Флаг видимости Фотография Номер служебной информации Страница Заголовок H1 H2 95 status_id name products_id name composition keywords visible hits Integer(11) Varchar(255) Integer(11) Varchar(255) text Varchar(500) enum('0', '1') enum('0', '1') img sticker sticker_img Varchar(500) enum('0', '1') Varchar(500) sticker_TopLeft Varchar(500) date timestamp not_available position price_producer price_total recipient_id fio phone address reviews_clients_id first_name social_syte textComment datetime visible photo seo_tags_id enum('0', '1') Integer(11) Integer(11) Integer(11) Integer(11) Varchar(255) Varchar(255) Varchar(255) Integer(11) Varchar(255) Varchar(255) Text timestamp enum('1', '0') Varchar(255) Integer(11) page title h1 h2 Varchar(255) Varchar(255) Varchar(255) Varchar(255) + + + + +
ПРИЛОЖЕНИЕ Е Рисунок Е.1 – Блок-схема программных модулей web-сайта 96
ПРИЛОЖЕНИЕ Ж Программные коды php-страниц Index.php <?php // описание запрета прямого обращения define('BLOCK', TRUE); // подключение файла конфигурации require_once 'config.php'; // подключение контроллера require_once CONTROLLER; ?> Сonfig.php <?php // настройкиподключения define('PATH', 'http://konfety-optom.loc/'); // домен define('HOST', 'localhost'); // сервер define('USER', 'root'); // пользователь define('PASS', ''); // пароль //define('PASS', 'root'); // пароль define('DB', 'konfety_optom'); // БД define('MODEL','model/model.php'); // модель define('CONTROLLER','controller/controller.php'); // контроллер define('VIEW','views/'); // вид define('TEMPLATE', VIEW); // активныйшабло define('PRODUCTIMG', PATH.'userfiles/'); // папкаскартинкамитоваров define('ADMIN_TEMPLATE', 'templates/'); // папкашаблоновадминистративнойчасти define('PAYMENT_EMAIL', 'payment@konfety-optom.ru'); // email контроляплатежейизаказов define('INFO_EMAIL', 'info@konfety-optom.ru'); // email поддержкииконсультации define('PHONE', '8 800 123 1234'); // телефон для заказов define('ADDRESS', 'г.Белгород, ул. Корочанская, 85а'); // телефон для заказов define('YANDEX_WALLET', '410012195640357'); // Яндекс.Деньги define('DELIVERY_PRICE', '200'); // стоимость доставки по умолчанию // подключение к серверу с БД mysql_connect(HOST, USER, PASS) or die('Не удалось подключиться к серверу'); mysql_select_db(DB) or die('Не удалось открыть БД'); mysql_query("SET NAMES 'UTF8'") or die('Не удалось установить кодировку'); ?> Controller.php <?php /*----------------------------------СТРАНИЦА КОНТРОЛЛЕРА Обработка всех операций из базы и в базу данных, формирование дополнительных страниц и массивов ------------------------------------*/ defined('BLOCK') ordie('Доступ запрещен'); // запрет прямого доступа session_start(); // подключение модели require_once MODEL; require_once 'functions/functions.php'; // подключение библиотеки функций // сбросить фильтр if($_GET['filter']=='clear'){ unset($_SESSION['filter']); } // получение email для рассылки if($_POST['podpiska']){ add_email($_POST['email_newsletter']); // добавления email в базу } // получени динаминой части шаблона // по умолчанию открыаем категорию цветы-хиты $view = empty($_GET['view']) ? 'hits' : $_GET['view']; 97
// заполнение информацией в meta и seo теги для каждого фильтра левого меню $seo_tags = select_seo_tags($view); foreach($seo_tags as $data){ $print_title = $data['title']; $print_h1 = $data['h1']; $print_h2 = $data['h2']; $print_footer_content = $data['h2_p']; } // вывод отзывов в левом меню $reviews = get_reviews(3); // получить все комментраии/отзывы switch($view){ case('hits'): // Цветы популярные (главная страница) $products = select_products(); $menu_left = getLeftMenu(); // получениемассивалевогоменю unset($_SESSION['filter']); // сбросить фильтры break; case('cat'): // вывод товаров в зависимости от установленного фильтра // получаем название нажатой ссылки и запоминаем её в фильтре определенной категории if(isset($_GET['category_id'])){ $products = getProduct($_GET['category']); // получаем массив товаров getCategory_Rus($_GET['category']); //получение массива с русскими категориями для хлебных крошек } $menu_left = getLeftMenu(); // получение массива левого меню // заполнение информацией в meta и seo теги для каждого фильтра левого меню $seo_tags = select_seo_tags($_GET['category']); foreach($seo_tags as $data){ $print_keywords = $data['keywords']; $print_description = $data['description']; $print_title = $data['title']; $print_h1 = $data['h1']; $print_h2 = $data['h2']; $print_footer_content = $data['h2_p']; } break; case('addtocart'): // осуществляетдобавлениевкорзину $products_id = abs((int)$_GET['products_id']); addtocart($products_id); // Добавление товара в корзину заказа $_SESSION['total_sum'] = total_sum($_SESSION['cart']); // сумма заказа в корзине и получение других атрибутов total_quantity(); // кол-во товаров в корзине + защита от ввода несуществующего ID товара //header("Location: oformlenie_zakaza"); // переход на страницу Оформления заказа header("Location: oformleniye_zakaza"); // переход на страницу Оформления заказа (новая) break; case('card_product'): // Карточка товара $style = "<link rel='stylesheet' type='text/css' href='".TEMPLATE."css/card_product.css'/>"; // получение id товара $product_id = abs((int)$_GET['product_id']); // увеличение счетчика просмотров на 1 plus_one_counter_display($product_id); // получение данных по выбранному товару if($product_id){ $product = get_product($product_id); } // вернуть страницу "Ошибка 404", если не найден букет или visible=0 if(!$product){ header('Location: 404.html'); } // поставить запрет на вывод в левом меню блоков: Улыбки, Наши клиенты, виджет ВК $hide_block = 1; 98
// заполнение информацией в meta и seo теги для каждого фильтра левого меню $seo_tags = select_seo_tags($bouquet_id); if($seo_tags){ foreach($seo_tags as $data){ $print_keywords = $data['keywords']; $print_description = $data['description']; $print_title = $data['title']; $print_h1 = $data['h1']; $print_h2 = $data['h2']; $print_footer_content = $data['h2_p']; } } else { // вставка в title $print_title = $bouquet['name']; } // "быстрый заказ" if(isset($_POST['CallMe_Order'])){ $name = clear($_POST['name']); $phone = clear($_POST['phone']); $products_id = clear($_POST['products_id']); send_CallMe_Order($name, $phone, $products_id); } break; case('page_payment'): // отдельная страница Оплаты break; case('page_shipping'): // отдельная страница Доставка break; case('page_reviews'): // отдельная страница Отзывы $reviews = get_reviews(9); // получить все комментраии/отзывы // добавить комментарий на страницу Отзывы if($_POST['add_comment']){ $textComment = clear($_POST['textComment']); $first_name = clear($_POST['first_name']); $social_syte = clear($_POST['social_syte']); $social_syte = trim($social_syte, 'https://'); // убрать "https://" из ссылки $social_syte = trim($social_syte, 'http://'); // убрать "http://" из ссылки add_comment($textComment, $first_name, $social_syte); redirect(); } break; case('page_contacts'): // отдельнаястраницаКонтакты break; case('page_about_us'): // отдельная страница О нас break; case('page_pay_status'): // отдельная страница Проверка статуса заказа $print_title = "Статус заказа"; // вставка в title // получение информации по заказу через POST if($_POST['check_status']){ $number_order = clear(abs((int)$_POST['number_order'])); $phone_last4 = clear(abs((int)$_POST['phone_last4'])); $check_status = check_status($number_order, $phone_last4); $desc = "Оплата заказа №".$number_order; } // получение информации по заказу через GET if($_GET['check_status']){ 99
$number_order = clear(abs((int)$_GET['number_order'])); $phone_last4 = clear(abs((int)$_GET['phone_last4'])); $check_status = check_status($number_order, $phone_last4); $desc = "Оплата заказа №".$number_order; } break; case('page_callback'): // отдельная страница Заказать обратный звонок $print_title = "Заказать звонок"; // вставка в title if($_POST['send_callback']) { send_callback(); // отправить заявку на обратный звонок на email администратору } break; case('ordering'): // Оформление заказа $style = "<link rel='stylesheet' type='text/css' href='".TEMPLATE."css/ordering.css'/>"; $city_delivery = get_city_delivery(); // получение населенных пунктов доставки $payment_method = select_payment_method(); // получение способов оплаты if(isset($_POST['check_out'])){ add_order(); //добавление заказа } // удаление товара из корзины if(isset($_GET['delete'])){ $id = abs((int)$_GET['delete']); if($id){ delete_from_cart($id); } redirect(); } if($_SESSION['order']['date_delivery']){ $date_delivery = $_SESSION['order']['date_delivery']; } else { $date_delivery = date('Y-m-d'); } $print_title = "Оформление заказа"; break; case('checking'): // Проверка заказа $style = "<link rel='stylesheet' type='text/css' href='".TEMPLATE."css/checking.css'/>"; $desc = "Оплата заказа №{$_SESSION['order']['order_id']}"; $order_sum = $_SESSION['order']['order_sum']; break; default: // если из адресной строки получено имя несуществуюшего шаблона $products = select_products(); $menu_left = getLeftMenu(); // получение массива левого меню break; } // подключение вида require_once TEMPLATE.'index.php'; ?> Model.php <?php defined('BLOCK') or die('Доступ запрещен'); // запрет прямого доступа ?> <?php /* ====Левое меню - получение массива==== */ functiongetLeftMenu(){ $query = "SELECT * FROM links INNER JOIN category ON links.parent_category = category.category_id ORDER BY category_position, link_position"; $res = mysql_query($query) or die(mysql_error()); $menu = array(); $name = ''; // флаг имени категории while($row = mysql_fetch_assoc($res)){ if($row['category_name'] != $name){ // если такой категории меню в массиве ещё нет 100
$menu[$row['category_id']]['cat_name_rus'] = $row['category_name']; // добавляем категорию меню в массив $menu[$row['category_id']]['cat_name_eng'] = $row['category_name_eng']; // добавляем категорию меню в массив $name = $row['category_name']; } $menu[$row['parent_category']]['link_rus'][$row['link_id']] = $row['link_name']; // заносим названия ссылок $menu[$row['parent_category']]['link_eng'][$row['link_id']] = $row['link_name_eng']; // заносим ссылки href } return $menu; } /* ====Левое меню - получение массива==== */ /* ==== Получение товаров для главной ==== */ functionselect_products(){ $query = "SELECT * FROM products WHERE visible = '1' AND not_available = '0' ORDER BY position LIMIT 18"; $res = mysql_query($query) or die(mysql_error()); $arr = array(); while($row = mysql_fetch_assoc($res)){ $arr[] = $row; } return $arr; } /* ==== Получение товаров для главной ==== */ /* ====Получение массива товаров по выбранной ссылки в меню слева==== */ function getProduct($keywords){ $query = "SELECT * FROM products WHERE keywords like '%$keywords%' AND visible = '1' AND not_available = '0' ORDER BY position LIMIT 15"; $res = mysql_query($query) or die(mysql_error()); $products = array(); while($row = mysql_fetch_assoc($res)){ $products[] = $row; } $count = mysql_num_rows($res); // Получение количества записей return $products; } /* ====Получение массива товаров по выбранной ссылки в меню слева==== */ /* ====Получение способов оплаты==== */ function select_payment_method(){ $query = "SELECT * FROM `payment_method` WHERE 1"; $res = mysql_query($query) or die(mysql_error()); $arr = array(); while($row = mysql_fetch_assoc($res)){ $arr[] = $row; } return $arr; } /* ====Получение способов оплаты==== */ /* ====Хлебные крошки - формирования категорий на русском языке==== */ function getCategory_Rus($link_name_eng){ $query = "SELECT link_name, link_name_eng, category_name_eng FROM links, category WHERE links.parent_category = category.category_id AND link_name_eng = '$link_name_eng'"; $res = mysql_query($query) or die(mysql_error()); while($row = mysql_fetch_assoc($res)){ if($row['category_name_eng'] == 'hochu') $category_rus .= "<a href=".$row['link_name_eng'].">".$row['link_name']."</a> / "; else $category_rus .= "<a href=".$row['category_name_eng']."_".$row['link_name_eng'].">".$row['link_name']."</a> / "; } $_SESSION['filter']['category_rus'] = $category_rus; } /* ====Хлебные крошки - формирования категорий на русском языке==== */ /* ====Сумма заказа в корзине + атрибуты товара==== */ function total_sum($products){ $total_sum = 0; $str = implode(',',array_keys($products)); /* Рассчитываем итоговую сумму для товаров */ 101
$query = "SELECT products_id, name, price_total, img, price_producer FROM products WHERE products_id IN ($str)"; $res = mysql_query($query); while($row = mysql_fetch_assoc($res)){ $_SESSION['cart'][$row['products_id']]['products_id'] = $row['products_id']; $_SESSION['cart'][$row['products_id']]['name'] = $row['name']; $_SESSION['cart'][$row['products_id']]['price_total'] = $row['price_total']; $_SESSION['cart'][$row['products_id']]['img'] = $row['img']; $_SESSION['cart'][$row['products_id']]['need_day_delivery'] = $row['need_day_delivery']; $_SESSION['cart'][$row['products_id']]['price_producer'] = $row['price_producer']; $total_sum += $_SESSION['cart'][$row['products_id']]['qty'] * $row['price_total']; } return $total_sum; } /* ====Сумма заказа в корзине + атрибуты товара==== */ /* ==== Определяем сколько за заказ должны поставщику ==== */ function total_sum_producer($products){ $total_sum_producer = 0; $str = implode(',',array_keys($products)); $query = "SELECT price_producer FROM products WHERE products_id IN ($str)"; $res = mysql_query($query) or die(mysql_error()); while($row = mysql_fetch_assoc($res)){ $total_sum_producer += $row['price_producer']; } return $total_sum_producer; } /* ==== Определяем сколько за заказ должны поставщику ==== */ /* ====Способы доставки - получение массива==== */ functionget_delivery(){ $query = "SELECT * FROM delivery"; $res = mysql_query($query) or die(mysql_error()); $delivery = array(); while ($row = mysql_fetch_assoc($res)){ $delivery[] = $row; } return $delivery; } /* ====Способы доставки - получение массива==== */ /* ====Добавление заказа==== */ functionadd_order(){ // получаем и экранируем входящие данные // данныезаказчика $phone = clear($_POST['phone']); $_SESSION['order']['phone'] = $phone; $email = clear($_POST['email']); $_SESSION['order']['email'] = $email; // данные о доставке $city_delivery_id = clear($_POST['city_delivery_id']); $_SESSION['order']['city_delivery_id'] = $city_delivery_id; $recipient_fio = clear($_POST['recipient_fio']); $_SESSION['order']['recipient_fio'] = $recipient_fio; $recipient_phone = clear($_POST['recipient_phone']); $_SESSION['order']['recipient_phone'] = $recipient_phone; $date_delivery = clear($_POST['date_delivery']); $_SESSION['order']['date_delivery'] = $date_delivery; $time_with = clear($_POST['time_with']); $_SESSION['order']['time_with'] = $time_with; $time_to = clear($_POST['time_to']); $_SESSION['order']['time_to'] = $time_to; $recipient_address = clear($_POST['recipient_address']); $_SESSION['order']['recipient_address'] = $recipient_address; $pay_method_id = clear($_POST['pay_method_id']); $_SESSION['order']['pay_method_id'] = $pay_method_id; // бонус СМС-уведомление $bonus_smsinfo = clear($_POST['bonus_smsinfo']); if($bonus_smsinfo == 'on') { $_SESSION['order']['bonus_smsinfo'] = 'on'; } else { $_SESSION['order']['bonus_smsinfo'] = 'off'; } // бонус Viber и WhatsApp уведомление $bonus_viberinfo = clear($_POST['bonus_viberinfo']); if($bonus_viberinfo == 'on') { $_SESSION['order']['bonus_viberinfo'] = 'on'; } else { $_SESSION['order']['bonus_viberinfo'] = 'off'; } // комментарий к заказу $comments = clear($_POST['comments']); $_SESSION['order']['comments'] = $comments; // добавляем заказчика в базу данных $customer_id = add_customer($phone, $email); // принимает id клиента или ложь if(!$customer_id) return false; // прекращаем скрипта, если возвращено false 102
// добавляем получателя в базу данных $recipient_id = add_recipient($recipient_fio, $recipient_phone, $recipient_address); // принимает id клиента или ложь if(!$recipient_id) return false; // прекращаем скрипта, если возвращено false // сохраняем заказ в базе данных save_order($customer_id, $recipient_id, $city_delivery_id, $date_delivery, $time_with, $time_to, $bonus_smsinfo, $bonus_viberinfo, $comments, $email, $pay_method_id); } /* ====Добавление заказа==== */ /* ====Добавление заказчика ==== */ function add_customer($phone, $email){ $query = "INSERT INTO customers (phone, email) VALUES ('$phone', '$email')"; $res = mysql_query($query) or die(mysql_error()); // если заказчик добавлен - получаем его ID if(mysql_affected_rows() > 0){ return mysql_insert_id(); }else{ return false; } } /* ====Добавление заказчика ==== */ /* ====Добавление получателя ==== */ function add_recipient($recipient_fio, $recipient_phone, $recipient_address){ $query = "INSERT INTO recipient (`fio`, `phone`, `address`) VALUES ('$recipient_fio', '$recipient_phone', '$recipient_address')"; $res = mysql_query($query) or die(mysql_error()); // если получатель добавлен - получаем его ID if(mysql_affected_rows() > 0){ return mysql_insert_id(); }else{ returnfalse; } } /* ====Добавление получателя ==== */ /* ====Получение стоимости доставки по конкретному городу==== */ function get_city_delivery_one($delivery_id){ $query = "SELECT * FROM `city_delivery` WHERE `city_delivery_id` = '$delivery_id' LIMIT 1"; $res = mysql_query($query); $cost_delivery = array(); $cost_delivery = mysql_fetch_assoc($res); return $cost_delivery; } /* ====Получение стоимости доставки по конкретному городу==== */ /* ====Оформление заказа==== */ function save_order($customer_id, $recipient_id, $city_delivery_id, $date_delivery, $time_with, $time_to, $bonus_smsinfo, $bonus_viberinfo, $comments, $email, $pay_method_id) { // расчет стоимости доставки $city_delivery_one = get_city_delivery_one($city_delivery_id); // получение названия населенного пункта и стоимости доставки $amount = $city_delivery_one['cost']; // расчет итоговой стоимости заказа = стоимость доставки + стоимость товаров в корзине (букеты и сопутствующие) $amount = $amount + total_sum($_SESSION['cart']); // по умолчанию статус заказа №1 - "Обработка заказа" $status = 1; $query = "INSERT INTO `orders`(`date_order`, `amount`, `customer_id`, `recipient_id`, `delivery_id`, `date_delivery`, `time_with_delivery`, `time_to_delivery`, `status`, `prim_order`, `bonus_smsinfo`, `bonus_viberinfo`, `comments`, `pay_method_id`) VALUES (NOW(),'$amount','$customer_id','$recipient_id','$city_delivery_id','$date_delivery','$time_with','$time_to','$status',' ','$bonus_smsinfo','$bonus_viberinfo','$comments','$pay_method_id')"; mysql_query($query); // если не получилось сохранить заказ, то удаляем заказчика if(mysql_affected_rows() == -1){ mysql_query("DELETE FROM customers WHERE customer_id = '$customer_id'"); returnfalse; } 103
// получаем id сохраненного заказа $order_id = mysql_insert_id(); // формируем массив заказанных товаров для вставки в orders_bouquets foreach($_SESSION['cart'] as $products_id => $value){ $val .= "($order_id, $products_id, {$value['qty']}),"; } $val = substr($val, 0, -1); // удаляем последнюю запятую // вставлям заказанные товары $query = "INSERT INTO orders_products (orders_id, products_id, quantity) VALUES $val"; mysql_query($query); // если не выгрузился заказ, то удаляем заказчика и заказ if(mysql_affected_rows() == -1){ mysql_query("DELETE FROM orders WHERE order_id = $order_id"); mysql_query("DELETE FROM customers WHERE customer_id = $customer_id"); returnfalse; } // отправляем письмо заказчику и администратору mail_order($order_id, $email); // помещаем в сессиию необходимые данные, которые отразим на странице проверки заказа $_SESSION['order']['cost_delivery'] = $city_delivery_one['cost']; // стоимость доставки $_SESSION['order']['name_delivery'] = $city_delivery_one['name']; // название города доставки $_SESSION['order']['order_sum'] = $amount; // стоимость заказа с доставкой $_SESSION['order']['order_id'] = $order_id; // номер заказа // перенос на страницу проверки заказа header("Location: proverka_zakaza"); returntrue; } /* ====Сохранение заказа==== */ /* ====Отдельный товар==== */ function get_product($product_id){ $query = "SELECT * FROM products WHERE products_id = $product_id AND visible = '1'"; $res = mysql_query($query); $products = array(); $products = mysql_fetch_assoc($res); return $products; } /* ====Отдельный товар==== */ /* ====Информацияпоконкретномуторту==== */ function select_card_cake($bouquet_id){ $query = "SELECT * FROM bouquets WHERE bouquet_id = '$bouquet_id' AND visible_cakes = '1'"; $res = mysql_query($query) or die(mysql_error()); $cake = mysql_fetch_assoc($res); return $cake; } /* ====Отдельный товар==== */ /* ====Сумма конкретного букета==== */ function get_price_bouquet($bouquet_id){ $query = "SELECT price FROM bouquets WHERE bouquet_id = $bouquet_id"; $res = mysql_query($query); $row = mysql_fetch_row($res); $bouquet_price = $row[0]; return $bouquet_price; } /* ====Сумма конкретного букета==== */ /* ====Формируем данные для проверки по определенному заказу==== */ function get_order($order_id){ $orders = array(); $query = "SELECT orders.time_with_delivery, orders.time_to_delivery, DATE_FORMAT(orders.date_delivery, '%d.%m.%y') as data_dostavki, orders.amount, 104
orders.delivery_cost, city_delivery.name as city_name, recipient.fio as rec_fio, recipient.phone as rec_phone, recipient.address as rec_adrs, customers.phone as phone_client, customers.email as email_client FROM orders, recipient, customers, city_delivery WHERE orders.order_id = '$order_id' AND orders.recipient_id = recipient.recipient_id AND orders.customer_id = customers.customer_id AND orders.delivery_id = city_delivery.city_delivery_id"; $res = mysql_query($query); while($row = mysql_fetch_assoc($res)){ $orders['person_data'][] = $row; } $query = "SELECT orders_products.orders_id, products.name, products.img, products.price_total, orders_products.quantity FROM orders_products, products WHERE orders_products.orders_id = '$order_id' AND orders_products.products_id = products.products_id"; $res = mysql_query($query); while($row = mysql_fetch_assoc($res)){ $orders['bouquets_data'][] = $row; } return $orders; } /* ====Формируем данные для проверки по определенному заказу==== */ /* ==== Добавление email подписчика в базу для рассылки ==== */ function add_email ($email_newsletter){ $email_newsletter = clear(trim($email_newsletter)); // убираем пробелы и экранируем $query = "INSERT INTO email (email) VALUES ('$email_newsletter')"; $res = mysql_query($query) or die(mysql_error()); if(mysql_affected_rows() > 0){ // если добавлися успешно echo "<script>alert('Вы подписались на красивые букеты и акции')</script>"; returntrue; }else{ // если произошла ошибка при добавлении returnfalse; // завершить выполнение, т.к.появились ошибки о не заполнении полей } } /* ==== Добавление email подписчика в базу для рассылки ==== */ /* ==== Получение случайного слова (анкора) для ссылки ==== */ function get_round_ankor ($link){ /*$query = "SELECT words FROM anchors WHERE anchor_id >= (SELECT FLOOR( MAX(anchor_id) * RAND()) FROM anchors) AND link = '$link' ORDER BY anchor_id LIMIT 1";*/ $query = "SELECT words FROM anchors WHERE link = '$link' ORDER BY RAND() LIMIT 1"; $res = mysql_query($query) or die(mysql_error()); /*$words = mysql_fetch_assoc($res);*/ $row = mysql_fetch_row($res); return $row[0]; } /* ==== Получение случайного слова (анкора) для ссылки ==== */ /* ==== Получение случайного слова (анкора) для ссылки ==== */ function select_anchors($page){ $query = "SELECT * FROM anchors WHERE visible = '1' AND page like '%$page%'"; $res = mysql_query($query) or die(mysql_error()); $anchors = array(); while ($row = mysql_fetch_assoc($res)){ $anchors[] = $row; } 105
return $anchors; } /* ==== Получение случайного слова (анкора) для ссылки ==== */ /* ====Отправка уведомлений о заказе на email==== */ /*function mail_order($order_id, $email){ $orders = get_order($order_id); // тема письма $subject = "Skyflo.ru - заказ букета в интернет-магазине цветов"; // заголовки $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Skyflo.ru - доставка цветов <info@payment.ru>\r\n"; // тело письма $mail_body = " <div style='width: 800px; background-color: #F2F3F5; margin: 10px auto; border: 2px solid #777; box-shadow: 0 0 10px #000; '> <div style='width: 760px; height: 50px; background-color: #635da7; color: #fff; font: 24px Verdana; padding: 0 20px;'> Благодарим Вас за заказ! </div> <div style='padding: 20px 20px;'> <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> Номер Вашего заказа - <b>№{$order_id}</b> </span> <br> <br> "; // текст сообщения // атрибуты товара foreach($orders['bouquets_data'] as $order): $mail_body .= " <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> <center> <table align=center width=400> <tr><td>Название букета: <th>{$order['name']}</tr> <!--<tr><td>Количество: <th>{$order['quantity']}</tr>--> <tr><td>Цена: <th>{$order['price']} руб.</tr> <tr><td colspan=2 align=center><img src='http://skyflo.ru/userfiles/{$order['img']}' style='width:340px; border: 1px solid #777; borderradius: 10px 10px'/></tr> "; endforeach; $mail_body .= " </table> </center> </span> "; foreach($orders['person_data'] as $order): $mail_body .= " <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> <br><p>Мы бесплатно доставим букет <b>{$order['data_dostavki']}</b> в период <b>{$order['time_delivery']}</b> по адресу <b>{$order['rec_adrs']}</b> получателю - <b>{$order['rec_fio']}</b>.</p> <p>В записке к букету будет написано:</p> <center><textarea rows=6 cols=50 readonly />{$order['prim']}</textarea></center> </span> "; endforeach; $mail_body .= " <br /><br /><br /> <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> <a href='".PATH."status_zakaza'>Проверить статус заказа >> </span>"; $mail_body .= " <br /><br /><br /> <span style='font-size:16px; font-family:tahoma,geneva,sans-serif'>С уважением,<br>Команда Скайфло</span> <br /><br /><br /> </div> <div style='width: 800px; background-color: #635da7; color: #fff; padding: 0; margin: 0; text-align: center;'> <spanstyle='font-size:11px'> Пожалуйста, не отвечайте на это письмо.</span><br /> <span style='font-size:11px'> Если у Вас есть вопросы, пишите на адрес</span><a href='mailto:".INFO_EMAIL."' target='_blank' style='font-size:11px; color: #fff;' >".INFO_EMAIL."</a><br /> 106
<span style='font-size:11px'> или звоните <b>".PHONE."</b> (звонок по РФ бесплатный) </span><br /><br /> <spanstyle='font-size:11px'> Давайте дружить в социальных сетях:</span><br /> <a href='".LINK_VKONTAKTE."' target='_blank' style='font-size:11px' ><img src='http://skyflo.ru/views/belflo/images/logo-vk.png' width='30' /></a> <a href='".LINK_ODNOKLASSNIKI."' target='_blank' style='font-size:11px' ><img src='http://skyflo.ru/views/belflo/images/logoodnoklasniki.png' width='30' /></a> <a href='".LINK_INSTAGRAM."' target='_blank' style='font-size:11px' ><img src='http://skyflo.ru/views/belflo/images/logo-instagram.png' width='30' /></a> <a href='".LINK_FACEBOOK."' target='_blank' style='font-size:11px' ><img src='http://skyflo.ru/views/belflo/images/logo-facebook.png' width='30' /></a> <a href='".LINK_GOOGLEPLUS."' target='_blank' style='font-size:11px' ><img src='http://skyflo.ru/views/belflo/images/logogoogleplus.png' width='30' /></a> </div> </div> "; // отправка писем @mail($email, $subject, $mail_body, $headers); // письмо клиенту @mail(PAYMENT_EMAIL, $subject, $mail_body, $headers); // письмо администратору } */ /* ====Отправка уведомлений о заказе на email==== */ /* ====Отправка уведомлений о заказе на email==== */ function mail_order($order_id, $email){ $orders = get_order($order_id); // тема письма $subject = "Оформление заказа в Конфеты Оптом"; // заголовки $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Конфеты Оптом ".INFO_EMAIL."\r\n"; // тело письма $mail_body = " <div style='width: 600px; background-color: #ffffff; margin: 10px auto; border: 7px solid #827bcd;'> <div style='color: #827bcd; font: bold 30px Arial, Verdana; margin: 40px'> Благодарим Вас за заказ! </div> <div style='font: 16px Arial, Verdana; margin: 20px 40px'> <p> Здравствуйте, вы заказали: </p> "; foreach($orders['bouquets_data'] as $order): $mail_body .= " <div style='width: 400px; border: 3px solid #827bcd; margin: 20px auto; text-align: center;'> <div style='margin: 10px;'> <span style='font: bold 24px Arial, Verdana;'> \"{$order['name']}\"<br/> {$order['price']} руб. </span> </div> <img src='https://skyflo.ru/userfiles/{$order['img']}' alt='{$order['name']}' border='0' width='250'> </div> "; endforeach; $mail_body .= " <table cellpadding='10'> <tr> <td> <img src='https://skyflo.ru/views/belflo/images/icons/CalculatorIcon.png'> </td> <td width='300'> <span style='font: bold 14px Arial, Verdana'>Стоимость доставки: {$orders['person_data'][0]['delivery_cost']} руб.</span><br/> <span style='font: bold 20px Arial, Verdana'>Итого: {$orders['person_data'][0]['amount']} руб.</span> </td> </tr> </table> <table cellpadding='10'> <tr> <td> 107
<img src='https://skyflo.ru/views/belflo/images/icons/AirlineModeIcon.png'> </td> <td width='300'> <span style='font: 14px Arial, Verdana'> Мы доставим букет {$orders['person_data'][0]['data_dostavki']} в период {$orders['person_data'][0]['time_with_delivery']}-{$orders['person_data'][0]['time_to_delivery']} по адресу {$orders['person_data'][0]['city_name']}, {$orders['person_data'][0]['rec_adrs']} получателю {$orders['person_data'][0]['rec_fio']} (тел. {$orders['person_data'][0]['rec_phone']}). </span> </td> </tr> </table> <table cellpadding='10'> <tr> <td> <img src='https://skyflo.ru/views/belflo/images/icons/MsgIcon.png'> </td> <td width='300'> <span style='font: 14px Arial, Verdana'> В записке к заказу будет написано: </span> <div style='text-align: center;'> <textarea rows='5' cols='40'>{$orders['person_data'][0]['message']}</textarea> </div> </td> </tr> </table> <table cellpadding='10'> <tr> <td> <img src='https://skyflo.ru/views/belflo/images/icons/Mobile2Icon.png'> </td> <td width='300'> <span style='font: 14px Arial, Verdana'> О каждом этапе заказа мы будем уведомлять Вас по номеру: <b>{$orders['person_data'][0]['phone_client']}</b> </span> </td> </tr> </table> <table cellpadding='10'> <tr> <td> <img src='https://skyflo.ru/views/belflo/images/icons/Camera2Icon.png'> </td> <td width='300'> <span style='font: 14px Arial, Verdana'> Фотографию получателя с букетом мы отправим на e-mail: <b>{$orders['person_data'][0]['email_client']}</b> </span> </td> </tr> </table> <table cellpadding='10'> <tr> <td> <img src='https://skyflo.ru/views/belflo/images/icons/SetingIcon.png'> </td> <td width='300'> <span style='font: 14px Arial, Verdana'> Номер Вашего заказа <b>{$order_id}</b> </span> <a href='https://skyflo.ru/status_zakaza'><div style='width: 150px; background: #f7941d; border-radius: 3px; padding: 5px; text-align: center; color: #ffffff; margin-top: 5px;'>узнать статус заказа</div></a> </td> </tr> </table> </div> </div> <div style='width: 600px; margin: 0 auto;'> <table> <tr> <td style='width: 90px'> <img src='https://skyflo.ru/views/belflo/images/personal_photo/nastya.png' width='70'> </td> <td style='width: 200px; font: 12px Arial, Verdana;'> 108
С уважением,<br/> Анастасия Лунева<br/> Менеджер компании Skyflo </td> <td style='width: 200px; font: bold 14px Arial, Verdana; text-align: center'> skyflo.ru<br/> 8 800 775 4396<br/><br/> <a href='".LINK_VKONTAKTE."' title='Skyflo в Вконтакте'><img src='https://skyflo.ru/views/belflo/images/social-icon/vk.png' width='30' border='0' alt='Skyflo в Вконтакте'></a> <a href='".LINK_INSTAGRAM."' title='Skyflo в Instagram'><img src='https://skyflo.ru/views/belflo/images/social-icon/instagram.png' width='30' border='0' alt='Skyflo в Instagram'></a> <a href='".LINK_ODNOKLASSNIKI."' title='Skyflo в Одноклассники'><img src='https://skyflo.ru/views/belflo/images/social-icon/ok.png' width='30' border='0' alt='Skyflo в Одноклассники'></a> <a href='".LINK_FACEBOOK."' title='Skyflo в Facebook'><img src='https://skyflo.ru/views/belflo/images/social-icon/fb.png' width='30' border='0' alt='Skyflo в Facebook'></a> <a href='".LINK_GOOGLEPLUS."' title='Skyflo в Google+'><img src='https://skyflo.ru/views/belflo/images/social-icon/g-pluse.png' width='30' border='0' alt='Skyflo в Google+'></a> </td> </tr> </table> </div> "; // отправка писем @mail($email, $subject, $mail_body, $headers); // письмо клиенту @mail(INFO_EMAIL, $subject, $mail_body, $headers); // письмо администратору } /* ====Отправка уведомлений о заказе на email==== */ /* ====Проверка статуса заказа по его номеру==== */ function check_status($number_order, $phone_last4) { $check_status = array(); $query = "SELECT orders.order_id, payment_status.status_id, payment_status.name as name_status, orders.amount, orders.delivery_cost, DATE_FORMAT(orders.date_delivery, '%d.%m.%y') as date_deliv, orders.time_with_delivery, orders.time_to_delivery, orders.message, recipient.fio, recipient.phone as rec_phone, recipient.address, customers.phone as cust_phone, customers.email, city_delivery.name as city_name FROM orders, customers, payment_status, recipient, city_delivery WHERE orders.order_id = '$number_order' AND orders.customer_id = customers.customer_id AND orders.recipient_id = recipient.recipient_id AND SUBSTRING(customers.phone, -4, 4) = '$phone_last4' AND orders.status = payment_status.status_id AND orders.delivery_id = city_delivery.city_delivery_id"; $res = mysql_query($query) or die(mysql_error()); while ( $row = mysql_fetch_assoc($res)){ $check_status['person_data'] = $row; } $query = "SELECT bouquets.name, bouquets.img, bouquets.price, orders_bouquets.bouquets_id, orders_bouquets.quantity FROM orders_bouquets, bouquets WHERE orders_bouquets.bouquets_id = bouquets.bouquet_id AND orders_bouquets.orders_id = '$number_order'"; $res = mysql_query($query) or die(mysql_error()); while ( $row = mysql_fetch_assoc($res)){ $check_status['bouquets_data'][] = $row; } return $check_status; } /* ====Проверка статуса заказа по его номеру==== */ /* ==== Изменить способ заказ - на оплату курьеру==== */ /*function update_pay_method_orders($order_id) { $query = "UPDATE orders SET `pay_method_id`= '1' WHERE `order_id` = '$order_id'"; 109
mysql_query($query); returntrue; }*/ /* ====Проверка статуса заказа по его номеру==== */ /* ====Увеличение счетчика просмотра букета на +1==== */ function plus_one_counter_display($bouquet_id){ $query = "UPDATE bouquets SET counter_display_syte = `counter_display_syte`+1 WHERE bouquet_id = $bouquet_id"; mysql_query($query); $query = "UPDATE bouquets SET counter_display_real = `counter_display_real`+1 WHERE bouquet_id = $bouquet_id"; mysql_query($query); } /* ====Увеличение счетчика просмотра букета на +1==== */ /* ====Получение фотографий получателей с букетом====*/ function get_PhotoRecBouq($bouquet_id){ $query = "SELECT `img` FROM `recipient_bouquets` WHERE `bouquet_id` = '$bouquet_id' AND visible = '1' ORDER BY `recipient_bouquets_id` desc LIMIT 4"; $res = mysql_query($query) or die(mysql_error()); $photoRecBouq = array(); while ( $row = mysql_fetch_assoc($res)){ $photoRecBouq[] = $row; } return $photoRecBouq; } /* ====Получение фотографий получателей с букетом====*/ /* ====Получение стоимости доставок по городам==== */ function get_city_delivery(){ $query = "SELECT * FROM city_delivery"; $res = mysql_query($query) or die(mysql_error()); $city_delivery = array(); while ($row = mysql_fetch_assoc($res)){ $city_delivery[] = $row; } return $city_delivery; } /* ====Получение стоимости доставок по городам==== */ /* ====Получение списка отзывов от клиентов и получателей==== */ function get_reviews($limit){ $query = "SELECT `first_name`, `social_syte`, `textComment`, DATE_FORMAT(datetime, '%d.%m.%y') as date_com, `photo` FROM `reviews_clients` WHERE `visible` = 1 ORDER BY `datetime` desc LIMIT $limit"; $res = mysql_query($query) or die(mysql_error()); $reviews = array(); while ($row = mysql_fetch_assoc($res)){ $reviews[] = $row; } return $reviews; } /* ====Получение списка отзывов от клиентов и получателей==== */ /* ====Добавление нового отзыва/комментария==== */ function add_comment($textComment, $first_name, $social_syte){ $query = "INSERT INTO reviews_clients (textComment, first_name, social_syte) VALUES ('$textComment', '$first_name', '$social_syte')"; $res = mysql_query($query) or die(mysql_error()); // оповещение о новом комментарии // тема письма $subject = "Появился новый отзыв на сайте Skyflo.ru"; // заголовок $headers = "Content-type:text/html;charset=utf-8\r\n"; 110
$headers .= "From: Skyflo.ru - доставка цветов <info@payment.ru>\r\n"; // текст письма $mail_body = "<b>Имя:</b> ".$first_name; $mail_body .= "<br/><b>Социальная сеть:</b> ".$social_syte; $mail_body .= "<br/><b>Отзыв:</b> ".$textComment; @mail(PAYMENT_EMAIL, $subject, $mail_body, $headers); } /* ====Добавление нового отзыва/комментария==== */ /* ====Получение информации в служебные и seo теги====*/ function select_seo_tags($page){ $query = "SELECT * FROM `seo_tags` WHERE `page` = '$page' LIMIT 1"; $res = mysql_query($query) or die(mysql_error()); $seo_tags = array(); while ( $row = mysql_fetch_assoc($res)){ $seo_tags[] = $row; } return $seo_tags; } /* ====Получение информации в служебные и seo теги====*/ /* ====Получение сопутствущих товаров==== */ /*function select_add_products($limit){ $query = "SELECT * FROM bouquets WHERE visible_dop = '1' LIMIT $limit"; $res = mysql_query($query) or die(mysql_error()); $add_products = array(); while($row = mysql_fetch_assoc($res)){ $add_products[] = $row; } return $add_products; }*/ /* ====Получение сопутствущих товаров==== */ /* ====Добавление в бд общего отзыва о работе Скайфло ==== */ function update_orders_general_opinion($order_id, $general_opinion) { $query = "UPDATE orders SET general_opinion = '$general_opinion' WHERE order_id = '$order_id'"; mysql_query($query); header("Location: otzyvy"); returntrue; } /* ====Добавление в бд общего отзыва о работе Скайфло ==== */ /* ==== Отправка поты подписчика на "секрет" администратору ==== */ functionsendEmailSecret($email){ /*// тема письма $subject = "Посетитель $email получил наш секрет на 8 марта"; // заголовок $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Skyflo.ru - доставка цветов <info@skyflo.ru>\r\n"; // текст письма $mail_body = "<b>Почта посетителя:</b> ".$email; */ // тема письма $subject_2 = "Секрет от городской службы доставки цветов Skyflo.ru"; // заголовок $headers_2 = "Content-type:text/html;charset=utf-8\r\n"; $headers_2 .= "From: Skyflo.ru - доставка цветов <info@skyflo.ru>\r\n"; // текст письма $mail_body_2 = " <div style='width: 600px; background-color: #ffffff; margin: 10px auto; border: 7px solid #827bcd;'> <div style='color: #827bcd; font: bold 30px Arial, Verdana; margin: 40px'> Мы делимся нашим секретом! Никому не рассказывайте ;) 111
</div> <div style='font: 16px Arial, Verdana; margin: 20px 40px'> <p>1. Доставка букетов на 6, 7, 8 и 9 марта будет только из <b>утренней поставки цветов</b> Эквадора и Голландии. Это наш конек.</p> <p>2. Мы не будем класть банальные октрытки с поздравлениями. Наши дизайнеры разработали <b>фирменный конверт с запиской</b> внутри на приятной бумаге, перетянутый бечевкой и закрепленный сургучной печатью. Это уникальный шедевр.</p> <p>3. В эти дни наши курьеры будут <b>доставлять букеты в костюмах</b>, как джентельмены. </p> <p>4. Наша задача - доставить получателю <b>массу приятных эмоций и ощущений</b> от вручения букета.</p> <p>Скажите по телефону кодовое слово <b>Skyflo</b><br/> и мы сделаем <b>скидку 5%</b> к заказу.</p> </div> <div style='color: #827bcd; font: bold 30px Arial, Verdana; margin: 40px'> С любовью, <br/>Секретный отдел Скайфло </div> </div> "; // @mail(INFO_EMAIL, $subject, $mail_body, $headers); // отправка письма администратору @mail($email, $subject_2, $mail_body_2, $headers_2); // отправка письма клиенту $_SESSION['temp_message'] = "Мы отправили секрет на Вашу почту"; } /* ==== Отправка поты подписчика на "секрет" администратору ==== */ /* ==== Отправка предложения клиента нам ==== */ function sendOfferEmail($name, $phone, $email, $offer){ // тема письма $subject = "Предложение сотрудничества от $name для Skyflo"; // заголовок $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Skyflo.ru - доставка цветов <info@skyflo.ru>\r\n"; // текст письма $mail_body = "<b>Имя:</b> ".$name; $mail_body .= "<br/><b>Телефон:</b> ".$phone; $mail_body .= "<br/><b>Email:</b> ".$email; $mail_body .= "<br/><b>Предложение:</b> ".$offer; @mail(PARTNER_EMAIL, $subject, $mail_body, $headers); // отправка письма на партнерскую почту $_SESSION['temp_message'] = "Ваше предложение получено. Команда Скайфло его рассмотрит и свяжется с вами."; } /* ==== Отправка предложения клиента нам ==== */ ?> View/inc/header.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="shortcut icon" href="<?=PATH?>favicon.ico" type="image/x-icon"> <title>Заявка на кредит - Белгородсоцбанк</title> <link rel="stylesheet" type="text/css" href="views/bootstrap/css/bootstrap.css" /> <link rel="stylesheet" type="text/css" href="views/css/style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="views/bootstrap/js/bootstrap.js"></script> <?=$javascript?> </head> <body> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> 112
<span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="<?=PATH?>">Заявка на кредит в Белгородсоцбанке</a> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Меню <b class="caret"></b></a> <ul class="dropdown-menu"> <li class="dropdown-header">Для клиентов</li> <li><a href="<?=PATH?>#anchor2">Оформить кредитную заявку</a></li> <li><a href="?view=auth_client">Статус заявки</a></li> <li class="divider"></li> <li class="dropdown-header">Для сотрудников</li> <li><a href="?view=auth">Рабочий стол</a></li> </ul> </li> <?php if($view == "main"): ?> <li> <div class="form-group has-success"> <input type="text" class="form-control" id="sum_points" style="margin-top: 7px; width: 500px;" readonly> <span class="glyphicon glyphicon-info-sign form-control-feedback" style="margin-top: 7px;"></span> </div> </li> <?php endif; ?> <li><p class="navbar-text"><?=$_SESSION['auth']['fio']?></p></li> <?php if($_SESSION['auth']['access_id'] > 1): ?> <li><a href="?view=auth&action=exit">Выйти</a></li> <?php endif; ?> </ul> </div><!--/.nav-collapse --> </div> </div> functions/functions.php <?php //defined('BLOCK') ordie('Доступ запрещен'); // запрет прямого доступа /* ====Распечатка массива==== */ function print_arr($arr){ echo "<pre>"; print_r($arr); echo "</pre>"; } /* ====Распечатка массива==== */ /* ====Фильтрация входящих данных==== */ functionclear($var){ // mysql_real_escape_string — Экранирует специальные символы в строках для использования в выражениях SQL // strip_tags — Удаляет HTML и PHP-теги из строки // trim — Удаляет пробелы (или другие символы) из начала и конца строки $var = mysql_real_escape_string(strip_tags(trim($var))); return $var; } /* ====Фильтрация входящих данных==== */ /* ====Добавление в корзину==== */ function addtocart($products_id, $qty = 1){ if(isset($_SESSION['cart'][$products_id])){ // если в массиве уже есть такой же добавляемый товар $_SESSION['cart'][$products_id]['qty'] += $qty; return $_SESSION['cart']; }else{ // если товар кладется в корзину впервые $_SESSION['cart'][$products_id]['qty'] = $qty; return $_SESSION['cart']; } } /* ====Добавление в корзину==== */ /* ====Удаление из корзины==== */ function delete_from_cart($id){ if($_SESSION['cart']){ if(array_key_exists($id, $_SESSION['cart'])){ // существуют ли в массиве cart ключ $id $_SESSION['total_quantity'] -= $_SESSION['cart'][$id]['qty']; $_SESSION['total_sum'] -= $_SESSION['cart'][$id]['qty'] * $_SESSION['cart'][$id]['price']; 113
unset($_SESSION['cart'][$id]); } } } /* ====Удаление из корзины==== */ /* ==== Кол-во товаров в корзине + защита от ввода несуществующего ID товара==== */ function total_quantity(){ $_SESSION['total_quantity'] = 0; foreach($_SESSION['cart'] as $key => $value){ if(isset($value['price_total'])){ // если получениа цена товара из базы данных - суммируем кол-во $_SESSION['total_quantity'] += $value['qty']; }else{ // иначе - удаляем такой ID из сессии (корзины) unset($_SESSION['cart'][$key]); } } } /* ==== Кол-во товаров в корзине + защита от ввода несуществующего ID товара==== */ /* ====Редирект ==== */ function redirect(){ $redirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : PATH; header("Location: $redirect"); exit; } /* ====Редирект ==== */ /* ===Перевести русское слово в транслит=== */ function rus_to_eng($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => "'", 'ы' => 'y', 'ъ' => "'", 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => "'", 'Ы' => 'Y', 'Ъ' => "'", 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ' ' => '_', ); return strtr($string, $converter); } /* ===Перевести русское слово в транслит=== */ /* ===Отправить заявку на обратный звонок администратору сайта=== */ functionsend_callback() { // тема письма $subject = "Клиент заказал обратный звонок. Перезвонте ему!"; // заголовки $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Конфеты Оптом <".INFO_EMAIL.">\r\n"; // тело письма $mail_body = " <h2>Клиент заказал обратный звонок!</h2> <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> Имя клиента: ".$_POST['name']."<br> Телефон: ".$_POST['phone']."<br> Перезвонить в указанное время: ".$_POST['time']." 114
</span> "; // текст сообщения @mail(INFO_EMAIL, $subject, $mail_body, $headers); // письмо администратору } /* ===Отправить заявку на обратный звонок администратору сайта=== */ /* ===Отправить заявку на обратный звонок администратору сайта=== */ function send_CallMe_Order($name, $phone, $products_id) { $product = get_product($products_id); // тема письма $subject = "Клиент хочет сделать быстрый заказ!"; // заголовки $headers = "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: Конфеты Оптом <".INFO_EMAIL.">\r\n"; // тело письма $mail_body = " <h2>Клиент хочет сделать быстрый заказ!</h2> <span style='font-size: 16px; font-family:tahoma,geneva,sans-serif'> <br>Имя клиента: ".$name." <br>Телефон: ".$phone." <br>Товар: ".$product['name']." на сумму ".$product['price']." руб. (№".$product['products_id'].") </span> "; // текст сообщения @mail(INFO_EMAIL, $subject, $mail_body, $headers); // письмо администратору } /* ===Отправить заявку на обратный звонок администратору сайта=== */ ?> view/index.php <?phpdefined('BLOCK') ordie('Доступ запрещен'); // запрет прямого доступа ?> <!-- Хэдэр --> <?php require_once 'inc/header.php' ?> <!-- Хэдэр --> <!-- Контент --> <div id="bg_tov"> <div class="tov clr"> <?php include $view.'.php'; ?> </div> </div> <!-- Контент --> <!-- Подвал --> <?php require_once 'inc/footer.php'; ?> <!-- Подвал --> </body> </html> view/header.php <?phpdefined('BLOCK') ordie('Доступзапрещен'); // запретпрямогодоступа ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- Служебныетеги --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="Cache-Control" content="no-cache" /><!-- запрет кэширования браузером --> <!-- Иконка в тайтле --> <link rel="icon" href="" type="image/x-icon" /> <!-- Таблицыстилей --> <link rel="stylesheet" type="text/css" href="<?=TEMPLATE?>css/style.css" /> <link rel="stylesheet" type="text/css" href="<?=TEMPLATE?>css/oformlenie.css" /> <link rel="stylesheet" type="text/css" href="<?=TEMPLATE?>css/modal/modal.css" /> <link rel='stylesheet' type='text/css' href='<?=TEMPLATE?>css/cakes.css' /> <?=$style?> 115
<!-- ЯваСкрипты --> <script type="text/javascript" src="<?=TEMPLATE?>js/jquery-1.8.3.min.js"></script><!-- библиотекадляработывсехфункций jquery --> <script type="text/javascript" src="<?=TEMPLATE?>js/jquery.maskedinput.js"></script><!-библиотекадлясозданияшаблонавводавполяформы --> <script type="text/javascript" src="<?=TEMPLATE?>js/main.js"></script><!-- библиотекадлязагрузкуследующихбукетов --> <title><?=$print_title?></title> </head> <body> <!-- Хэдэр --> <div class="header"> <div class="header_content"> <div class="left_header"> <a href="<?=PATH?>"><img src="<?=TEMPLATE?>images/logo/logo.png" class="logo" border="0" /></a> </div> <div class="center_header"> <p class="name_g">КонфетыОптом</p> <p class="slogan">Оптово-розничная продажа <br/>кондитерскими изделиями</p> </div> <div class="right_header"> <p class="tele"><span><?=PHONE?></span></p> <p class="pod_zvon">Звонок с мобильных и городских<br/> бесплатный</p> <p> <div class="bg_status_zakaza"> <a href="<?=PATH?>status_zakaza" title="Проверить, где сейчас заказ">статус заказа</a> </div> <div class="bg_zakazat_zvonok"> <a href="<?=PATH?>zakazat_zvonok" title="Напишите свой телефон и мы Вам перезвоним">заказать звонок</a> </div> </p> </div> </div><!-- header_content --> </div><!-- .header --> <!-- Верхняянавигация --> <div class="bg_menu"> <ul> <li><a href="<?=PATH?>" title="Главная">Главная</a></li> <li><a href="otzyvy" title="Отзывы">Отзывы</a></li> <li><a href="oplata" title="Оплата">Оплата</a></li> <li><a href="dostavka" title="Доставка">Доставка</a></li> <li><a href="o_nas" title="Онас">Онас</a></li> <li id="bg_menu_li_right"><a href="kontakty" title="Контакты">Контакты</a> </ul> </div><!-- .bg_menu --> <!-- Верхняя навигация --> view/leftmenu.php <?php defined('BLOCK') or die('Доступ запрещен'); // запрет прямого доступа ?> <!-- Левоеменю --> <div class="bg_left_menu"> <!-- Информер - Способыоплаты --> <div class="l_menu" style="margin: 10px 0 0 0; height: 119px;"> <p class="komu"><strong>Мыпринимаем</strong></p> <div style="padding: 10px 10px; margin: 0 0 10px 0"> <p> <img src="<?=TEMPLATE?>/images/oplata_icon/visa.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/mastercard.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/qiwi.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/webmoney.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/svyaznoj.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/yandex.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/euroset.png" width="45" height="28" /> <img src="<?=TEMPLATE?>/images/oplata_icon/westernunion.png" width="45" height="28" /> </p> </div> </div> <!-- Отборпокатегориям --> <?php foreach($menu_left as $item): ?> <div class="l_menu" id="l_menu_too"> <p class="komu"><strong><?=$item['cat_name_rus']?></strong></p> 116
<hr class="komu-hr"> <p> <?php foreach($item['link_eng'] as $key => $sub): ?> <span class="komu_m"><a href="<?=$item['cat_name_eng']?>_<?=$sub?>"><?=$item['link_rus'][$key]?></a></span> <br> <?php endforeach; ?> </p> <p> </p> </div> <?php endforeach; ?> <?php /* <a href="bukety_eksklyuzivnyye" class="link_vip"> <div class="l_menu" id="l_menu_too" style="height: 110px;"> <div style="width: 50%; float: left;"><img src="<?=TEMPLATE?>images/icon-vip.png" style="width: 100%;" /></div> <div style="width: 50%; float: left; margin-top: 30px; font: bold 18px 'Trebuchet MS', Arial, Helvetica, sans-serif; text-align: center;">Элитныебукеты</div> </div> </a> */ ?> <?php if($hide_block != 1): ?> <!-- Текстовыеотзывы --> <div class="block_slideshow"> <p class="komu"><strong>Отзывыоработе</strong></p> <?php foreach($reviews as $item): ?> <p> <div class="block_otzyv"> <p class="name_otzyv"><strong><?=$item['first_name']?>, <?=$item['date_com']?></strong></p> <p class="text_otzyv"><?=$item['textComment']?></p> </div> </p> <?php endforeach; ?> <p> <div> <p class="text_otzyv_next"><a href="otzyvy#anchor-text-reviews">Почитатьещёотзывы</a></p> </div> </p> </div> <?php endif; ?> </div><!-- #bg_left_menu --> <!-- Левоеменю --> view/hits.php <?phpdefined('BLOCK') ordie('Доступзапрещен'); // запретпрямогодоступа ?> <!----------------------------------СТРАНИЦА Вывод товаров ДЛЯ ГЛАВНОЙ СТРАНИЦЫ и ПОПУЛЯРНЫЕ + левое меню -------------------------------------> <!-- Левое меню --> <?phprequire_once 'inc/leftmenu.php'; ?> <!-- Левое меню --> <!-- Выводим хлебные крошки --> <?php if($products): ?> <div class="bread_crumbs"> <h1><?=$print_h1?></h1> </div> <?php endif; ?> <div class="bg_product"> <?phpif($products): ?> <?php $n=1; // счетчик от 1 до 3 для каждой строки $c=1; // общий счетчик для всех товаров foreach($products as $product): ?> <?php if($n == 1): // если выводится 1ый товар в строке ?> <div class="kat_product"> <?php endif; ?> <div class="product"> 117
<!-- Фотография: --> <p> <a href="<?=$product['products_id']?>_<?=rus_to_eng($product['name'], true)?>" class="link_car" title="Заказать <?=$product['name']?>"> <img src="<?=PRODUCTIMG?><?=$product['img']?>" width="210" alt="<?=$product['name']?>" border="0" /> <?php if( ($product['sticker_TopLeft']) != '0' ): // Стикер в верхнем-левом углу фотографии ?> <img src="<?=TEMPLATE?>images/stickers/<?=$product['sticker_TopLeft']?>" class="sticker_TopLeft" /> <?php endif; ?> <?php if( $product['sticker'] == 1 ): // Стикер в нижнем-правом углу фотографии ?> <img src="<?=TEMPLATE?>images/stickers/<?=$product['sticker_img']?>" class="sticker_top" /> <?phpendif; ?> </a> </p> <!-- Название товара: --> <p class="name"> <a href="<?=$product['products_id']?>_<?=rus_to_eng($product['name'], true)?>" title="Заказать букет <?=$product['name']?>"> <?=$product['name']?> </p> <!-- Цена товара: --> <p class="cena"> <?php if( $product['sticker'] == 1 ): ?> <del><?=$product['price_total']*30/100+$product['price_total']?></del> <span style="color: red; font-weight: bold;"><?=$product['price']?></span> руб.</a> <?php else: ?> <?=$product['price_total']?> руб.</a> <?php endif; ?> </p> <?php if($product['not_available'] == 1): // если нет в наличии?> <span><div class="button_not_available">нет в наличии</div></span> <?phpelse: // если есть в наличии ?> <a href="zakazat_tovar_<?=$product['products_id']?>" title="Заказать <?=$product['name']?>"><div class="button_order" >заказать</div></a> <?php endif; ?> </div><!-- /.product --> <?php if($c == $count): // если вывелся последний товар ?> </div><!-- .kat_flower --> <divclass="clear"></div> <?phpelseif($n == 3): // если вывелся последний товар в строке ?> </div><!-- /kat_product --> <div class="clear"></div> <?php $n=0; ?> <?php endif; ?> <?php $n++; $c++; endforeach; ?> <?php else: ?> <div class="bread_crumbs"> <h1>Здесь товаров нет!</h1> </div> <?php endif; ?> </div><!-- /kat_product --> <div id="content"></div> <div class="trans" id="load"> <img src="<?=TEMPLATE?>images/loading.gif" id="imgLoad" /> </div> </div><!-- #bg_flower --> <!-- Подключение скрипт кнопки "Наверх" --> <?php require_once 'script_ButtonUp.php'; ?> <!-- Подключение скрипт кнопки "Наверх" --> 118
ПРИЛОЖЕНИЕ К SQL-запрос на создание таблиц, первичных и внешних ключей, индексов, добавление данных -- phpMyAdmin SQL Dump -- version 3.5.1 -- http://www.phpmyadmin.net --- Хост: 127.0.0.1 -- Время создания: Апр 13 2016 г., 18:36 -- Версиясервера: 5.5.25 -- Версия PHP: 5.3.13 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; --- Базаданных: `konfety_optom` --- ---------------------------------------------------------- Структуратаблицы `category` -CREATE TABLE IF NOT EXISTS `category` ( `category_id` int(10) NOT NULL AUTO_INCREMENT, `category_name` varchar(255) NOT NULL, `category_name_eng` varchar(255) NOT NULL, `category_position` int(10) NOT NULL, PRIMARY KEY (`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; --- Дампданныхтаблицы `category` -INSERT INTO `category` (`category_id`, `category_name`, `category_name_eng`, `category_position`) VALUES (1, 'Кондитерские изделия', 'hochu', 1); -- ---------------------------------------------------------- Структура таблицы `city_delivery` -CREATE TABLE IF NOT EXISTS `city_delivery` ( `city_delivery_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `cost` int(10) NOT NULL, `position` int(10) NOT NULL, `km` int(10) NOT NULL, PRIMARY KEY (`city_delivery_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Ценынадоставкувдругиегорода' AUTO_INCREMENT=31 ; --- Дампданныхтаблицы `city_delivery` -INSERT INTO `city_delivery` (`city_delivery_id`, `name`, `cost`, `position`, `km`) VALUES (1, 'Белгород', 0, 0, 0), (2, 'Дубовое', 100, 0, 9), (3, 'Северный', 200, 0, 10), (4, 'Разумное', 200, 0, 10), 119
(5, 'Майский', 200, 0, 15), (6, 'Таврово(1,2)', 200, 0, 11), (7, 'Таврово(5,6,7)', 250, 0, 13), (8, 'Таврово(3,4,8,9,10)', 250, 0, 14), (9, 'Стрелецкое', 200, 0, 12), (10, 'Крутой лог', 300, 0, 14), (11, 'Пушкарное', 200, 0, 15), (12, 'Соломино', 300, 0, 16), (13, 'Комсомольский', 300, 0, 17), (14, 'Ближ.Игуменка', 250, 0, 15), (15, 'Дал.Игуменка', 300, 0, 19), (16, 'Маслова пристань', 350, 0, 19), (17, 'Никольское', 400, 0, 25), (18, 'Октябрьский', 400, 0, 25), (19, 'Строитель', 400, 0, 26), (20, 'Томаровка', 600, 0, 29), (21, 'Шебекино', 600, 0, 33), (22, 'Яковлево', 600, 0, 33), (23, 'Борисовка', 900, 0, 46), (24, 'Короча', 1000, 0, 53), (25, 'Прохоровка', 1150, 0, 64), (26, 'Грайворон', 1450, 0, 77), (27, 'Красная яруга', 1450, 0, 78), (28, 'Губкин', 2300, 0, 119), (29, 'Ст.Оскол', 2750, 0, 141), (30, 'Беловское', 250, 0, 13); -- ---------------------------------------------------------- Структуратаблицы `customers` -CREATE TABLE IF NOT EXISTS `customers` ( `customer_id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `phone` varchar(255) NOT NULL, PRIMARY KEY (`customer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; --- Дампданныхтаблицы `customers` -INSERT INTO `customers` (`customer_id`, `name`, `email`, `phone`) VALUES (1, 'Петров', 'fedorovau2012@gmail.com', '8 (952) 425-5023'), (3, 'Петров', 'fedorovau2012@gmail.com', '8 (952) 425-5023'); -- ---------------------------------------------------------- Структуратаблицы `delivery` -CREATE TABLE IF NOT EXISTS `delivery` ( `delivery_id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`delivery_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; --- Дампданныхтаблицы `delivery` -INSERT INTO `delivery` (`delivery_id`, `name`) VALUES (1, 'Курьером'), (2, 'Самовывоз'); -- ---------------------------------------------------------- Структуратаблицы `email` -CREATE TABLE IF NOT EXISTS `email` ( `email_id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, PRIMARY KEY (`email_id`) 120
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- ---------------------------------------------------------- Структуратаблицы `links` -CREATE TABLE IF NOT EXISTS `links` ( `link_id` int(10) NOT NULL AUTO_INCREMENT, `link_name` varchar(255) NOT NULL, `link_name_eng` varchar(255) NOT NULL, `link_position` int(10) NOT NULL, `parent_category` int(10) NOT NULL, PRIMARY KEY (`link_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ; --- Дампданныхтаблицы `links` -INSERT INTO `links` (`link_id`, `link_name`, `link_name_eng`, `link_position`, `parent_category`) VALUES (1, 'Печенье', 'pechenye', 1, 1), (2, 'Вафли', 'vafli', 2, 1), (3, 'Пряники', 'pryaniki', 3, 1), (4, 'Шоколадвплитках', 'shokolad_v_plitkakh', 4, 1), (5, 'Конфетывкоробках', 'konfety_v_korobkakh', 5, 1), (6, 'Зефир', 'zefir', 6, 1), (7, 'Мармелад', 'marmelad', 7, 1), (8, 'Бисквиты', 'biskvity', 8, 1), (9, 'Шоколадныебатончики', 'shokoladnyye_batonchiki', 9, 1), (10, 'Конфетыфасованные', 'konfety_fasovannyye', 10, 1); -- ---------------------------------------------------------- Структуратаблицы `orders` -CREATE TABLE IF NOT EXISTS `orders` ( `order_id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Номерзаказа', `date_order` datetime NOT NULL COMMENT 'Датазаказа', `amount` float NOT NULL COMMENT 'Суммазаказа', `customer_id` int(10) NOT NULL COMMENT 'Номерзаказчика', `recipient_id` int(10) NOT NULL COMMENT 'Номерполучателя', `delivery_id` int(10) NOT NULL COMMENT 'Номергородадоставки', `delivery_cost` int(11) NOT NULL, `date_delivery` datetime NOT NULL COMMENT 'Датадоставки', `time_with_delivery` time NOT NULL COMMENT 'ДоставитьС', `time_to_delivery` time NOT NULL COMMENT 'ДоставитьДО', `status` int(10) NOT NULL DEFAULT '1' COMMENT 'Статусзаказа', `prim_order` text NOT NULL COMMENT 'Примечаниеменеджера', `bonus_smsinfo` varchar(10) NOT NULL COMMENT 'Бонус: смс-информирование', `bonus_viberinfo` varchar(10) NOT NULL COMMENT 'Бонус: viber-информирование', `comments` varchar(255) NOT NULL COMMENT 'Комментариизаказчика', `pay_method_id` int(10) DEFAULT NULL, `date_payment` datetime DEFAULT NULL, PRIMARY KEY (`order_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; --- Дампданныхтаблицы `orders` -INSERT INTO `orders` (`order_id`, `date_order`, `amount`, `customer_id`, `recipient_id`, `delivery_id`, `delivery_cost`, `date_delivery`, `time_with_delivery`, `time_to_delivery`, `status`, `prim_order`, `bonus_smsinfo`, `bonus_viberinfo`, `comments`, `pay_method_id`, `date_payment`) VALUES (1, '2016-04-08 11:52:59', 1500, 1, 1, 1, 0, '2016-04-10 00:00:00', '20:00:00', '21:15:00', 4, ' Проверка', 'on', '', '', 1, NULL), (2, '2016-04-08 12:09:29', 129, 3, 3, 1, 0, '2016-04-08 00:00:00', '19:00:00', '19:15:00', 5, ' ', 'on', '', '', 2, NULL); -- ---------------------------------------------------------- Структуратаблицы `orders_products` -CREATE TABLE IF NOT EXISTS `orders_products` ( `order_product_id` int(10) NOT NULL AUTO_INCREMENT, `orders_id` int(10) NOT NULL, 121
`products_id` int(10) NOT NULL, `quantity` int(3) NOT NULL, PRIMARY KEY (`order_product_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; --- Дампданныхтаблицы `orders_products` -INSERT INTO `orders_products` (`order_product_id`, `orders_id`, `products_id`, `quantity`) VALUES (1, 1, 2, 1), (2, 2, 1, 1); -- ---------------------------------------------------------- Структуратаблицы `payment_method` -CREATE TABLE IF NOT EXISTS `payment_method` ( `pay_method_id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`pay_method_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; --- Дампданныхтаблицы `payment_method` -INSERT INTO `payment_method` (`pay_method_id`, `name`) VALUES (1, 'Наличными'), (2, 'Безналичными'); -- ---------------------------------------------------------- Структура таблицы `payment_status` -CREATE TABLE IF NOT EXISTS `payment_status` ( `status_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`status_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ; --- Дампданныхтаблицы `payment_status` -INSERT INTO `payment_status` (`status_id`, `name`) VALUES (1, 'Обработка заказа'), (2, 'Заказ обработан. Ожидаем оплату Вашего заказа'), (3, 'Заказ оплачен. Заказ комплектуется'), (4, 'Заказ собран. Передан курьеру для доставки получателю'), (5, 'Заказ доставлен'), (6, 'Заказ отменен'); -- ---------------------------------------------------------- Структура таблицы `products` -CREATE TABLE IF NOT EXISTS `products` ( `products_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `composition` text NOT NULL, `keywords` varchar(500) NOT NULL, `visible` enum('0','1') NOT NULL DEFAULT '1', `hits` enum('0','1') NOT NULL DEFAULT '1', `img` varchar(255) NOT NULL DEFAULT 'product.jpg', `sticker` enum('1','0') NOT NULL DEFAULT '0', `sticker_img` varchar(255) NOT NULL, `sticker_TopLeft` varchar(255) NOT NULL DEFAULT '0', `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `not_available` enum('0','1') NOT NULL DEFAULT '0', `position` int(10) NOT NULL DEFAULT '999', `price_producer` int(11) NOT NULL, `price_total` int(11) NOT NULL, 122
PRIMARY KEY (`products_id`), FULLTEXT KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ; --- Дампданныхтаблицы `products` -INSERT INTO `products` (`products_id`, `name`, `composition`, `keywords`, `visible`, `hits`, `img`, `sticker`, `sticker_img`, `sticker_TopLeft`, `date`, `not_available`, `position`, `price_producer`, `price_total`) VALUES (1, 'Печеньехрустящеесхлопьями', 'Fine Food Печеньехрустящеесхлопьями, кремовойначинкой, покрытоемолочнымшоколадом 162 г', 'pechenye', '1', '1', 'product1.jpg', '0', '', '0', '2016-04-06 18:47:09', '0', 1, 50, 129), (2, 'Печеньехрустящеескарамельнойначинкой', 'Fine Food Печеньехрустящеескарамельнойкремовойначинкой, арахисомимолочнымшоколадом 162 г\r\n• кремоваяначинка 18%\r\n• арахис 7%\r\n• виндивидуальнойупаковке\r\n', 'pechenye', '1', '1', 'product2.jpg', '0', '', '0', '2016-04-06 18:54:33', '0', 2, 50, 129), (3, 'Печенье хрустящее с карамельно-кремовой начинкой', 'Fine Food Печенье хрустящее с карамельно-кремовой начинкой в молочном шоколаде 162 г\r\n• с карамельно-кремовой начинкой\r\n• в молочном шоколаде, покрыто шоколадными конфетами', 'pechenye', '1', '1', 'product3.jpg', '0', '', '0', '2016-04-06 18:57:05', '0', 3, 50, 103), (4, 'Печенье сдобное Шокко', 'БИСКОТТИ Печенье сдобное Шокко 265 г', 'pechenye', '1', '1', 'product4.jpg', '0', '', '0', '2016-04-06 18:58:30', '0', 4, 40, 94), (5, 'Юбилейное Печенье Традиционное 112 г', '• без добавления консервантов и красителей\r\n• в 1ом печенье 52 калории', 'pechenye', '1', '1', 'product5.jpg', '0', '', '0', '2016-04-06 19:01:45', '0', 5, 15, 34), (6, 'Аlpen Gold Печенье бисквитное Клубника', '• бисквитное печенье\r\n• начинка: клубничное желе\r\n• в шоколадной глазури', 'pechenye', '1', '1', 'product6.jpg', '0', '', '0', '2016-04-06 19:04:20', '0', 6, 30, 60), (7, 'Коломенское Вафли сливочные', 'Вафли сливочные традиционные 220 г<br/>\n\nСостав: вода, мука пшеничная высшего сорта, пудра сахарная, жир специального назначения, молоко сухое обезжиренное, сухая молочная сыворотка, какао порошок, яичный порошок, лецитин, соль, ароматизатор, идентичный натуральному, ''''концентрированное молоко'''', сливки сухие\nПищевая ценность в 100 г: белки 6,8 г, жиры 27,3 г, углеводы 62,1 г<br/>\nЭнергетическая ценность в 100 г: 517 ккал<br/>\nУсловия хранения: хранить при температуре от +15˚С до +21˚С и относительной влажности воздуха не более 70-75%<br/>\nСрок годности: 9 месяцев', 'vafli', '1', '1', 'product7.jpg', '0', '', '0', '2016-04-06 19:11:52', '0', 6, 50, 104), (8, 'Вафли с шоколадной начинкой Каприччио', 'Коломенское Вафли с шоколадной начинкой Каприччио 220 г \r\n• из пшеничной муки высшего сорта\r\n• с шоколадной начинкой', 'vafli', '1', '1', 'product8.jpg', '0', '', '0', '2016-04-07 06:01:47', '0', 8, 55, 105), (9, 'Вафли с ароматом лимона 185 г', 'Aro Вафли с ароматом лимона 185 г\r\n• аромат лимона\r\n• из пшеничной хлебопекарной муки высшего сорта', 'vafli', '1', '1', 'product9.jpg', '0', '', '0', '2016-04-07 06:01:47', '0', 9, 30, 57), (10, 'Вафли Артек-супер 240 г ', '<br/><b>Состав:</b> сахар, мука пшеничная, масло кокосовое, сухое цельное молоко, заменитель масла какао, масло подсолнечное, яичный порошок, яйцепродукты, кислота лимонная, соль поваренная, сода пищевая\r\n<br/><b>Пищевая ценность в 100 г:</b> белки 7 г, жиры 27 г, углеводы 57 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 530 ккал\r\n<br/><b>Условия хранения:</b> хранить при температуре от +15˚C до +18˚С и относительной влажности не более 70%\r\n<br/><b>Срок годности:</b> 12 месяцев', 'vafli', '1', '1', 'product10.jpg', '0', '', '0', '2016-04-07 06:12:57', '0', 10, 40, 80), (11, 'Рулетики вафельные со сгущенкой 160 г', '<br/><b>Состав:</b> вода; мука пшеничная высшего сорта; жир растительный; крахмал; сахар-песок; масло кокосовое; молоко сгущенное; эмульгатор: (лецитин); соль пищевая; яичный порошок; ароматизаторы, идентичные натуральному аромату, ''''сгущеное молоко''''\r\n<br/><b>Пищевая ценность в 100 г:<b> белки: 5,3 г, жиры 23,8 г, углеводы 66,3 г\r\n<br/><b>Энергетическая ценность в 100 г:<b> 507 ккал\r\n<br/><b>Срок годности:<b> 6 месяцев\r\nТУ 9137003-00356151-02', 'vafli', '1', '1', 'product11.jpg', '0', '', '0', '2016-04-07 06:12:57', '0', 11, 30, 55), (12, 'Вафли Артек 75 г 4 шт', '<br/><b>Состав:</b> сахар, мука пшеничная, жир специального назначения (растительный), какаопорошок, сухое цельное молоко, масло подсолнечное, яичный порошок, эмульгатор Е322, соль поваренная, разрыхлитель сода пищевая, ароматизатор идентичный натуральному, ''''ваниль'''', регулятор кислотности - кислота лимонная. Противопоказано при индивидуальной непереносимости белка молока или яичному белку\r\n<br/><b>Пищевая ценность в 100 г:</b> белки 5 г, жиры 28 г, углеводы 63,1 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 507 ккал\r\n<br/><b>Условия хранения:</b> хранить в сухом прохладном месте при температуре от +15˚С до +21˚C и относительной влажности воздуха не более 70%. Не подвергать воздействию прямого солнечного света\r\n<br/><b>Срок годности:</b> 12 месяца', 'vafli', '1', '1', 'product12.jpg', '0', '', '0', '2016-04-07 06:25:56', '0', 12, 50, 93), (13, 'Вафли со вкусом топленого молока Коровка 150 г 4 шт', '<br/><b>Состав:</b> сахар, мука пшеничная, масло кокосовое, сухое цельное молоко, заменитель масла какао, масло подсолнечное, яичный порошок, яйцепродукты, кислота лимонная, эмульгатор Е322, соль поваренная, сода пищевая, ароматизатор, идентичный натуральному, '''' молоко''''\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 7,5г, жиры 30,0г, углеводы 57,9 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 528 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре от +15˚C до +18˚С и относительной влажности не более 70%\r\n<br/><b>Срок годности:</b> 12 месяцев', 'vafli', '1', '1', 'product13.jpg', '0', '', '0', '2016-04-07 06:25:56', '0', 13, 90, 167), (14, 'Пряники глазированные Комсомольские 350 г', '<br/><b>Состав: </b>мука пшеничная хлебопекарная высшего сорта, сахар, вода, инвертный сироп (сахар, вода, регуляторы кислотности лимонная кислота, гидрокарбонат натрия)\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 5 г, жиры 8 г, углеводы 74 г\r\n<br/><b>Энергетическая ценность в 100 г: </b>360 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре +18°C+ 23°C и относительной влажности воздуха не более 75%\r\n<br/><b>Срок годности: </b>90 суток\r\nГОСТ 15810-96', 'pryaniki', '1', '1', 'product14.jpg', '0', '', '0', '2016-04-07 09:20:37', '0', 14, 15, 32), (15, 'Пряники с мятным вкусом 500 г', '<br/><b>Состав: </b>мука пшеничная хлебопекарная высшего сорта, сахар, вода, инвертный сироп (сахар, вода, регуляторы кислотности: лимонная кислота, гидрокарбонат натрия), маргарин(рафинированное дезодорированное растительное масло (подсолнечное) в натуральном и отвержденном виде, вода, эмульгатор (моно и диглицериды жирных кислот), антиокислитель, ароматизатор, регулятор кислотности — лимонная кислота\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 6,5 г, жиры 4,5 г, углеводы 73 г\r\nЭнергетическая ценность в 100 г: 360 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре +18°C+23°C и относительной влажности воздуха не более 75%\r\n<br/><b>Срок годности: </b>90 суток\r\nГОСТ 15810-96', 'pryaniki', '1', '1', 'product15.jpg', '0', '', '0', '2016-04-07 09:20:37', '0', 15, 25, 50), (16, 'Пряники с шоколадным вкусом 500 г', '<br/><b>Состав:</b> мука пшеничная хлебопекарная первого сорта, сахар, вода, маргарин (рафинированное дезодорированное растительное масло (подсолнечное) в натуральном и отвержденном виде, вода, эмульгатор (моно и диглицериды жирных кислот ), антиокислитель, ароматизатор ,регулятор кислотности — лимонная кислота, пищевой краситель натуральный «Аннато», молоко сухое обезжиренное, какао-порошок, меланж сухой, разрыхлители (карбонат аммония, гидрокарбонат натрия), консервант сорбиновая кислота\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 7 г, жиры 7 г, углеводы 70 г\r\n<br/>Энергетическая ценность в 100 г: </b>370 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре +15°C до +21°C и относительной влажности воздуха не более 75 %\r\n<br/><b>Срок годности: </b>90 суток', 'pryaniki', '1', '1', 'product16.jpg', '0', '', '0', '2016-04-07 09:34:04', '0', 16, 30, 60), 123
(17, 'Пряники мятные 350 г', '<br/><b>Состав: </b>мука пшеничная в с сахар-песок инвертный сироп мука ржаная обдирная жир растительный разрыхлители сода пищевая соль углеаммонийная консервант кислота сорбиновая кислота лимонная ароматизатор идентичный натуральному мята стабилизатор гуммиарабик\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 4,7 г жиры 2,6 г углеводы 77,9 г\r\n<br/><b>Энергетическая ценность в 100 г: </b>348 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре +18±5˚C и относительной влажности воздуха не более 75%\r\n<br/><b>Срок годности:</b> 6 месяцев\r\n<br/>ТУ 9133005-00356151-07', 'pryaniki', '1', '1', 'product17.jpg', '0', 'pryaniki', '0', '2016-04-07 09:34:04', '0', 17, 20, 40), (18, 'Тульский Пряник с фруктовой начинкой 140 г ', '<br/><b>Состав: </b>мука пшеничная 46%, сахар, начинка фруктовая 15,5% (пюре фруктовое, сахар, патока), меланж яичный 6,6%, маргарин, мед натуральный, разрыхлители: соль углеаммонийная Е503, сода пищевая, ароматизатор идентичный натуральному мед, регулятор кислотности кислота лимонная Е330,(возможны следы орехов, какао продуктов, молочных продуктов)\r\n<br/><b>Пищевая ценность в 100 г : </b>белки 5,9 г, жиры 6,3 г, углеводы 71,6 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 363 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре от +18 °С до +21°С и относительной влажности 75%\r\nСрок годности: 6 месяцев\r\n<br/>ТУ 9133-025-00334675', 'pryaniki', '1', '1', 'product18.jpg', '0', '', '0', '2016-04-07 09:43:42', '0', 18, 50, 101), (19, 'Шоколад горький с цукатами лимона и имбиря 100 г', '<br/><b>Состав: </b>какао тертое, сахар, масло какао, цукаты лимона, цукаты имбиря, натуральные ароматизаторы: "имбирь", "ваниль", эмульгатор лецитин, соль. Общее содержание сухого остатка какао не менее 65%\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 7,0 г, жиры 34,8 г, углеводы 46,7 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 528ккал/2211кДж\r\n<br/><b>Условия хранения: </b>хранить при температуре воздуха: от +5˚С до +22˚С и относительной влажности воздуха не более 70%\r\n<br/><b>Срок годности: </b>12 месяцев\r\n<br/>ГОСТ 31721-2012', 'shokolad_v_plitkakh', '1', '1', 'product19.jpg', '0', '', '0', '2016-04-07 09:48:47', '0', 19, 50, 108), (20, 'Finestro Шоколад темный с апельсином 100 г', '<br/><b>Состав: </b>какао масса, сахар, обезжиренный какао порошок, цукаты апельсина 5% (апельсиновая корка, сахар, декстроза, регулятор кислотности: лимонная кислота), какао масло, эмульгаторы: подсолнечный лецитин, апельсиновое эфирное масло, ароматизатор ванилин). Содержание какао в горьком шоколаде: 70% минимум. Может содержать следы орехов, глютена и молока\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 9,3 г, жиры 35 г, углеводы 38 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 529 ккал\r\n<br/><b>Условия хранения: </b>хранить в сухом, хорошо вентилируемом помещении при температуре от +15°С до +21°С и относительной влажности воздуха не более 75%\r\n<br/><b>Срок годности: </b>9 месяцев', 'shokolad_v_plitkakh', '1', '1', 'product20.jpg', '0', '', '0', '2016-04-07 09:48:47', '0', 20, 45, 91), (21, 'Шоколад горький с имбирем Eco botanica 90 г', '<br/><b>Состав: </b>какао тертое, подсластитель (изомальт), масло какао, кусочки имбиря, эмульгаторы (лецитин, Е476), ароматизатор натуральный "Имбирь с натуральным экстрактом", экстракт имбиря сухой. Массовая доля общего сухого остатка какао: не менее 58,6%. Содержит подсластитель. Возможно присутствие незначительного количества сухого цельного молока, арахиса, изюма и вафельной крошки\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 7,2 г, жиры 38,3 г, углеводы 45,1 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 501 ккал\r\n<br/><b>Условия хранения: </b>хранить при температуре от +15°C до +21°C и относительной влажности воздуха не более 75%. Не подвергать воздействию прямого солнечного света\r\n<br/><b>Срок хранения: </b>12 месяцев', 'shokolad_v_plitkakh', '1', '1', 'product21.jpg', '0', '', '0', '2016-04-07 09:53:24', '0', 21, 45, 94), (22, 'OZera Шоколад молочный с апельсином 90 г', '<br/><b>Состав: </b>сахар, масло какао, молоко сухое цельное, какао тертое, фруктово-ягодные кусочки апельсиновые, пищевые добавки: эмульгатор лецитин, ароматизатор "Ваниль", ароматизатор натуральный апельсин (апельсиновое масло)\r\n<br/><b>Пищевая ценность на 100 г. продукта: </b>белки 9,6 г., жиры 42,2 г., углеводы 32,0 г. \r\n<br/><b>Энергетическая ценность:</b> 591 ккал/2 474 кДж\r\n<br/><b>Условия хранения: </b>хранить при температуре от +5 до +22 С и относительной влажности воздуха не более 70%. Не подвергать воздействию прямого солнечного света\r\n<br/><b>Срок годности: </b>12 месяцев с даты изготовления\r\n<br/>ГОСТ 31721-2012', 'shokolad_v_plitkakh', '1', '1', 'product22.jpg', '0', '', '0', '2016-04-07 09:53:24', '0', 22, 60, 114), (23, 'Априори Шоколад горький 75% какао 100 г', '<br/><b>Состав: </b>какао тертое, сахар, масло какао, эмульгатор лецитин, соль, ароматизатор натуральный ''ваниль''. Общее содержание сухого остатка какао не менее 75%\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 9,4 г, жиры 42,2 г, углеводы 36,0 г\r\n<br/><b>Энергетическая ценность в 100 г: </b>561ккал/2349кДж\r\n<br/><b>Условия хранения: </b>хранить при температуре воздуха от +5˚С до +22˚С и относительной влажности воздуха: не более 70%\r\n<br/><b>Срок годности: </b>12 месяцев\r\n<br/><b>ГОСТ 31721-2012</b>', 'shokolad_v_plitkakh', '1', '1', 'product23.jpg', '0', '', '0', '2016-04-07 09:58:01', '0', 23, 60, 124), (24, 'Lindt Шоколад горький с кусочками клубники Excellence 100 г', '<br/><b>Состав: </b>сахар, какао-масса, молочный жир, сублимированная клубника 1%, натуральный ароматизатор (клубника), эмульгатор (соевый лецитин), натуральный ароматизатор (ваниль). Содержание общего сухого остатка какао: не менее 47%\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 5,1г, жиры 30г, углеводы 50 г, из них массовая доля насыщенных жирных кислот 18 г, трансизомеров ненасыщенных жирных кислот 0,2 г\r\n<br/><b>Энергетическая ценность: </b>510 ккал\r\n<br/><b>Условия хранения: </b>хранить в сухом и прохладном месте при температуре от +15°С до +18°С и относительной влажности воздуха не более 75%\r\n<br/><b>Срок хранения: </b>12 месяцев', 'shokolad_v_plitkakh', '1', '1', 'product24.jpg', '0', '', '0', '2016-04-07 09:58:01', '0', 24, 70, 145), (25, 'Raffaello Конфеты 150 г', '<br/><b>Состав: </b>сушеная кокосовая стружка(23,5%), сахар, растительное масло, обезжиренное сухое молоко, растительный жир, орехи миндаля сладкого (8%), пшеничная мука, сухая молочная сыворотка, ароматизаторы идентичные натуральным(ваниль, кокос), эмульгатор: лецитин(сои), разрыхлитель (гидрокорбанат натрия), соль\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 8,8г , жиры 47,8 г, углеводы 37,4 г\r\n<br/><b>Энергетическая ценность в 100 г: </b>615 ккал\r\nУсловия хранения: хранить в сухом прохладном месте\r\n<br/><b>Срок годности: </b>9 месяцев', 'konfety_v_korobkakh', '1', '1', 'product25.jpg', '0', '', '0', '2016-04-07 13:45:52', '0', 25, 110, 235), (26, 'Merci Конфеты шоколадные ассорти 250 г', '<br/><b>Состав в зависимости от сорта: </b>сахар, какао масло, какао тертое, цельное сухое молоко, сухие сливки, растительный жир, миндаль, лесной орех, лактоза, сухая пахта, сывороточный продукт, декстроза, молочный жир, сухое обезжиренное молоко, обезжиренное какао, эмульгатор: соевый лецитин, сироп глюкозы, инвертный сахарный сироп.\r\n<br/><b>Энергетическая ценность в 100 г: </b>564 ккал\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 7,3 г, жиры 36,5 г, углеводы 49,6 г\r\n<br/><b>Срок годности: </b>7 месяцев', 'konfety_v_korobkakh', '1', '1', 'product26.jpg', '0', '', '0', '2016-04-07 13:45:52', '0', 26, 150, 305), (27, 'Ferrero Rocher Набор конфет 300 г', '<br/><b>Состав: </b>молочный шоколад (сахар, какао-масло, какао тертое, сухое обезжиренное молоко, молочный жир, эмульгатор: летицин, ароматизатор), лесные орехи, сахар, растительное масло, пшеничная мука, сухая молочная сыворотка, обезжиренный какао-порошок, эмульгатор: летицины, разрылтитель ( гидрокарбонат натрия, соль, ароматизатор)\r\n<br/><b>Энергетическая ценность в 100 г: </b>2523 кДж/603 ккал\r\n<br/><b>Пищевая ценность в 100 г: </b>белки 8,2 г, углеводы 44,4 г, жиры 42,7 г\r\n<br/><b>Условия хранения: </b>хранить при температуре +20°C ± 2°C и относительной влажности не более 65%\r\n<br/><b>Срок годности: </b>9 месяцев', 'konfety_v_korobkakh', '1', '1', 'product27.jpg', '0', '', '0', '2016-04-07 13:45:52', '0', 27, 290, 580), (28, 'Ударница Пастила ванильная Шармэль 221 г', '<br/><b>Состав: </b>сахар-песок; пюре яблочное; патока; пудра сахарная; желеобразователь – агар; белок яичный сухой; порошок яблочный; регуляторы кислотности: кислота молочная, цитрат натрия; идентичный натуральному ароматизатор\r\n<br/><b>Пищевая ценность в 100 г: </b>белки: 0,5 г , углеводы: 79 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 320 ккал\r\n<br/><b>Срок годности: </b>2 месяца\r\n<br/><b>ТУ 9128-00800340670-09</b>', 'zefir', '1', '1', 'product28.jpg', '0', '', '0', '2016-04-07 13:58:02', '0', 28, 80, 150), 124
(29, 'Ударница Зефир ванильный Шармэль 255 г', '<br/><b>Состав: </b>сахар-песок; пюре яблочное; патока; пудра сахарная; желеобразователь – агар; белок яичный сухой; порошок яблочный; регуляторы кислотности: кислота молочная, цитрат натрия; идентичный натуральному ароматизатор\r\n<br/><b>Пищевая ценность в 100 г: </b>белки: 0,5 г , углеводы: 79 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 320 ккал\r\n<br/><b>Срок годности: </b>2 месяца\r\n<br/><b>ТУ 9128-00800340670-09</b>', 'zefir', '1', '1', 'product29.jpg', '0', '', '0', '2016-04-07 13:58:02', '0', 29, 70, 150), (30, 'Ударница Зефир кофейный в шоколаде Шармэль 250 г', '<br/><b>Состав: </b>сахар-песок; пюре яблочное; патока; пудра сахарная; желеобразователь – агар; белок яичный сухой; порошок яблочный; регуляторы кислотности: кислота молочная, цитрат натрия; идентичный натуральному ароматизатор\r\n<br/><b>Пищевая ценность в 100 г: </b>белки: 0,5 г , углеводы: 79 г\r\n<br/><b>Энергетическая ценность в 100 г:</b> 320 ккал\r\n<br/><b>Срок годности: </b>2 месяца\r\n<br/><b>ТУ 9128-00800340670-09</b>', 'zefir', '1', '1', 'product30.jpg', '0', '', '0', '2016-04-07 13:58:02', '0', 30, 90, 180); -- ---------------------------------------------------------- Структуратаблицы `recipient` -CREATE TABLE IF NOT EXISTS `recipient` ( `recipient_id` int(10) NOT NULL AUTO_INCREMENT, `fio` varchar(255) NOT NULL, `phone` varchar(255) NOT NULL, `address` varchar(255) NOT NULL, `order_id` int(10) NOT NULL, PRIMARY KEY (`recipient_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; --- Дампданныхтаблицы `recipient` -INSERT INTO `recipient` (`recipient_id`, `fio`, `phone`, `address`, `order_id`) VALUES (1, 'Петров', '89101234567', 'адрес', 0), (2, 'Кому', '', 'адрес', 0), (3, 'Кому', '', 'адрес', 0); -- ---------------------------------------------------------- Структура таблицы `reviews_clients` -CREATE TABLE IF NOT EXISTS `reviews_clients` ( `reviews_clients_id` int(10) NOT NULL AUTO_INCREMENT, `first_name` varchar(20) NOT NULL, `social_syte` varchar(255) NOT NULL, `textComment` text NOT NULL, `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `visible` enum('1','0') NOT NULL DEFAULT '1', `photo` varchar(255) NOT NULL, PRIMARY KEY (`reviews_clients_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; --- Дампданныхтаблицы `reviews_clients` -INSERT INTO `reviews_clients` (`reviews_clients_id`, `first_name`, `social_syte`, `textComment`, `datetime`, `visible`, `photo`) VALUES (1, 'Иван', '', 'Высокое качество продукции и отличный сервис! Спасибо!', '2016-04-07 14:06:54', '1', ''), (2, 'Сашааа', '', 'Вкусные кондитерские изделия и быстрая доставка!!!!', '2016-04-07 14:07:09', '1', ''); -- ---------------------------------------------------------- Структуратаблицы `seo_tags` -CREATE TABLE IF NOT EXISTS `seo_tags` ( `seo_tags_id` int(10) NOT NULL AUTO_INCREMENT, `page` varchar(255) NOT NULL, `title` varchar(255) NOT NULL, `h1` varchar(75) NOT NULL, `h2` varchar(75) NOT NULL, PRIMARY KEY (`seo_tags_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; --- Дамп данных таблицы `seo_tags` -- 125
INSERT INTO `seo_tags` (`seo_tags_id`, `page`, `title`, `h1`, `h2`) VALUES (1, 'hits', 'Оптово-розничная торговля кондитерскими изделиями | Интернет-магазин Конфеты Оптом', 'Кондитерские изделия', 'Конфеты Оптом'), (2, 'pechenye', 'Печенья | Интернет-магазин Конфеты Оптом', 'Печенья', 'Оптово-розничная торговля ппеченьями'), (3, 'vafli', 'Вафли | Интернет-магазин Конфеты Оптом', 'Вафли', 'Оптово-розничная торговля вафлями'), (4, 'pryaniki', 'Пряники | Интернет-магазин Конфеты Оптом', 'Пряники', 'Оптово-розничная торговля пряниками'), (5, 'shokolad_v_plitkakh', 'Шоколад в плитках | Интернет-магазин Конфеты Оптом', 'Шоколад в плитках', 'Оптово-розничная торговля шоколадом в плитках'), (6, 'konfety_v_korobkakh', 'Конфеты в коробках | Интернет-магазин Конфеты Оптом', 'Конфеты в коробках', 'Оптово-розничная торговля конфетами в коробках'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 126
ПРИЛОЖЕНИЕ Л Таблица Л.1– SWOT–матрица выявление возможностей для разработки Возможности 1.Удобства в использовании 2.Кроссплатформенность 3.Кроссбраузерность Итого 1. 2. Модификация кода под последнюю версию PHP7 3. Модернизация web-сайта (добавление новых функций и элементов) + 0 ++ +3 ++ + ++ +5 ++ + ++ +5 +5 +2 +6 +13 Оптимизация кода для SEOпровождения Итого Сильные стороны Слабые стороны 1. Наличие Интернета или локальной сети 2. Устаревшая версия написанного кода PHP (5.4) 3. Не проверяется фактическое наличие товара на складе Итого 0 0 0 0 - - - -3 0 0 - -1 -1 -1 -3 -4 Общий итог +9 127
Таблица Л.2 – SWOT–матрица выявления угроз для разработки 1.Удобства в использовании 2.Кроссплатформенность 3.Кроссбраузерность Итого 1. Уязвимость в работе сайта изза устаревшей версии PHP5.4 0 0 0 0 + 0 0 +1 + 0 0 +1 +2 0 0 +2 0 0 -- -2 -- -- 0 -4 - 0 -- -3 -3 -2 -4 -9 3. Неточность данных из-за отсутствия актуального ассортимента Итого Сильные стороны Угрозы 2. Низкая степень безопасности персональных данных Слабые стороны 1. Наличие Интернета или локальной сети 2. Устаревшая версия написанного кода PHP (5.4) 3. Не проверяется фактическое наличие товара на складе Итого Общий итог -7 128
ПРИЛОЖЕНИЕ М Таблица М.1 – Исходные данные Обозначение Наименование показателя 1 2 Стоимость электронно-вычислительной машины (ЭВМ) СЭВМ Единицы измерения Значение показателя 3 4 руб. 25000 ДМ Среднее количество дней в месяце дни 22 н Норматив рентабельности – 0,3 д Коэффициент, учитывающий дополнительную заработную плату разработчика программы – 0,25 с Коэффициент, учитывающий начисления органам социального страхования – 0,356 н Коэффициент, учитывающий накладные расходы организации – 1,2 qI Количество I-задач, решаемых потребителем зад. год 50 tМ.В.I Время решения I-ой задачи разработанной программой маш. час 1 t’М.В.I Время решения I-ой задачи базовой программой маш. час 5 nп Количество организаций, которые приобретут данную программу шт. 10 ZЭЛ Тариф за 1 кВт/час руб. 1,3 н Нормативный коэффициент эффективности капиталовложений – 0,25 ТС Срок службы разработанной программы год 3 НДС Налог на добавленную стоимость % 18 ТР Количество рабочих дней в году дн 264 NСМ Количество смен работы ЭВМ – 1 tСМ Продолжительность смены ч 10 Простои ЭВМ % 20 P Мощность, потребляемая электронновычислительной машиной (ЭВМ) кВт 0,4 NСР Среднее количество ремонтов в год – 2 SД Стоимость деталей, заменяемых при ремонте руб. 1000 ОЗП Основная заработная плата программиста руб. 1800 129
Таблица М.2 – План денежных потоков Значения, руб. 0-й год 2 1-й год 0 1816744,09 1816744,09 1816744,09 НДС (18 %) Выручка от реализации без НДС Издержки на персонал Эксплуатационные расходы Амортизационные отчисления Прибыль от реализации 0 327013,94 327013,94 327013,94 0 1489730,15 1489730,15 1489730,15 0 69340,91 69340,91 69340,91 0 58719,50 58719,50 58719,50 0 4337,50 4337,50 4337,50 0 1357332,24 1357332,24 1357332,24 Налог на прибыль (24%) Чистая прибыль Капитальные вложения Прочие единовременные затраты Денежный поток 0 0 34700 325759,74 1031572,51 325759,74 1031572,51 325759,74 1031572,51 1031572,51 1031572,51 1031572,51 Показатель 1 Выручка от реализации 2-й год 3 3-й год 4 5 153961,3636 -188661,36 Таблица М.3 – Вычисление чистой дисконтированной стоимости и текущей дисконтированной стоимости Затраты (-) Год Результаты (+) ТДС КД при Е = 0,20 ТДС (тыс. руб.) нарастающим итогом 0 -188661,36 1 -188661 -188661 1 1031572,51 0,83333 859644 670982 2 1031572,51 0,69444 716370 1387352 3 1031572,51 0,5787 596975 1984327 ЧДС = 1984327,016 Таблица М.4 – Зависимость чистой дисконтированной стоимости от нормы дисконта Номер Значение нормы дисконта (Е) Значение ЧДС, тыс. руб. 1 0,2 1 984,33 2 0,4 1 450,43 3 0,6 1 110,88 4 0,8 879,70 5 1 713,96 6 2 308,02 7 3 149,82 8 4 67,17 9 5 16,70 10 5,2 8,89 11 5,4 1,64 12 5,5 -1,79 130
Таблица М.5 – Расчет внутренней нормы дисконта Год Денежные потоки 0 Е = 1190 % Е = 1200 % КД ТДС КД ТДС -188661,36 1 -188661 1 -188661 1 1031572,51 0,15625 161183,2 0,153846 158703,5 2 1031572,51 0,024414 25184,88 0,023669 24415,92 3 1031572,51 0,003815 3935,137 0,003641 3756,295 ЧДС = 1641,85 ЧДС = -1785,69 Таблица М.1 – Обобщенные технико-экономические показатели разработки программы Показатель Значение Капитальные вложения (руб.) 34700 Эксплуатационные расходы (руб.) 58719,50 Оптовая цена (руб.) 153961,3636 Свободная отпускная цена (руб.) 181674,4091 Затраты на проектирование (руб.) 118431,8182 Чистая дисконтированная стоимость (при Е = 20%) (руб.) 1984327,016 Внутренняя норма доходности (%) 540,4790176 Индекс доходности 11,51793 Средняя рентабельность разработки (%) 383,9309999 Срок окупаемости (год) 1 131
Последний лист ВКР Выпускная квалификационная работа выполнена мной совершенно самостоятельно. Все использованные в работе материалы и концепции из опубликованной научной литературы и других источников имеют ссылки на них. «___» ________________ _____ г. ____________________ ________________ _ (подпись) (Ф.И.О.) 132
Отзывы:
Авторизуйтесь, чтобы оставить отзыв