Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 10:55, курсовая работа
Pull and Bear (Пул энд Бир) - испанский бренд мужской и женской молодежной одежды. Принадлежит концерну Inditex, который владеет такими брендами как Massimo Dutti, Zara, Oysho, Uterqüe, Stradivarius, Bershka.
Бренд относительно молодой, был представлен компанией Inditex в 1991 году и позиционировал себя как неформальная мужская одежда для молодежи. Марка сразу взялась за продвижения на рынке и 1992 году был открыт магазин за пределами Испании в Португалии. А в 1995 году были открыты представительства в Греции и Мальте. Компания и далее продолжала свою экспансию, и в 1997 году было открыто представительство в Израиле.
1) ИСТОРИЯ ОРГАНИЗАЦИИ………………………………………………………….....................….3
2) Анализ аппаратно-программных средств, используемых на предприятии…………………………………………………………..……………….5
3) Описание ВНЕДРЯЕМОй информационной системы
3.1) Основные функциональные возможности системы ………….………………….....6
3.2) Назначение и цели создания веб-приложения ……………………….……………..7
3.3) Общие требования к информационной системе ……………………………...…...8
3.4) Программная реализация
3.4.1) Инструментальные средства разработки………………………....……….……10
3.4.2) Реализация базы данных ……………………………………………………..….14
3.4.3) Реализация клиентского приложения ………………………………….………27
4) ЗАКЛЮЧЕНИЕ…………………………………......…………………………….……….45
5) СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ……………………………….….....46
ПРИЛОЖЕНИЕ 1. ХРОНОЛОГИЯ ПРОХОЖДЕНИЯ ПРАКТИКИ …………………...47
ПРИЛОЖЕНИЕ 2. ХАРАКТЕРИСТИКА ПО ПРОХОЖДЕНИЮ ПРАКТИКИ
PHP — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов. Интерпретатор состоит из ядра и подключаемых модулей, «расширений», представляющих собой динамические библиотеки. Расширения позволяют дополнить базовые возможности языка, предоставляя возможности для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать своё собственное расширение и подключить его. Существует огромное количество расширений, как стандартных, так и созданных сторонними компаниями и энтузиастами, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Расширение php_mssql.dll, используемое в данном проекте, позволяет работать с базами данных MS SQL SERVER.
3. 4.1.3 Adobe Dreamweaver
Adobe Dreamweaver — HTML-редактор. Разработан и поддерживался компанией Macromedia в версиях до 8-й Следующие версии выпускает Adobe. Богатый инструментарий, открытость приложения для всевозможных настроек, удобный интерфейс и другие особенности сделали Dreamweaver одним из наиболее популярных HTML-редакторов в мире. Недостатком считается добавление «лишнего» кода. Приложение поддерживает формат CSS и проверяет его работоспособность в различных браузерах, дает возможность работать с технологиями XML, JavaScript, PHP, ASP и ASP.NET. Среда для разработки Ajax-приложений позволяет создать продукт, который может выполнять самые разные функции от получения информации из RSS каналов и баз данных до создания визуальных эффектов. Также программа обеспечивает возможность создания сайтов на основе тегов DIV.
3.4.2 Реализация базы данных
3.4.2.1 Логическая модель базы данных
Семь сущностей находятся в третьей нормальной форме, т. е. все атрибуты сущностей содержат атомарные значения (значения в домене не являются ни списками, ни множествами простых или сложных значений); каждый неключевой атрибут полностью зависит от первичного ключа; никакой неключевой атрибут не зависит от другого неключевого атрибута.
Рисунок 1 — Логическая модель базы данных
3.2.2 Описание таблиц
Всего в базе данных находится 7 таблиц, ниже приводится их описание.
Таблица Area предназначена для хранения информации об отделах магазина и содержит следующие столбцы:
1. ID (char,Length=1,NOT NULL,PK,identity seed=1) - содержит ID отдела.
2. Name (char, Length=10, NOT NULL) - содержит название отдела.
3. Count_employees (char, Length=10, NOT NULL) - содержит количество сотрудников отдела.
Рисунок 2 — Таблица Areas
Таблица Checks предназначена для хранения информации о чеках и содержит следующие столбцы :
1. ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. [Date] (datetime, Length=8) - содержит дату и время создания чека.
3. Employee_ID (char, Length=3) - содержит ID сотрудника, создавшего чек.
4. Sum (float, Length=8) - содержит общую сумму чека.
Рисунок 3 — Таблица Checks
Таблица Deliveries предназначена для хранения информации о поставках товара и содержит следующие столбцы :
1. Delivery_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID поставки.
2. [Date] (datetime, Length=8) - содержит дату и время регистрации поставки.
3. Supplier_ID (char, Length=3) - содержит ID поставщика.
4. Product_article (char, Length=20) - содержит артикул поставленного товара.
5. [Count] (int, Length=4, NOT NULL) содержит количество поставленного товара.
Рисунок 4 — Таблица Deliveries
Таблица Employees предназначена для хранения информации о сотрудниках и содержит следующие столбцы :
1. ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID сотрудника.
2. Area_ID (char,Length=1) - содержит ID отдела.
3. [First name] (char, Length=20) содержит имя сотрудника.
4. [Last name] (char, Length=20) содержит фамилию сотрудника.
5. [Position] (char, Length=20) содержит должность сотрудника.
6. Sales (char, Length=10) содержит сумму продаж сотрудника.
7. Login (char, Length=10) содержит логин сотрудника для работы с информационной системой.
8. Password (char, Length=10) содержит пароль сотрудника для работы с информационной системой.
Рисунок 5 — Таблица Employees
Таблица Products предназначена для хранения информации о товарах и содержит следующие столбцы :
1. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
2. Name (char,Length=10) - содержит название товара.
3. [Size] (text, Length=16) содержит размер товара.
4. Price (float, Length=8) содержит цену товара.
5. Area_ID (char,Length=1) - содержит ID отдела.
6. Structure (text, Length=16) содержит состав товара.
7. Country (char,Length=10) - содержит страну - производитель товара.
8. [Count] (int, Length=4) содержит текущее количество товара.
9. Image (char, Length=50) содержит путь к фотографии товара.
10. [Available sizes] (char, Length=10) содержит количество возможных размеров аналогичного товара.
Рисунок 6 — Таблица Products
Таблица Sales предназначена для хранения информации о продажах и содержит следующие столбцы :
1. Check_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
3. [Count] (char, Length=10) - содержит количество товара в продаже.
4. Price (float, Length=8) содержит цену продажи.
Рисунок 7 — Таблица Sales
Таблица Suppliers предназначена для хранения информации о поставщиках и содержит следующие столбцы :
1. Supplier_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
3. [Count] (char, Length=10) - содержит количество товара в продаже.
4. Price (float, Length=8) - содержит цену продажи.
Рисунок 8 — Таблица Suppliers
3.4.2.3 Описание триггеров
Триггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.
Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой «висит» триггер, и т. п.)
В некоторых серверах триггеры могут вызываться не для каждой модифицируемой записи, а один раз на изменение таблицы. Такие триггеры называются табличными. В разрабатываемой БД используются следующие табличные триггеры:
1) В таблице Checks:
1.1) Для уменьшения суммы продаж сотрудника при удалении чека
Листинг 1.1 Триггер DelEmpSales.
CREATE TRIGGER DelEmpSales ON dbo.Checks
FOR DELETE
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales-(SELECT [Sum] FROM deleted)
WHERE (ID = (SELECT Employee_ID
FROM deleted) ) ;
1.2) Для увеличения суммы продаж сотрудника при создании чека
Листинг 1.2 Триггер InsEmpSales.
CREATE TRIGGER InsEmpSales ON dbo.Checks
FOR INSERT
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales+(SELECT [Sum] FROM inserted)
WHERE (ID = (SELECT Employee_ID
FROM inserted) ) ;
1.3) Для изменения суммы продаж сотрудника при изменении чека
Листинг 1.3 Триггер UpdEmpSales.
CREATE TRIGGER UpdEmpSales ON dbo.Checks
FOR UPDATE
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales+(SELECT [Sum] FROM inserted)-(SELECT [Sum] FROM deleted)
WHERE (ID = (SELECT Employee_ID
FROM inserted) ) AND (ID = (SELECT Employee_ID
FROM deleted) );
2) В таблице Deliveries:
2.1) Для уменьшения количества товара при удалении поставки
Листинг 1.4 Триггер DEL1.
CREATE TRIGGER DEL1 ON dbo.Deliveries
FOR DELETE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]-(SELECT [Count] FROM deleted)
WHERE Article = (SELECT Product_article
FROM deleted );
2.2) Для увеличения количества товара при создании поставки
Листинг 1.5 Триггер ADD1.
CREATE TRIGGER ADD1 ON dbo.Deliveries
FOR INSERT
AS
UPDATE Products
SET Products.[Count] = Products.[Count]+(SELECT [Count] FROM inserted)
WHERE Article = (SELECT Product_article
FROM inserted);
2.3) Для изменения количества товара при изменении поставки
Листинг 1.6 Триггер UPD1.
CREATE TRIGGER UPD1 ON dbo.Deliveries
FOR UPDATE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]-(SELECT [Count] FROM deleted) +(SELECT [Count] FROM inserted)
WHERE (Article = (SELECT Product_article
FROM inserted) ) AND (Article = (SELECT Product_article
FROM deleted) );
3) В таблице Employees:
3.1) Для уменьшения количества сотрудников отдела при удалении сотрудника
Листинг 1.7 Триггер DelEmp.
CREATE TRIGGER DelEmp ON dbo.Employees
FOR DELETE
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
3.2) Для увеличения количества сотрудников отдела при добавлении сотрудника
Листинг 1.8 Триггер InsEmp.
CREATE TRIGGER InsEmp ON dbo.Employees
FOR Insert
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
3.3) Для изменения количества сотрудников отдела при изменении сотрудника
Листинг 1.9 Триггер Upd.
CREATE TRIGGER Upd ON dbo.Employees
FOR UPDATE
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
4) В таблице Sales:
4.1) Для уменьшения суммы чека при удалении продажи
Листинг 1.10 Триггер DelChecks.
CREATE TRIGGER DelChecks ON dbo.Sales
FOR DELETE
AS
UPDATE Checks
SET Checks.[Sum] = Checks.[Sum]-(SELECT Price FROM deleted)
WHERE (ID = (SELECT Check_ID
FROM deleted) ) ;
4.2) Для увеличения суммы чека при добавлении продажи
Листинг 1.11 Триггер InsChecks.
CREATE TRIGGER InsChecks ON dbo.Sales
FOR INSERT
AS
UPDATE Checks
SET Checks.[Sum] = Checks.[Sum]+(SELECT Price FROM inserted)
WHERE (ID = (SELECT Check_ID
FROM inserted) ) ;
4.3) Для изменения суммы чека при изменении продажи