Разработка web-сайта и интернет-магазина для компьютерного салона "Стоик"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 21.05.2013
Размер файла 4,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

И другие возможные пункты.

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

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

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

Карта сайта

Размещено на http://www.allbest.ru/

2.3 Проектирование базы данных

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

Организация структуры БД формируется исходя из следующих соображений:

1. Адекватность описываемому объекту/системе - на уровне концептуальной и логической модели.

2. Удобство использования для ведения учёта и анализа данных - на уровне так называемой физической модели.

Виды концептуальных (инфологических) моделей БД: "сущность-связь", семантические, графовые

Виды логических (даталогических) моделей БД:

1. Документальные (архивы) - ориентированные на формат документа, дескрипторные, тезаурусные.

2. Фактографические (картотеки).

теоретико-графовые: иерархическая модель, сетевая модель.

теоретико-множественные: реляционная модель (ER-модель), многомерная модель.

объектно-ориентированные: объектная модель.

основанные на инвертированных файлах.

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

картотеки;

иерархические;

сетевые;

реляционные;

многомерные;

объектные;

На уровне физической модели электронная БД представляет собой файл или их набор в формате TXT, CSV, Excel, DBF, XML либо в специализированном формате конкретной СУБД. Также в СУБД в понятие физической модели включают специализированные виртуальные понятия, существующие в её рамках - таблица, табличное пространство, сегмент, куб, кластер и т.д.

Наиболее популярные модели представления данных - объектная и реляционная модели данных. Картотеками пользовались до появления электронных баз данных. Сетевые и иерархические базы данных считаются устаревшими, но некоторое возрождение получили иерархические в связи с появлением и распространением XML.

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

Примеры реляционных СУБД: MySql, PostgreSql.

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

Примеры объектных СУБД: Cache, GemStone (от Servio Corporation), ONTOS (ONTOS).

В последнее время производители СУБД стремятся соединить два этих подхода и проповедуют объектно-реляционную модель представления данных. Примеры таких СУБД - IBM DB2 for Common Servers, Oracle8.

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

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

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

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

Среди других баз данных, применяемых для WEB-разработок, можно отметить Oracle и PostgreSQL.

PostgreSQL - свободно распространяемая СУБД с открытым исходным кодом, ориентированная главным образом на работу в UNIX-подобных системах.

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

Этапы проектирования базы данных

1. Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия:

обследование предметной области, изучение ее информационной структуры;

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

моделирование и интеграция всех представлений;

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

2. Логическое проектирование - преобразование требований к данным в структуры данных. На выходе получаем СУБД-ориентированную структуру базы данных и спецификации прикладных программ. На этом этапе часто моделируют базы данных применительно к различным СУБД и проводят сравнительный анализ моделей.

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

Различие уровней представления данных на каждом этапе проектирования реляционной базы данных:

Концептуальный уровень - Представление аналитика (используется инфологическая модель "сущность-связь")

сущности;

атрибуты;

связи;

Логический уровень - Представление программиста

записи;

элементы данных;

связи между записями;

Физический уровень - Представление администратора

группирование данных;

индексы;

методы доступа;

Инфологическая модель

Даталогическая модель

2.4 Выбор средств разработки

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

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

Для составления сценариев на стороне клиента обычно используются языки JavaScript или VBScript, а изменения внешнего вида достигается с помощью фреймов или слоев. Для сценариев на стороне сервера может быть использован один из языков PHP, ASP, Perl, Pascal, C ++ и другие. В качестве баз данных может быть использована одна из баз данных MsSQL, MsAccess.

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

Для платформы Microsoft вам лучше выбрать VBScript, ASP, Pascal, C ++, MsAccess, MsSQL. Для платформы Open Source - JavaScript, Perl, Pascal, C ++, MySQL.

Интернет - магазин разрабатывается с использованием технологий Perl, JavaScript, MySQL, PHP, CSS.

Perl

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

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

