Введение

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

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

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

Так, согласно российскому законодательству, под электронной коммерцией понимается коммерческая деятельность в сфере рекламы и распространения товаров и услуг посредством использования сети Интернет. Определение, принятое в США, несколько шире: согласно ему, электронной коммерцией называется осуществление финансовых транзакций электронными средствами.

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

Темой исследования данной работы является разработка Интернет-магазина.  Актуальность темы исследования обусловлена все возрастающим количеством появляющихся в сети электронных магазинов. Первыми появились розничные электронные магазины типа В2С (business-to-customers), нацеленные на конечного потребителя. Затем быстро стали развиваться сайты В2В (business-to-business), предназначенные для корпоративных покупателей. В настоящее время объемы заказов на покупку через Интернет уже значительны и растут стремительными темпами.

К настоящему моменту около 40% всех Интернет-пользователей  совершили хотя бы одну покупку в онлайновых магазинах. В 2008 году объем розничных продаж в Сети составил около 40-50 млрд. долл. Сейчас наибольший прирост имеет категория сайтов розничной продажи в Интернет (52% за полгода).

В 2008 году клиентами электронных магазинов стали около 75% всех постоянных пользователей всемирной сети. Общие доходы электронной коммерции, с учетом корпоративных продаж, достигли 130 млрд. долл., что составило около 0,4% от всех мировых продаж (31 трлн. долл.).

В последние три месяца совершали покупки в онлайне, а 60% таких пользователей потратили в сети более $100. В то же время, среди "домашних" пользователей этот показатель равняется всего лишь 39%.30
Оборот всего сектора к 2007 г. вырос до $361 млрд.

Таким образом, наблюдается тенденция развития электронной коммерции, в том числе и интернет-магазинов, как ее элементов.

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

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

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

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

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

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

1 Аналитический раздел

1.1 Технико-экономическая характеристика предметной области и предприятия. Анализ деятельности «КАК ЕСТЬ»

1.1.1 Характеристика предприятия и его деятельности

Открыто акционерное общество «ЕвроОдежда» было образовано в 1995 году. Компания уверенно развивалась в условиях высокой конкуренции и на сегодняшний день относится к одной из самых успешных на рынке розничной торговли одежды.

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

В настоящее время в магазине представлена одежда различных марок, в том числе и всемирно известных, таких как Dolce and Gabbana (D&G), Frankie Morello, Dsquared, Ed Hardy, Armani, Gucci, Prada, Juicy Couture, Philipp Plein, Bikkembergs, Roberto Cavalli, John Richmond, Versace, Burberry, John Galliano, Chanel, Marc Jacobs, Y-3, Louis Vuitton, Iceberg, UGG (Угги).

ООО «ЕвроОдежда» уделяет большое внимание качеству обслуживания своих клиентов. Главное преимущество магазина одежды – это удобство выбора и разнообразие ассортимента.

Филиальной сети у компании нет. Основные экономические показатели деятельности компании приведены в таблице 1.1.1.

Таблица 1.1.1

Экономические показатели деятельности компании OOO «ЕвроОдежда»

№ п\п Наименование характеристики (показателя) Значение показателя на октябрь 2009 года
1 Время работы компании на рынке 14 лет
2 Численность персонала компании 23 человека
3 Финансовый оборот компании, в год ~20 000000 рублей
4 Количество клиентов компании До 158

Выручка от реализации продукции за анализируемый период выросла на  8 957 тыс. рублей, т.е. на 39,11%. Себестоимость проданных товаров составляет 50% от суммы выручки в 2007 году, и 33% в 2008 году. На 173 тыс. рублей выросла сумма коммерческих расходов. В 2008 году балансовая прибыль предприятия возросла в 5 раз, по сравнению с прибылью 2007 года. (1 170 тыс. руб. прибыли в 2008 году и 308 тыс. руб. в 2007 году).

Анализ структуры пассива предприятия за 2007-2008 гг показал, что доля собственного капитала в структуре баланса на начало 2007 г. составила 0,74%, а на конец 2008 г. уменьшилась до 0,51%. Стабильность доли собственного капитала показывает положительную тенденцию в изменении финансовой устойчивости предприятия.

Предприятие на 01.01.2008 г. находилось в кризисном финансовом состоянии, не было обеспечено источниками формирования запасов. На конец анализируемого периода на 01.01.2007 г. ситуация кардинально изменилась, произошел значительный рост источников формирования запасов: собственные источники формирования выросли на 1 067 тыс.руб. и составили  1 324 тыс.руб., краткосрочные заемные средства  снизились на 620 тыс.руб. и составили 260 тыс.руб., а общая величина основных источников выросла на 448 тыс.руб. и составила 1 584 тыс.руб. Излишек собственных средств на конец анализируемого периода оставил 540 тыс.руб., излишек общей величины основных источников формирования запасов и затрат наоборот сократился на 79 тыс. руб. и составляет на конец 2008 года 463 тыс. руб. по сравнению на конец 2007 года в 542 тыс.руб.

Рентабельность основной деятельности  предприятия показывает, сколько предприятие имеет прибыли с каждого рубля, затраченного на производство и реализацию продукции.  Коэффициенты рентабельности предприятия в динамике показывают, что за 2008 год рентабельность повысилась на 4%, составив 6% . Это положительная тенденция в развитии предприятия, так как рентабельность основной деятельности в 2007г. составляла 2%.

Рентабельность оборота характеризует эффективность производственной и коммерческой деятельности: сколько прибыли имеет предприятие с каждого рубля продаж. В сравнении с 2007г. и 2008г. этот показатель эффективности предприятия так же улучшился на 4%, увеличившись с 1% до 5%.

Рентабельность совокупного капитала повысилась на 55%, составив 118%.

Рентабельность собственного капитала в 2008 году  равна 135,42%, увеличившись на 112,8% по сравнению с 2007 годом.

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

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

1.1.2 Организационная структура управления предприятием

Организационную структуру ООО «ЕвроОдежда» можно представить в виде следующей схемы (Рис. 1.1):

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

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

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

Организационно-штатная структура ООО «ЕвроОдежда»

Рис. 1.1.1 Организационно-штатная структура ООО «ЕвроОдежда»

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

Начальник  коммерческого отдела непосредственно руководит сотрудниками отдела, контролирует все вопросы, решаемые отделом. К основным функциям отдела относят:

  1. Увеличение стоимости и рентабельности заключенных контрактов.
  2. Рост числа крупных заказов.
  3. Расширение и сохранение клиентской базы.
  4. Формирование доверительных отношений с клиентами.
  5. Расширение известности компании.
  6. Создание имиджа компании как надежного делового партнера.
  7. Качественная подготовка документов.
  8. Развитие личностных и профессиональных компетенций работников отдела.

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

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

Отдел логистики выполняет следующие функции:

  • составляет логистические прогнозы и планы;
  • проектирует логистические системы и внедряет их в организации;
  • рассчитывает затраты на логистику, разрабатывает бюджет на логистику и обеспечивает его соблюдение;
  • организует работу по созданию и внедрению логистических информационных систем.
  • разрабатывает планы закупок;
  • координирует поиск поставщиков и заключение с ними договоров на поставку товара;
  • анализирует условия договоров поставок;
  • обеспечивает составление и своевременное размещение заказов у поставщиков;
  • определяет виды и сроки платежей по заключенным договорам;
  • организует взаимодействие с поставщиками;
  • обеспечивает составление отчетов о поставках;
  • анализирует качество выполнения заказов.
  • ведет расчет затрат на формирование и хранение запасов, расходов на приобретение и эксплуатацию хранилищ (покупка, аренда, платежи за энергоснабжение и т. п.), на текущее обслуживание и страхование запасов;
  • оценивает затраты и издержки на запасы;
  • проектирует и применяет системы управления запасами, методы учета, оценки и моделирования запасов;
  • координирует инвентаризацию запасов и контролирует состояние запасов.

Организует складскую деятельность, в том числе:

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

Отдел кадров занимается:

  1. Подготовкой проектов актов (и их регистрация после издания), связанных с поступлением, увольнением, переводом сотрудников, заключение трудовых договоров, направлением в служебные командировки, оформлением должностных инструкций.
  2. Подготовкой и ведение штатного расписания.
  3. Оформлением отпусков, больничных листов, командировочных удостоверений.
  4. Учетом использования рабочего времени.
  5. Подготовкой и оформлением документов индивидуального (персонифицированного) учета в системе государственного пенсионного страхования.
  6. Ведением и хранением личных дел, трудовых книжек работников, личных карточек формы Т-2, своевременность и правильность внесения в них изменений.
  7. Обеспечением соблюдения правил внутреннего трудового распорядка.

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

Отдел по работе с клиентами осуществляет:

  1. Первичное взаимодействие с клиентами, прием звонков и писем с заявками, уточнениями деталей заказа.
  2. Анализ и прогноз потребностей заказчиков, поиск ниш сбыта
  3. Проведение презентаций, переговоров, рекламных кампаний
  4. Маркетинговые исследования.
  5. Составление ориентировочной сметы работ по заказу.
  6. Подготовку договоров для подписания.

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

1.2 Характеристика комплекса задач, задачи и обоснование необходимости автоматизации

1.2.1 Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов

Для того, чтобы выбрать комплекс задач автоматизации рассмотрим деятельность фирмы в разрезе технологии IDEF.

Основным бизнес-процессом ООО «ЕвроОдежда» является торговля одеждой и сопутствующими товарами. Характеристика данного процесса приведена на рис. 1.2.1.

Характеристика основного бизнес-процесса ООО «Евроодежда»

Рис. 1.2.1 Характеристика основного бизнес-процесса ООО «Евроодежда»

Декомпозиция данного процесса приведена на рис. 1.2.2.

Таким образом, в соответствии с приведенной схемой, процесс продажи одежды состоит из следующих продпроцессов:

  1. Подбор клиентов фасона, модели одежды;
  2. Подбор размера ( с помощью продавца-консультанта);
  3. Примерка;
  4. Оплата товара.

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

Декомпозиция основного бизнес-процесса фирмы

Рис. 1.2.2 Декомпозиция основного бизнес-процесса фирмы

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

В связи с этим возник вопрос об использовании притока клиентов в магазин другими способами, и в числе основного варианта рассматривается запуск части бизнеса во всемирной сети, то есть разработка и внедрение Интернет-магазина.

Достоинства и недостатки Интернет-магазина перед обычным магазином показаны в таблице 1.2.1.

Таблица 1.2.1

Сравнение Интернет и обычного магазина

Вид действия Интернет-магазин Обычный магазин
Открытие Разовая оплата Ежемесячная оплата аренды помещения
Ассортимент Неограничен Ограничен
Персонал Минимум Зависит от размеров магазина
Наличие посредников между Вами и покупателем Отсутствуют Присутствуют
Возможность развития Высокая Низкая
Затраты на увеличение продаж Низкие Высокие

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

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

1.2.2 Определение места проектируемой задачи в комплексе задач

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

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

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

В Интернет-магазине можно сделать раздел “Распродажа” и продавать в нем уцененные товары со скидкой. Купленную одежду всегда можно вернуть по почте или в саму фирму непосредственно.

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

  1. Входные информационные потоки:

а) для менеджера:

  • Количество товара на складе;
  • Ассортимент товара в продаже

б) для покупателя:

  • Ассортимент товара в каталоге
  • Цены на товары
  • Новости и предложения дополнительных услуг
  • Контактная информация фирмы
  1. Выходные информационные потоки:

а) для менеджера:

  • Заказы от клиентов;
  • Оборот денежных средств;
  • Документация о продаже товара;
  • Состояние склада;
  • Статистика продаж и заказов;

б) для клиента:

  • Статистика покупок;
  • Счета к оплате;

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

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

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

Создание Интернет-магазина дает фирме и клиентам ряд преимуществ:

  • привлечение новых клиентов за счет общедоступности;
  • более простое и быстрое оформление заказов (снижение количества менеджеров по обработке заказов);
  • увеличение товарооборота, а соответственно и прибыли;
  • более дешевая реклама через Интернет;
  • развитие и популярность фирмы, учитывая большие темпы развития торговли в Интернете.

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

1.2.3 Обоснование необходимости использования вычислительной техники для решения задачи

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

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

Допустим, что в день в магазине покупает товар от 20 до 30 покупателей.  Следовательно, продавец должен каждый раз уточнить наличие товара на складе (пользуясь внутренней телефонной связью), заполнить счет-фактуры в трех экземплярах,  передать его для проверки  и регистрации в бухгалтерию, на подпись директору и потом клиенту и на склад для реализации – выдачи товара. Кроме того, ему необходимо оформить накладную для выдачи товара и счет для его оплаты.

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

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

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

Проведем расчет ожидаемого эффекта от внедрения средств автоматизации.

Таблица 1.2.2.

Расчет эффекта внедрения

Действие Клиент Продавец Время, затрачиваемое при базовой технологии/ мин. Время, затрачиваемое по предлагаемому варианту/ мин.
Подбор товара клиентом Подбор товара Поиск необходимого товара 30-40 5-10
Получение товара клиентом Оплата Сверка цен 35 3
Итого: 65 минут 13 минут

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

Кроме того, основными достоинствами автоматизации бизнес-процессов будут:

  • централизованное хранение данных;
  • исключение потери данных;
  • структуризация данных;
  • более оперативная обработка данных;
  • выдача результатов в удобной форме на принтер и экран;
  • легкое изменение данных;
  • система авторизации (для менеджеров);
  • сокращение времени оформления документов.

1.3 Анализ существующих разработок и выбор стратегии автоматизации «КАК ДОЛЖНО БЫТЬ»

1.3.1 Анализ существующих разработок для автоматизации задачи

Как правило, технические возможности сайта определяются системой его управления (content management system – CMS в английской транскрипции). Прежде всего необходимо отметить, что при создании сайта можно воспользоваться как готовым решением, так и разработать систему управления своими силами. Рассмотрим вначале уже существующие CMS, так называемые коробочные решения.

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

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

Доли рынка по распределению CMS по состоянию на июнь 2009 года приведены на рис. 1.3.1.

Поэтому рассмотрим следующие системы:

  1. ABO.CMS
  2. Bitrix
  3. HostCMS
  4. NetCat
  5. S.Builder
  6. UMI.CMS
Диаграмма распределения коммерческих CMS на российском рынке

Рис. 1.3.1 Диаграмма распределения коммерческих CMS на российском рынке, июнь 2009 года

Система ABO.CMS доступна в шести версиях, нам интересна версия специально для коммерческих сайтов - ABO.CMS: Community. Стоимость данной системы – 19300 рублей. В комплектацию данной редакции входит инсталлятор, ядро системы и 17 программных модулей:

  1. Модуль "Система обновлений"
  2. Модуль "Статьи"
  3. Модуль "Новости"
  4. Модуль "Комментарии"
  5. Модуль "Вопрос-ответ"
  6. Модуль "Баннерная система"
  7. Модуль "Опросы"
  8. Модуль "Рассылка"
  9. Модуль "Поисковая система"
  10. Модуль "Форум"
  11. Модуль "Блоги"
  12. Модуль "Формы"
  13. Модуль "Фотогалерея"
  14. Модуль "Система статистики"
  15. Модуль "Скрипты"
  16. Модуль "Знакомства"
  17. Модуль "Работа"
Административный интерфейс ABO.CMS

Рис. 1.3.2 Административный интерфейс CMS ABO.CMS: Community

Из особенностей необходимо отметить административный интерфейс, который красив и удобен.

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

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

CMS-система Bitrix также представлена в нескольких редакциях. Для магазина предназначена версия, которая так и называется «1С-Битрикс: Корпоративный портал». Ее стоимость – от 34000 рублей. Эта система является наиболее функциональной из рассмотренных.

