Проектирование интернет-магазина

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Курсовая  работа 

Проектирование  Интернет-мазазина 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Введение 

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

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

    Как правило, под Интернет-магазином первоначально понимали именно Интернет-интерпретацию реально существующего магазина, позволяющую просматривать прайс-листы этого магазина посредством Интернета. Так появились on-line-каталоги.

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

    • обогатились средства взаимодействия с клиентом (он получил возможность не только просматривать, но и заказывать, а впоследствии и оплачивать товары или услуги, не вставая из-за компьютера), что явилось началом эры «Web Shopping» (Интернет-торговли);
    • произошел разрыв между реальными магазинами и их Интернет-интерпретациями, то есть Интернет-магазин начал существовать без своего физического собрата;
    • началась поставка товаров или услуг не только конечным потребителям (Business to Client), но и дистрибьюторам (Business to Business).

    E-commerce открывает новые возможности  для бизнеса с помощью Интернета  благодаря большей оперативности  Интернет-магазинов (реакции на  мнения покупателей), отличающей их от физических аналогов, однако Интернет-магазины пока еще несколько уступают по уровню демонстрации товаров или услуг. И хотя в последнее время получили широкое развитие Интернет-магазины, в которых можно в буквальном смысле слова покрутить товар во всевозможных плоскостях (благодаря средствам Macromedia Flash). Пока, к сожалению, Интернет-магазины не могут помочь сомневающимся покупателям получить ответы на вопросы типа «а подойдет ли мне это?». Но все впереди, и за этим будущее E-commerce. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    1. Анализ и обоснование  выбора средств  создания системы  электронной коммерции 

    1. Анализ  существующих средств создания систем электронной коммерции
 

    В основе проектированя систем электронной  коммерции как правило лежит язык HTML.

    HTML — язык разметки гипертекста  – является приложением языка  SGML (Standard Generalized Markup Language) – стандартный  обобщенный язык разметки. Средствами HTML задаются синтаксис и размещение  специальных встроенных указаний, в соответствии с которыми браузер отображает содержимое документа (текст, графика, мультимедиа, гиперссылки).

    Базовый синтаксис HTML определяется стандартом HTML.

    Таким образом, HTML — язык компоновки документов и спецификации гиперссылок, используемый для кодировки документов в WWW.

    В настоящее время язык HTML - это база (необходимая, но далеко не достаточная) для создания  взаимодействия.

    С течением времени страницы Всемирной  компьютерной сети постепенно начали «оживать», если выражаться пользовательской терминологией, а по сути произошел переход от структурного предъявления гипертекстовой информации к событийному. Если быть точнее, то переходом это в полной мере называть нельзя, попросту HTML обогатился средствами динамической интерпретации, или Dynamic HTML (DHTML — Dynamic HiperText Markup Language).

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

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

    Компания Netscape разработала язык создания сценариев JavaScript, а компания Microsoft – VBScript. Эти языки используются на стороне клиента, то есть генерируют объекты на основании HTML-страницы на стороне клиента в окне его браузера.  

    В 1994 году специалистами компании Sun Microsystems была разработана технология создания динамических интерактивных Web-страниц – Java. Программы на языке Java называются аплетами (little applications).

    Аплеты  пишутся на Java и посылаются по Web как HTML-файлы браузеру, где выполняются как HTML-документы. Существенным преимуществом Java является независимость программ от платформ, на которых программы выполняются. Хотя Java не обязательно выполняется в окне браузера, возможно создание независимых (stand-alone) Java-приложений, которые могут выполняться на компьютере независимо от Интернета.

    Фактически  программа на языке Java транслируется  компилятором в специальный код, называемый байтовым (bytecode), а затем  выполняется уже с помощью  интерпретатора языка Java. Такое «разделение  обязанностей» и позволяет обеспечивать полную независимость Java-кода от конечной платформы, на которой он будет выполняться. Разумеется, для каждой конкретной платформы имеется свой интерпретатор языка, называемый виртуальной машиной Java (Java Virtual Machine).

    Сайт  языка Java компании Sun Microsystem's: http://java.sun.com/.

    Схема исполнения аплетов коренным образом  отличается от схемы выполнения CGI-скриптов. Последние, в частности, выполняются  на стороне сервера, в отличие  от Java-аплетов, которые выполняются, как правило, на стороне клиента. 

    CGI (Common Gateway Interface), или интерфейс общего шлюза 

    По  сути CGI — способ взаимодействия Web-программ с браузером пользователя. Поэтому  под CGI-программами понимают программы, написанные на любом языке программирования, способного выполняться на Web-сервере, включая C, C++, Visual Basic или даже командные языки операционных сред (например, C Shell). Но большинство CGI-программ пишется на языке Perl.

    Perl (Practical Extraction and Report Language) является одним  из наиболее гибких языковых средств, служащих для программирования интерфейсов CGI. Изначально Perl предназначался для обработки больших объемов данных и генерации отчетов по обработке этих данных (как явствует из его названия). За последние несколько лет Perl превратился в полнофункциональный язык программирования. Изначально созданный исключительно для работы под управлением операционных систем семейства UNIX, Perl теперь совместим с такими ОС, как Amiga, MS-DOS, OS/2 Warp, VMS, Windows NT, Window и Macintosh.

    В последнее время все большую популярность получают два средства создания интерактивных Web-страниц: ASP и PHP. Основным их достоинством является возможность формирования страниц на основании интерактива «клиент-сервер». Сами же программы, написанные на ASP (Active Server Pages – активные серверные страницы) и PHP (Personal Home Page), настолько просты, что программирование с их помощью доступно даже пользователям начального уровня.

    PHP часто еще называют препроцессором  гипертекста (Hypertext Preprocessor). По сути PHP серверный (выполняющийся на стороне сервера) мультиплатформный язык описания сценариев, встраиваемый непосредственно в HTML-код. В настоящее время PHP интенсивно используют более полумиллиона доменов Всемирной компьютерной сети, он распространяется на правах freeware и его можно свободно скачать с сайта разработчика www.php.net. Основу синтаксиса PHP составляют язык программирования C, Java и Perl. Целью создания языка является разработка динамически генерируемых страниц в кратчайшие сроки.

    Например, если Вы создаете online-каталог, вам скорее всего понадобится разрабатывать  не сами HTML-страницы, а их шаблоны, по которым PHP будет формировать HTML-страницы исходя из ваших потребностей. Традиционно этот колоссальный объем работы выполняется вручную. С помощью PHP гораздо проще организовать интерфейс к базе данных и динамическое формирование страниц.

    Говоря  простыми словами, Active Server Pages — это  обычные страницы, которые содержат скрипты, выполняющиеся на сервере наряду с обычным HTML-кодом (если вы посмотрите на строку адреса в окне браузера, то заметите довольно часто встречающееся расширение .asp). Принцип программирования на Perl и на ASP почти один и тот же: после того как «серверный» код обработан сервером, результирующая страница, содержащая только клиентский код (HTML, JavaScript, VBScript), посылается клиенту. Код, выполнявшийся на стороне сервера, увидеть в окне браузера невозможно — вы видите лишь результат его работы.

    ASP работает как под управлением Windows NT-сервера (необходимо установить Windows NT Server и Web-сервер с поддержкой ASP — Microsoft's Internet Information Server [IIS]), так и под управлением других операционных систем. В последнее время компания Chili!Soft разработала версии ASP для других операционных систем:

    Еще пару лет назад процесс программирования Web-серверов был отнюдь не тривиальной  задачей. Написание CGI (Common Gateway Interface)-программ требовало особой осторожности и весьма высокой квалификации от программистов и администраторов, возникали сложности при отладке большинства приложений написанных на C, C++ или Perl. Когда компания Microsoft выпустила 3-ю версию своего Web-сервера (Internet Information Server), в начале 1997 года был создан принципиально новый метод написания серверных приложений.

    Активные  серверные страницы (Active Server Pages) и HTML взаимодействуют с базами данных совершенно по-разному. Принципиальное отличие состоит в том, что  на HTML-странице строка с директивой, осуществляющей прямое соединение с базой данных, расположена непосредственно в исходном коде страницы в окне браузера на стороне клиента. В ASP-странице она заменена переменной Web-приложения, которая определена в специальном файле global.asa и доступна всем ASP-страницам Web-приложения.

    Как известно, CGI обеспечивает способ, посредством  которого Web-браузер осуществляет запуск Web-приложения на стороне сервера, результатом  работы которого является HTML-страница, посылаемая клиенту. Всякий раз, когда клиент инициирует выполнение CGI-приложения, Web-сервер выполняет отдельную его копию (instance). Проблема заключается в том, что для каждого запроса клиента запускается копия Web-приложения на сервере, что резко сокращает производительность сервера при больших и средних нагрузках. Совсем иначе обстоят дела в случае использования ASP. Предположим, одно и то же приложение выполняется двумя разными клиентами. Двух приложений не существует, существуют лишь две сессии одного и того же приложения. И всякий раз, когда новым клиентом осуществляется запрос, порождается новая сессия Web-приложения.

    ASP позволяет перемешивать HTML-код с  программным кодом, что, в свою  очередь, позволяет легко и  удобно встраивать серверные  программы в страницы, причем первые будут выполняться только на стороне сервера. Еще одним мощным средством является поддержка ActiveX, так как ASP является языком, обеспечивающим полную поддержку ActiveX Scripting Interface. Итак…

    Сравнивая РНР и ASP, решающие по сути схожие задачи, следует отметить переносимость первого (PHP) в отличие от второго (ASP) и специальную «заточку» ASP под создание гибких и удобных интерфейсов к базам данных. Это включает использование ActiveX Data Objects (ADO). Колоссальная поддержка структурированного языка запросов к базам данных SQL является мощнейшим средством, используя которое разработчик может не переучиваясь, работать напрямую с базами данных привычным образом. ASP поддерживает работу со всеми базами данных, соответствующими стандарту ODBC. 
 

    1. Обоснование выбора средств создания системы  электронной коммерции
 
 
 
 

2. Разработка структуры  Интернет-магазина 

2.1. Архитектура  сайта. 

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

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

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

     Для отслеживания различных данных целесообразно  использовать сеансовые переменные. 

 

Рис. 2.1. Процесс покупки товаров 
 

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

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

    2.2. Создание проекта

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

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

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

    Построение  проекта начинается со страницы index.php. Функции этого файла вызываются при каждом запуске приложения (запуске/перезапуске Web-сайта) или создании нового сеанса пользователя. Файл содержит специализированные функции, инициируемые в определенной ситуации. Например, одна функция выполняется при запуске приложения Web-сайта и обычно используется для начальной инициализации параметров. Должны быть также предусмотрены функции, которые обычно применяются для сохранения глобальных данных (например, статистических счетчиков), служебных переменных сервера и т. д.

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

    2.3. Проектирование корзины

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

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

    Таблица 2.1. Основные функции корзины

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

При этом необходимо соблюдать несколько ключевых правил (см. ниже)

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

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

     3. Проектирование подсистемы  электронной коммерции. 
 

     В разделе рассмотрен  процесс создания покупательской тележки (shopping cart). Программа будет строиться на основе базы данных Book-O-Rama, реализованной отдельно. Рассмотрена также и другая возможность — установка и применение существующей покупательской тележки с открытым исходным кодом на РНР. Термин покупательская тележка (иногда используется другое название, покупательская корзинка, shopping basket) описывает специальный интерактивный механизм осуществления покупок. В процессе просмотра интерактивного каталога можно добавлять в свою тележку отдельные позиции (наименования товаров). После завершения просмотра пользователь рассчитывается с интерактивным магазином — другими словами, приобретает товар, находящийся в тележке.

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

• База данных продукции, которая будет продаваться в интерактивном магазине

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

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

• Сценарий расчетов, который обрабатывает элементы платежа и доставки товара

• Интерфейс  администрирования. 

     3.1. Постановка задачи и компоненты  решения. 

     Используем специально созданную базу данных Book-O-Rama. Система должна отвечать следующим требованиям:

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

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

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

     • Необходимо создать интерфейс администрирования  сайта Book-O-Rama. Администратор должен иметь возможность добавления и редактирования информации о книгах и категориях сайта. 
 
 

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

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

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

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

     Отслеживание  выбираемого товара

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

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

Кроме того, эти  данные могут использоваться для отображения в углу страницы

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

     Платежи

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

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

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

     Интерфейс администрирования

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

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

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

     3.2. Реализация решения 

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

Рис. 3.1 Система Book-O-Rama в представлении пользователя дает возможность просматривать книги по категориям и сведения о них, добавлять книги в тележку и приобретать их. 
 

Проектирование интернет-магазина