Автор: Папапа Апавав, 10 Июня 2010 в 17:15, дипломная работа
В период становления и развития торговли средствами Интернета Интернет-версии газет или магазинов могли позволить себе лишь очень немногие и весьма состоятельные компании. В этих компаниях все начиналось с небольших статичных сайтов (без какого бы то ни было интерактива), единственной целью которых являлось привести потенциальных покупателей в существующий физический магазин. Этот первый шаг, предпринятый для привлечения клиентов с помощью Интернета, впоследствии был озаглавлен теоретиками создания сайтов как Web Presence, или «Веб-присутствие». Под «присутствием» понимались лишь контактные телефоны, адрес, схема проезда и в лучшем случае электронный адрес.
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 база данных уже существует. Однако для данного приложения необходимы некоторые изменения и добавления. Одно из них — добавление категорий книг, как указано в требованиях. Кроме того, необходимо иметь возможность добавления в существующую базу данных информации об адресах доставки, условиях платежа и т.п.
Необходимо создать интерфейс с базой данных MySQL средствами РНР, однако эта часть решения не вызывает каких-либо затруднений.
Отслеживание выбираемого товара
Существует два основных метода отслеживания выбираемого посетителем товара. Один из них состоит в помещении выбираемых элементов в базу данных, а второй — в использовании переменной сеанса. Использование переменной сеанса для отслеживания выбираемых элементов в процессе переходов между страницами проще в реализации, поскольку не требует постоянных запросов базы данных. Кроме того, этот метод позволяет избежать загромождения базы данных ненужными данными, поступаемыми от посетителей, которые только просматривают каталог и часто меняют свои решения.
В данной связи потребуется разработать переменную сеанса или набор переменных для хранения выбранных пользователем элементов. Когда пользователь завершает посещение магазина и выполняет расчет, эта информация помещается в базу данных в качестве регистрации транзакции.
Кроме того, эти данные могут использоваться для отображения в углу страницы
текущего состояния тележки, чтобы посетитель в любой момент видел предстоящую сумму расходов.
Платежи
В проекте осуществляется прием заказа посетителя и сведений, касающихся доставки. Реальная обработка платежей здесь не рассматривается. Существует большое разнообразие систем платежей. Каждая из них имеет свою реализацию. Мы напишем фиктивную функцию, которую можно будет заменить интерфейсом любой выбранной системы. Системы платежей обычно призваны действовать в определенных географических районах. Функционирование различных интерфейсов обработки платежей в реальном
времени, в основном, подобно. Потребуется организовать учетные записи в банке для карточек, которые будут приниматься к оплате. Провайдер системы платежей укажет, какие параметры потребуется в нее передавать.
Система платежей будет передавать данные в банк, и возвращать код успешного действия либо один из множества различных типов кодов ошибок. В обмен на передачу данных система платежей будет взимать сбор за установку либо годовой сбор, а также сбор, основанный на количестве или сумме транзакций. Некоторые провайдеры назначают плату даже за отклоненные транзакции. Системе платежей необходима информация о клиенте (например, номер кредитной карточки), идентифицирующая информация от владельца магазина (чтобы указать, какая учетная запись будет применяться для оплаты), а также общая сумма транзакции. Сумму заказа можно извлечь из переменной сеанса покупательской тележки. Окончательная информация заказа будет занесена в базу данных, а переменная сеанса будет удалена.
Интерфейс администрирования
Помимо сказанного выше, будет создан интерфейс администрирования, который позволяет добавлять, удалять и редактировать информацию о книгах и категориях в базе данных.
Один из часто используемых элементов редактирования — изменение цены товара (например, для специальных предложений). Это означает, что сохранение заказа клиента предусматривает и хранение цены, уплаченной за товар. Если записи отражают лишь позиции, заказанные каждым клиентом, и текущую цену каждого наименования, это существенно усложняет систему учетных записей. Кроме того, это означает, что когда клиент возвращает или обменивает товар, ему будут возвращаться лишние денежные средства.
Мы не будем
создавать интерфейс
3.2.
Реализация решения
Существуют
два основных представления системы:
пользовательское и администраторское.
С учетом необходимых функциональных
возможностей созданы две блок-схемы системы
— по одной для каждого представления.
Они показаны на рис. 3.1 и. 3.2.
Рис. 3.1
Система Book-O-Rama в представлении
пользователя дает возможность
просматривать книги
по категориям и сведения
о них, добавлять книги
в тележку и приобретать
их.