Диплом: Автоматизация обработки заявок в ОАО "ТД ЦУМ"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
93
Список литературы
1. Алистер Коберн, Современные методы описания функциональных
требований к системам, М. , Лори, 2017 г., 288 с.
2. Баодин Лю, Теория и практика неопределенного
программирования, М., Бином. Лаборатория знаний, 2017 г, 416 с.
3. Барт Бэзинс, Эйми Бэкил, Зеппе Ванден Бруке, Java для
начинающих. Объектно-ориентированный подход, М., Питер, 2018 г, 688 с.
4. Березин С.А., Березин Б.А., Начальный курс С и С++, М., Диалог-
МИФИ, 2017 г., 288 с.
5. Брайан У. Керниган, Деннис М. Ритчи, Язык программирования C,
М., Вильямс, 2017 г, 288 с.
6. Брайан У. Керниган, Роб Пайк, Практика программирования, М.,
Вильямс, 2017 г., 288 с.
7. Бунаков П.А., Лопатин А. В, Практикум по решению задач на ЭВМ
в среде Delphi. Учебное пособие, М., Инфра-М, 2018 г, 304 с.
8. Васильев Р.А, Калянов Г.А., Левочкина Г.А., Стратегическое
управление информационными системами, М, Интернет-университет
информационных технологий, Бином. Лаборатория знаний, 2017 г, 512 с.
9. Вон Вернон, Реализация методов предметно-ориентированного
проектирования, М, Вильямс, 2017 г, 688 с.
10. Габасов Р.А., Кириллова Ф.А., Методы линейного
программирования. Часть 1. Общие задачи, М., Либроком, 2018 г, 176 с.
11. Габасов Р.А., Кириллова Ф.А., Методы линейного
программирования. Часть 3. Специальные задачи, М., Либроком, 2018 г, 368 с.
12. Гольштейн Е.А., Юдин Д.А., Специальные направления в линейном
программировании, М, Красанд, Editorial URSS, 2018 г, 526 с.
13. Грацианова Т.А., Программирование в примерах и задачах, М.,
Лаборатория знаний, 2018 г, 368 с.
14. Данилин А.А., Слюсаренко А. В., Архитектура и стратегия. "Инь" и
"янь" информационных технологий, М, Интернет-университет информационных
технологий, 2017 г, 506 с.
94
15. Джеффри Рихтер, CLR via C#. Программирование на платформе
Microsoft.NET Framework 4.5 на языке C#, М., Питер, 2017 г, 896 с.
16. Джон Скит, C# для профессионалов. Тонкости программирования,
М., Вильямс, 2017 г, 608 с.
17. Джоэл Грас, Data Science. Наука о данных с нуля, М, БХВ-
Петербург, 2018, 336 с.
18. Дональд Эрвин Кнут, Искусство программирования. Том 2.
Получисленные алгоритмы, М., Вильямс, 2017 г, 832 с.
19. Дональд Эрвин Кнут, Искусство программирования. Том 3.
Сортировка и поиск, М., Вильямс, 2017 г., 824 с.
20. Дронов В.А., Laravel. Быстрая разработка современных
динамических Web-сайтов на PHP, MySQL, HTML и CSS, Спб, БХВ-Петербург,
2018 г, 768 с.
21. Иванова Г.А., Технология программирования, М, КноРус, 2018 г,
336 с.
22. Исаев Г.А, Теоретико-методологические основы качества
информационных систем, М. Инфра-М, 2018 г. 258 с.
23. Кузнецов А. С., Ченцов С. В, Многоэтапный анализ архитектурной
надежности и синтез отказоустойчивого программного обеспечения сложных
систем, М, Инфра-М, 2018 г, 144 с.
24. Ли Атчисон, Масштабирование приложений. Выращивание
сложных систем, М, Питер, 2018 г, 256 с.
25. М. Тим Джонс, Программирование искусственного интеллекта в
приложениях, М., ДМК Пресс, 2018 с., 312 с.
26. Макаровских Т.А., Панюков А. С., Языки и методы
программирования. Создание простых GUI-приложений с помощью Visual С++,
М., Ленанд, 2018 г, 144 с.
27. Мартин Фаулер, Предметно-ориентированные языки
программирования, М., Вильямс, 2017 г, 576 с.
28. Окулов С.А., Пестов О.Г, Динамическое программирование, М.,
Бином. Лаборатория знаний, 2017 г, 296 с.
95
29. Панюкова Т.А. Панюков А.С., Языки и методы программирования.
Путеводитель по языку С++, М., Ленанд, 2018 г, 216 с.
30. Подбельский В.А, Курс программирования на языке Си, М.,
ДМК Пресс, 2018 г, 384 с.
31. Поль М. Дюваль, Стивен Матиас, Эндрю Гловер, Непрерывная
интеграция. Улучшение качества программного обеспечения и снижение риска,
М., Вильямс, 2017 г, 240 с.
32. Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му, Язык
программирования C++. Базовый курс, М, Вильямс, 2017 г, 1120 с.
33. Стивен Прата, Язык программирования C++. Лекции и упражнения,
М., Вильямс, 2017 г, 1248 с.
34. Стивен С. Скиена, Алгоритмы. Руководство по разработке, Спб,
БХВ-Петербург, 2018 г, 720 с.
35. Фредерик Брукс, Проектирование процесса проектирования.
Записки компьютерного эксперта, М., Вильямс, 2017 г, 464 с.
36. Царев Ю.Р, Мультиверсионное программное обеспечение.
Алгоритмы голосования и оценка надёжности: Монография, М, Инфра-М,
2018 г, 118 с.
37. Эрик Эванс, Предметно-ориентированное проектирование (DDD).
Структуризация сложных программных систем, М. , Вильямс, 2017 г, 448 с.
96
Приложение 1. Листинг программного кода (фрагмент)
<?php
namespace app\controllers;
use Yii;
use app\models\Request;
use app\models\RequestSearch;
use app\models\RequestService;
use app\models\RequestServiceSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use yii\base\UserException;
/**
* RequestController implements the CRUD actions for Request model.
*/
class RequestController extends Controller
{
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-full'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
97
return Yii::$app->user->identity-
>IsClient;
}
],
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-select', 'request-paid', 'request-performing', 'request-performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
return Yii::$app->user->identity-
>IsManager;
}
],
[
'actions' => ['index', 'view', 'create', 'update', 'delete',
'add-service', 'request-select', 'request-paid', 'request-performing', 'request-performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
return Yii::$app->user->identity-
>IsAdmin;
}
],
],
],
];
}
/**
* Lists all Request models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new RequestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$view_name = '';
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
98
$view_name = 'client-index';
$dataProvider->query->andWhere(['id_creator' =>
Yii::$app->user->identity->id]);
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-index';
$dataProvider->query->andWhere(['id_executor' =>
Yii::$app->user->identity->id])->orWhere('id_executor IS NULL')-
>andWhere('id_request_status > ' .
\app\models\Request::REQUEST_STATUS_OPEN);
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-index';
} break;
}
return $this->render($view_name, [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Request model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
$view_name = '';
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$view_name = 'client-view';
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-view';
} break;
99
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-view';
} break;
}
return $this->render($view_name, [
'model' => $this->findModel($id),
'editable' => RequestController::RequestEditable ($id, false),
]);
}
public static function RequestGetCurrent ()
{
$models = Request::find()->andWhere (
['id_request_status' => Request::REQUEST_STATUS_OPEN,
'id_creator' => Yii::$app->user->identity->id])->orderby(['id' =>
SORT_ASC])->all();
if (count ($models) == 0)
{
return null;
}
else
{
return $models[0]->id;
}
}
public static function RequestCreate ()
{
$model = new Request();
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_request_status = Request::REQUEST_STATUS_OPEN;
$model->save();
return $model->id;
}
public function actionAddService ($id_service)
{
$id = RequestController::RequestGetCurrent ();
if ($id == NULL)
$id = RequestController::RequestCreate ();
$request = RequestController::findModel($id);
100
$model = RequestService::find()->andWhere (['id_request' => $request-
>id, 'id_service' => $id_service])->one();
if (empty ($model) == true)
{
$model = new RequestService();
$model->id_request = $id;
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_service = $id_service;
$model->amount = 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
else
{
$model->amount += 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
$request->RecalculateCost();
$this->redirect(['request-service/index', 'id_request' => $request->id]);
}
public function actionRequestFull ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_OPEN)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_request_status = Request::REQUEST_STATUS_FULL;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPaid ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_FULL)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_executor = Yii::$app->user->identity->id;
$request->paid = true;
101
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPerforming ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_FULL)
throw new UserException (Yii::t('app', 'Bad Request Status'));
if ($request->paid != true)
throw new UserException (Yii::t('app', 'Request Not Paid'));
$request->id_request_status =
Request::REQUEST_STATUS_PERFORMING;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPerformed ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_PERFORMING)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_request_status =
Request::REQUEST_STATUS_PERFORMED;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public static function RequestEditable ($id_request, $exception = true)
{
$result = false;
$model = RequestController::findModel($id_request);
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$result = $model->id_request_status ==
Request::REQUEST_STATUS_OPEN;
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
102
$result = $model->id_request_status ==
Request::REQUEST_STATUS_FULL && $model->paid == false;
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$result = $model->id_request_status ==
Request::REQUEST_STATUS_FULL;
} break;
}
if ($exception)
{
if ($result == false)
throw new UserException (Yii::t('app', 'Request Is Not
Editable'));
}
else
return $result;
}
/**
* Creates a new Request model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
return $this->redirect(['view', 'id' => RequestController::RequestCreate
()]);
}
/**
* Updates an existing Request model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)