Файл: Проектирование реализации операций бизнес-процесса «Продажи» (Программное обеспечение. Критерии выбора программного обеспечения).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.06.2023

Просмотров: 245

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Для создания кода сайта был выбран обычный текстовый редактор Notepad++, он хорош тем, что имеет встроенную подсветку синтаксиса кода, что позволяет еще на этапе создания выявлять ошибки в коде и своевременно их устранять.

Используя указанные выше программные продукты, можно создать полнофункциональный сайт любой сложности с использованием СУБД MySQL.

Приложение Г - Разработка структуры базы данных

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

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

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

Сайт представляет из себя три компонента: Административная часть, Клиентская часть и База данных сайта.

Рисунок Г.1 - Общая структура сайта

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

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


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

База данных является ядром сайта. В базе данных содержится информация о том как будет выглядеть каждая страница сайта. Она состоит из набора таблиц. База данных сайта располагается на сервере компании и клиентская часть и административная часть общаются к ней с помощью языка запросов – MySql. У всех сайтов свои представления данных частей но суть одинаковая. Все они поделены на следующие части:

  • административная часть;
  • клиентская часть;
  • база данных.

Приложение Д - Разработка интерфейса

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

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

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

При выборе шрифта следует отдать предпочтение вариантам без засечек, при этом стандартный Times New Roman лучше даже не рассматривать. При необходимости допускается один основной шрифт разбавлять другим. Не стоит пытаться использовать большее их количество, так как это приведет к излишней пестроте, которая испортит не только общий дизайн, но и усложнит его восприятие. Увлекаться различными выделениями, также не стоит. Текст должен выглядеть на веб - странице целостно и не напоминать скомканную кучу отрывков, собранных с разных ресурсов.


Приложение Е - Листинг программных модулей

<?php

//Default settings

$settings = array(

'baseDir' => '../',

'charSet' => 'utf-8',

'debug' => true,

'gzip' => true,

'compressionLevel' => 9,

'gzipExceptions' => array('gif','jpeg','jpg','png','swf'),

'minify' => true,

'concatenate' => true,

'separator' => ',',

'embed' => true,

'embedMaxSize' => 5120,

'embedExceptions' => array('htc'),

'serverCache' => true,

'serverCacheCheck' => false,

'cacheDir' => 'cache/',

'cachePrefix' => 'so_',

'clientCache' => true,

'clientCacheCheck' => false,

);

//mime types

$mimeTypes = array(

"js" => "text/javascript",

"css" => "text/css",

"htm" => "text/html",

"html" => "text/html",

"xml" => "text/xml",

"txt" => "text/plain",

"jpg" => "image/jpeg",

"jpeg" => "image/jpeg",

"png" => "image/png",

"gif" => "image/gif",

"swf" => "application/x-shockwave-flash",

);

function headerExit($status) {

header("HTTP/1.0 $status");

exit();

}

function headerNoCache() {

// already expired

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified

header("Last-Modified: " . gmdatestr());

// HTTP/1.1

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Cache-Control: max-age=0", false);

// HTTP/1.0

header("Pragma: no-cache");

//generate a unique Etag each time

header('Etag: '.microtime());

}

function headerNeverExpire(){

header("Expires: " . gmdatestr(time() + 315360000));

header("Cache-Control: max-age=315360000");

}

function debugExit($msg){

global $settings;

if (!$settings['debug']) {

headerExit('404 Not Found');

}

headerNoCache();

header('Content-Type: text/html; charset='.$settings['charSet']);

header("Content-Encoding: none");

echo "//<script>\n";

echo "alert('SmartOptimizer Error: ".str_replace("\n", "\\n", addslashes($msg))."');\n";

echo "//</script>\n";

exit();

}

function gmdatestr($time = null) {

if (is_null($time)) $time = time();

return gmdate("D, d M Y H:i:s", $time) . " GMT";

}

function filesmtime() {

global $files, $fileType;

static $filesmtime;

if ($filesmtime) return $filesmtime;

$filesmtime = max(@filemtime("minifiers/$fileType.php"), filemtime('index.php'), filemtime('config.php'));

foreach ($files as $file) {

if (!file_exists($file)) debugExit("File not found ($file).");

$filesmtime = max(filemtime($file), $filesmtime);

}

return $filesmtime;

}

@include('config.php');

list($query) = explode('?', urldecode($_SERVER['QUERY_STRING']));

if (preg_match('/^\/?(.+\/)?(.+)$/', $query, $matchResult)) {

$fileNames = $matchResult[2];

$fileDir = $settings['baseDir'].$matchResult[1];

} else debugExit("Invalid file name ($query)");

if (strpos(realpath($fileDir), realpath($settings['baseDir'])) !== 0) debugExit("File is out of base directory.");

