Автор работы: Пользователь скрыл имя, 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. ХАРАКТЕРИСТИКА ПО ПРОХОЖДЕНИЮ ПРАКТИКИ
Листинг 1.12 Триггер UPDChecks.
CREATE TRIGGER UPDChecks ON dbo.Sales
FOR UPDATE
AS
UPDATE Checks
SET Checks.[Sum] = Checks.[Sum]-(SELECT Price FROM deleted) +(SELECT Price FROM inserted)
WHERE (ID = (SELECT Check_ID
FROM inserted) ) AND (ID = (SELECT Check_ID
FROM deleted) );
4.4) Для увеличения количества товара при удалении продажи
Листинг 1.13 Триггер DELSale.
CREATE TRIGGER DELSale ON dbo.Sales
FOR DELETE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]+(SELECT [Count] FROM deleted)
WHERE (Article = (SELECT Article
FROM deleted) );
4.5) Для уменьшения количества товара при добавлении продажи
Листинг 1.14 Триггер INSSale.
CREATE TRIGGER INSSale ON dbo.Sales
FOR INSERT
AS
UPDATE Products
SET Products.[Count] = Products.[Count] -(SELECT [Count] FROM inserted)
WHERE (Article = (SELECT Article
FROM inserted) );
4.6) Для изменения количества товара при изменении продажи
Листинг 1.15 Триггер UPDSale.
CREATE TRIGGER UPDSale ON dbo.Sales
FOR UPDATE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]+(SELECT [Count] FROM deleted) -(SELECT [Count] FROM inserted)
WHERE (Article = (SELECT Article
FROM inserted) ) AND (Article = (SELECT Article
FROM deleted) );
3.4.3 Реализация клиентского приложения
Разработанное веб-приложение представляет собой набор php- страниц, навигация по которым осуществляется при помощи гиперссылок. Каждая страница наделена определёнными функциями, необходимыми пользователям, т.е. сотрудникам магазина.
1) index.php
На главной странице выводятся приветствие, логотип фирмы, а также форма авторизации. Чтобы авторизоваться, пользователю необходимо ввести свои регистрационные данные в форму и нажать кнопку “Sign in”. После чего происходит обработка php-скрипта “login.php”.
Рисунок 9 — Страница index.php
Листинг 2.1 Скрипт “login.php”
<?php
ob_start();?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>
<body>
<?php
if (isset($_POST['login']))
{
$login = $_POST['login'];
$password = $_POST['password'];
if (!preg_match("/^\w{3,}$/", $login)) {
die('Incorrect login!');
}
include 'connect.php';
if (!$link || !mssql_select_db('TheStore', $link))
{
die("Can't reaching the DataBase");
}else{
$stmt1 = mssql_query("SELECT ID FROM Employees WHERE ((Login='$login')AND (Password='$password'))",$
$row_count = mssql_num_rows( $stmt1 );
if ($row_count < 1) {
mssql_close($link);
die('There is no such login or password is incorrect!');
}
// Стартуем сессию и записываем логин в суперглобальный массив $_SESSION
session_start();
$row = mssql_fetch_array($stmt1, MSSQL_NUM);
$_SESSION['id'] = $row[0];
$_SESSION['user'] = $login;
$_SESSION['password'] = $password;
mssql_close($link);
header ("location: index1.php");
}}?>
</body>
</html>
Информация для подключения берется из файла “connect.php”.
Листинг 2.2 Скрипт “connect.php”
<?php
$serverName = "FLAME";
$uid = "sa";
$pwd = "123";
$link = mssql_connect( $serverName, $uid,$pwd);
?>
В переменные $serverName, $uid,$pwd , вносится адрес сервера, логин и пароль для доступа к серверу БД.
После успешного выполнения скрипта login.php, в суперглобальном массиве $_SESSION создается 2 элемента: id и user, которые используются при проверке авторизации пользователя.
При попадании на любую страницу происходит проверка авторизации пользователя и вывод определенного приветствия на основе данной проверки.
Листинг 2.3 Проверка авторизации
<?php
ob_start();
session_start();
if (isset($_SESSION['user'])) {
$auth = "<p align='center'> Welcome ".$_SESSION['user']."!</p>\n";
$auth .= "<div align='center'> <form method='post' action='logout.php'> <input type='submit' value='Exit'></form></div>";
}else {
$auth = <<< AUTH
<p align="center">Authorization</
<form method="post" action="login.php">
<table>
<tr class="left">
<td width="62">Login:</td>
<td width="147"><input name="login" type="text"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td colspan="2"> <div align="center">
<input type="submit" value="Sign in">
</div></td>
</tr>
</table>
</form>
AUTH;
}
?>
Рисунок 10 — Страница index1.php
2) Check.php
На данной странице размещаются формы для проведения и удаления (только для менеджеров) продажи. При нажатии на нужные кнопки выполняются соответствующие скрипты, проводящие необходимые операции с БД – создание продажи, удаление продажи, создание чека.
Рисунок 11 — Страница Check.php
Для создания продажи используется скрипт “NewSales.php”
Листинг 2.4 Скрипт “NewSales.php”
<?php
ob_start();?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>
<body>
<?php
if ((isset($_POST['check_ID'])) AND (isset($_POST['article'])) AND (isset($_POST['count'])))
{
$check_ID = $_POST['check_ID'];
$article = $_POST['article'];
$count= $_POST['count'];
include 'connect.php';
if (!$link || !mssql_select_db('TheStore', $link))
{
die("Can't reaching the DataBase");
}
else{
$query1 = mssql_query("INSERT INTO Sales(Check_ID, Article, Count )VALUES('$check_ID','$article'
if ( !$query1)
{
die("Mistake1!");
}
$query2= mssql_query("SELECT Price FROM Products Where (Article='".$_POST['article'].
if ( !$query2)
{
die("Mistake2!");
}
$row = mssql_fetch_array($query2, MSSQL_NUM);
$price =$row[0]*$count;
$query3 = mssql_query("UPDATE Sales Set Sales.Price='$price' Where ((Article='".$_POST['article']
if ( !$query3)
{
die("Mistake3!");
}
mssql_close($link);
}
header ("location: Check.php");
}?>
</body>
</html>
Для создания чека используется скрипт “NewCheck.php”
Листинг 2.5 Скрипт “NewCheck.php”
<?php
ob_start();?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>
<?php
include 'connect.php';
mssql_select_db('TheStore', $link);
$query= mssql_query("SELECT DISTINCT MAX(ID) FROM Checks",$link);
if(!mssql_num_rows($query))
{
echo 'No records found';
}
else
{
while($row = mssql_fetch_array($query, MSSQL_NUM))
{
$next_check="$row[0]";
}
}
?>
<body>
<?php
session_start();
include 'connect.php';
if (!$link || !mssql_select_db('TheStore', $link))
{
die("Can't reaching the DataBase");
}
else{
date_default_timezone_set('
$datetime = date('m.d.Y G:i:s ');
$query1 = mssql_query("UPDATE Checks Set Checks.Date='$datetime' Where (ID='$next_check')",$link);
if ( !$query1)
{
die("Mistake1!");
}
$emp_id=$_SESSION['id'];
$query2 = mssql_query("UPDATE Checks Set Checks.Employee_ID ='$emp_id' Where (ID='$next_check')",$link);
if ( !$query2)
{
die("Mistake2!");
}
$new_check=$next_check+1;
$query3 = mssql_query("INSERT INTO Checks(ID)VALUES('0'+'$new_
if ( !$query1)
{
die("Mistake3!");
}
mssql_close($link);
}
header ("location: Check.php");
?>
</body>
</html>
Для удаления продажи используется скрипт “DelSale.php”
Листинг 2.6 Скрипт “DelSale.php”
<?php
ob_start();?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
$delcheck_ID = $_POST['del_ID'];
$delarticle = $_POST['del_art'];
include 'connect.php';
if (!$link || !mssql_select_db('TheStore', $link))
{
die("Can't reaching the DataBase");
}
else{
$query1 = mssql_query("DELETE FROM Sales Where ((Check_ID='$delcheck_ID')AND(
if ( !$query1)
{
die("Mistake1!");
}
mssql_close($link);
}
header ("location: Check.php");
?>
</body>
</html>
3) Stock.php
На данной странице выводится информация о всех товарах с выделенным текущим количеством и изображениями.
Листинг 2.7 Вывод информации о товарах
<?php
mssql_select_db('TheStore', $link);
$query= mssql_query("SELECT * FROM Products",$link);
if(!mssql_num_rows($query))
{
echo 'No records found';
}
else
{
echo "<table width='440' border='1'>";
echo "<tr>";
echo "<td width='60' align='center'><B>Article</B><
echo "<td width='80' align='center'><B>Name</B></
echo "<td width='20' align='center'><B>Size</B></
echo "<td width='50' align='center'><B>Price</B></
echo "<td width='10' align='center'><B>Area</B></
echo "<td width='100' align='center'><B>Structure</
echo "<td width='80' align='center'><B>Country</B><
echo "<td width='40' align='center'><B>Quantity</B>
echo "</tr>";
while($row = mssql_fetch_array($query, MSSQL_NUM))
{
echo "<tr>";
echo "<td width='60'>".$row[0]."</td>\n"
echo "<td width='80'>".$row[1]."</td>\n"
echo "<td width='20'>".$row[2]."</td>\n"
echo "<td width='50'>".$row[3]."</td>\n"
echo "<td width='10'>".$row[4]."</td>\n"
echo "<td width='100'>".$row[5]."</td>\
echo "<td width='80'>".$row[6]."</td>\n"