Диплом: Автоматизация приема заявок на ремонт и модернизацию ПК в АО "Старт"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
66
Рисунок 17 ER-модель базы данных
Для реализации связи многие-ко-многим между сущностями
"Пользователи" и "Роли пользователей" была добавлена дополнительная
промежуточная таблица user_roles.
Описание все таблиц базы данных представлены в таблицах 9-16.
Таблица 9
Таблица users
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код пользователя
id
int
11
AI
ФИО пользователя
userfio
varchar
255
Логин пользователя
username
varchar
255
unique
Код отделения
пользователя
departmentid
varchar
255
Пароль
пользователя (в
зашифрованном
виде)
password
varchar
255
Ключ для
расшифровки
пароля
salt
varchar
255
67
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Email пользователя
email
varchar
255
Телефон
phone
varchar
255
Удален
deleted
tinyint
1
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Таблица 10
Таблица user_roles
Наименование поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код пользователя
userid
int
11
Код роли
roleid
int
11
Таблица 11
Таблица roles
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код роли
id
int
11
AI
Наименование роли
caption
varchar
255
Наименование роли
для фреймворка
role
varchar
255
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Таблица 12
Таблица department
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код отделения
id
int
11
AI
Наименование
отделения
caption
varchar
255
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Таблица 13
Таблица ticket
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Номер заявки
id
int
11
AI
Текстовой
комментарий к
заявке (описание
проблемы)
description
longtext
65655
68
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код пользователя –
автора заявки
authorid
int
11
Код пользователя –
сотрудника ТО
userid
int
11
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Код статуса
statusid
int
11
Код типа
неисправности
typeid
int
11
Таблица 14
Таблица status
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код статуса
id
int
11
AI
Наименование
статуса
caption
varchar
120
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Таблица 15
Таблица typeticket
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код типа
неисправности
id
int
11
AI
Наименование типа
неисправности
caption
varchar
255
Отображать на
форме добавления
заявки?
active
tinyint
1
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
Таблица 16
Таблица comment
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Код комментария
id
int
11
AI
Текст комментария
texts
varchar
255
Код пользователя
(автора
комментария)
userid
int
11
Код заявки
ticketid
int
11
Ссылка на файл
image
varchar
255
69
Наименование
поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Дата создания
createat
datetime
Дата изменения
modifiedat
datetime
SQL-скрипт для создания базы данных приведен в приложении 1.
2.3.3. Структурная схема пакета (дерево вызова программных модулей)
Популярность языка php обусловила появление большого числа
фреймворков, основанных на нем. Фреймворк – программная платформа,
определяющая структуру программной системы; программное обеспечение,
облегчающее разработку и объединение разных компонентов большого
программного проекта.
Для написания информационной системы использовался фреймворк языка
php Symfony 2.
Symfony 2 самый популярный PHP-фреймворк в мире. Он включает в себя
весь набор инструментов, используемый для быстрой разработки веб-
приложений, и при этом абсолютно ничего не навязывает создаваемому
приложению. Разработчик может быстро начать работу, используя дистрибутив
Symfony2.
Сильные стороны Symfony 2:
Высокая скорость работы за счет использования шаблонизатора под
именем Twig, который использует оптимизированный PHP-код;
Гибкость в настройке - Symfony позволяет конфигурировать
приложения в трех различных форматах: аннотации, XML, YML. Есть
возможность использовать все конфигурации одновременно;
Расширяемость – поскольку Symfony основан на концепции DI
(слабая связанность), программист может в любое время расширять приложение
за счет подключения новых бандлов, которые минимально влияют на работу
других бандлов, но зато возможна конфигурация их совместной работы;
Стабильность – длительное время поддержки версий;
70
Ориентированность на разработчика - Symfony имеет очень удобную
консоль и для того, чтобы программист не выполнял рутинную работу, консоль
Symfony делает генерацию определенного кода вместо программиста с помощью
определенных команд.
Symfony 2 – это набор компонентов, таких как:
HttpFoundation – данный компонент Symfony отвечает за обработку
запросов и ответов приложения (Request и Response соответвенно). Также он
содержит в себе классы, которые позволяют программисту заниматься работой с
файлами и сессией;
Routing – компонент, который занимается маршрутизацией в
приложении и позволяет конфигурировать, каким именно образом должны
обрабатываться URL;
Form – компонент, который позволяет программисту легко и удобно
генерировать, а также управлять формами: простыми или загрузочными;
Validator – набор классов, который позволяет программисту
проверять данные на корректность. Содержит в себе множество правил для
проверок: начиная простой проверкой на пустоту объекта, заканчивая
различными сложными правилами.
ClassLoader – библиотека, которая позволяет подключать в систему
PHP-классы без использования явного require.
Templating – тулкит для загрузки/рендеринга шаблонов. Также
поддерживается множественное наследование шаблонов (шаблонизатор Twig);
Security – библиотека, которая создана для решения вопросов,
которые касаются различных типов безопасности, при создании приложения;
Translation компонент, которые позволяет реализовать
многоязычность сайта.
Данный фреймворк работает с подходом к программированию,
называемый Model-view-controller (MVC, «модель-представление-контроллер»,
«модель-вид-контроллер»).
Основная идея данного подхода заключается в разделении данных, их
представлениях и обработку действий пользователей на три больших группы:
71
Модель (англ. Model). Модель предоставляет знания: данные и
методы работы с этими данными, реагирует на запросы, изменяя своё состояние.
Объекты данной группы не содержат информации, как эти знания можно
визуализировать.
Представление, вид (англ. View). Отвечает за отображение
информации (визуализацию). Часто в качестве представления выступает форма
(окно) с графическими элементами. Главная задача – представить информацию,
хранимой в модели в виде, воспринимаемым пользователем.
Контроллер (англ. Controller). Обеспечивает связь между
пользователем и системой: контролирует ввод данных пользователем и
использует модель и представление для реализации необходимой реакции.
Важно отметить, что как представление, так и контроллер зависят от
модели. Однако модель не зависит ни от представления, ни от контроллера. Тем
самым достигается назначение такого разделения: оно позволяет строить модель
независимо от визуального представления, а также создавать несколько
различных представлений для одной модели.
В таблице 17 приведен список разработанных программных модулей-
контроллеров, в таблице 18 – модели, в таблице 19 – представления.
Таблица 17
Программные модули Controller
Номер
Название
Описание
1
DefaultContoller.php
Класс контроллера, обрабатывающий
маршрут главной страницы информационной
системы
2
AbstractController.php
Родительский класс контроллера,
содержащий методы для отображения
данных и форм, обработки отправленных
форм
3
SecurityController.php
Класс контроллера, содержащий методы и
функции, необходимые для реализации
функций авторизации, выхода из сайта,
управления профилем пользователя
4
TicketsController.php
Класс контроллера, содержащий методы для
реализации работы с заявками всеми
пользователями ИС
5
SpravController.php
Класс контроллера, содержащий методы для
реализации работы со справочниками
Таблица 18
72
Программные модули Model
Номер
Название
Описание
1
AbstractEntity.php
Родительский класс модели, содержащий
базовые методы и свойства для реализации
классов модели
2
User.php
Класс модели, содержащий атрибуты и
методы для работы с объектом пользователя
3
Department.php
Класс модели, содержащий атрибуты и
методы для работы с объектом отделения
4
Ticket.php
Класс модели, содержащий атрибуты и
методы для работы с объектом заявки
5
Comment.php
Класс модели, содержащий атрибуты и
методы для работы с объектом комментария
к заявке
6
Status.php
Класс модели, содержащий атрибуты и
методы для работы с объектом статуса заявки
7
Role.php
Класс модели, содержащий атрибуты и
методы для работы с объектом роли
пользователя
8
TypeTicket.php
Класс модели, содержащий атрибуты и
методы для работы с видом неисправности
Таблица 19
Программные модули View
1
AbstractFormType.php
Класс формы управления данными
2
LoginFormType.php
Класс формы авторизации
3
FilterFormType.php
Класс формы для реализации фильтров
4
UserFormType.php
Класс формы для реализации работы с
данными пользователя
5
TicketFormType.php
Класс формы для реализации работы с
данными заявки
6
SpravFormType.php
Класс формы для реализации работы с
записью справочника
2.3.4. Описание программных модулей
Главная особенность объектно-ориентированного программирования
(ООП) заключается в том, что при использовании этого метода происходит
оперирование объектами. Под объектом в программировании понимается
совокупность свойств, методов их обработки и событий, на которые данные
объект может реагировать. Под свойствами объекта обычно понимают структуры
данных, характерные для данного объекта, или другими словами – набор свойств
характеризуют какой-либо объект. Метод – это способ влияния на свойства
объекта, обычно используют два метода – установка какому-то свойству
73
определенного значения, и считывание значения этого свойства. Объединение
данных и свойственных им процедур обработки в одном объекте, называется
инкапсуляцией и является одним из важнейших принципов ООП.
Еще одним фундаментальным понятием ООП является класс.
Классом называют шаблон, на основе которого создается конкретный
программные объект. То есть в классе описаны все свойства и методы,
определяющие поведение каждого объекта, созданного на основе этого класса.
Также принято каждый объект, созданный на основе класса называть
экземпляром этого класса.
Следующими важнейшими принципами ООП являются наследование и
полиморфизм.
Наследование – такая организация классов, которая подразумевает
создание новых классов на базе существующих и позволяет классу потомку иметь
(наследовать) все свойства класса – родителя.
Полиморфизм – означает, что рожденные объекты обладают информацией
о том, какие методы они должны использовать в зависимости от того, в каком
месте цепочки (дерева классов) они находятся, иными словами это концепция,
реализующая "множество методов в одном интерфейсе".
В структуре программных модулей разработанной ИС Можно четко
проследить механизм наследования. Всего присутствует три родительских класса:
InitializableController.php, AbstractEntity.php, AbstractFormType.php.
Первый является родителем для всех контроллеров ИС, он содержит
объявления таких методов и свойств, которые в дальнейшем используются в
каждом контроллере:
//проверка авторизации
/** @var AuthorizationChecker */
protected $authChecker;
//массив форм
/** @var array */
protected $forms;
//менеджер для доступа к модели
/** @var EntityManager */
protected $manager;
//массив объектов модели
/** @var array|EntityRepository[] */
74
protected $repositories;
//получение http-запроса
/** @var Request */
protected $request;
//доступ к сессии пользователя
/** @var Session */
protected $session;
//доступ к объекту текущего пользователя
/** @var User */
protected $user;
//доступ к текущему представлению
/** @var array */
protected $view;
//массив для отображения текущего раздела в панели
навигации
/** @var array */
protected $navigation;
Второй родительский класс является родителем для всех сущностей. В нем
выделено три основных свойства (атрибута сущности):
//Дата создания
/**
* @var \DateTime
* @ORM\Column(name = "createdat", type = "datetime")
*/
protected $createdAt;
//Идентификатор
/**
* @var int
* @ORM\Column(name = "id", type = "integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
//дата изменения
/**
* @var \DateTime
* @ORM\Column(name = "modifiedat", type = "datetime")
*/
protected $modifiedAt;
А также конструктор создания нового объекта класса:
public function __construct()
{
$this->createdAt = new \DateTime();
$this->modifiedAt = new \DateTime();
}
75
И триггер обновления объекта, который меняет свойство «Дата последнего
обновления записи»:
/**
* @ORM\PreUpdate
* @ORM\PrePersist
*/
public function preUpdate()
{
$this->modifiedAt = new \DateTime();
}
Последний родительский класс – это класс для форм ИС. В нем также
задаются основные константы, конструктор:
const METHOD_GET = 'GET';
const METHOD_POST = 'POST';
protected $method;
protected $name;
public function __construct($name, $method =
self::METHOD_POST)
{
$this->name = $name;
$this->method = $method;
}
public function getName()
{
return $this->name;
}
public function
setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array('method' => $this-
>method));
}
Следует заметить, что все описанные выше родительские классы
наследуются от фундаментальных классов фреймворка Symfony, которые
содержат базовые свойства и методы, разделяющие эти классы на три группы
MVC.
Каждый контролер обрабатывает запросы, отправляемые по
соответствующему маршруту. Описание того, какой контроллер должен

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

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