if ($settings['concatenate']) {

$files = explode($settings['separator'], $fileNames);

$settings['concatenate'] = count($files) > 1;

} else $files = array($fileNames);

foreach ($files as $key => $file) {

if (preg_match('/\.([a-z0-9]+)$/i', $file, $matchResult)) {

$fileTypes[] = strtolower($matchResult[1]);

} else debugExit("Unsupported file ($file)");

$files[$key] = $fileDir.$file;

}

if ($settings['concatenate']) {

if (count(array_unique($fileTypes)) > 1) debugExit("Files must be of the same type.");

}

$fileType = $fileTypes[0];

if (!isset($mimeTypes[$fileType])) debugExit("Unsupported file type ($fileType)");

header("Content-Type: {$mimeTypes[$fileType]}; charset=".$settings['charSet']);

$settings['gzip'] =

($settings['gzip'] &&

!in_array($fileType, $settings['gzipExceptions']) &&


in_array('gzip', array_map('trim', explode(',' , @$_SERVER['HTTP_ACCEPT_ENCODING']))) &&

function_exists('gzencode'));

if ($settings['gzip']) header("Content-Encoding: gzip");

$settings['minify'] = $settings['minify'] && file_exists('minifiers/'.$fileType.'.php');

$settings['embed'] = $settings['embed'] && $fileType == 'css' && (!preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/msie 8|opera/i', $_SERVER['HTTP_USER_AGENT']));

$settings['serverCache'] = $settings['serverCache'] && ($settings['minify'] || $settings['gzip'] || $settings['concatenate'] || $settings['embed']);

if ($settings['serverCache']) {

$cachedFile = $settings['cacheDir'].$settings['cachePrefix'].md5($query.($settings['embed']?'1':'0')).'.'.$fileType.($settings['gzip'] ? '.gz' : '');

}

$generateContent = ((!$settings['serverCache'] && (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != gmdatestr(filesmtime()))) ||

($settings['serverCache'] && (!file_exists($cachedFile) || ($settings['serverCacheCheck'] && filesmtime() > filemtime($cachedFile)))));

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

if ($settings['serverCache'] && !$generateContent) $mtime = filemtime($cachedFile);

elseif ($settings['serverCache']) $mtime = time();

else $mtime = filesmtime();

$mtimestr = gmdatestr($mtime);

}

if (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != $mtimestr) {

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

header("Last-Modified: " . $mtimestr);

header("Cache-Control: must-revalidate");

} elseif ($settings['clientCache']) {

headerNeverExpire();

} else headerNoCache();

if ($generateContent) {

if ($settings['minify']) include('minifiers/'.$fileType.'.php');

$content = array();

foreach ($files as $file) (($content[] = @file_get_contents($file)) !== false) || debugExit("File not found ($file).");

$content = implode("\n", $content);

if ($settings['minify']) $content = call_user_func('minify_' . $fileType, $content);

if ($settings['gzip']) $content = gzencode($content, $settings['compressionLevel']);

if ($settings['serverCache']) {

$handle = @fopen($cachedFile, 'w') or debugExit("Could not create cache file($cachedFile).");

fwrite($handle, $content);

fclose($handle);

}

header('Content-Length: ' . strlen($content));

echo $content;

} else {

header('Content-Length: ' . filesize($cachedFile));

readfile($cachedFile);

}

} else headerExit('304 Not Modified');

?>

<?php

/*

* SmartOptimizer JavaScript Minifier

*/