Основными модулями системы являются:

  1. Главный модуль - Общее функционирование системы и взаимодействие всех модулей, распределение прав доступа, управление пользователями, политика безопасности, управление шаблонами сайтов.
  2. Управление структурой - Управление структурой, меню, визуальный редактор, права доступа
  3. Информационные блоки - Публикация новостей, статей, каталогов и т.п., настройка свойств элементов, привязка элемента к нескольким разделам, импорт/экспорт данных.
  4. Документооборот - Управление коллективной работой над сайтом, организация поэтапной публикации материалов на сайте, журнал истории изменений.
  5. Фотогалерея 2.0 - Создание и управление фотоальбомами: массовая загрузка изображений, голосование, комментарии, многопользовательские галереи (фотобанк).
  6. Поиск – Морфологический поиск, автоматическая индексация контента, поиск по всему сайту и по разделам.
  7. Реклама - Управление баннерами на сайте, ограничение показа, таргетинг, контракты с рекламодателями.
  8. Библиотека документов - Коллективный доступ к офисным документам, хранящимся на сервере, документооборот,  работа с файлами через браузер и Проводник.
  9. Подписка, рассылки - Организация списков рассылки, рассылка по подписчикам и группам пользователей, импорт базы подписчиков, автоматическая генерация рассылок.
  10. Почта - Получение и обработка почты, фильтрация писем, антиспам.
  11. Безопасность - Комплекс технических и организационных средств, которые объединены общей концепцией безопасности и позволяют значительно расширить понятие защищенности и реакции веб-приложений на угрозы.

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

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

Панель управления CMS Битрикс

Рис. 1.3.3 Панель управления CMS «Битрикс»

Система "1С-Битрикс" решает до 95% всех задач в интернете, которые только могут возникнуть у компаний. В первую очередь, она позволяет управлять информационным наполнением сайта, его структурой, распределять права между группами  пользователей. Кроме того, продукт имеет многочисленные сервисы, которые позволяют открыть на сайте форумы, проводить опросы, размещать рекламу, создать информационный портал, анализировать посещаемость сайта и многое другое. "Интернет-магазин", как отдельный модуль системы, позволяет организовать и эффективно управлять электронными каналами продаж товаров и услуг через Интернет.

Программный продукт «1С-Битрикс: Управление сайтом» имеет сертификат совместимости с Система программ «1С:Предприятие», являющийся официальным подтверждением того, что продукт прошел в "1С" тщательное тестирование на корректность совместной работы с «1С:Предприятием».

Система управления контентом HostCMS для создания корпоративных сайтов предлагает редакцию «Корпорация». Функциональность системы схожа с выше рассмотренной Битрикс, однако, в отличие от конкурентов, HostCMS предлагает возможность создания на разных доменах (в том числе и на поддоменах) различных сайтов, управляемых одним экземпляром системы управления.

Стоимость данной редакции – 29900 рублей.

NetCat– CMS-система с большим стажем, она имеет гибкую структуру, легка в настройке и управлении. Нам интересна одна из редакций данной системы - NetCat 3 Corporate - версия  для корпоративного сайта, как презентационного, так и представительского типа. Редакция включает все необходимые модули и функционалы, используемые в абсолютном большинстве корпоративных сайтов и корпоративных порталов. Помимо стандартных функций ядра системы, в редакцию включены модули сбора и обработки статистики, поиска по сайту, интерфейс пользователя, управление подписками и рассылками.

Ядро системы включает следующие модули:

  1. Работа с контентом
  2. Управление структурой
  3. Система разграничения прав
  4. Адаптация дизайна
  5. Компоненты
  6. Инструменты поисковой оптимизации
  7. Интеграция со сторонним ПО
  8. Интерфейс управления
  9. Инструменты разработчика и администратора

Стоимость данной редакции – от 15200 рублей.

Особенностью CMS S.Builder [19] является отсутствие каких-либо редакций.

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

  1. Активный рабочий стол
  2. Визуальный редактор текстов и страниц
  3. Восстановление и перенос сайта
  4. Кэширование на сайте
  5. Макеты данных модуля
  6. Макеты дизайна компонентов
  7. Модуль голосований
Карта сайта в CMS NetCat 3 Corporate

Рис. 1.3.4 Карта сайта в CMS NetCat 3 Corporate

  1. Модуль комментариев (обсуждений)
  2. Модуль личных сообщений
  3. Модуль обновлений
  4. Модуль разграничения доступа к CMS
  5. Модуль разграничения доступа к страницам сайта
  6. Настройки интерфейса
  7. Настройки системы
  8. Системный журнал
  9. Справочники
  10. Управление макетами дизайна сайта

Данный набор стоит 5900 рублей.

В UMI.CMS для создания и управления корпоративными порталами предназначена редакция PRO Corporate (стоимость – 8990 руб.)[20]. В эту редакцию уже включены модули управления веб-страницами, новостями, форумом, файлами и рассылками.

Данная версия включает в себя следующие модули:

  1. Конфигурация
  2. Структура
Панель администрирования CMS S.Builder

Рис. 1.3.5 Панель администрирования CMS S.Builder

  1. Новости
  2. Статистика
  3. Обновления
  4. Резервирование
  5. Поиск
  6. Форум
  7. Обратная связь
  8. Файловая система
  9. Опросы
  10. Рассылки
  11. Шаблоны данных
  12. Блоги
  13. SEO-модуль

Кроме того, доступны дополнительные модули.

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

Система управления сайтами UMI.CMS создана и продолжает совершенствоваться под лозунгом «Удобство для людей». Она интуитивно понятна, проста в освоении и удобна в использовании для разработчиков сайтов, владельцев сайтов и их пользователей.

Секрет удобства и красоты работы с UMI.CMS — в наборе инновационных инструментов управления сайтами и процессом разработки.

  1. Edit-in-place: редактирование на месте
  2. Мусорная корзина и восстановление удаленных страниц
  3. Drag&drop: возможность перетаскивания страниц по дереву сайта
  4. Коррекция неверных адресов URL
  5. История изменений и возможность откатить страницу к предыдущему состоянию
  6. Быстрое редактирование Shift+D
  7. Webnotes: функция быстрых комментариев

Сравнение рассмотренных систем приведено в таблице 1.3.1.

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

Именно поэтому сделан вывод о необходимости создания системы управления сайтом своими силами. Данная система должна быть более похожа на CMS «Битрикс», иметь в своем составе следующие модули:

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

Таблица 1.3.1

Сравнение рассмотренных систем управления сайтом

Система Bitrix ABO.CMS S.Builder HostCMS NetCat UMI.CMS
Стоимость корпоративной версии, руб. 34000 19300 5900 29900 15200 8990
Дата выхода текущей версии 07.17.2008 04/05/2009 15.05.2009 23.09.2008 13.05.2009 24.06.2009
Текущая версия (релиз) 7.50 5.2 4.009 5.1.х 3.5 2.7.3
Интерфейс администрирования Web Web Web Web Web Web
База данных MySQL, MS SQL, Oracle MySQL MySQL MySQL MySQL MySQL, files
Операционная система Windows, UNIX Windows, UNIX Windows, UNIX Windows, UNIX Windows, UNIX Windows, UNIX
Веб-сервер Apache, IIS Apache, IIS Apache Apache Apache Apache, IIS
Языки программирования PHP PHP PHP PHP PHP PHP
Фиксация действий пользователей (ведение лога) Нет Да Да Да Да Нет
Многоуровневое утверждение изменений (модерация публикуемых материалов) Да Да Нет Да Да Нет
Разграничение доступа (распределение прав) Да Да Да Да Да Да
Поддержка безопасного протокола при работе с системой (SSL) Да Да Да Да Да Нет
Пакетная закачка Да Да Да Да Да Да
Клонирование объектов системы (копирование материалов) Да Да Да Да Да Да
Восстановление удаленных объектов (Корзина) Нет Да Нет Нет Нет Да
Визуальный редактор (WYSIWYG-редактор) Да Да Да Да Да Да
Веб-статистика Да Да Нет Да Да Да
Система документооборота Да Да Нет Да Нет Да
Вакансии Да Да Да Да Да Да
Обмен ссылками Да Да Да Да Да Да
Настраиваемые формы обратной связи Да Да Да Да Да Да

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

1.3.2 Выбор и обоснование стратегии автоматизации задачи

Для нашей фирмы разработка стратегии реализации проекта будет такой:

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

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

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

Кроме того, существуют следующие стратегии автоматизации:

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

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

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

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

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

1.3.3 Выбор и обоснование способа приобретения ИС для автоматизации задачи

Есть несколько способов приобретения Интернет-магазина:

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

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

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

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

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

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

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

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

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

1.4 Обоснование проектных решений

1.4.1 Обоснование проектных решений по техническому обеспечению

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

Для организации Интернет-магазина и его работы во всемирной сети необходимо прежде всего определится с выбором хостинга.

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

Хостинг для размещения интернет-магазина должен:

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

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

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

  • требования к быстродействию процессоров, которые можно сфорулировать коротко: тем быстрее, тем лучше, чем больше внутренний кеш CPU - тем лучше, и наконец  чем больше процессоров - тем лучше.
  • Оперативная память, которой никогда не бывает много. Нижний предел для объема оперативной памяти на серьезном сервере не должен быть меньше 2048 МБ.
  • Сетевые интерфейсы  - здесь все рассчитывается в зависимости от предполагаемого трафика.
  • Дисковый объем – определяется исходя из предполагаемого объема данных.

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

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

- система безопасности;

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

  1. Система обнаружения атак;
  2. Сканер уязвимостей системы;
  3. Сканер уязвимостей веб-приложений.

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

  • Выявление аномального поведения объектов сети на основание их поведения;
  • Выявление попыток атак на основе заранее подготовленных шаблонов;
  • Иметь гибкую систему средств реагирования на обнаруженные атаки;
  • Производить реакцию на атаки в масштабах времени близких к реальному.

- система хранения данных, которая должна обеспечивать надежность хранения данных и постоянный  доступ к информации. В настоящее время можно выделить три технологии организации хранения данных: Direct Attached Storage (DAS), Network Attach Storage (NAS) и Storage Area Network (SAN).

В качестве устройств хранения данных, в частности в SAN сетях, могут использоваться как жесткие диски, так и ленточные накопители. Если говорить о возможных конфигурациях применения жестких дисков в качестве устройств хранения данных, то это могут быть как массивы JBOD, так и RAID массивы дисков.

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

Система резервного копирования имеет многоуровневую архитектуру, которая включает:

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

Схема хостинговой площадки приведена на рис. 1.4.1.

Схема хостиноговой площадки

Рис. 1.4.1 Схема хостиноговой площадки

Таким образом, в состав хостинговой площадки должны входить: сервер базы данных, сервер приложений, сервер хранения данных (он же резервного копирования), веб-сервер, сервер безопасности.

1.4.2 Обоснование проектных решений по информационному обеспечению

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

Информационное обеспечение (ИО) — совокупность единой системы классификации и кодирования информации, унифицированных систем документации и информационных массивов.

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

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

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

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

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

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

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

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

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

К внутримашинному информационному обеспечению относится описание экранных форм.

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

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

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

Основной частью внутримашинного информационного обеспечения является информационная база.

Информационная база (ИБ) — определенным образом организованная совокупность данных, хранимых в памяти вычислительной системы в виде файлов, с помощью которых удовлетворяются информационные потребности управленческих процессов и решаемых задач.

Существуют следующие способы организации информационной базы:

  • совокупность локальных файлов — поддерживается функциональными пакетами прикладных программ;
  • интегрированная база данных — основывается на использовании универсальных программных средств загрузки, хранения, поиска и ведения данных, т.е. СУБД.

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

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

  • совместимость данных; соответствие данных реальному состоянию объекта;
  • удобство и увеличение скорости совместной обработки данных;
  • поддержка целостности данных.

База данных (БД) — поименованная совокупность данных, отражающая совокупность объектов и их отношений в рассматриваемой предметной области.

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

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

  • иерархическую;
  • сетевую;
  • реляционную модель.

Основными компонентами любой из этих моделей являются файлы (или таблицы).

Иерархические модели данных представляют собой графовую модель с вершинами-таблицами. В моделях имеется один файл, который является входом в структуру. Между файлами устанавливаются отношения соподчиненности. У файла может быть одна исходная вершина и несколько подчиненных. Основной тип отношений - 1:М.

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

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

Между отношениями (таблицами) существуют связи типа 1:М, М:М. Каждое отношение имеет ключ - это поле записи (атрибут) однозначно идентифицирующее ее. Данное свойство реляционной модели данных исключает дублирование информации, ускоряет поиск и доступ к конкретным данным.

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

Учитывая все преимущества реляционных моделей данных для представления информации, обрабатываемой при решении задачи целесообразно использовать реляционную модель БД.

Информационным обеспечением задачи служат справочники и документы.

  • Товары и услуги;
  • Контрагенты;
  • Склады компании;
  • Расчетные счета;
  • список стандартов;
  • техника безопасности

Вся информация берется из базы данных, которая расположена на сервере.

Файлы с результатной информацией так же сохраняются на сервере и записываются в Базу Данных.

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

1.4.3 Обоснование проектных решений по программному обеспечению

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

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

Обобщенная структура программного обеспечения информационной системы представлена на рис. 1.4.2.

Структура программного обеспечения

Рис. 1.4.2 Структура программного обеспечения

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

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

  • операционные системы семейства Windows от фирмы Microsoft (Windows 95/98/Me, Windows NT4.0/2000/XP),
  • операционные системы Linux/BSD семейства (UNIX подобные) от различных фирм – разработчиков (Red Hat, Debian, Novel, Mandrake soft, Gentoo, Slackware, IBM, Oracle, NetBSD, OpenBSD, FreeBSD) [13].

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

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

В качестве операционной среды для разработки и применения программы была выбрана операционная система семейства Windows, в частности операционная система Windows ХР Professional. Этот выбор обусловлен тем, что Windows ХР наиболее распространенная операционная система на сегодняшний день. Операционная система Windows XP обеспечивает стабильность, предоставляя пользователям возможность сосредоточиться на выполняемой работе.

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

Выбор СУБД производился по следующим критериям:

  • Распространённость и популярность продукта. Редкая и неизвестная СУБД может быть просто забыта в будущем своим производителем и поддержка и развитие созданной системы напрямую зависит от этого фактора.
  • Простота использования, администрирования. Исключительно экономический критерий – менее квалифицированные кадры требуют меньшего вознаграждения за свой труд.
  • Надёжность и устойчивость сервера. Снижает затраты на поддержание работоспособности системы. Надёжность данных при их хранении и обработке. Требуется меньше резервных операций обработки данных.
  • Совместимость с выбранной программной платформой. Сервер баз данных должен быть не просто портирован на выбранную ОС, но и надёжно и устойчиво работать под ней.
  • Совместимость с распространёнными серверами приложений. Имеет место быть скорее обратный критерий – совместимость распространённых серверов приложений с выбираемым сервером баз данных. Отчасти перекликается с первым критерием – практически все распространённые СУБД поддерживаются наиболее популярными серверами приложений.
  • Гибкость настроек баз данных. Это необходимо для более точного отражения и хранения ресурсного наполнения предметной области, а также для поддержки внутренних связей, целостности и логичности хранимой информации.

