Диплом: Автоматизация подсистемы учета статистических данных и формирования

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
104
Полученные при реализации данного проекта и создании приложения
результаты имеют значительную практическую значимость, которую можно
выразить как в общественной, так и в производственной пользе при
использовании подобных разработок.
В итоге, главные задачи дипломной – анализ деятельности компании,
выявление в ней значимых недостатков и ошибок управления, а также разработка
автоматизированной системы взаимоотношений с клиентами, выполнены.
Все задачи дипломной работы выполнены, следовательно, можно
обоснованно утверждать, что главная цель исследования - достигнута.
105
Список литературы
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 с.
106
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 с.
107
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 с.
108
Приложение. Листинг программного кода (фрагмент)
<?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)
{
109
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 :
{
110
$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;
111
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);
112
$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;
113
$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 :
{

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

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