function minify_js($str) {

$res = '';

$maybe_regex = true;

$i=0;

$current_char = '';

while ($i+1<strlen($str)) {

if ($maybe_regex && $str[$i]=='/' && $str[$i+1]!='/' && $str[$i+1]!='*' && @$str[$i-1]!='*') {//regex detected

if (strlen($res) && $res[strlen($res)-1] === '/') $res .= ' ';

do {

if ($str[$i] == '\\') {

$res .= $str[$i++];

} elseif ($str[$i] == '[') {

do {

if ($str[$i] == '\\') {

$res .= $str[$i++];

}

$res .= $str[$i++];

} while ($i<strlen($str) && $str[$i]!=']');

}

$res .= $str[$i++];

} while ($i<strlen($str) && $str[$i]!='/');

$res .= $str[$i++];

$maybe_regex = false;

continue;

} elseif ($str[$i]=='"' || $str[$i]=="'") {//quoted string detected

$quote = $str[$i];

do {

if ($str[$i] == '\\') {

$res .= $str[$i++];

}

$res .= $str[$i++];

} while ($i<strlen($str) && $str[$i]!=$quote);

$res .= $str[$i++];

continue;

} elseif ($str[$i].$str[$i+1]=='/*' && @$str[$i+2]!='@') {//multi-line comment detected

$i+=3;

while ($i<strlen($str) && $str[$i-1].$str[$i]!='*/') $i++;

if ($current_char == "\n") $str[$i] = "\n";

else $str[$i] = ' ';

} elseif ($str[$i].$str[$i+1]=='//') {//single-line comment detected


$i+=2;

while ($i<strlen($str) && $str[$i]!="\n") $i++;

}

$LF_needed = false;

if (preg_match('/[\n\r\t ]/', $str[$i])) {

if (strlen($res) && preg_match('/[\n ]/', $res[strlen($res)-1])) {

if ($res[strlen($res)-1] == "\n") $LF_needed = true;

$res = substr($res, 0, -1);

}

while ($i+1<strlen($str) && preg_match('/[\n\r\t ]/', $str[$i+1])) {

if (!$LF_needed && preg_match('/[\n\r]/', $str[$i])) $LF_needed = true;

$i++;

}

}

if (strlen($str) <= $i+1) break;

$current_char = $str[$i];

if ($LF_needed) $current_char = "\n";

elseif ($current_char == "\t") $current_char = " ";

elseif ($current_char == "\r") $current_char = "\n";

// detect unnecessary white spaces

if ($current_char == " ") {

if (strlen($res) &&

(

preg_match('/^[^(){}[\]=+\-*\/%&|!><?:~^,;"\']{2}$/', $res[strlen($res)-1].$str[$i+1]) ||

preg_match('/^(\+\+)|(--)$/', $res[strlen($res)-1].$str[$i+1]) // for example i+ ++j;

)) $res .= $current_char;

} elseif ($current_char == "\n") {

if (strlen($res) &&

(

preg_match('/^[^({[=+\-*%&|!><?:~^,;\/][^)}\]=+\-*%&|><?:,;\/]$/', $res[strlen($res)-1].$str[$i+1]) ||

(strlen($res)>1 && preg_match('/^(\+\+)|(--)$/', $res[strlen($res)-2].$res[strlen($res)-1])) ||

preg_match('/^(\+\+)|(--)$/', $current_char.$str[$i+1]) ||

preg_match('/^(\+\+)|(--)$/', $res[strlen($res)-1].$str[$i+1])// || // for example i+ ++j;

)) $res .= $current_char;

} else $res .= $current_char;

// if the next charachter be a slash, detects if it is a divide operator or start of a regex

if (preg_match('/[({[=+\-*\/%&|!><?:~^,;]/', $current_char)) $maybe_regex = true;

elseif (!preg_match('/[\n ]/', $current_char)) $maybe_regex = false;

$i++;

}

if ($i<strlen($str) && preg_match('/[^\n\r\t ]/', $str[$i])) $res .= $str[$i];

return $res;

}

?>

<?php

//Default settings

$settings = array(

'baseDir' => '../',

'charSet' => 'utf-8',

'debug' => true,

'gzip' => true,

'compressionLevel' => 9,

'gzipExceptions' => array('gif','jpeg','jpg','png','swf'),

'minify' => true,

'concatenate' => true,

'separator' => ',',

'embed' => true,

'embedMaxSize' => 5120,

'embedExceptions' => array('htc'),

'serverCache' => true,

'serverCacheCheck' => false,

'cacheDir' => 'cache/',

'cachePrefix' => 'so_',

'clientCache' => true,

'clientCacheCheck' => false,

);

//mime types

$mimeTypes = array(

"js" => "text/javascript",

"css" => "text/css",

"htm" => "text/html",

"html" => "text/html",

"xml" => "text/xml",

"txt" => "text/plain",

"jpg" => "image/jpeg",

"jpeg" => "image/jpeg",

"png" => "image/png",

"gif" => "image/gif",

"swf" => "application/x-shockwave-flash",

);

function headerExit($status) {

header("HTTP/1.0 $status");

exit();

}

function headerNoCache() {

// already expired

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified

header("Last-Modified: " . gmdatestr());

// HTTP/1.1

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Cache-Control: max-age=0", false);

// HTTP/1.0

header("Pragma: no-cache");

//generate a unique Etag each time

header('Etag: '.microtime());

}

function headerNeverExpire(){

header("Expires: " . gmdatestr(time() + 315360000));

header("Cache-Control: max-age=315360000");

}

function debugExit($msg){

global $settings;

if (!$settings['debug']) {

headerExit('404 Not Found');

}

headerNoCache();

header('Content-Type: text/html; charset='.$settings['charSet']);

header("Content-Encoding: none");

echo "//<script>\n";

echo "alert('SmartOptimizer Error: ".str_replace("\n", "\\n", addslashes($msg))."');\n";

echo "//</script>\n";