На рынке серверных СУБД существует несколько решений, ориентированные на работу веб-приложений. К ним в первую очередь относятся PostgreSQL, Microsoft SQL Server, Oracle. Однако, учитывая высокую стоимость решений от Oracle и Microsoft, их высокие требования к аппаратному обеспечению и потребность в окружении специфическим программным обеспечением, в качестве реальной альтернативы MySQL можно рассматривать только PostgreSQL. Сравнительная характеристика MySQL и PostgreSQL представлена в таблице 1.4.1.

Данный проект отличается невысокими требованиями к СУБД, высокие нагрузки не прогнозируются. Эксплуатация PostgreSQL же связана с дополнительными финансовыми затратами. Поэтому в рамках данного проекта целесообразно использовать СУБД MySQL.

Таблица 1.4.1

Сравнение возможностей СУБД PostgreSQL и MySQL

Особенности PostgreSQL MySQL
ANSI SQL совместимость Близка к стандарту ANSI SQL Следует некоторым стандартам ANSI SQL
Скорость работы Медленнее Быстрее
Вложенные SELECT Да Да
Транзакции Да Да, однако, должен использоваться тип таблицы InnoDB
Внешние ключи Да Да, однако, должен использоваться тип таблицы InnoDB
Представления Да Нет
Триггеры Да Нет
Поддержка Windows Да Да
ODBC Да Да
JDBC Да Да
Различные типы таблиц Нет Да

Как видно из таблицы 1.4.1, PostgreSQL обладает некоторыми преимуществами перед MySQL. Так, в частности, PostgreSQL поддерживает представления и триггеры. Эта СУБД иногда показывает лучшие результаты производительности при пиковых нагрузках.

Программное обеспечение MySQL представляет собой очень быстрый многопоточный, многопользовательский и надежный SQL-сервер баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения.

СУБД MySQL в полной мере отвечает поставленным критериям:

  • Распространённость и популярность продукта. Не вызывает никаких сомнений – одна из самых известных и используемых платформ в мире. Большая часть мелких и средних проектов, связанных с базами данных, выполняется с применением MySQL.
  • Простота использования, администрирования. В MySQL активно используется развитый графический интерфейс пользователя. Сервер способен функционировать долгое время в полностью автономном режие.
  • Надёжность и устойчивость сервера. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании, является идеальным решением для малых и средних приложений. В малых и средних проектах показатель надёжности приближается к показателю большинства известных серверов. Многопоточность. Поддержка нескольких одновременных запросов.
  • Надёжность данных при их хранении и обработке. Всё резервирование данных осуществляется в автоматическом или полуавтоматическом режиме как в любом современном развитом сервере БД. Все поля имеют значение по умолчанию.
  • Совместимость с выбранной программной платформой. Совместимость MySQL с Windows XP/2003 Server. Совместимость с распространёнными серверами приложений. Практически все популярные сервера приложений имеют в своём составе поддержку MySQL. Интерфейс с языками C# и Delphi.
  • Гибкость настроек баз данных. Большое число поддерживаемых типов данных (поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени) Все данные хранятся в формате ISO Встроенная Утилита проверки и ремонта таблицы (isamchk). Легкость управления таблицей, включая добавление и удаление ключей и полей. Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках. Гибкая система привилегий и паролей. До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

Программное обеспечение (ПО) MySQL - это ПО с открытым кодом. ПО с открытым кодом означает, что применять и модифицировать его может любой желающий. Такое ПО можно получать по Internet и использовать бесплатно. При этом каждый пользователь может изучить исходный код и изменить его в соответствии со своими потребностями. Использование программного обеспечения MySQL регламентируется лицензией GPL (GNU General Public License) [9], в которой указано, что можно и чего нельзя делать с этим программным обеспечением в различных ситуациях, также есть возможность приобрести коммерческую версию данной СУБД.

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

Многие задачи могут быть эффективно решены с помощью любого современного популярного языка программирования (рис. 1.4.3.). Часто, выбор языка и фреймворка определяется тем, какими знаниями обладают программисты, готовые реализовать данный проект.

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

Среди клиентских языков веб-программирования надо выделить JavaScript, который, также как и HTML, лежит в основе многих веб-технологий (например, в основе популярной в последнее время технологии AJAX).

Другие популярные клиентские языки, а точнее фреймворки - это Adobe Flash (язык ActionScript) и SilverLight (любые .NET языки). Adobe Flash применяется веб-мастерами очень давно. Основное применение этой технологии - интерактивные сайты и сервисы, онлайновые игры, мультимедийный контент и реклама. SilverLight - это новая технология, разработанная компанией Microsoft и позиционируемая как замена Adobe Flash.  программировать на нем относится к базовым знаниям веб-разработчика.

Языки веб-программирования

Рис. 1.4.3 Языки веб-программирования

Если говорить про ОС Windows, то тут безраздельно властвует технология ASP.NET, разработанная компанией Microsoft. С помощью ASP.NET можно создавать сайты любого уровня сложности - от самых простых, состоящих их нескольких страниц, до очень сложных, обрабатывающих миллионы запросов в день (сайты Microsoft, написанные на ASP.NET, являются одними из самых посещаемых в Интернет). Технология ASP.NET привлекательна для тех, кто неплохо разбирается в ОС Windows, но незнаком с Unix-подобными системами. Основной недостаток - меньшее, по сравнению с *nix, количество дешевых хостингов или необходимость покупки серверной лицензии, в случае с выделенным хостингом.

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

Другой популярный язык веб-программирования на платформе Unix - язык Perl. Он имеет сложный запутанный синтаксис и никогда не предназначался для веб-программирования.

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

PHP - это язык программирования для динамической генерации HTML кода со стороны сервера. В нём имеется встроенная поддержка базы данных MySQL, что позволяет считать выбранную связку MySQL-PHP наиболее оптимальной. PHP-скрипты интерпретируется и выполняются на сервере.

Предпочтение PHP было отдано по следующим характеристикам:

  • В модулях PHP все запускается в области памяти, выделенной программе операционной системой. ASP загружает для различных действий соответствующие СОМ-модули, чем сильно загружает оперативную память и процессор
  • Интеграция PHP с выбранной СУБД MySQL значительно более полная, чем у ASP. Существует множество утилит на PHP для работы с базами данных MySQL, где реализуется набор свойств наиболее полный в сравнении с другими базами данных. Есть очень полезные встроенные функции, недоступные для других баз данных. Одним из значительных преимуществ PHP является поддержка широкого круга баз данных: Oracle, Microsoft SQL server, MySQL и другие.
  • Несомненное достоинство PHP - это отсутствие временных проблем с исправлением внутренних ошибок, что позволяет оперативно реагировать и исправлять недоработки.
  • Межплатформенная миграция.

PHP поддерживает ODBC (Open Database Connection standard), поэтому можно  работать с любой базой данных, поддерживающей этот всемирно признанный стандарт.

2 ПРОЕКТНАЯ ЧАСТЬ

2.1 Разработка проекта автоматизации

2.1.1 Этапы жизненного цикла проекта автоматизации

Методология проектирования информационных систем описывает процесс создания и сопровождения систем в виде жизненного цикла (ЖЦ) ИС, представляя его как некоторую последовательность стадий и выполняемых на них процессов.

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

Жизненный цикл ИС можно представить как ряд событий, происходящих с системой в процессе ее создания и использования.

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

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

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

  • Каскадная модель (рис. 2.1.1) предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке. Переход на следующий этап означает полное завершение работ на предыдущем этапе.
  • Поэтапная модель с промежуточным контролем (рис. 2.1.2). Разработка ИС ведется итерациями с циклами обратной связи между этапами. Межэтапные корректировки позволяют учитывать реально существующее взаимовлияние результатов разработки на различных этапах; время жизни каждого из этапов растягивается на весь период разработки.
Каскадная модель ЖЦ ИС

Рис. 2.1.1 Каскадная модель ЖЦ ИС

  • Спиральная модель (рис. 2.3). На каждом витке спирали выполняется создание очередной версии продукта, уточняются требования проекта, определяется его качество и планируются работы следующего витка. Особое внимание уделяется начальным этапам разработки - анализу и проектированию, где реализуемость тех или иных технических решений проверяется и обосновывается посредством создания прототипов (макетирования).
Поэтапная модель с промежуточным контролем

Рис. 2.1.2 Поэтапная модель с промежуточным контролем

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

Спиральная модель ЖЦ ИС

Рис. 2.1.3 Спиральная модель ЖЦ ИС

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

Существует целый ряд стандартов, регламентирующих ЖЦ ПО, а в некоторых случаях и процессы разработки.

Среди наиболее известных стандартов можно выделить следующие:

  • ГОСТ 34.601-90 - распространяется на автоматизированные системы и устанавливает стадии и этапы их создания. Кроме того, в стандарте содержится описание содержания работ на каждом этапе. Стадии и этапы работы, закрепленные в стандарте, в большей степени соответствуют каскадной модели жизненного цикла .
  • ISO/IEC 12207:1995 - стандарт на процессы и организацию жизненного цикла. Распространяется на все виды заказного ПО. Стандарт не содержит описания фаз, стадий и этапов .
  • Custom Development Method (методика Oracle) по разработке прикладных информационных систем - технологический материал, детализированный до уровня заготовок проектных документов, рассчитанных на использование в проектах с применением Oracle. Применяется CDM для классической модели ЖЦ (предусмотрены все работы/задачи и этапы), а также для технологий "быстрой разработки" (Fast Track) или "облегченного подхода", рекомендуемых в случае малых проектов.
  • Rational Unified Process (RUP) предлагает итеративную модель разработки, включающую четыре фазы: начало, исследование, построение и внедрение. Каждая фаза может быть разбита на этапы (итерации), в результате которых выпускается версия для внутреннего или внешнего использования. Прохождение через четыре основные фазы называется циклом разработки, каждый цикл завершается генерацией версии системы. Если после этого работа над проектом не прекращается, то полученный продукт продолжает развиваться и снова минует те же фазы. Суть работы в рамках RUP - это создание и сопровождение моделей на базе UML.
  • Microsoft Solution Framework (MSF) сходна с RUP, так же включает четыре фазы: анализ, проектирование, разработка, стабилизация, является итерационной, предполагает использование объектно-ориентированного моделирования. MSF в сравнении с RUP в большей степени ориентирована на разработку бизнес-приложений.
  • Extreme Programming (XP). Экстремальное программирование (самая новая среди рассматриваемых методологий) сформировалось в 1996 году. В основе методологии командная работа, эффективная коммуникация между заказчиком и исполнителем в течение всего проекта по разработке ИС, а разработка ведется с использованием последовательно дорабатываемых прототипов.
  • Стандарт ISO/IEC серии 15288.

Согласно стандарту ISO/IEC серии 15288 в структуру ЖЦ следует включать следующие группы процессов:

  1. Договорные процессы:
    • приобретение (внутренние решения или решения внешнего поставщика);
    • поставка (внутренние решения или решения внешнего поставщика).
  2. Процессы предприятия:
    • управление окружающей средой предприятия;
    • инвестиционное управление;
    • управление ЖЦ ИС;
    • управление ресурсами;
    • управление качеством.
  3. Проектные процессы:
    • планирование проекта;
    • оценка проекта;
    • контроль проекта;
    • управление рисками;
    • управление конфигурацией;
    • управление информационными потоками;
    • принятие решений.
  4. Технические процессы:
    • определение требований;
    • анализ требований;
    • разработка архитектуры;
    • внедрение;
    • интеграция;
    • верификация;
    • переход;
    • аттестация;
    • эксплуатация;
    • сопровождение;
    • утилизация.
  5. Специальные процессы:
    • определение и установка взаимосвязей исходя из задач и целей.

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

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

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

  1. Предпроектное обследование. В ходе обследования выявляются основные информационные потоки на предприятии и сверяется база основной нормативно-справочной документации. Главным требованием в данном случае является наличие всех необходимых для функционирования корпоративных информационных систем справочников и классификаторов и соответствие принципових организации требованиям системы. В ходе выполнения этапа обязательно должны быть проанализированы на полноту корпоративные стандарты учета и отчетности. На данном этапе также производится диагностирование проблем, которые могут возникнуть при внедрении, разрабатывается и согласовывается настройка справочников и классификаторов системы в соответствии с сформулированными требованиями. При необходимости, принимаются решения об изменении существующих практик учета или функциональных моделей. По результатам этапа формируется подписываемый всеми участниками проекта внедрения документ, который описывает все выявленные проблемы и намечает пути их ликвидации.
  2. Построение информационно-функциональной модели деятельности предприятия, описание и оптимизация процессов, подвергающихся автоматизации. Моделирование должно проводиться хорошо обученными сотрудниками рассматриваемого предприятия с привлечением высококвалифицированных консультантов и с привязкой созданной модели к стандартам бизнеса и к будущей системе.
  3. Адаптация ИС на предприятии. В ходе этапа производится настройка системы тестирование отдельных модулей и функций группой внедрения. На данном этапе также очень важно наличие корпоративных стандартов, так как именно они являются основой настроек системы.
  4. Опытная эксплуатация информационной системы. Осуществляется для тестирования полного соответствия функциональности, полученной в результате настройки системы, требованиям предприятия. На этом этапе сохраняется двойной ввод данных в старую и новую системы. В ходе опытной эксплуатации: генерируются стандартные отчеты (с помощью ИС и обычными способами) и производится верификация данных; система постепенно вводится в эксплуатацию, по отдельным участкам учета; документируются инструкции по ведению рабочих мест и корректируются должностные инструкции участников учетного процесса. В отдельных подразделениях предприятия в систему вводятся фактические данные (в ограниченном объеме) и последовательно тестируются бизнес-функции путем моделирования реальных ситуаций деятельности предприятия (в условиях, максимально приближенных к действительности). Отрабатывается взаимная работа подразделений на основе тестовых пилотных примеров. Конечные пользователи (сотрудники отдела ИТ) обучаются работе с настроенной системой непосредственно на своих рабочих местах. После обучения конечных пользователей отрабатывается интегрированный пилотный пример и полностью моделируется деятельность предприятия. На основе результатов выполнения пилотного примера руководством предприятия принимается решение о переводе ИС в промышленную эксплуатацию.

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

Работы, ожидаемые на этапе эксплуатации, можно разделить на две группы: плановые и неплановые.

Таблица 2.1.1

Стадии создания автоматизированной системы (в соответствии с ISO/IEC 15288)

№ п/п Стадия Ключевые участники Требования к входной информации Результаты
1 Формирование концепции Разработчик, начальник отдела ИТ, программист Описание бизнес-процессов организации, форм входных и выходных документов, общие требования к системе Анализ потребностей, выбор концепции и проектных решений
2 Разработка Начальник отдела ИТ, разработчик, программист Требуемые функции системы Проект системы
3 Реализация программист Проект системы, требования к программному, информационному и техническому обеспечению Готовая информационная система, комплект документации
4 Эксплуатация Администратор системы, пользователи Руководство администратора и пользователя системы Ввод в эксплуатацию и использование системы
5 Поддержка Администратор системы, разработчик Статистика отказов, ошибок в работе информационной системы Обеспечение функционирования системы
6 Снятие с эксплуатации Начальник отдела ИТ Обоснование прекращения использования системы Прекращение использования, демонтаж, архивирование системы

К плановым работам будут относятся такие работы, как:

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

Данные работы будут проводиться той же группой, что и на ранних этапах. В состав этой группы входят сотрудники технического отдела - технические специалисты и системные администраторы, сотрудники ИТ отдела.

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

Характеристика этапов проекта разработки Интернет-магазина

Рис. 2.1.4  Характеристика этапов проекта разработки Интернет-магазина

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

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

2.1.2 Ожидаемые риски на этапах жизненного цикла и их описание

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

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

