Современные организации широко используют в своей работе информационные технологии, включая базы данных и автоматизированные информационные системы. Это способствует значительному улучшению качества обслуживания клиентов за счёт быстрого и эффективного сервиса, а также в значительной степени упрощает работу сотрудников и, как следствие, приводит к повышению производительности труда.
Информационные системы могут предоставлять отчеты по запросу, благодаря чему руководство обладает актуальными данными и может принимать более обоснованные решения. В целом, оптимизация управления ресурсами и процессами позволяет снизить затраты на ведение бизнеса и повышает конкурентоспособность компании.
Исходя из вышеизложенного следует, что задача разработки и внедрения информационных систем предприятия является актуальной задачей.
Целью работы является проектирование и разработка базы данных и информационной системы учета аренды автотранспорта.
Для достижения поставленной цели необходимо решить следующие задачи:
- провести анализ предметной области;
- создать техническое задание на разработку информационной системы;
- разработать модели информационной системы;
- реализовать информационную систему учета аренды автотранспорта;
- выполнить контрольный запуск информационной системы;
- описать последовательность шагов по внедрению информационной системы.
Объектом исследования является бизнес-процесс аренды автотранспорта.
Предметом исследования является база данных учета аренды автотранспорта.
1 Описание предметной области
Компания «АвтоАренда» предлагает широкий спектр услуг в сфере аренды автотранспорта. Клиенты могут воспользоваться услугой проката автомобиля без водителя для самостоятельного управления. Также компания организует трансферы по заранее согласованным маршрутам и предоставляет автомобили как на короткий, так и на длительный срок [1].
В дополнение к основным услугам компания предлагает круглосуточную техническую поддержку клиентов, возможность доставки автомобиля по указанному адресу и оперативное продление договора аренды прямо на месте. Клиентам доступны дополнительные опции: установка детского кресла, предоставление GPS-навигатора с актуальными картами России и Европы, а также автобокса для перевозки багажа на крыше.
Внедрение базы данных по учету аренды автотранспорта позволит получить следующие преимущества:
- Повышение эффективности бизнес-операций [2]: автоматизация процессов управления автопарком, отслеживание наличия транспортных средств, планирование графиков технического обслуживания и анализ использования автомобилей.
- Рост выручки: увеличение клиентской базы, автоматизация процессов и сокращение операционных издержек.
- Получение гибкой системы: возможность масштабирования системы в зависимости от количества запросов и операций [3].
Проектируемая система должна обеспечивать автоматизацию процессов аренда автотранспорта.
Функциональные требования к информационной системе учёта аренды автотранспорта включают:
- Создание и редактирование информации о клиентах, автомобилях и договорах аренды.
- Ведение истории всех арендных отношений с клиентами и автомобилями.
- Возможность просмотра отчётов о состоянии аренды и финансов.
- Управление клиентской базой, включая регистрацию новых клиентов, изменение их контактных данных и статуса.
- Возможность настройки прав доступа пользователей к различным функциям системы.
Требования к интерфейсу.
Интерфейс системы должен быть интуитивно понятным и простым в использовании.
Требования к безопасности.
Система должна обеспечивать защиту от несанкционированного доступа к данным.
Требования к интеграции.
ИС должна иметь возможность интеграции с сайтом организации для обеспечения возможности онлайн-записи.
ИС будет разрабатываться как клиент-серверное приложение, в качестве основной парадигмы будет использоваться объектно-ориентированный подход.
2 Проектирование базы данных
2.1 Этап концептуального проектирования
Концептуальное проектирование представляет собой начальный этап разработки базы данных [4], в ходе которого создается общая информационная модель данных, полностью независимая от конкретных технических реализаций. На этом этапе определяются основные сущности и их взаимосвязи.
Для предметной области проката автомобилей выделим следующие предметные области:
Скидка - описание скидок, которые может получить клиент в компании проката.
Клиент - описывает клиента автопроката.
Штраф - описание штрафов, которые может получить клиент за порчу арендуемого автомобиля.
Автомобиль - описывает арендуемый автомобиль.
СрокНадбавка - описание надбавок к оплате в зависимости от срока аренды.
Графически концептуальная модель представлена в виде ER-диаграммы на рисунке 1.
Как видно из диаграммы, многие сущности объединяются связью "многие-ко-многим", что в реляционной модели данных должно преобразовываться в дополнительную таблицу при дальнейшем проектировании.
2.2 Этап логического проектирования
Следующий этап — логическое проектирование — преобразует полученную концептуальную модель в структуру, учитывающую особенности выбранной модели данных. В процессе логического проектирования создаются схемы отношений, определяются первичные и внешние ключи, формируется логическая структура базы данных.
Логическая модель базы данных представлена на рисунке 2. Следует отметить, что в целом сущности логической модели соответствуют сущностям ранее сформированной концептуальной модели. Для реализации связей "многие-ко-многим" создана таблица "Сделка", которая описывает совершенные и действующие договоры аренды. Также созданы таблицы-справочники "ТипАвтомобиля" и "ГодКоэф", которые описывают типы кузовов автомобилей и надбавку в цене в зависимости от года выпуска автомобиля.
2.3 Этап физического проектирования
Завершающий этап — физическое проектирование — отвечает за создание конкретной реализации базы данных в выбранной СУБД. На этом этапе учитываются технические особенности системы, определяются способы физического хранения данных, создаются индексы и настраиваются методы доступа к информации.
Для реализации базы данных будет использоваться СУБД MySQL как одна из наиболее используемых и функциональных на данный момент.
В физической модели базы данных, представленной на рисунке 3, выбраны типы данных для каждого из атрибутов, соответствующие СУБД MySQL, а также названия таблиц и атрибутов переведены на английский язык для обеспечения лучшей совместимости с языками программирования [5] при последующей разработке интерфейса информационной системы проката автомобилей.
Следующим шагом является создание скрипта для генерации таблиц базы данных, в соответствии с разработанной физической моделью. Чтобы обеспечить правильность создания таблиц при многократном перезапуске скрипта, первым действием будет проверка их существования и удаления таблиц, как показано на рисунке 4.
Далее с помощью соответствующих запросов «CREATE» создаются все таблицы базы данных.
Полный листинг скрипта создания базы данных приведен в приложении к пояснительной записке.
3 Проектирование пользовательских интерфейсов
3.1 Список требуемых транзакций
В число основных транзакций, выполняемых менеджером компании по аренде автомобилей входит:
вывод списка автомобилей не старше заданного года;
вывод списка автомобилей заданной марки;
вывод списка автомобилей заданного производителя;
вывод списка клиентов;
вывод списка заказов за определенный период;
вывод списка незавершенных заказов.
3.2 Анализ транзакций на этапе логического проектирования
Для вывода списка автомобилей не старше заданного года следует выполнить выборку из таблицы Auto указав в условии, что поле year должно быть меньше заданного параметра. В результате запроса необходимо вывести поля brand, model, body, cost, year, year_fee, car_number. Для отображения названия кузова необходимо выполнить соединение таблицы Auto с таблицей CarBody с помощью внешнего ключа body. Для отображения надбавки за год авто, следует выполнить соединение таблицы Auto с таблицей YearFee с помошью внешнего ключа year_fee.
Для вывода списка автомобилей заданной марки следует выполнить выборку из таблицы Auto указав в условии, что поле model должно быть равно заданному параметру. В результате запроса необходимо вывести поля brand, model, body, cost, year, year_fee, car_number. Для отображения названия кузова необходимо выполнить соединение таблицы Auto с таблицей CarBody с помощью внешнего ключа body. Для отображения надбавки за год авто, следует выполнить соединение таблицы Auto с таблицей YearFee с помошью внешнего ключа year_fee.
Для вывода списка автомобилей заданного бренда следует выполнить выборку из таблицы Auto указав в условии, что поле brand должно быть равно заданному параметру. В результате запроса необходимо вывести поля brand, model, body, cost, year, year_fee, car_number. Для отображения названия кузова необходимо выполнить соединение таблицы Auto с таблицей CarBody с помощью внешнего ключа body. Для отображения надбавки за год авто, следует выполнить соединение таблицы Auto с таблицей YearFee с помошью внешнего ключа year_fee.
Для отображения списка клиентов следует выбрать поля s_name, f_name, m_name, address, phone из таблицы Client, а также поля name и value из таблицы Discount. Выполнить соединение таблицы Client с таблицей Discount с помощью внешнего ключа discount.
Для отображения списка заказов за определенный период необходимо прочитать записи из таблицы Contract и выполнить ее соединение с таблицами Client и Auto по внешним ключам client и auto соответственно. Полученный список необходимо отфильтровать по условию, в котором поле start_date больше или равно первого параметра и в то же время поле end_date меньше или равно второго параметра. Запрос должен выводить полное имя клиента (созданное объединением полей s_name, f_name и m.name), название автомобиля (объединение полей brand и model), номер автомобиля, дата начала аренды, дата окончания аренды.
Для отображения списка незавершенных заказов необходимо прочитать записи из таблицы Contract и выполнить ее соединение с таблицами Client и Auto по внешним ключам client и auto соответственно. Полученный список необходимо отфильтровать по условию, в котором поле end_date равно NULL.
3.3 Документация на пользовательские интерфейсы
Пользовательский интерфейс построен на основе веб-приложения и приведен на рисунке 5.
Он включает выпадающий список, содержащий следующие пункты:
год авто;
марка авто;
производитель авто;
клиенты;
заказы за период;
незакрытые заказы.
Также интерфейс включает два текстовых поля без названия, в которые, в зависимости от выбранного действия, могут вводиться параметры и кнопка "Применить", которая запускает выполнение соответствующей транзакции.
Также интерфейс содержит таблицу, в которой отображаются возвращаемые результаты.
3.4 Реализация транзакций средствами выбранной СУБД
Описание реализованных в СУБД транзакций представлено в таблице
Таблица 1. Описание реализованных в СУБД MySQL транзакций
Далее покажем исходный код скриптов для организации каждой из транзакций и результате их выполнения в СУБД MySQL.
Скрипт и результат выполнения процедуры GetCars показаны на рисунках 6 и 7.
Скрипт и результат выполнения процедуры GetCarsByModels показаны на рисунках 8 и 9.
Скрипт и результат выполнения процедуры GetCarsByBrand показаны на рисунках 10 и 11.
Скрипт и результат выполнения представления clients_info показаны на рисунках 12 и 13.
Скрипт и результат выполнения процедуры GetOrdersInDate показаны на рисунках 14 и 15.
Скрипт и результат выполнения процедуры GetCars показаны на рисунках 16 и 17.