Автор: Папапа Апавав, 10 Июня 2010 в 17:15, дипломная работа
В период становления и развития торговли средствами Интернета Интернет-версии газет или магазинов могли позволить себе лишь очень немногие и весьма состоятельные компании. В этих компаниях все начиналось с небольших статичных сайтов (без какого бы то ни было интерактива), единственной целью которых являлось привести потенциальных покупателей в существующий физический магазин. Этот первый шаг, предпринятый для привлечения клиентов с помощью Интернета, впоследствии был озаглавлен теоретиками создания сайтов как Web Presence, или «Веб-присутствие». Под «присутствием» понимались лишь контактные телефоны, адрес, схема проезда и в лучшем случае электронный адрес.
На рис. 3.1 показаны главные ссылки между сценариями в пользовательской части сайта. Клиент сначала открывает главную страницу, в которой перечислены все категории книг сайта. Отсюда можно перейти к определенной категории книг, а затем к информации по отдельной книге.
Пользователю предоставляется ссылка для добавления выбранной книги в тележку. На этапе просмотра тележки можно рассчитаться и покинуть магазин.
Рис. 3.2
Система Book-O-Rama в представлении
администратора позволяет
выполнять добавление,
редактирование и удаление
книг и категорий.
На рис. 3.2 показан интерфейс администратора. В нем больше сценариев, но не особенно много нового кода. Эти сценарии позволяют администратору входить в систему и добавлять новые книги и категории.
Простейший способ реализовать редактирование и удаление книг и категорий — отобразить для администратора несколько отличную версию интерфейса пользователя сайта.
Администратор по-прежнему будет иметь возможность просматривать категории и книги, но вместо доступа к покупательской тележке он может переходить к определенной книге или категории, а затем редактировать или удалять ее. Создание сценариев, одновременно пригодных для обычных пользователей и администраторов, позволяет экономить время и трудозатраты.
Ниже перечислены три основных кодовых модуля для приложения:
• Каталог.
• Покупательская тележка и обработка заказов (эти функции здесь объединены,
поскольку тесно взаимосвязаны.)
• Администрирование.
Объединим фрагменты кода, отвечающие за вывод HTML - содержимого, в одну библиотеку. Это соответствует принципу разделения логики и содержимого и, что еще важнее, упрощает чтение и сопровождение кода. Кроме того, потребуется создать базу данных Book-O-Rama (Приложение 1).
Перечень
файлов приложения приведен в табл. 3.1.
Таблица 3.1 Файлы приложения Shopping Cart
Имя | Молуль | Описание |
index.php | Каталог | Титульная страница сайта. Отображает список категорий системы. |
show_cat.php | Каталог | Отображает
все книги определенной
категории. |
show_book.php | Каталог | Отображает
данные по определенной
книге. |
show_cart.php | Покупательская тележка | Отображает
содержимое
покупательской тележки. Кроме того, используется для добавления элементов в тележку. |
checkout.php | Покупательская тележка | Представляет
пользователю все
данные заказа. Принимает информацию по доставке. |
purchase.php | Покупательская тележка | Принимает информацию
по платежу
от пользователя. |
process.php | Покупательская тележка | Обрабатывает
данные платежа и
добавляет заказ в базу данных. |
login.php | Администрирование | Позволяет администратору
входить в
систему для внесения изменений. |
logout.php | Администрирование | Реализует выход
администратора из
системы. |
admin.php | Администрирование | Главное меню администрирования. |
change_password_form.php | Администрирование | Форма, позволяющая
администратору
изменять свой пароль. |
change_password. php | Администрирование | Изменяет пароль администратора. |
insert_category_form.php | Администрирование | Форма, позволяющая
администратору
добавлять в базу данных новую категорию. |
insert_category.php | Администрирование | Вставляет новую
категорию в базу
данных. |
insert_book_form. php | Администрирование | Форма, позволяющая
администратору
добавлять в систему новую книгу. |
insert_book.php | Администрирование | Добавляет новую книгу в базу данных. |
edit_category_form.php | Администрирование | Форма, позволяющая
администратору
редактировать категорию. |
edit_category.php | Администрирование | Обновляет категорию в базе данных. |
edit_book_form. php | Администрирование | Форма, позволяющая
администратору
редактировать информацию о книге. |
edit_book.php | Администрирование | Обновление
информации о книге в
базе данных. |
delete_category. php | Администрирование | Удаляет категорию из базы данных. |
delete_book.php | Администрирование | Удаляет книгу из базы данных. |
book_sc_fns.php | Функции | Набор подключаемых файлов. |
admin_fns.php | Функции | Набор функций,
используемых
сценариями администрирования. |
book_fns.php | Функции | Набор функций
хранения и извлечения
данных о книгах. |
order_fns.php | Функции | Набор функций
хранения и извлечения
данных заказа. |
output_fns.php | Функции | Набор функций
вывода HTML-
содержимого. |
data_valid_fns.php | Функции | Набор функций
проверки
допустимости вводимых данных. |
db_fns.php |
Функции | Набор функций
для подключения к
базе данных book_sc. |
user_auth_fns.php | Функции | Набор функций
аутентификации
администраторов. |
book_sc.sql | SOL | SQL-код создания
базы данных
book_sc. |
populate.sql | SOL | SQL-код для
вставки данных в базу
данных book sc. |
Первый сценарий, index.php, выводит все категории из базы данных (см. приложение 2).
Все ссылки передаются в следующий сценарий, show_cat.php, но каждая из них имеет свой параметр, идентификатор категории (catid). (Это уникальное число, сгенерированное MySQL и применяемое для идентификации категории.)
Упомянутый параметр определяет, какую категорию будет отображать следующий сценарий.
Список книг в категории
Процесс
вывода списка книг определенной категории
аналогичен рассмотренному выше. Вывод
осуществляет сценарий show_cat.php,
показанный в приложении 3.
3.3. Реализация
покупательской тележки
Функции
покупательской тележки тесно связаны
с переменной сеанса Scart.
Это ассоциативный массив, в котором номера
ISBN служат ключами, а объемы заказа - значениями.
Например, если поместить в тележку один
экземпляр данной книги, массив будет
содержать следующую запись:
0672317842
=> 1.
Когда элементы помещаются в тележку, происходит их добавление в массив. Во время просмотра содержимого тележки массив $cart используется для поиска полной информации о товарах в базе данных.
Кроме того, используются две других переменных сеанса для управления отображением в заголовке данных Total Items (количество элементов) и Total Price (сумма заказа) — соответственно, Sitems и $total_price.
Использование сценария show_cart.php
Обзор
реализации покупательской тележки
начнем со сценария show_cart.php
(приложение 4). Он отображает страницу,
которая открывается после щелчка на ссылках
View Cart либо Add to Cart. Если сценарий show_cart.php
вызывается без параметров, отображается
содержимое тележки. Если в качестве параметра
указывается номер ISBN, соответствующая
этому коду позиция добавляется в тележку.
Пусть создана тележка, когда для покупки выбраны две книги. В данном
случае страница открыта после щелчка на ссылке Add to Cart в странице, сгенерированной сценарием show_book.php для определенной книги. С помощью строки URL-адреса сценарий вызывается с параметром. Параметр называется new и имеет значение 0672317842 — номер ISBN книги, которая только что помещена в тележку.
На этой странице предоставляются еще две опции. Это кнопки Save Changes (сохранить изменения) и Go To Checkout (произвести расчет). Первую из них можно использовать для изменения количества элементов в тележке. Для этого следует непосредственно изменить количество экземпляров в полях Quantity и щелкнуть на кнопке Save Changes. В сущности, это кнопка отправки формы, которая обеспечивает возврат в сценарий show_cart.php с целью обновления содержимого тележки.
Вторая кнопка выбирается пользователем, когда он готов покинуть магазин.
Пока рассмотрим код сценария show_cart.php.
Этот
сценарий содержит три главных части:
отображение содержимого
Просмотр содержимого тележки. Содержимое тележки будет отображаться независимо от страницы, на которой был произведен щелчок на ссылке. В общем случае после щелчка на ссылке View Cart выполняется лишь следующая часть кода:
if ($cart&&array_count_values ($cart) )
display _cart($cart) ;
else
{
echo "<p>There are no items in your cart" ;
echo "<hr>" ;
}
Очевидно, что если тележка имеет непустое содержимое, будет вызываться функция display_cart(). Когда тележка пуста, пользователю выводится соответствующее сообщение.
Добавление элементов в тележку. Когда пользователь открывает страницу show_cart.php щелчком на кнопке Add To Cart, перед отображением содержимого тележки необходимо выполнить некоторые операции. В частности, следует поместить в тележку выбранный элемент.
Во-первых, если пользователь еще не помещал в тележку элементы, у него нет тележки, поэтому ее требуется создать:
if(!session_is_registered("
{
$cart = array 0;
session_register("cart");
$items = 0;
session_register("items");
$total_price = "0.00";
session_register("total_price"
}
Сохранение изменений содержимого тележки. Когда сценарий show_cart.php вызывается щелчком на кнопке Save Changes, процесс несколько изменяется. В данном случае осуществляется передача формы. При внимательном рассмотрении кода можно заметить, что кнопка Save Changes является кнопкой отправки формы. Эта форма содержит скрытую переменную save. Если для переменной установлено значение, можно заключить, что сценарий вызван кнопкой Save Changes. Это означает, что пользователь мог изменить количества элементов, и эти изменения требуется сохранить.
Реализация платежа. Когда пользователь выполняет щелчок на кнопке Purchase, обрабатываются данные платежа с помощью сценария process.php.
В реальном сайте потребуется принять решение, какой механизм транзакций будет использоваться. Существуют следующие возможности:
•
Заключить договор с
• Отправлять номера кредитных карточек зашифрованными сообщениями электронной почты, например, с помощью PGP. После получения и расшифровки электронной почты эти транзакции можно обрабатывать вручную.
•
Хранить номера кредитных карточек
в своей базе данных. Этот метод не
рекомендуется, если не приняты меры обеспечения
защищенности системы.
Заключение
В работе проанализированы решения по созданию системы электронной коммерции. В качестве примера выбран Интернет-магазина по продаже книг.
Проведено обоснование выбора средств проектирования, рассмотрена общая структура Интернет – магазина. Выполнено проектирование одной из основных подсистем магазина – системы покупательской тележки (корзинки).
При этом была создана довольно простая система покупательской тележки. Возможны также многочисленные расширения и усовершенствования проекта:
• В реальном интерактивном магазине необходимо предусмотреть отслеживание заказов и систему выполнения. В данный момент не существует возможности просматривать размещенные заказы.
• Клиентам нужна возможность проверять обработку своих заказов без необходимости связываться с владельцем магазина. Мы считаем важным, чтобы клиенту не приходилось входить в систему для просмотра заказов. Однако предоставление существующим клиентам способа аутентификации дает им возможность просматривать прежние заказы, а администратору — объединять поведения в профили.
• В настоящее время необходимо пересылать по FТР изображения книг в каталог изображений и присваивать им надлежащие имена. Чтобы упростить этот процесс, можно добавить на страницу вставки книг функцию загрузки файлов.
Можно
добавить входное имя пользователя,
персонализацию, рекомендации книг, интерактивные
обзоры, сопутствующие программы, проверку
запасов и т.п. Возможности проектируемой
системы электронной коммерции практически
безграничны.
Список
литературы
Приложение 1
Листинг
П.1 book_sc.sql — SQL-код создания базы данных
book_sc
create database book_sc;
use book_sc;
create table customers
(
customerid int unsigned not null auto_increment primary key,
name char (40) not null,
address char(40) not null,
city char(20) not null,
state char(20),
zip char(10),
country char(20) not null
) ;
create table orders
(
orderid int unsigned not null auto_increment primary key,
customerid int unsigned not null,
amount float(6,2),
date date not null,
order_status char(10),
ship_name char(40) not null,