Наиболее характерные риски и методы из минимизации при разработке Интернет-магазина приведены в таблице 2.1.2

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

  1. Интернет-магазин разработан не на должном профессиональном уровне.
  2. Малое количество посетителей Интернет-магазина.
  3. Интернет-магазин посещает не та целевая аудитория, на которую он был рассчитан изначально.
  4. Товары или услуги, представленные в Интернет-магазине, не представляют интереса для посетителей.
  5. Сбои в поставках товаров от поставщиков.
  6. Появление новых конкурентов на данном сегменте рынка.
  7. Повышение активности конкурентов на данном сегменте рынка.
  8. Несоответствие ожидаемых показателей деятельности Интернет-магазина реальным.
  9. Сбои с доставкой товаров или оказываемых услуг клиентам, обратившимся на фирму через Интернет-магазин.
  10. Вынужденные отступления от задуманной системы приема платежей от посетителей Интернет-магазина.
  11. Создание Интернет-магазина поручено веб-дизайнеру, не обладающему должным профессиональным уровнем.
  12. Отсутствие тщательно обоснованного бизнес-плана создания Интернет-магазина.
  13. Отсутствие поставленных задач, которые должен решать Интернет-магазин.
  14. Отступление от оптимального размера инвестиций в разработку Интернет-магазина.
  15. Отсутствие квалифицированного персонала на фирме, способного на должном уровне обслуживать бесперебойную работу Интернет-магазина (сайта).
  16. Отсутствие квалифицированного персонала на фирме, способного на должном уровне работать с посетителями Интернет-магазина, заинтересовавшимися предлагаемыми товарами или услугами.
  17. Отсутствие разработанных правил приема платежей от посетителей Интернет-магазина в различных ситуациях.
  18. Отсутствие представления о реальной "зоне обслуживания" Интернет-магазина и др.

Для минимизации вышеперечисленных рисков необходимо:

  • Необходимо провести тщательные конъюнктурные (маркетинговые) исследования.
  • Необходимо определить круг основных задач, решаемых Интернет-магазином.
  • Необходимо определиться с тем, каким Интернет-магазин должен быть в идеале, по замыслу заказчика.
  • Необходимо найти компромиссное решение между "идеальным" Интернет-магазином и тем, каким он может быть создан за имеющиеся средства.

Таблица 2.1.2

Возможные риски проекта и способы их минимизации

Виды рисков/варианты менеджмента рисков Снижение видов риска Снижение вероятности возникновения риска
Риски, связанные с масштабом проекта Детальный анализ каждого этапа работ, взаимодействия участников, организации работ Детально проработанная программа качества, отработанное управление конфигурацией проекта, специальные процедуры взаимодействия участников
Риски, связанные с недостаточным опытом в сфере ИТ Проведение обучения пользователей, включая руководство, соблюдение технологий работы Разработка и утверждение концепции проекта на возможно более ранней его стадии
Технические риски проекта Строгий отбор проектной команды по квалификационным критериям. Обучение участников проекта технологии проектных работ, инструментальным средствам Использование стандартов предприятия на проектные работы, разработка стандартов проекта
Организационные риски проекта Обучение участников проекта (курс "управление проектом"), тренинги команды, как можно более полная формализация деятельности Включение в команду администратора проекта, детальное распределение ролей в проекте
Операционные риски проекта Многократное тестирование созданных продуктов, тщательная экспертиза документов Строгое выполнение процедур программы качества
  • Необходимо составить подробный бизнес-план или технико-экономическое обоснование создания Интернет-магазина.
  • Необходимо выбрать того разработчика Интернет-магазина (веб-студию), который сможет реализовать задуманный Интернет-магазин на высоком профессиональном уровне.
  • Определить срок разработки Интернет-магазина.
  • Определить целесообразность и возможную стоимость поддержки Интернет-магазина как собственными силами, там и силами разработчика Интернет-магазина.
  • Определить, какие дополнительные расходы для фирмы потребует ввод в эксплуатацию Интернет-магазина.

2.2 Информационное обеспечение задачи

2.2.1 Информационная модель и ее описание

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

В соответствии с представленной информационно моделью работа системы строится следующим образом.

Администратор при первоначальном и последующих изменениях каталога товаров на основании ассортимента и данных каждой товарной позиции добавляет эти изменения в систему при помощи соответствующих экранных форм и изменяя при этом справочники «Категории» и «Товар». На основании данных справочников формируются выходные документы прайс-лист и каталог.

Также пользуясь данными справочниками, администратор формирует справочник «Спецпредложения», на основании которого формируется также список спецпредложений.

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

Кроме того, покупателю доступен поиск по справочникам «Категории» и «Товар». Результаты поиска выводятся на экран.

Информационная модель содержит 4 области:

  1. Область, содержащая справочники системы;
  2. Область, содержащая исходные документы;
  3. Область, содержащая характеристику ввода данных, осуществляемую с помощью экранных форм;
  4. Область, содержащая результативные документы.

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

2.2.2 Используемые классификаторы и системы кодирования

В составе информационного обеспечения рассматриваемого комплекса задач важное место отводится классификаторам экономической информации: обеспечить сжатие призначной части (идентификатора) показателей, а, следовательно, и сократить объем хранимой информации в ЭВМ и время на поиск информации, необходимой для решения задач, облегчить обработку информации позволяют классификация и кодирование информации.

Классификатор — это документ, с помощью которого осуществляется формализованное описание экономической информации в ЭИС, содержащий наименования объектов, наименования классификационных группировок и их кодовые обозначения.[9] В зависимости от применения они делятся на три группы:

  1. общегосударственные классификаторы, используемые во всех отраслях и на всех уровнях управления для повсеместного и одинакового обозначения объектов;
  2. отраслевые (ведомственные) классификаторы, используемые в пределах определенной отрасли (ведомства);
  3. локальные, используемые в пределах организации или группы организации.

Для полной формализации экономической информации недостаточно простой классификации, поэтому проводят процедуру кодирования.

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

Система кодирования — это совокупность правил обозначения объектов и группировок с использованием кодов.

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

Требования, которым должны удовлетворять разрабатываемые классификаторы, следующие:

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

Структура кодовых обозначений объектов представлена в таблице 2.2.1.

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

Информационная модель

Рис. 2.2.1 Информационная модель

Таблица 2.2 .1

Характеристики классификаторов

№ п/п Наименование кодируемого множества объектов Значность кода Система кодирования Система классификации Вид классификатора
1. «Категория» 6 порядковая отсутствует Локальный
2. «Товар» 6 разрядная иерархическая Локальный
3. «Покупатель» 6 порядковая отсутствует Локальный
4. «Специальное предложение» 4 порядковая отсутствует Локальный
5. «Заказ» 4 порядковая отсутствует Локальный

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

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

Покупатель № 000234.

2.2.3 Характеристика нормативно-справочной, входной и оперативной информации

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

Данные, касающиеся товара (ассортимент и наименование) вноясятся в систему ее администратором с использованием панели администрирования.

Из ассортимента товара в систему заносятся следующие реквизиты:

  • наименование категории;
  • наименование товара;
  • количество товара;
  • наличие на складе.

О каждой товарной позиции в систему вносятся следующие реквизиты:

  • наименование;
  • категория;
  • артикул;
  • цена старая;
  • цена новая;
  • изображение;
  • описание.

Кроме того, покупателем в систему может вноситься такой реквизит, как оценка какой-либо товарной позиции.

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

  • имя;
  • фамилия;
  • отчество;
  • адрес электронной почты;
  • номер телефона;
  • наименование страны;
  • наименование города;
  • наименование области;
  • значение почтового индекса;
  • другие реквизиты адреса – номер дома, строения, квартиры.

Частота обновления каталога товарных позиций зависти от обновления ассортимента магазина и осуществляется в среднем 1-4 раза в месяц.

Данные покупателей вносятся в систему в зависимости от частоты оформления заказов, планируется 10-20 раз в сутки.

Формы используемых документов соответсвуют используемым в Общероссийском классификаторе управленческой документации (ОКУД).

2.2.4 Характеристика результатной информации

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

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

Результативной информацией для деятельности Интернет-магазина являются:

  • Прайс-лист
  • Список заказов
  • Каталог товаров.

В прайс-листе указываются следующие реквизиты:

  • категория товара;
  • подкатегория товара;
  • наименование товара;
  • стоимость товара.

Макет прайс-листа приведен в приложении 2.

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

  • номер заказа;
  • дата и время заказа;
  • ФИО покупателя;
  • адрес электронной почты покупателя;
  • адрес покупателя;
  • город покупателя;
  • страна покупателя;
  • телефон покупателя;
  • стоимость заказа;
  • заказанные товары.

Макет данного документа приведен в Приложении 2.

Каталог заказов формируется на основании следующих реквизитов:

  • наименование категории;
  • количество товаров в данной категории;
  • наименование подкатегории;
  • наименование товара;
  • старая цена;
  • новая цена;
  • изображение.

Макет каталога приведен в Приложении 2.

2.2.5 Формализация расчётов показателей

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

В разрабатываемой системе производится расчет следующих показателей:

  • Сумма каждого заказа;
  • Сумма заказов за период;
  • Количество товаров в каталоге.

Таблица 2.2.2

Формализованное и исходное описание первичных показателей

Наименование показателей Идентификатор показателя
1 Стоимость товара N из категории F Nf
2 Количество товара N в заказе R на дату D Rdn
3 Количество товара в категории M, где M=1…. Km
4 Стоимость товара X в категории M Xm
5 Количество заказов за сутки P

Таблица 2.2.3

Формализованное описание результатных показателей

Наименование показателя Идентификатор показателя Алгоритм расчета
1 Стоимость заказа Sr Sr=Σ(Nf*Xm)
2 Сумма заказов за период SPF SPF=Σ Sr
3 Количество товаров в каталоге KAT KAT= Σ Km

2.3 Программное обеспечение задачи

2.3.1 Общие положения (дерево функций и сценарий диалога)

Данный проект разрабатывается в целях создания Интернет-магазина одежды. Функции спроектированного Интернет-магазина можно разделить на две составляющие – функции, доступные для покупателей, и функции, доступные администратору магазина.

Все автоматизируемые функции, доступные покупателю, представлены на рис. 2.3.1 в виде дерева функций.

Таким образом, покупателю доступны следующие основные функции:

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

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

Дерево функций системы доступных покупателю

Рис. 2.3.1 Дерево функций системы, доступных покупателю

 

Дерево функций администратора системы

Рис. 2.3.2 Дерево функций администратора системы

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

Сценарий диалога системы

Рис. 2.3.3 Сценарий диалога системы

2.3.2 Характеристика базы данных

В системе используется СУБД MySQL. База данных состоит из 5 таблиц. Для визуального проектирования базы данных использовался программный продукт  MySQL Workbench 5.1 OSS.ER-диаграмма базы данных приведена на рис. 2.3.4.

В таблице «SS_categories» хранятся данные о категориях товара, в таблице «SS_ordered_carts» - данные о заказах, в таблице «SS_orders» - данные о покупателях, в таблице «SS_products» - данные о товарах, в таблице «SS_special_offers» - данные о специальных предложениях.

Ниже приведена характеристика таблиц базы данных:

ER-диаграмма базы данных

Рис. 2.3.4 ER-диаграмма базы данных

Таблица 2.3.1

Таблица «SS_categories»

Название Идентификатор поля Тип данных, длина
1. Код categoryID int(11)
2. Наименование категории name varchar(255)
3. Значение parent int(11)
4. Количество товаров products_count int(11)
5. Описание description text
6. Изображение picture varchar(30)
7. Количество товаров products_count_admin int(11)

Таблица 2.3.2

Таблица «SS_ordered_carts»

Название Идентификатор поля Тип данных, длина
1. Код продукта productID int(11)
2. Код заказа orderID int(11)
3. Наименование name char(255)
4. Стоимость Price float
5. количество Quantity int(11)

Таблица 2.3.3

Таблица «SS_orders»

Название Идентификатор поля Тип данных, длина
1. Код заказа orderID int(11)
2. Время order_time datetime
3. Фамилия покупателя cust_firstname varchar(30)
4. Имя покупателя cust_lastname varchar(30)
5. Адрес электронной почты покупателя cust_email varchar(30)
6. Страна покупателя cust_country varchar(30)
7. Почтовый индекс покупателя cust_zip varchar(30)
8. Область покупателя cust_state varchar(30)
9. Город покупателя cust_city varchar(30)
10. Адрес покупателя cust_address varchar(30)
11. Телефон покупателя cust_phone varchar(30)

Таблица 2.3.4

Таблица «SS_products»

Название Идентификатор поля Тип данных, длина
1. Код продукта productID int(11)
2. Код категории categoryID int(11)
3. Наименование name varchar(255)
4. Описание description text
5 Оценка покупателя customers_rating float
6 Стоимость Price float
7 Изображение picture varchar(30)
8 В наличии in_stock int(11)
9 Изображение 2 thumbnail varchar(30)
10 Количество оценивших customer_votes int(11)
11 Продано items_sold int(11)
12 Изображение большое big_picture varchar(30)
13 В наличии enabled int(11)
14 Краткое описание brief_description text
15 Прежняя цена list_price float
16 Артикул product_code char(25)

Таблица 2.3.5

Таблица «SS_special_offers»

Название Идентификатор поля Тип данных, длина
1. Код предложения offerID int(11)
2. Код товара productID int(11)
3. Порядок сортировки sort_order int(11)

2.3.3 Структурная схема пакета (дерево вызова программных модулей)

Система состоит из двух модулей – базы данных MySQL и приложения для взаимодействия с базой данных, реализованного на языке программирования PHP и c использованием  JavaScript и HTML.

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

Таблица 2.3.6

Описание программных модулей Интернет-магазина

Наименование Описание
1. cfg Модуль конфигурации магазина
2. images Модуль, содержащий  используемые изображения
3. includes Модуль скриптов пользовательской части
4. languages Языковой модуль
5 products_pictures Каталог изображений продуктов
6 smarty Модуль библиотек
7 Templates Модуль шаблонов оформления
8 Index.php Основной модуль
9 Admin.php Модуль администрирования системы
10 shopevroodegda.mdb База данных

Структурная схема пакета представлена на рис. 2.3.5.

Структурная схема пакета

Рис. 2.3.5 Структурная схема пакета

2.4 Технологическое обеспечение задачи

2.4.1 Организация технологии сбора, передачи, обработки и выдачи информации

Технологический процесс обработки информации включает предмашинную, внутримашинную и послемашинную технологии.

Предмашинная обработка информации включает в себя прием, контроль и ввод (регистрацию) первичных документов. Когда в первичном документе обнаруживаются ошибки, документ отправляется обратно к источнику для их исправления, иначе документ передается для ввода информации в ПЭВМ.

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

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

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

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

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

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

При этом важно уделить внимание контролю входной информации следующими способами:

  • визуальный контроль на экране дисплея,
  • метод верификации, при котором осуществляется сверка ранее введенных и сохраненных в БД данных и данных первичных документов, вводимых оператором.

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

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

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

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

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

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

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

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

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

  • вывод результатных документов на печать;
  • вывод результатных документов на экран.

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

Схема технологического процесса решения комплекса задач, решаемых проектом, и ее описание представлены в пункте 2.3.2 дипломного проекта.

2.4.2 Схемы технологического процесса сбора, передачи, обработки и выдачи информации

Схема технологического процесса выбора пользователем товара и оформления заказа приведена  на рис. 2.4.1. В Приложении 3 приведены остальные схемы технологического процесса сбора, передачи, обработки и выдачи информации.

Схема технологического процесса просмотра каталога и оформления заказа

Рис. 2.4.1 Схема технологического процесса просмотра каталога и оформления заказа