Perl был разработан Ларри Уоллом в 1986 году. Он создал этот язык, когда пытался формировать отчеты из иерархии файлов системы оповещения об ошибках, похожей на Usenet-новости, а возможности применявшегося в то время обработчика потоков данных awk оказались исчерпанными. Решил вырвать данную проблему с корнем, применив для этого какой-нибудь универсальный инструмент, который он надеялся использовать и в дальнейшем. В результате появилась первая версия языка Perl. В дальнейшем сам Ларри Уолл позаимствовал у Генри Спенсера пакет для работы с регулярными выражениями и модифицировал его для языка Perl. Поиграв немного с этой версией, добавив кое-что, Ларри предложил ее сообществу читателей материалов телеконференций Usenet. Пользователи, имеющие доступ к входящим в систему Usenet компьютерам, разбросанным по всему свету (а их в то время было несколько десятков тысяч), обеспечили для создателя Perl эффективную "обратную связь", спрашивая, как делать одно, другое, третье. Многие из этих задач Ларри даже и не собирался ставить перед своим маленьким новым языком программирования. Perl вырос, выросли его возможности, повысилась переносимость. То, что когда-то было компактным языком, теперь сопровождается сотнями страниц документации, в состав которых входят десятки man-страниц. Perl стал языком программирования, который сочетает в себе возможности обработки текстовых файлов, генерации отчётов, решения системных задач и низкоуровневое программирование, доступное на языке C. Он и по настоящее время продолжает интенсивно развиваться за счет разработки пакетов, реализующих новые применения языка к развивающимся информационным технологиям.

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

JavaScript

Преимущества JavaScript.

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

PHP

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

Преимущества PHP

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

2.5 Выводы

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

Для создания Интернет-магазина салона "Стоик" выбор пал на Perl, JavaScript, MySQL.

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

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

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

При проектировании базы данных выбор пал на СУБД MySQL, являющейся реляционной базой данных, одной из самых популярных моделей представления данных. Реляционная база данных представляет собой набор таблиц, связанных между собой, доступ к которым осуществляется с помощью языка запросов SQL. MySQL - это свободно распространяемая система, т.е. платить за ее применение не нужно, является простой в использовании СУБД, вполне подходящей для не слишком глобальных проектов.

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

Глава 3. Реализация базы данных и Интернет-магазина

3.1 Реализация интерфейса и механизмов навигации

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

Заходя на сайт Интернет-магазина открывается главная страница (Рис.2.0).

Рис.2.0 Интернет-магазин компьютерного салона "Стоик". Главная страница

Клиенту представляется возможность выбрав поставщика, перейти к определенной категории товара, либо задать параметры для поиска среди всех поставщиков, так же представлены "горячие" товары магазина. Выбрав категорию товара или отсортировав определенный товар с помощью поиска, клиент имеет возможность, кликнув на любую из позиций списка, получить самую последнюю и постоянно обновляемую информацию об устройстве с информационного сайта одного из поставщиков. Реализация поиска и отображение категорий товара происходит при помощи подпрограмм search и showgoods входящих в программу stoik. pl (см. код в приложении 1).

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

function addGoods (id,pid,seller,number) {

var frm;

if (document. frames) { // check if supportted. IE/OPERA

frm = document. frames ["myaccountgoodsFrame"]. document. all.comForm;

}

else

{

var ifrm = NlsGetElementById ("myaccountgoodsFrame");

var frm = (ifrm. contentDocument? ifrm. contentDocument. forms.comForm: ifrm. contentWindow. document. forms.comForm);

}

frm. id. value=id;

frm. pid. value=pid;

frm. seller. value=seller;

frm. number. value=number;

frm. submit ();

}

Ссылающуюся на подпрограмму addGoods программы stoik. pl

sub addGoods {

my $pid = shift;

my $list_ref = shift;

my $count;

my $sth;

$list_ref-> [3] =~ s/,/\. /;

$sth = $c->prepare ("update $tables:: oldi set pid=?,name=?,cost=?, isGoods=1 where id=?");

$count = $c->execute ($sth,$pid,$list_ref-> [2],$list_ref-> [3],$list_ref-> [1]);

if (! $count || $count eq '0E0') {

$sth = $c->prepare ("insert into $tables:: oldi (id,pid,name,cost, isGoods) values (?,?,?,?,1)");

$c->execute ($sth,$list_ref-> [1],$pid,$list_ref-> [2],$list_ref-> [3]);

}

}

и "добавить несколько товаров в корзину", реализованной с помощью функции addGoods2 ()

function addGoods2 (id,pid,seller) {

s = prompt ('Введите количество товара','2');

if (! isNaN (s)) {

addGoods (id,pid,seller,s);

}

else

{

alert (s+" - Это не число!");

}

}