2.5 Контрольный пример реализации проекта и его описание

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

Главная страница Интернет-магазина

Рис. 2.5.1 Главная страница Интернет-магазина

Также посетитель может найти интересующую его товарную позицию с помощью формы поиска:

Форма поиска

Рис. 2.5.2 Форма поиска

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

Результаты поиска

Рис. 2.5.3 Результаты поиска

 

Прайс-лист

Рис. 2.5.4 Прайс-лист

Также слева, на панели навигации, доступен каталог:

При нажатии на соответствующую категорию в меню появляются подкатегории, а на странице – перечень популярных товаров, входящих в категорию.

Каталог

Рис. 2.5.5 Каталог

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

Страница описания товара

Рис. 2.5.6 Страница описания товара

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

Увеличение изображения товара

Рис. 2.5.7 Увеличение изображения товара

При нажатии кнопки «В корзину» товар добавляется к заказу.

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

Корзина

Рис. 2.5.8 Корзина

При необходимости дальнейшего оформления заказа нажимается кнопка «Оформить заказ».

Добавление товара осуществляется при помощи формы на рис. 2.5.12. А добавление категории – с помощью формы на рис. 2.5.13. Добавление товара в спецпредложения осуществляется нажатием на иконку с  изображением кулака с поднятым большим пальцем:

Страница внесения данных о покупателе

Рис. 2.5.9 Страница внесения данных о покупателе

 

Панель администрирования

Рис. 2.5.10 Панель администрирования

 

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

Рис. 2.5.11 Редактирование каталога

 

Добавление товара

Рис. 2.5.12 Добавление товара

 

Добавление категории

Рис. 2.5.13 Добавление категории

 

Добавление товара в спецпредложение

Рис. 2.5.14 Добавление товара в спецпредложение

На странице «спецпредложения» производится выбор очередности показа товаров в этой категории:

Формирование очередности показа товаров в спецпредложениях

Рис. 2.5.15 Формирование очередности показа товаров в спецпредложениях

Кроме того, доступны просмотр списка заказов:

Список заказов

Рис. 2.5.16 Список заказов

А также изменение некоторых настроек, описанных выше.

Изменение настроек магазина

Рис. 2.5.17 Изменение настроек магазина

Листинги программных модулей приведены в Приложении 4.

3 Обоснование экономической эффективности проекта

3.1 Выбор и обоснование методики расчета экономической эффективности

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

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

  1. косвенный эффект
  2. прямой эффект

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

Эффективность сайта будет зависеть от числа привлеченных посетителей, среди которых важно число клиентов, совершивших покупку. Обычно это число составляет 5-15% от общего числа посетителей. Число привлеченных же посетителей зависит от эффективности рекламы.

Оценка эффективности интернет-рекламы может проводиться на различных уровнях:

  • оценка эффективности рекламной политики в Интернете;
  • оценка эффективности отдельных рекламных кампаний в Интернете;
  • оценка эффективности отдельных рекламных площадок, задействованных в рекламной кампании;
  • оценка эффективности отдельных элементов рекламной кампании: рекламных носителей, концепций рекламных сообщений, мест размещения и т.п.

Обоснование экономической эффективности машинной обработки информации позволяет:

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

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

Общая экономическая эффективность проекта складывается из двух составляющих:

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

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

К трудовым показателям относятся следующие:

  • абсолютное снижение трудовых затрат (ΔT) (час), рассчитываемое по формуле:
ΔDT = T0 – T1, (3.1.1)

где T0 - трудовые затраты на обработку информации по базовому варианту (час),

T1 – трудовые затраты на обработку информации по предлагаемому варианту (час);

  • коэффициент относительного снижения трудовых затрат (Кт) (%), для расчета которого используется следующая формула:
КT = ΔT / T0 * 100%;    (3.1.2)
  • индекс снижения трудовых затрат или повышение производительности труда (YT), рассчитываемый следующим образом:
IT = T0 / T1.    (3.1.3)

К стоимостным показателям относятся следующие:

  • абсолютное снижение стоимостных затрат (ΔС) (руб.), рассчитываемое по формуле:
ΔС = С0 – С1,    (3.1.4)

где С0  — стоимостные затраты (в рублях) на обработку информации по базовому варианту,

С1 — стоимостные затраты (в рублях) на обработку информации по предлагаемому варианту;

  • коэффициент относительного снижения стоимостных затрат (КС) (%), рассчитываемый по следующей формуле:
КС = ΔС / С0 * 100%;    (3.1.5)
  • индекс снижения стоимостных затрат или повышение производительности труда (YС), который рассчитывается по формуле:
 IС = С0 / С1.    (3.1.6)

Расчет перечисленных показателей предполагает предварительное вычисление частных показателей, таких как:

  • трудоемкость выполнения i-ой операции (Тi):
Ti = Vi / Ni,    (3.1.7)

где Vi – объем работ, выполняемых на i-ой операции (количество символов или действий),

Ni – норма выполнения работ на i-ой операции в час;

  • стоимостные затраты на выполнение i-ой операции (Сi):
Сi =  Cз/п + Снр = Ti * Рi * (1+ Кнр),    (3.1.8)

где Cз/п — стоимостные расходы на заработную плату сотруднику, выполняющего i-ую операцию (руб.);

Снр — стоимость накладных расходов (руб.);

Рi — часовая тарифная ставка сотрудника, выполняющего i-ую операцию (руб.);

Кнр — коэффициент накладных расходов, возникающих  при выполнении i-ой операции;

  • общая стоимость машинного времени:

Стоимость машинного времени

где С0i — стоимостные затраты на выполнение i-ой операции в базовом варианте решения задачи.

Трудовые затраты на обработку информации по предлагаемому варианту (T1) (час) вычисляются следующим образом:

Трудовые затратыгде Т1j — трудоемкость выполнения j-ой операции в предлагаемом варианте решения задачи.

Стоимостные затраты на обработку информации по проектному варианту (С1) (руб.) рассчитываются по формуле:

Стоимостные затраты формулагде С1j — стоимостные затраты на выполнение j-ой операции в предлагаемом варианте решения задачи.

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

Годовой экономический эффект от разработки и внедрения информационной системы (Эг) определяется как разность между абсолютным снижением стоимостных затрат и нормативной прибылью:

Эг = ΔС – КП * Ен , (3.1.14)

где КП — затраты на создание проекта машинной обработки информации, руб.;

Ен  — нормативный коэффициент эффективности капитальных вложений.

Произведение Кп и Ен в данном случае следует рассматривать как нормативную прибыль, которая должна быть получена от внедрения системы. Значение Ен принимается равным 0,15 для всех отраслей народного хозяйства. Ен представляет собой минимальную норму эффективности капитальных вложений, ниже которой они нецелесообразны.

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

Расчетный коэффициент эффективности капитальных затрат (Ер) представляет собой отношение абсолютного снижения стоимостных затрат к затратам на разработку и внедрение проекта:

Ер = ΔС / КП. (3.1.15)

Срок окупаемости (ТОК) представляет собой отношение капитальных затрат на разработку и внедрение ЭИС к абсолютному снижению стоимостных затрат:

ТОК = КП / ΔС. (3.1.16)

Затраты на создание проекта машинной обработки данных (КП) (руб.) рассчитывается как сумма затрат по категориям:

КП = Кпредпр + Кпроект + Кразр + Квнедр + Kэксп (3.1.17)

Кпредпр — затраты на предпроектное  обследование (руб.);

Кпроект  — затраты на проектирование данных (руб.);

Кразр     — затраты на разработку, тестирование, написание документации (руб.);

Квнедр    — затраты на внедрение (руб.).

Kэксп    — затраты на эксплуатацию и сопровождение (руб.)

3.2 Расчет показателей экономической эффективности проекта

В соответствии с методикой расчёта, описанной в разделе 3.1, был произведён расчёт показателей экономической эффективности при сравнении базового и проектного вариантов.

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

Таблица 3.2.1

Характеристика затрат на обработку информации по базовому варианту

№ п/п Наименование операции Единица измерения Объём работы в год Норма выработки (операций в час) Трудо-ёмкость
1 Осуществление выбора товара Документ 3050 8 381,25
2 Оформление заказов Документ 3140 7 448,5714
3 Формирование прайс-листа Документ 3140 8 392,5
4 Формирование каталога товаров Документ 330 11 30
5 Формирование списка заказов Документ 360 8,05 44,7205
42,05 1297,75

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

Таблица 3.2.2

Характеристика затрат на обработку информации по проектному варианту

№ п/п Наименование операции Единица измерения Объём работы в год Норма выработки (операций в час) Трудоёмкость
1 Осуществление выбора товара Документ 3050 67 45,52239
2 Оформление заказов Документ 3140 98 32,04082
3 Формирование прайс-листа Документ 3140 110 28,54545
4 Формирование каталога товаров Документ 330 50 6,6
5 Формирование списка заказов Документ 360 8,05 44,7205
6 Осуществление выбора товара Документ 360 20 18
7 Формирование каталога Документ 3050 67 45,52239
353 295,81

Для расчёта стоимостных затрат рассчитывается среднечасовая норма оплаты труда для продавца. Исходя из стандартной 40-часовой рабочей недели и месячной зарплаты 17500 руб. получаем:

N3 = 17500 руб. / (21 д. * 8 ч) = 104 руб./ч

Из рассчитанных данных можно сделать вывод о значительном сокращении трудовых и стоимостных затрат. Сокращение трудовых затрат в абсолютном выражении составило 1002 чел./ч, сокращение стоимостных затрат – 104202 руб. в год. Диаграммы изменения трудовых и стоимостных затрат представлены на рис. 3.1. и 3.2. соответственно.

Таблица 3.2.3

Расчёт трудовых показателей эффективности от внедрения проекта

  Затраты Снижение затрат Коэффициент изменения трудовых затрат Индекс изменения трудовых затрат
Базовый вариант Проектный вариант
Трудоёмкость  (ч)  (ч)   (ч)
1297,75 295,81 1002 0,77 4,38
Стоимость  (руб.)  (руб.)  (руб.)
134966 30764 104202 0,77 4,38
Диаграмма изменения трудовых затрат

Рис. 3.1. Диаграмма изменения трудовых затрат

Диаграмма изменения стоимостных затрат

Рис. 3.2. Диаграмма изменения стоимостных затрат

Рассчитаем затраты на создание проекта. Заработная плата разработчиков:

KЗ/П = 20000 руб. * 5 мес. = 100000 руб.

Электроэнергия:

КЭл = 5 кВт/ч. * 105 д. * 2,11 руб. = 1110 руб.

Информационные ресурсы (оплата доступа в Интернет):

КИнф= 700 руб. * 5 мес. = 3500 руб.

КПр = 100000 руб. + 1110 руб. + 3500 руб. = 104610 руб.

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

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

В данной рекламной кампании необходимо достичь следующие цели:

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

Способы, которые планируется использовать при продвижении разработанного Интернет-магазина,  указаны в таблице 3.2.4.

Таблица 3.2.4

Способы рекламы сайта и их предполагаемые результаты

Наименование Результат
1. Продвижение в поисковых системах (SEO) и контекстная реклама - приток на сайт целевой аудитории, сообщающей о своих потребностях в виде поисковых запросов.
2. Баннерная и текстово-графическая реклама - приток на сайт аудитории, заинтересованной в определенной услуге или товаре компании, с тематических площадок
3. Пресс-релизы, интервью и тематические статьи - информирование возможных потребителей о предлагаемых услугах, формирование определенного мнения о компании

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

Основной упор предлагается сделать на лидирующую поисковую систему Рунета – Яндекс. Яндекс составляет 56% поискового трафика Рунета. Аудитория Яндекса сопоставима по размеру с аудиторией радиостанций и телеканалов, при этом контекстная реклама показывается не всем пользователям, а только тем, которые проявили свой интерес к тематике рекламируемых товаров или услуг. Это существенно повышает эффективность вложенных в рекламу средств.

Система Google AdWords занимает порядка 37% поисковых запросов по всему Рунету, без учета рекламной сети системы. Кроме этого система имеет одну из лучших, но и наиболее сложных, систем таргетирования (настройки) кампаний контекстной рекламы сайта. Существует возможность настройки рекламных объявлений как на поисковых фразы, так и на категории показов.

«Бегун» - это система размещения контекстной рекламы на сайтах-партнерах. Контекстной называется реклама, востребованная поведением пользователя. На сегодняшний день это один из наиболее эффективных и выгодных рекламных инструментов в интернете. В систему "Бегун" входит поисковая система "Рамблер".

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

Таблица 3.2.5.

Планируемые затраты на контекстную рекламу

Наименование Стоимость, руб. за переход Количество переходов Общая сумма
Яндекс.Директ 0,3 5000 1500
Google AdWords 1,534 4000 6136
«Бегун» 0,1 2000 200
Итого, руб.: 7836

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

В Яндексе баннер показывается на странице с результатами поиска Яндекса по выбранным запросам, а также на тематических проектах Яндекс и на тематических страницах некоторых сайтов-партнеров Рекламной сети Яндекс. Сайты-партнеры, на страницах которых показывается баннер — это лучшие сайты Рунета.

При показе используется два формата:

  • 200x300 пикселей — справа на странице выдачи результатов поиска Яндекс и на других проектах Яндекс,
  • 240x400 пикселей — на сайтах Рекламной сети.

Минимальная стоимость заказа данного вида рекламы - 24780 рублей.

В системе Google AdWords минимальная стоимость тысячи показа объявлений составит 7 рублей, минимальный платеж – 400 рублей.

Медийно-контекстный баннер на «Рамблере» формата 240х400 пикселей появляется в ответ на поисковый запрос справа от результатов поиска. Баннер привязывается к ключевым словам. Оплата осуществляется за показы уникальным пользователям.

Баннер показывается в выдаче результатов поиска «Рамблера» в контексте запроса пользователя. Минимальный платеж в данной поисковой системе – 24780 рублей.

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

Планируемые затраты на баннерную рекламу приведены в таблице 3.2.6.

Таблица 3.2.6.

Планируемые затраты на баннерную рекламу

Наименование Стоимость, руб. за тысячу показов, минимальный платеж Общая сумма
Яндекс 24780 24780
Google AdWords 1200 1200
«Рамблер» 24780 24780
Итого, руб.: 50760

Написание тематических статей (копирайтинг) является эффективным  размещением и информации о ресурсе, как на собственном сайте, так и на сайтах – партнерах. Стоимость таких услуг колеблется от 300 рублей за 1000 печатных знаков. Предлагается заказать 6 тематических статей по 2000 знаков каждая, в  этом случае общие затраты составят 3600 рублей.

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

  • Контекстная реклама -7836 рублей;
  • Баннерная реклама – 50760 рублей;
  • Тематические статьи – 3600 рублей.
  • Итого – 62196 рублей.

Диаграмма, характеризующая распределение расходов по видам рекламы, представлена на рис. 2.9.

Диаграмма распределения расходов рекламной кампании

Рис. 3.3 Диаграмма распределения расходов рекламной кампании

В итоге имеем:

КП = 62196руб. + 104610 = 166806  руб.

Рассчитаем срок окупаемости проекта:

Ток = 166806 руб. / 104202 руб. ≈ 1,6 года ≈ 19,2 мес.

Окупаемость проекта, равная 19,2 месяцам, показывает возврат средней продолжительности капитальных вложений. Внедрение системы позволяет снизить трудовые и стоимостные затраты на 77%.

Рассчитаем расчетный коэффициент эффективности капитальных затрат:

Ер =  1 / Ток=1/19,2=0.05

Приведённые расчёты позволяют сделать вывод о высокой эффективности разработанного проекта.

Заключение

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

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

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

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

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

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

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

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

  • дальнейшее развитие и усложнение программного обеспечения;
  • увеличение количества пользователей Интернет;
  • увеличение скорости доступа во всемирную сеть.

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

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

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

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

  1. Реклама интернет-магазинов должна осуществляться не только в сети, но и в оффлайне.
  2. Наиболее эффективным будет объединять элементы электронной коммерции с оффлайновым бизнесом.
  3. Необходимость повышения эффективности бизнеса заставит привлекать профессионалов в области маркетинга, логистики и других.
  4. Очевидно также, что необходимо будет использовать все возможные виды оплаты.
  5. Товар в магазине должен быть оригинальным, не повторяющимся в других магазинах – это справедливо в большей мере для малых и средних магазинов.
  6. Увеличение скорости и качества доставки также станет необходимым элементом.

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

Список литературы

  1. Введение в системы баз данных – СПб: Издательский дом "Вильямс", 2000. - 848 с.;
  2. Вендров А.М., CASE-технологии. Современные методы и средства проектирования информационных систем - М.: Финансы и статистика, 2006.
  3. Гаджинский А.М. Основы логистики: Учеб.пособие/ Инфоpм.-внедpен.центp "Маpкетинг".- М., 2005.- 121, с.: ил., табл.
  4. Дейв Крейн, Эрик Паскарелло, Даррен Джеймс. AJAX в действии: Учебник – М.: Вильямс, 2006. 450 – 490 с.
  5. Джексон Г. Проектирование реляционных баз данных для использования с микро-ЭВМ М.: Финансы и статистика, 1991.
  6. Диго С.М. Базы данных: проектирование и использование: Учебник. – М.: Финансы и статистика, 2005. – 592 с.
  7. Дэвид Флэнаган. JavaScript. Подробное руководство: Учебник – М.: Символ Плюс, 2008. 243 – 249 с.
  8. Зеленков Ю.А. Введение в базы данных. Центр Интернет ЯрГУ, 1997.
  9. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения / Пер. с англ. — М.: Мир, 1982. — 386 с., ил.
  10. Ивлиев М.К., Порошина Л.А. Автоматизация оперативного и бухгалтерского учета товаров, 1997.
  11. Информационные системы: Учебник для вузов. 2-е изд. СПб: "Питер", 2005 г - 656 стр.
  12. Керри Н. Праг, Майкл Р. Ирвин, Access 2000 - Библия пользователя, Диалектика, 2000.
  13. Крис Дейт. Введение в базы данных, 6-е изд. Киев, Диалектика, 1998.
  14. Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михай Бусика. AJAX и PHP. Разработка динамических веб-приложений: Учебник – М.: Символ Плюс, 2006.
  15. Лифшиц Н.И., Левин Е.Т Механизация и автоматизация процессов отборки и комплектования заказов на складах М., 1970.
  16. Практическое руководство по программированию / Пер. с англ. Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. — М.: Радио и связь, 1986. — 168 с., ил.
  17. Приказ Минэнерго РФ от 19 июня 2003 г. N 232
    "Об утверждении Правил технической эксплуатации нефтебаз"
  18. Проектирование и использование баз данных: Учебник. М.:Финансы и статистика, 1995г. – 191 с.;
  19. Разработка программного обеспечения - СПб : "Питер", 2004 г - 592 стр.
  20. Реляционные базы данных: практические приемы оптимальных решений. – СПб.: БХВ-Петербург, 2005 – 400с.:ил;
  21. Симионов Ю.Ф., Боромотов В.В. Информационный менеджмент. — Ростов н.Д: Феникс, 2006, 250с., ил.;
  22. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85) / Государственный комитет СССР по управлению качеством продукции и стандартам, 01.01.1992.
  23. Фокс Дж. Программное обеспечение и его разработка / Пер. с англ. — М.: Мир, 1985. - 368 с., ил.
  24. Язык компьютера. Пер. с англ, под ред. и с предисл. В. М. Курочки-на. — М.: Мир, 1989. - 240 с., ил. Глушаков С.В., Ломотько Д.В. Базы данных, 2000.
  25. http://google.com
  26. http://ru.wikipedia.org.

Приложение 1. Временные характеристики этапов проекта разработки Интернет-магазина

Временные характеристики этапа предпроектного исследования

Рис. П.3.2.1.1 Временные характеристики этапа предпроектного исследования

 

Временные характеристики этапа разработки системы

Рис. П 1.3.2.2 Временные характеристики этапа разработки системы

 

Временная характеристика этапа сдачи проекта

Рис. П 1.3.2.3 Временная характеристика этапа сдачи проекта

 

Временные характеристики этапа опытного тестирования и продвижения интернет-магазина

Рис. П 1.3.2.4 Временные характеристики этапа опытного тестирования и продвижения Интернет-магазина

Приложение 2. Макеты выходных документов

Макет прайс-листа

Рис. П 2.3.2.1 Макет прайс-листа

 

Макет списка заказов

Рис.П 2.3.2.2 Макет списка заказов

 

Макет каталога

Рис. П 2.3.2.3 Макет каталога

Приложение 3. Технологическая схема формирования каталога Интернет-магазина

Технологическая схема формирования каталога Интернет-магазинаПриложение 4. Листинги программных модулей

Access_admin.php

<?php

ini_set("display_errors", "1");

//admin mode access file

session_start();

include("./cfg/connect.inc.php");

if (isset($_POST["authorize"]))
{

if (!strcmp(base64_encode($_POST["login"]), ADMIN_LOGIN) && !strcmp(md5($_POST["password"]), ADMIN_PASS))

{ //login ok
$_SESSION["log"] = ADMIN_LOGIN;
$_SESSION["pass"] = ADMIN_PASS;
//redirect to the admin interface
header("Location: admin.php");
}
else $errorStr = "Invalid login and/or password";
}

?>
<html>
<head>
<link rel=STYLESHEET href="style1.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Administrator login</title></head>
<body>
<center>

<?php
if (isset($errorStr)) echo "<font color=red><b>$errorStr</b></font>";
?>

<form name="form1" method="post" action="access_admin.php">
<table border="0" cellpadding="2" cellspacing="1" bgcolor="#333333">
<tr bgcolor="#CCCCCC">
<td colspan="2" align=center><h4>Administrator login</h4></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right">Login:</td>
<td>
<input type="text" name="login"<?php if (isset($_POST["login"])) echo ' value="'.str_replace("\"","&quot;",stripslashes($_POST["login"])).'"';?>></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right">Password:</td>
<td>
<input type="password" name="password"></td>
</tr>
</table>

<p>
<input type="hidden" name="authorize" value="1">
<input type="submit" value="Login">
</p>
</form>
<p><a href="index.php">Go to front-end...</a></p>
</center>
</body>
</html>

Admin.php
<?php

ini_set("display_errors", "1");

//main admin module

function add_department($admin_dpt)
//adds new $admin_dpt to departments list
{
global $admin_departments;

$i = 0;
while ($i<count($admin_departments) && $admin_departments[$i]["sort_order"] < $admin_dpt["sort_order"]) $i++;
for ($j=count($admin_departments)-1; $j>=$i; $j--)
$admin_departments[$j+1] = $admin_departments[$j];
$admin_departments[$i] = $admin_dpt;
}

function __escape_string($_Data)
{
return str_replace("'", "\'", str_replace('\\', '\\\\', stripslashes($_Data)));
}

include("./cfg/connect.inc.php");
include("./includes/database/mysql.php");
include("./cfg/general.inc.php");
include("./cfg/appearence.inc.php");
include("./cfg/functions.php");
include("./cfg/category_functions.php");
include("./cfg/language_list.php");

session_start();

//authorized login check
include("./checklogin.php");
if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
{
//show authorization form
header("Location: access_admin.php");
die("<script>window.location='access_admin.php';</script>");
}

define('WORKING_THROUGH_ADMIN_SCRIPT', true); //for security purposes

//logout?
if (isset($_GET["logout"])) //logout
{
//show authorization form
$_SESSION["log"] = "";
$_SESSION["pass"] = "";
unset($_SESSION["log"]);
unset($_SESSION["pass"]);
die("<script>window.location='access_admin.php';</script>");
}

//init Smarty
require 'smarty/smarty.class.php';
$smarty = new Smarty; //core smarty object
$smarty_mail = new Smarty; //for e-mails

if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0; //set default language

if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file
else
{
die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
}

//connect to database
db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
db_select_db(DB_NAME) or die (db_error());

//set Smarty include files dir
$smarty->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/admin";
$smarty_mail->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/mail";

//get currency ISO 3 code
$currency_iso_3 = (defined('CONF_CURRENCY_ISO3')) ? CONF_CURRENCY_ISO3 : "USD" ;
$smarty->assign("currency_iso_3", $currency_iso_3);

// several functions

function mark_as_selected($a,$b) //required for excel import
//returns " selected" if $a == $b
{
return !strcmp($a,$b) ? " selected" : "";

} //mark_as_selected

function get_NOTempty_elements_count($arr) //required for excel import
//gets how many NOT NULL (not empty strings) elements are there in the $arr
{
$n = 0;
for ($i=0;$i<count($arr);$i++)
if (trim($arr[$i]) != "") $n++;
return $n;
} //get_NOTempty_elements_count

//end of functions definition

//define department and subdepartment
if (!isset($_GET["dpt"]))
{
$dpt = isset($_POST["dpt"]) ? $_POST["dpt"] : "";
}
else $dpt = $_GET["dpt"];
if (!isset($_GET["sub"]))
{
if (isset($_POST["sub"])) $sub = $_POST["sub"];
}
else $sub = $_GET["sub"];

//define smarty template
$smarty->assign("admin_main_content_template", "default.tpl.html");
$smarty->assign("current_dpt", $dpt);

//get new orders count
$q = db_query("select count(*) from ".ORDERS_TABLE) or die (db_error());
$n = db_fetch_row($q);
$smarty->assign("new_orders_count", $n[0]);

$admin_departments = array();

// includes all .php files from includes/ dir
$includes_dir = opendir("./includes/admin");
$file_count = 0;
while ( ($inc_file = readdir($includes_dir)) != false )
if (strstr($inc_file,".php"))
{
include("./includes/admin/$inc_file");
$file_count++;
}

if (isset($sub)) $smarty->assign("current_sub", $sub);

$smarty->assign("admin_departments", $admin_departments);
$smarty->assign("admin_departments_count", $file_count);

//show Smarty output
$smarty->display($lang_list[$_SESSION["current_language"]]->template_path."admin/index.tpl.html");

?>

Category.php

<?php

ini_set("display_errors", "1");

//ADMIN :: categories managment

include("./cfg/connect.inc.php");
include("./includes/database/mysql.php");
include("./cfg/category_functions.php");
include("./cfg/general.inc.php");

//connect to database
db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
db_select_db(DB_NAME) or die (db_error());

//checking for authorized access
session_start();

//current language
include("./cfg/language_list.php");
if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0; //set default language

if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file
else
{
die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
}

include("./checklogin.php");
if (!isset($_SESSION["log"]) || strcmp($_SESSION["log"],ADMIN_LOGIN)) //unauthorized
{
die ("You are not authorized to view this page");
}

?><html>

<head>
<link rel=STYLESHEET href="images/backend/style-backend.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo DEFAULT_CHARSET;?>">
<title><?php echo ADMIN_CATEGORY_TITLE;?></title>
<script>
function confirmDelete(text,url)
{
temp = window.confirm(text);
if (temp) //delete
{
window.location=url;
}
}
</script>
</head>

<body bgcolor=#D2D2FF>

<?php
function deleteSubCategories($parent) //deletes all subcategories of category with categoryID=$parent
{


//subcategories
$q = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=$parent and categoryID<>0") or die (db_error());
while ($row = db_fetch_row($q))
{
deleteSubCategories($row[0]); //recurrent call
}
$q = db_query("DELETE FROM ".CATEGORIES_TABLE." WHERE parent=$parent and categoryID<>0") or die (db_error());

//move all product of this category to the root category
$q = db_query("UPDATE ".PRODUCTS_TABLE." SET categoryID=0 WHERE categoryID=$parent") or die (db_error());
}

function category_Moves_To_Its_SubDirectories($cid, $new_parent)
{
//return true/false

$a = false;
$q = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=$cid and categoryID<>0") or die (db_error());
while ($row = db_fetch_row($q))
{
if ($row[0] == $new_parent) $a = true;
else
$a = category_Moves_To_Its_SubDirectories($row[0],$new_parent);
}
return $a;
}

if (!isset($w)) $w=-1; //parent

if (isset($_GET["picture_remove"])) //delete category thumbnail from server
{
$q = db_query("SELECT picture FROM ".CATEGORIES_TABLE." WHERE categoryID='".$_GET["c_id"]."' and categoryID<>0") or die (db_error());
$r = db_fetch_row($q);
if ($r[0] && file_exists("./products_pictures/$r[0]")) unlink("./products_pictures/$r[0]");
db_query("UPDATE ".CATEGORIES_TABLE." SET picture='' WHERE categoryID='".$_GET["c_id"]."'") or die (db_error());
}