Просмотр информации о товаре реализован в подпрограмме showgoods программы stoik. pl (см. код в приложении 1). При нажатии на ссылку открывается постоянно обновляемая страница с информацией о товаре с сайта поставщика.

Рис.2.1 Интернет-магазин компьютерного салона "Стоик". Страница, отображающая поиск товара по запросу "WD" и корзину

Основной блок со списком товаров, информацией о фирме и предоставляемых услугах располагается в виде iframe "goodsFrame”, информация в котором меняется в зависимости от того, какую функцию задается открыть в iframe "menuhow" из файла stoik_goods. htm или во время поиска товара при выполнении функции GoSearch () (см. код в приложении 1).

Блок авторизации (Рис.2.2) реализован подпрограммой myaccountinfo. Если пользователь неавторизирован, отображаются кнопка "вход" и "регистрация"

Рис.2.2 Интернет-магазин компьютерного салона "Стоик". Блок авторизации

в обратном случае отображается имя пользователя, меню управления товарами и учетной записью, количество товаров в корзине и их сумма, блок корзины (Рис.2.3).

Рис.2.3 Интернет-магазин компьютерного салона "Стоик". Блок авторизации

Функции регистрации, авторизации и выхода реализованы при помощи команд Register (), Login (), Logout ()

<a href="#" class="sblack" onClick="javascript: window. parent. Login (); ">Вход</a><!! clear!! >|<!! /alreadylogin!! ><a href="#" class="sblack" onClick="javascript: window. parent. Logout (); ">Выход</a><!! /clear!! > <!! alreadylogin!! >|<a href="#" class="sblack"onClick="javascript: window. parent. Register (); ">Регистрация</a> <!! /alreadylogin!! >

которые ссылаются на подпрограммы, входящие в состав программы stoik. pl

sub register {

my $info = shift;

my $page = new template ("$paths:: root/reg_frame. htm",'ALL');

$page->replaceContent ("info",$info);

$page->clearAllTags ();

$page->print ();

}

sub register2 {

my $user = $c->{cgi}->param ('user');

my $phone = $c->{cgi}->param ('phone');

my $pass = $c->{cgi}->param ('pass');

my $pass1 = $c->{cgi}->param ('pass1');

my $email = $c->{cgi}->param ('email');

if (UserAlreadyExist ($user)) {

register ("Пользователь $user уже зарегистрирован. Выберите другое имя. ");

} elsif (! $user) {

register ("Введите имя пользователя!");

} elsif ($pass ne $pass1 or! $pass) {

register ("Введите одинаковые пароли не пустые пароли!");

} else {

AddUser ($user,$phone,$pass,$email);

login2 ($user,$pass);

}

}

sub login {

my $info = shift;

my $page = new template ("$paths:: root/login_frame. htm",'ALL');

$page->replaceContent ("info",$info);

$page->clearAllTags ();

$page->print ();

}

sub login2 {

my $user = shift || $c->{cgi}->param ('user');

my $pass = shift || $c->{cgi}->param ('pass');

my ($id,$admin) = checkPass ($user,$pass);

if (! $id) {

login ("Неверное имя пользователя или пароль!");

return;

} else {

CreateSession ($id);

$c->{admin} = $admin;

$c->{uid} = $id;

$c->{uname} = $user;

myaccountgoods ("window. parent. reloadInfo (); \nwindow. parent. Welcome (); \n"." // == $c->{pid} == \n");

}

}

sub logout {

$c->clearCookie ();

DeleteSession ();

myaccountgoods ("window. parent. reloadInfo (); \nwindow. parent. Welcome (); \n");

}

Корзина реализована в подпрограмме myaccountgoods программы stoic. pl (см. код в приложении 1).

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

Оформление и отправка заказа реализована в форме с методом "post" ссылающимся на скрипт sendmail. php

<? php

$data ="";

foreach ($_POST as $key=>$value)

{

$data. = "$key:". strip_tags ($value). "\n";

}