if (isset($_POST["save"]) && $_POST["name"]) { //save changes

if (!isset($_POST["must_delete"])) //add new category
{
$q = db_query("INSERT INTO ".CATEGORIES_TABLE." (name, parent, products_count, description, picture, products_count_admin) VALUES ('".$_POST["name"]."',".$_POST["parent"].",0,'".$_POST["desc"]."','',0)") or die (db_error());
$pid = db_insert_id();
}
else //update existing category
{
if ($_POST["must_delete"] != $_POST["parent"]) //if not moving category to itself
{

//if category is being moved to any of it's subcategories - it's
//neccessary to 'lift up' all it's subcategories

if (category_Moves_To_Its_SubDirectories($_POST["must_delete"], $_POST["parent"]))
{
//lift up is required

//get parent
$q = db_query("SELECT parent FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and categoryID='".$_POST["must_delete"]."'") or die (db_error());
$r = db_fetch_row($q);

//lift up
db_query("UPDATE ".CATEGORIES_TABLE." SET parent='$r[0]' WHERE parent='".$_POST["must_delete"]."'") or die (db_error());

//move edited category
db_query("UPDATE ".CATEGORIES_TABLE." SET name='".str_replace("<","&lt;",$_POST["name"])."', description='".$_POST["desc"]."', parent='".$_POST["parent"]."' WHERE categoryID='".$_POST["must_delete"]."'") or die (db_error());

}
else //just move category
db_query("UPDATE ".CATEGORIES_TABLE." SET name='".str_replace("<","&lt;",$_POST["name"])."', description='".$_POST["desc"]."', parent='".$_POST["parent"]."' WHERE categoryID='".$_POST["must_delete"]."'") or die (db_error());
}
$pid = $_POST["must_delete"];

update_products_Count_Value_For_Categories(0);

}

if (isset($_FILES["picture"]) && $_FILES["picture"]["name"] && preg_match('/\.(jpg|jpeg|gif|jpe|pcx|bmp)$/i', $_FILES["picture"]["name"])) //upload category thumbnail
{

//old picture
$q = db_query("SELECT picture FROM ".CATEGORIES_TABLE." WHERE categoryID='$pid' and categoryID<>0") or die (db_error());
$row = db_fetch_row($q);

//upload new photo
$picture_name = str_replace(" ","_", $_FILES["picture"]["name"]);
if (!move_uploaded_file($_FILES["picture"]["tmp_name"], "./products_pictures/$picture_name")) //failed to upload
{
echo "<center><font color=red>".ERROR_FAILED_TO_UPLOAD_FILE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}
else //update db
{
db_query("UPDATE ".CATEGORIES_TABLE." SET picture='$picture_name' WHERE categoryID='$pid'") or die (db_error());
SetRightsToUploadedFile( "./products_pictures/".$picture_name );
}

//remove old picture...
if ($row[0] && strcmp($row[0], $picture_name) && file_exists("./products_pictures/$row[0]"))
unlink("./products_pictures/$row[0]");

}

//now close the window (in case of success)
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
}
else { //category edition from

if (isset($_GET["c_id"])) //edit existing category
{
$q = db_query("SELECT name, description, picture FROM ".CATEGORIES_TABLE." WHERE categoryID='".$_GET["c_id"]."' and categoryID<>0") or die (db_error());
$row = db_fetch_row($q);
if (!$row) //can't find category....
{
echo "<center><font color=red>".ERROR_CANT_FIND_REQUIRED_PAGE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}
$title = "<b>$row[0]</b>";
$n = $row[0];
$d = $row[1];
$picture = $row[2];

if (isset($_GET["del"])) //delete category
{

//photo
$q = db_query("SELECT picture FROM ".CATEGORIES_TABLE." WHERE categoryID='".$_GET["c_id"]."' and categoryID<>0") or die (db_error());
$r = db_fetch_row($q);
if ($r[0] && file_exists("./products_pictures/$r[0]")) unlink("./products_pictures/$r[0]");

//delete from db
$q = db_query("DELETE FROM ".CATEGORIES_TABLE." WHERE categoryID='".$_GET["c_id"]."' and categoryID<>0") or die (db_error());

deleteSubCategories($_GET["c_id"]);

update_products_Count_Value_For_Categories(0);

//close window
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();";
echo "</script>\n</body>\n</html>";
}
}
else //create new
{
$title = ADMIN_CATEGORY_NEW;
$n = "";
$d = "";
$picture = "";
}

?>

<center><font color=purple><?php echo $title; ?></font></center>
<form enctype="multipart/form-data" action="category.php" method=post>

<table width=100% border=0>
<tr>
<td align=right>
<?php
if (!isset($_GET["c_id"])) echo ADMIN_CATEGORY_PARENT;
else echo ADMIN_CATEGORY_MOVE_TO;
?>
</td>
<td width=5%>&nbsp;</td>
<td>
<select name="parent">
<option value="0"><?php echo ADMIN_CATEGORY_ROOT;?></option>
<?php
//fill the category combobox
$tmp = isset($_GET["w"]) ? $_GET["w"] : $_POST["parent"];
$cats = fillTheCList(0,0);
for ($i=0; $i<count($cats); $i++)
{
echo "<option value=\"".$cats[$i][0]."\"";
if ($tmp == $cats[$i][0]) //select category
echo " selected";
echo ">";
for ($j=0;$j<$cats[$i][5];$j++) echo "&nbsp;&nbsp;";
echo $cats[$i][1];
echo "</option>";
}
?>
</select>
</td>
</tr>

<tr>
<td align=right><?php echo ADMIN_CATEGORY_NAME;?></td>
<td>&nbsp;</td>
<td><input type="text" name="name" value="<?php echo str_replace("\"","&quot;",$n); ?>" size=13></td>
</tr>

<tr>
<td align=right><?php echo ADMIN_CATEGORY_LOGO;?></td>
<td>&nbsp;</td>
<td><input type="file" name="picture"></td>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>
<?php
if ($picture != "" && file_exists("./products_pictures/".$picture))
{
echo "<font class=average></font> <a class=small href=\"products_pictures/".$picture."\">$picture</a>\n";
echo "<br><a href=\"javascript:confirmDelete('".QUESTION_DELETE_PICTURE."','category.php?c_id=".$_GET["c_id"]."&w=".$_GET["w"]."&picture_remove=yes');\">".DELETE_BUTTON."</a>\n";
}
else echo "<font class=average>".ADMIN_PICTURE_NOT_UPLOADED."</font>";
?>
</td>
</tr>

<tr>
<td align=right><?php echo ADMIN_CATEGORY_DESC;?><br>(HTML)</td>
<td></td>
<td><textarea name="desc" rows=7 cols=22><?php echo str_replace("\"","&quot;",$d); ?></textarea></td>
</tr>

</table>
<p><center>
<input type="submit" value="<?php echo SAVE_BUTTON;?>" width=5>
<input type="hidden" name="save" value="yes">
<input type="button" value="<?php echo CANCEL_BUTTON;?>" onClick="window.close();">
<?php
//$must_delete indicated which query should be made: insert/update
if (isset($_GET["c_id"]))
{
echo "<input type=\"hidden\" name=\"must_delete\" value=\"".str_replace("\"","",$_GET["c_id"])."\">\n";
echo "<input type=\"button\" value=\"".DELETE_BUTTON."\" onClick=\"confirmDelete('".QUESTION_DELETE_CONFIRMATION."','category.php?c_id=".str_replace("\"","",$_GET["c_id"])."&del=1');\"";
}
?>
</center></p>
</form>

</body>

</html>
<?php }; ?>

Index.php

<?php

//core file

ini_set("display_errors", "1");

// -------------------------INITIALIZATION-----------------------------//

//make sure that URL does not contain something like index.php/?parameter1=1&... //

//include core files
include("./cfg/connect.inc.php");
include("./includes/database/mysql.php");
include("./cfg/general.inc.php");
include("./cfg/appearence.inc.php");
include("./cfg/functions.php");
include("./cfg/category_functions.php");
include("./cfg/language_list.php");

session_start();

ini_set("display_errors", "1");

//init Smarty
require 'smarty/smarty.class.php';
$smarty = new Smarty; //core smarty object
$smarty_mail = new Smarty; //for e-mails

//select a new language?
if (isset($_POST["new_language"]))
{
$_SESSION["current_language"] = $_POST["new_language"];
}

//current language session variable
if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0; //set default language
//include a language file
if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file
else
{
die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
}

//connect to the database
db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
db_select_db(DB_NAME) or die (db_error());

//get currency ISO 3 code
$currency_iso_3 = (defined('CONF_CURRENCY_ISO3')) ? CONF_CURRENCY_ISO3 : "USD" ;
$smarty->assign("currency_iso_3", $currency_iso_3);

//load all categories to array $cats to avoid multiple DB queries (frequently used in future - but not always!)
$cats = array();
$i=0;
$q = db_query("SELECT categoryID, name, parent, products_count, description, picture FROM ".CATEGORIES_TABLE." where categoryID<>0 ORDER BY name") or die (db_error());
while ($row = db_fetch_row($q))
{
$cats[$i++] = $row;
}

//set $categoryID
if (isset($_GET["categoryID"]) || isset($_POST["categoryID"]))
$categoryID = isset($_GET["categoryID"]) ? $_GET["categoryID"] : $_POST["categoryID"];
else $categoryID = 0;

$categoryID = (int)$categoryID;

//$productID
if (!isset($_GET["productID"]))
{
if (isset($_POST["productID"]))
{
$productID = (int)$_POST["productID"];
}
}
else
{
$productID = (int)$_GET["productID"];
}

//and different vars...
if (isset($_GET["register"]) || isset($_POST["register"]))
$register = isset($_GET["register"]) ? $_GET["register"] : $_POST["register"];
if (isset($_GET["update_details"]) || isset($_POST["update_details"]))
$update_details = isset($_GET["update_details"]) ? $_GET["update_details"] : $_POST["update_details"];
if (isset($_GET["order"]) || isset($_POST["order"]))
$order = isset($_GET["order"]) ? $_GET["order"] : $_POST["order"];
if (isset($_GET["check_order"]) || isset($_POST["check_order"]))
$check_order = isset($_GET["check_order"]) ? $_GET["check_order"] : $_POST["check_order"];
if (isset($_GET["proceed_ordering"]) || isset($_POST["proceed_ordering"]))
$proceed_ordering = isset($_GET["proceed_ordering"]) ? $_GET["proceed_ordering"] : $_POST["proceed_ordering"];

if (!isset($_SESSION["vote_completed"])) $_SESSION["vote_completed"] = array();

//checking for proper $offset init
$offset = isset($_GET["offset"]) ? $_GET["offset"] : 0;
if ($offset<0 || $offset % CONF_PRODUCTS_PER_PAGE) $offset = 0;

// -------------SET SMARTY VARS AND INCLUDE SOURCE FILES------------//

if (isset($productID)) //to rollout categories navigation table
{
$q = db_query("SELECT categoryID FROM ".PRODUCTS_TABLE." WHERE productID='$productID'") or die (db_error());
$r = db_fetch_row($q);
if ($r) $categoryID = $r[0];
}

//set Smarty include files dir
$smarty->template_dir = $lang_list[$_SESSION["current_language"]]->template_path;
$smarty_mail->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/mail";

//assign core Smarty variables

$smarty->assign("lang_list", $lang_list);
$smarty->assign("lang_list_count", count($lang_list));

if (isset($_SESSION["current_language"])) $smarty->assign("current_language", $_SESSION["current_language"]);
// - following vars are used as hidden in the customer survey form
$smarty->assign("categoryID", $categoryID);
if (isset($productID)) $smarty->assign("productID", $productID);
if (isset($_GET["currency"])) $smarty->assign("currency", $_GET["currency"]);
if (isset($_GET["user_details"])) $smarty->assign("user_details", $_GET["user_details"]);
if (isset($_GET["aux_page"])) $smarty->assign("aux_page", $_GET["aux_page"]);
if (isset($_GET["show_price"])) $smarty->assign("show_price", $_GET["show_price"]);
if (isset($_GET["adv_search"])) $smarty->assign("adv_search", $_GET["adv_search"]);
if (isset($_GET["searchstring"])) $smarty->assign("searchstring", $_GET["searchstring"]);
if (isset($register)) $smarty->assign("register", $register);
if (isset($order)) $smarty->assign("order", $order);
if (isset($check_order)) $smarty->assign("check_order", $check_order);

//set defualt main_content template to homepage
$smarty->assign("main_content_template", "home.tpl.html");
// includes all .php files from includes/ dir
$includes_dir = opendir("./includes");
while ( ($inc_file = readdir($includes_dir)) != false )
if (strstr($inc_file,".php"))
{
include("./includes/$inc_file");
}

// output:

//security warnings!
if (file_exists("./install.php"))
{
echo "<center>".WARNING_DELETE_INSTALL_PHP."</center>";
}
if (file_exists("./forgot_password.php"))
{
echo "<center>".WARNING_DELETE_FORGOTPW_PHP."</center>";
}

if (!is_writable("./products_pictures") || !is_writable("./templates_c"))
{
echo "<center>".WARNING_WRONG_CHMOD."</center>";
}

//show administrative mode link if logged in as administrator
include("./checklogin.php");
if (isset($_SESSION["log"]) && isset($_SESSION["pass"]))
echo "<br><center><a href=\"admin.php\"><font color=red>".ADMINISTRATE_LINK."</font></a></center><p>";

//show Smarty output
$smarty->display($lang_list[$_SESSION["current_language"]]->template_path."index.tpl.html");

?>

Product.php

<?php

//ADMIN :: products managment

ini_set("display_errors", "1");

include("./cfg/connect.inc.php");
include("./includes/database/mysql.php");
include("./cfg/category_functions.php");
include("./cfg/general.inc.php");

//connect 2 database
db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
db_select_db(DB_NAME) or die (db_error());

session_start();
include("./checklogin.php");
if (!isset($_SESSION["log"]) || strcmp($_SESSION["log"],ADMIN_LOGIN)) //unauthorized
{
die ("You are not authorized to view this page");
}

//get currency ISO 3 code
$currency_iso_3 = (defined('CONF_CURRENCY_ISO3')) ? CONF_CURRENCY_ISO3 : "USD" ;

//current language
include("./cfg/language_list.php");
if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0; //set default language

if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file
else
{
die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
}

if (!isset($_GET["productID"])) $_GET["productID"] = 0;

if (isset($_POST["save_product"])) //save item to the database
{

if (!isset($_POST["price"]) || !$_POST["price"] || $_POST["price"] < 0)
$_POST["price"] = 0; //price can not be negative

if (!isset($_POST["name"]) || trim($_POST["name"])=="") $_POST["name"] = "not defined";

$instock = (isset($_POST["in_stock"])) ? 1 : 0;

if ($_POST["save_product"]) { //if $_POST["save_product"] != 0 then update item

//delete old product photos if they're being replaced

$q = db_query("SELECT picture, big_picture, thumbnail FROM ".PRODUCTS_TABLE." WHERE productID='".$_POST["save_product"]."'") or die (db_error());
$row = db_fetch_row($q);

//generating query

$s = "UPDATE ".PRODUCTS_TABLE." SET categoryID='".$_POST["categoryID"]."', name='".$_POST["name"]."', Price='".$_POST["price"]."', description='".$_POST["description"]."', in_stock=".$instock.", customers_rating='".$_POST["rating"]."', brief_description='".$_POST["brief_description"]."', list_price='".$_POST["list_price"]."', product_code='".$_POST["product_code"]."'";

$s1 = "";

//old pictures?
if (isset($_FILES["picture"]) && $_FILES["picture"]["name"])
{
//delete old picture
if ($row[0] && file_exists("./products_pictures/".$row[0]))
unlink("./products_pictures/".$row[0]);
}
if (isset($_FILES["big_picture"]) && $_FILES["big_picture"]["name"])
{
//delete old picture
if ($row[1] && file_exists("./products_pictures/".$row[1]))
unlink("./products_pictures/".$row[1]);
}
if (isset($_FILES["thumbnail"]) && $_FILES["thumbnail"]["name"])
{
//delete old picture
if ($row[2] && file_exists("./products_pictures/".$row[2]))
unlink("./products_pictures/".$row[2]);
}

$pid = $_POST["save_product"];

}
else
{
//add new product
db_query("INSERT INTO ".PRODUCTS_TABLE." (categoryID, name, description, customers_rating, Price, in_stock, customer_votes, items_sold, enabled, brief_description, list_price, product_code, picture, thumbnail, big_picture) VALUES ('".$_POST["categoryID"]."','".$_POST["name"]."','".$_POST["description"]."', 0, '".$_POST["price"]."', ".$instock.", 0, 0, 1, '".$_POST["brief_description"]."', '".$_POST["list_price"]."', '".$_POST["product_code"]."','','','');") or die (db_error());
$pid = db_insert_id();

$dont_update = 1; //don't update product

$s  = "";
$s1 = "UPDATE ".PRODUCTS_TABLE." SET categoryID=categoryID";
}

//add pictures?
//regular photo
if (isset($_FILES["picture"]) && $_FILES["picture"]["name"] && preg_match('/\.(jpg|jpeg|gif|jpe|pcx|bmp)$/i', $_FILES["picture"]["name"])) //upload
{
$_FILES["picture"]["name"] = str_replace(" ","_",$_FILES["picture"]["name"]);
$r = move_uploaded_file($_FILES["picture"]["tmp_name"], "./products_pictures/".$_FILES["picture"]["name"]);
if (!$r) //failed 2 upload
{
echo "<center><font color=red>".ERROR_FAILED_TO_UPLOAD_FILE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}

SetRightsToUploadedFile( "./products_pictures/".$_FILES["picture"]["name"] );

$s .= ", picture='".$_FILES["picture"]["name"]."'";
$s1.= ", picture='".$_FILES["picture"]["name"]."'";
}
//enlarged photo
if (isset($_FILES["big_picture"]) && $_FILES["big_picture"]["name"] && preg_match('/\.(jpg|jpeg|gif|jpe|pcx|bmp)$/i', $_FILES["big_picture"]["name"]))
{
$_FILES["big_picture"]["name"] = str_replace(" ","_",$_FILES["big_picture"]["name"]);
$r = move_uploaded_file($_FILES["big_picture"]["tmp_name"], "./products_pictures/".$_FILES["big_picture"]["name"]);
if (!$r) //failed 2 upload
{
echo "<center><font color=red>".ERROR_FAILED_TO_UPLOAD_FILE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}

SetRightsToUploadedFile( "./products_pictures/".$_FILES["big_picture"]["name"] );

$s .= ", big_picture='".$_FILES["big_picture"]["name"]."'";
$s1.= ", big_picture='".$_FILES["big_picture"]["name"]."'";
}
//thumbnail
if (isset($_FILES["thumbnail"]) && $_FILES["thumbnail"]["name"] && preg_match('/\.(jpg|jpeg|gif|jpe|pcx|bmp)$/i', $_FILES["thumbnail"]["name"]))
{
$_FILES["thumbnail"]["name"] = str_replace(" ","_",$_FILES["thumbnail"]["name"]);
$r = move_uploaded_file($_FILES["thumbnail"]["tmp_name"], "./products_pictures/".$_FILES["thumbnail"]["name"]);
if (!$r) //failed 2 upload
{
echo "<center><font color=red>".ERROR_FAILED_TO_UPLOAD_FILE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}

SetRightsToUploadedFile( "./products_pictures/".$_FILES["thumbnail"]["name"] );

$s .= ", thumbnail='".$_FILES["thumbnail"]["name"]."'";
$s1.= ", thumbnail='".$_FILES["thumbnail"]["name"]."'";
}

if (!isset($dont_update)) //update product info
{
$s .= " WHERE productID='".$_POST["save_product"]."'";
db_query($s) or die (db_error());
$productID = $_POST["save_product"];
}
else //don't update (insert query is already completed)
{
$s1.= " WHERE productID=$pid";
db_query($s1) or die (db_error());
$productID = $pid;
}

update_products_Count_Value_For_Categories(0);

//close window
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
exit;
}
else //get product from db
{
if ($_GET["productID"])
{

$q = db_query("SELECT categoryID, name, description, customers_rating, Price, picture, in_stock, thumbnail, big_picture, brief_description, list_price, product_code FROM ".PRODUCTS_TABLE." WHERE productID='".$_GET["productID"]."'") or die (db_error());
$row = db_fetch_row($q);
if (!$row) //product wasn't found
{
echo "<center><font color=red>".ERROR_CANT_FIND_REQUIRED_PAGE."</font>\n<br><br>\n";
echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
exit;
}

if (isset($_GET["picture_remove"])) //delete items picture from server if requested
{
if ($_GET["picture_remove"] && file_exists("./products_pictures/".$row[$_GET["picture_remove"]]))
unlink("./products_pictures/".$row[$_GET["picture_remove"]]);
$picture = "none";
}

if (isset($_GET["delete"])) //delete product
{
//at first photos...
if ($row[5] != "none" && $row[5] != "" && file_exists("./products_pictures/".$row[5]))
unlink("./products_pictures/".$row[5]);
if ($row[7] != "none" && $row[7] != "" && file_exists("./products_pictures/".$row[7]))
unlink("./products_pictures/".$row[7]);
if ($row[8] != "none" && $row[8] != "" && file_exists("./products_pictures/".$row[8]))
unlink("./products_pictures/".$row[8]);

$q = db_query("DELETE FROM ".PRODUCTS_TABLE." WHERE productID='".$_GET["productID"]."'") or die (db_error());

//close window
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
exit;
}

$title = $row[1];

}
else //creating new item
{
$title = ADMIN_PRODUCT_NEW;
$cat = isset($_GET["categoryID"]) ? $_GET["categoryID"] : 0;
$row = array($cat,"","","",0,"",1,"","","",0,"");
}
}

?>

<html>

<head>
<link rel=STYLESHEET href="images/backend/style-backend.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo DEFAULT_CHARSET;?>">
<title><?php echo ADMIN_PRODUCT_TITLE;?></title>
<script>
function confirmDelete(question, where)
{
temp = window.confirm(question);
if (temp) //delete
{
window.location=where;
}
}
function open_window(link,w,h) //opens new window
{
var win = "width="+w+",height="+h+",menubar=no,location=no,resizable=yes,scrollbars=yes";
wishWin = window.open(link,'wishWin',win);
}
</script>
</head>

<body bgcolor=#FFFFE2>
<center>
<p>
<b><?php echo $title; ?></b>

<form enctype="multipart/form-data" action="products.php" method=post>

<table width=100% border=0 cellpadding=3 cellspacing=0>

<tr>
<td align=right><?php echo ADMIN_CATEGORY_PARENT;?></td>
<td>
<select name="categoryID">
<option value="0"><?php echo ADMIN_CATEGORY_ROOT;?></option>
<?php
//show categories select element
$cats = fillTheCList(0,0);
for ($i=0; $i<count($cats); $i++)
{
echo "<option value=\"".$cats[$i][0]."\"";
if ($row[0] == $cats[$i][0]) //select category
echo " selected";
echo ">";
for ($j=0;$j<$cats[$i][5];$j++) echo "&nbsp;&nbsp;";
echo $cats[$i][1];
echo "</option>";
}
?>
</select>
</td>
</tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_NAME;?></td>
<td><input type="text" name="name" value="<?php echo str_replace("\"","&quot;",$row[1]); ?>"></td>
</tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_CODE;?></td>
<td><input type="text" name="product_code" value="<?php echo str_replace("\"","&quot;",$row[11]); ?>"></td>
</tr>

<?php        if ($_GET["productID"]) { ?>
<tr>
<td align=right><?php echo ADMIN_PRODUCT_RATING;?>:</td>
<td><input type=text name="rating" value="<?php echo str_replace("\"","&quot;",$row[3]); ?>"></b></td>
</tr>

<?php }; ?>

<tr>

<td align=right><?php echo ADMIN_PRODUCT_PRICE;?>, <?php echo $currency_iso_3; ?><br>(<?php echo STRING_NUMBER_ONLY;?>):</td>
<td><input type="text" name="price" value=<?php echo $row[4]; ?>></td>
</tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_LISTPRICE;?>, <?php echo $currency_iso_3; ?><br>(<?php echo STRING_NUMBER_ONLY;?>):</td>
<td><input type="text" name="list_price" value=<?php echo $row[10]; ?>></td>
</tr>

<?php
if ($row[6]<0) $is = 0;
else $is = $row[6];

?>
<tr>
<td align=right><?php echo ADMIN_PRODUCT_INSTOCK;?>:</td>
<td><input type="checkbox" name="in_stock"<?php if ($is > 0) echo " checked"; ?>></td>
</tr>

<tr><td>&nbsp;</td></tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_PICTURE;?></td>
<td><input type="file" name="picture"></td>
<tr><td></td><td>
<?php
if ($row[5]!="" && file_exists("./products_pictures/".$row[5]))
{
echo "<a class=small href=\"products_pictures/".$row[5]."\">$row[5]</a>\n";
echo "<br><a href=\"javascript:confirmDelete('".QUESTION_DELETE_PICTURE."','products.php?productID=".$_GET["productID"]."&picture_remove=5');\">".DELETE_BUTTON."</a>\n";
}
else echo "<font class=average color=brown>".ADMIN_PICTURE_NOT_UPLOADED."</font>";
?>
</td>
</tr>
<tr>
<td align=right><?php echo ADMIN_PRODUCT_THUMBNAIL;?></td>
<td><input type="file" name="thumbnail"></td>
<tr><td></td><td>
<?php
if ($row[7]!="" && file_exists("./products_pictures/".$row[7]))
{
echo "<a class=small href=\"products_pictures/".$row[7]."\">$row[7]</a>\n";
echo "<br><a href=\"javascript:confirmDelete('".QUESTION_DELETE_PICTURE."','products.php?productID=".$_GET["productID"]."&picture_remove=7');\">".DELETE_BUTTON."</a>\n";
}
else echo "<font class=average color=brown>".ADMIN_PICTURE_NOT_UPLOADED."</font>";
?>
</td>
</tr>
<tr>
<td align=right><?php echo ADMIN_PRODUCT_BIGPICTURE;?></td>
<td valign=top><input type="file" name="big_picture"></td>
<tr><td></td><td valign=top>
<?php
if ($row[8] && file_exists("./products_pictures/".$row[8]))
{
echo "<a class=small href=\"products_pictures/".$row[8]."\">$row[8]</a>\n";
echo "<br><a href=\"javascript:confirmDelete('".QUESTION_DELETE_PICTURE."','products.php?productID=".$_GET["productID"]."&picture_remove=8');\">".DELETE_BUTTON."</a>\n";
}
else echo "<font class=average color=brown>".ADMIN_PICTURE_NOT_UPLOADED."</font>";
?>
</td>
</tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_DESC;?><br>(HTML):</td>
<td><textarea name="description" rows=15 cols=40><?php echo str_replace("<","&lt;",$row[2]); ?></textarea></td>
</tr>

<tr>
<td align=right><?php echo ADMIN_PRODUCT_BRIEF_DESC;?><br>(HTML):</td>
<td><textarea name="brief_description" rows=7 cols=40><?php echo str_replace("<","&lt;",$row[9]); ?></textarea></td>
</tr>

</table>

<p><center>
<input type="submit" value="<?php echo SAVE_BUTTON;?>" width=5>
<input type="hidden" name="save_product" value=<?php echo $_GET["productID"]; ?>>
<input type="button" value="<?php echo CANCEL_BUTTON;?>" onClick="window.close();">
<?php        if ($_GET["productID"]) echo "<input type=button value=\"".DELETE_BUTTON."\" onClick=\"confirmDelete('".QUESTION_DELETE_CONFIRMATION."','products.php?productID=".$_GET["productID"]."&delete=1');\">"; ?>
</center></p>
</form>

</center>
</body>

</html>

index.tpl.html

<html>

{include file="head.tpl.html"}

<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" background="images/background.png">

<script type="text/javascript" src="images/niftycube.js"></script>

<center>
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="white"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="bottom" width="220">
<a href="index.php"><img src="images/companyname.jpg"  valign=""  width="220" height="50" border="0" alt="{$smarty.const.CONF_SHOP_NAME}"></a>
</td>
<td valign="bottom" width="400">
<table id="tabnav" border="0" cellspacing="0" cellpadding="0" >
<tr valign="top" align="center">
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><div {if $main_content_template == "home.tpl.html"} class="topmenu_selected"{else} class="topmenu_notselected"{/if}><a href="index.php" class="menu">{$smarty.const.LINK_TO_HOMEPAGE}</a></div></td>
<td>&nbsp;</td>
<td><div {if $main_content_template == "pricelist.tpl.html"} class="topmenu_selected"{else} class="topmenu_notselected"{/if}><a href="index.php?show_price=yes" class="menu">{$smarty.const.STRING_PRICELIST}</a></div></td>
<td>&nbsp;</td>
<td><div {if ($main_content_template == "aux_page.tpl.html") && ($aux_page == "aux1")} class="topmenu_selected"{else} class="topmenu_notselected"{/if}><a href="index.php?aux_page=aux1" class="menu"><nobr>{$smarty.const.ADMIN_ABOUT_PAGE}</nobr></a></div></td>
<td>&nbsp;</td>
<td><div {if ($main_content_template == "aux_page.tpl.html") && ($aux_page == "aux2")} class="topmenu_selected"{else} class="topmenu_notselected"{/if}><a href="index.php?aux_page=aux2" class="menu">{$smarty.const.ADMIN_SHIPPING_PAGE}</a></div></td>

</tr>
</table>
</td>
<td valign="middle" align="right" style="background: #ffffff url(images/gradientbg1.gif) repeat-y; background-position: right; height:70px; width:160px;">
<center>
{include file="language.tpl.html"}

{include file="search_form.tpl.html"}</center>
<a href="index.php?search_with_change_category_ability=yes" class="lightsmall"></a>
</td>
</tr>
<tr>
<td bgcolor="white" height="6" align="right"><img src="images/gradient-dark-strip.gif"></td>
<td bgcolor="#7ba05b" colspan="2" height="6"></td> <!-- Главная?-->
</tr>
<tr>
<td width="220" valign="top" align="right">
<table cellspacing="0" cellpadding="0" border="0"><tr><td style="background: white url(images/gradientbg2.gif) repeat-y; background-position: right;width:220px;height:100%;">

<p style="padding:10px;">

<table width="200" border="0" align="right" cellpadding="0" cellspacing="0">
{if $smarty.const.CONF_SHOW_ADD2CART eq 1}
<tr>
<td align="left" valign="top" bgcolor="#7ba05b" class="topcorners"><!-- Корзина-->
<div style="padding:5px;font-size:130%;">
<a href="index.php?shopping_cart=yes" class="menu">{$smarty.const.CART_TITLE}</a>
</div>
</td>
</tr>
<tr>
<td style="background: #cadaba; background-position: right; padding: 10px;" class="bottomcorners">
{include file="shopping_cart_info.tpl.html"}
</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
{/if}
<tr>
<td align="left" valign="top" bgcolor="#7ba05b" class="topcorners"> <!-- Каталог-->
<div style="padding:5px;font-size:130%;">
<a href="index.php#catalog" class="menu">{$smarty.const.ADMIN_CATALOG}</a>
</div>
</td>
</tr>
<tr>
<td align="left" valign="top" style="background: #cadaba; background-position: right; padding: 10px;" class="bottomcorners">
{include file="category_tree.tpl.html"}
</td>
</tr>
<!-- Контакты-->
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td align="left" valign="top" bgcolor="#7ba05b" class="topcorners"> <!-- Контакты-->
<p class=menu1>Контакты</p>
</div>
</td>
</tr>
<tr>
<td align="left" valign="top" style="background: #cadaba; background-position: right; padding: 10px;" class="bottomcorners">
Телефон +7(495) 456-90-09<br>
ICQ - 567-678-098<br>
Адрес:<br>
Москва, ул. Калинина д. 6В офис 1
</td>
</tr>

</table>
</p>

</td></tr>
<tr><td align="right"><img src="images/gradientbg3.gif" border="0" width="200" height="121"></td></tr>
</table>
</td>
<td width="100%" align="left" valign="top" style="padding:10px;" colspan="2">

{include file="$main_content_template"}

</td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="2" align="center">

<hr width="300" align="center" size="1" style="margin-top:0px;">

<p class="small" align="center" style="margin-top:-5px;"><i>Copyright &copy; <a href="{$smarty.const.CONF_FULL_SHOP_URL}"> <u>{$smarty.const.CONF_SHOP_NAME}</u></a>. All rights reserved.</i></p>

</td>
</tr>
</table></td>
</tr>
</table>

<script type="text/javascript">
{literal}
if ( ! (navigator.userAgent.indexOf('Opera') != -1) )
{
Nifty("div.topmenu_notselected,div.topmenu_selected","top transparent");

Nifty("td.topcorners","tl transparent")
var tt_layers= getElementsBySelector("td.topcorners");
for(var k=0, len=tt_layers.length; k<len; k++)
{
tt_layers[k].parentNode.style.backgroundColor = "#e0e7ff";
}
Nifty("td.topcorners","tr transparent");

Nifty("td.bottomcorners","bl transparent");
var tt_layers= getElementsBySelector("td.bottomcorners");
for(var k=0, len=tt_layers.length; k<len; k++)
{
tt_layers[k].parentNode.style.backgroundColor = "#e0e7ff";
}
Nifty("td.bottomcorners","br transparent");
}
{/literal}
</script>
<!--
конец кода nifty
-->

</body>
</html>