mail ('адрес@почты_компании.ru', 'тема_письма', $data, 'From: адрес@от_какого_адреса_будет_приходить_письмо.ru);

echo "Спасибо! Ваш заказ принят! Можете закрыть страницу";

? >

Формирование счета происходит в подпрограмме checkprint программы stoik. pl (см. код в приложении 1).

Рис.2.4 Интернет-магазин компьютерного салона "Стоик". Корзина

Выбор категории товара происходит командой

showGoods (id категории, поставщик).

Рис.2.5 Интернет-магазин компьютерного салона "Стоик". Прайс-лист

Блоки "Новости Hardware", "файловый архив", "обзоры" и "статьи" созданы для большей информативности сайта и реализованы на основе лент RSS новостных сайтов (Рис.2.6).

Рис.2.6 Интернет-магазин компьютерного салона "Стоик". Новостные блоки

3.2 Реализация базы данных

База данных реализована при помощи СУБД MySQL. Это быстрая, надежная и простая в использовании СУБД.

База данных состоит из пяти таблиц:

goods - все товары в базе данных

ordergoods - заказанные товары пользователями

sessions - информация о сессиях работы

settings - хранит дату последнего обновления прайс-листа и количество распечатанных счетов

users - информация о пользователях

Таблица goods состоит из семи столбцов:

name - наименование позиции

cost - текущая цена

oldcost - предыдущая цена

isgoods - содержит информацию о том, является ли позиция товаром или категорией товара

id - индентификационный номер позиции

pid - идентификационный номер категории товара

seller - информация о поставщике товара

Таблица ordergoods состоит из восьми столбцов:

id - идентификационный номер товара

uid - идентификационный номер пользователя

gid - артикул товара

pid - идентификационный номер категории товара

seller - информация о поставщике товара

createdate - дата и время добавления товара

number - количество добавленного товара

oldname - наименование товара

Таблица sessions состоит из четырех столбцов:

id - идентификационный номер сессии

uid - идентификационный номер пользователя

createdate - дата и время начала сессии пользователем

accessdate - дата и время доступа пользователем

Таблица settings состоит из трех столбцов:

id - идентификационный номер строки "настройки”

name - наименование "настройки”

value - значение "настройки”

Таблица users состоит из восьми столбцов:

id - идентификационный номер пользователя

name - входное имя пользователя

phone - номер телефона пользователя

password - пароль пользователя

createdate - дата и время создания пользователя

accessdate - дата и время первого доступа пользователя

admin - хранит информацию об администраторских правах пользователя

email - E-mail пользователя

Создание таблиц на сервере:

CREATE TABLE `goods` (`name` varchar (200) NOT NULL default '',

`cost` float NOT NULL default '0',

`oldcost` float NOT NULL default '0',

`isgoods` tinyint (4) NOT NULL default '0',

`id` int (11) NOT NULL default '0',

`pid` int (11) NOT NULL default '0',

`seller` char (1) NOT NULL default '',

PRIMARY KEY (`id`,`pid`,`seller`)

);

CREATE TABLE `ordergoods` (

`id` int (11) NOT NULL auto_increment,

`uid` varchar (64) NOT NULL default '',

`gid` int (11) NOT NULL default '0',

`pid` int (11) NOT NULL default '0',

`seller` char (1) NOT NULL default '',

`createdate` datetime NOT NULL default '0000-00-00 00: 00: 00',

`number` int (11) NOT NULL default '1',

`oldname` varchar (200) NOT NULL default '',

PRIMARY KEY (`id`)

);

CREATE TABLE `sessions` (

`id` varchar (32) NOT NULL default '',

`uid` int (11) NOT NULL default '0',

`createdate` datetime NOT NULL default '0000-00-00 00: 00: 00',

`accessdate` datetime NOT NULL default '0000-00-00 00: 00: 00'

);

CREATE TABLE `settings` (

`id` int (11) NOT NULL auto_increment,

`name` varchar (64) NOT NULL default '',

`value` varchar (128) NOT NULL default '',

PRIMARY KEY (`id`)

);

CREATE TABLE `users` (

`id` int (11) NOT NULL auto_increment,

`name` varchar (32) NOT NULL default '',

`phone` varchar (32) NOT NULL default '',

`password` varchar (32) NOT NULL default '',

`createdate` datetime NOT NULL default '0000-00-00 00: 00: 00',

`accessdate` datetime NOT NULL default '0000-00-00 00: 00: 00',

`admin` char (1) NOT NULL default '',

`email` varchar (64) NOT NULL default '',

PRIMARY KEY (`id`)

);

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

sub AddUser {

my $user = shift;

my $phone = shift;

my $pass = shift;

my $email = shift;

my $cryptpass = crypt ($pass,substr ($pass,0,2));

my $sth;

$sth = $c->prepare ("insert into $tables:: users (id,name,phone,password,createdate,accessdate,email,admin)

values (null,?,?,?,now (),now (),?,0)");

$c->execute ($sth,$user,$phone,$cryptpass,$email);

}

Добавление товаров в базу данных осуществляется командой LoadPrice () из файла daemon. pl, который запускается с сервера автоматически в установленное время или вручную.

sub LoadPrice {

my $content = get ($loadurl);

}

$loadurl='http://адрес_сайта.ru/? cmd=loadprices&user=имя_пользователя&pass=пароль';

запускается команда loadprices из файла stoik. pl

$func{'loadprices'} = \&loadprices;

выполняется подпрограмма loadprices

sub loadprices {

my $user = $c->{cgi}->param ('user');

my $pass = $c->{cgi}->param ('pass');

my ($id,$admin) = checkPass ($user,$pass);

my $zip;

my $status;

print "Content-type: text/html\n";

print "\n";

if ($admin) {

load_price ('o');

load_price ('n');

my $t = time;

$t += 60*60*3;

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime ($t);

$mon++;

$year += 1900;

setSettings ($settings:: pricedate,"$mday/$mon/$year $hour: $min: $sec");

} else {

print 'Only for ADMINISTRATORS! ';

}

}

Подпрограмма loadprices обращается к подпрограмме load_price программы stoik. pl (см. код в приложении 1).

Так же загрузка прайс-листов в базу данных возможна из администраторской части сайта при помощи формы, выполняющих комманды load_oldi, load_nix из подпрограммы load_price файла stoik. pl

Поиск товара по базе данных осуществляется при помощи подпрограммы search

sub search {

showgoods ('search');

}

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

Выгрузка информации о имени пользователя, количестве товаров добавленных в корзину и итоговой сумме осуществляется при помощи подпрограммы myaccountinfo, входящей в состав программы stoik. pl, которая обращается к подпрограммам getSumGoodByUser и getCountGoodByUser для получения информации о итоговой сумме и количестве товаров из базы данных (см. код в приложении 1).

3.3 Реализация сайта и интеграция с БД

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

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

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

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

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

В операционной части рассматривается среда разработки Интернет - магазина.

Главная страница объединяет в себе четыре iFrame, прописанных в файле stoik_goods. htm:

myaccountinfoFrame;

menuhowFrame;

myaccountgoodsFrame;

goodsFrame.

Которые отображают в себе страницы myaccountinfo_frame. htm, menuhow. htm, myaccountgoods_frame. htm и goods_frame. htm при помощи комманд myaccountinfo, menuhow, myaccountgoods, welcome, вызываемых из файла stoik. pl

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

Выгрузка информации о имени пользователя, количестве товаров добавленных в корзину и итоговой сумме осуществляется при помощи подпрограммы myaccountinfo, входящей в состав программы stoik. pl, которая обращается к подпрограммам getSumGoodByUser и getCountGoodByUser для получения информации о итоговой сумме и количестве товаров из базы данных

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

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

goodsFrame - iFrame, содержащий в себе список товаров определенной категории, выбираемой из прайс-листа фирмы, также отображающий в себе информационные страницы сайта, открываемые из фрейма с меню menuhowFrame.

Обновление таблицы с товарами goods базы данных и прайс-листа на сайте происходит в автоматическом или полуавтоматическом режиме в зависимости от пожелания администратора сайта.

Обновление прайс-листа с товарами можно настроить на автоматический режим, установив на сервере компании выполение задачи, например, ежедневно в определенное время файла daemon. pl.

daemon. pl осуществляет загрузку постоянно обновляемых прайс-листов компаний-поставщиков "НИКС” и "OLDI” с их серверов.

$nixfile = 'd: \nix. zip';

$nixprice = 'ftp: // ftp2. nix.ru/download/price/Nix3. ZIP';

$oldifile = 'd: \oldi. zip';

$oldiprice = 'http://www.oldi.ru/price/oldipr. zip';

print "-== - Загрузка прайсов - ==-\n";

print "NIX... ";

$res = getstore ($nixprice, $nixfile);

if ($res == RC_OK) {

print "OK \n";

} else {

die "Загрузка NIX\n";

}

print "OLDI.. ";

$res = getstore ($oldiprice, $oldifile);

if ($res == RC_OK) {

print "OK\n";

} else {

die "Загрузка OLDI\n";

}

В будущем список поставщиков будет расширен и планируется реализовать возможность интеграции сайта, прайс-листа и базы данных с компанией "Ф-центр”. Так же на данный момент разрабатывается внутренний прайс-лист компании "Стоик”, после окончания разработки которого он будет интегрирован с сайтом. После загрузки на сервер свежих Excel прайс-листов в zip-архиве происходит их распаковка

$extractpath = 'd: ';

print "-== - Распаковка прайсов - ==-\n";

$zipFile = Archive:: Zip->new ();

$status = $zipFile->read ($nixfile);

print "NIX... ";

if ($status! = AZ_OK) {

die "Распаковка прайсов\n";

} else {

print "OK\n";

}

$zipFile->extractTree ('','',$extractpath);

print "OLDI.. ";

$zipFile = Archive:: Zip->new ();

$status = $zipFile->read ($oldifile);

if ($status! = AZ_OK) {

die die "ОШИБКА4\n";

} else {

print "OK\n";

}

$zipFile->extractTree ('','',$extractpath);

Затем идет разборка прайс-листов (парсинг) из Excel-формата в txt.

print "-== - Разборка прайсов - ==-\n";

ParseNix ();

ParseOldi ();

$olditxt = $extractpath. '\oldi. txt';

$nixtxt = $extractpath. '\nix. txt';

sub ParseNix {

my $oExcel = new Spreadsheet:: ParseExcel;

my $oFmtR = Spreadsheet:: ParseExcel:: FmtUnicode->new (Unicode_Map => "CP1251");

my $oBook = $oExcel->Parse ($nixxls, $oFmtR);

my ($iR, $iC, $oWkS, $oWkC);

$oWkS = $oBook->Worksheet (0);

$kurs = $oWkS->{Cells} [3] [4] - >{Val};

my $price;

my $price1;

my $id;

my $pid;

my $name;

my $isGood;

my $parent;

open (FILE,'>',$nixtxt);

NEXTL: for (my $iR = 7; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow}; $iR++) {

$pid = $oWkS->{Cells} [$iR] [5] - >{Val};

$price = $oWkS->{Cells} [$iR] [2] - >{Val};

$price1 = $oWkS->{Cells} [$iR] [2] - >Value;

$id = $oWkS->{Cells} [$iR] [0] - >{Val};

$price = $price*$kurs*1.05;

if ($pid) {

$parent = $pid;

$id = $parent;

$pid = 0;

$isGood = 0;

$name = $oWkS->{Cells} [$iR] [0] - >Value;

} else {

$id = $oWkS->{Cells} [$iR] [0] - >{Val};

$isGood = 1;

$pid = $parent;

$name = $oWkS->{Cells} [$iR] [1] - >Value;

}

print FILE "$isGood|$id|$pid|$name|$price\n";

}

close (FILE);

}

sub ParseOldi {

my $oExcel = new Spreadsheet:: ParseExcel;

my $oFmtR = Spreadsheet:: ParseExcel:: FmtUnicode->new (Unicode_Map => "CP1251");


Подобные документы

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

    дипломная работа [1,7 M], добавлен 08.06.2013

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

    дипломная работа [2,1 M], добавлен 06.06.2013

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

    курсовая работа [1,4 M], добавлен 15.04.2012

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

    курсовая работа [3,6 M], добавлен 25.06.2012

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

    отчет по практике [2,9 M], добавлен 01.05.2015

  • Анализ сравнения интернет-магазина и электронного магазина. Проектирование структуры web-сайта. Обработка заказа. Основное понятие языка php. Средства безопасности системного уровня приложения. Разработка структуры базы данных и структуры web-сайта.

    курсовая работа [1,4 M], добавлен 31.03.2014

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

    дипломная работа [1,1 M], добавлен 09.04.2012

  • CRM-системы: разновидности, проблемы реализации, их преимущества и недостатки. Критические характеристики CRM-систем для работы через Интернет (WEB-CRM). Разработка содержания и структуры WEB-сайта интренет-магазина "Vinil", создание схемы и базы данных.

    курсовая работа [2,6 M], добавлен 19.05.2013

  • Требования к информационной системе интернет-магазина на базе "1С:Предприятие 8". Выбор средства для разработки. Реализация и тестирование программного средства. Редактирование базы данных. Оценка функционального качества программного средства.

    курсовая работа [1,7 M], добавлен 07.09.2012

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

    курсовая работа [826,4 K], добавлен 09.09.2022

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.