Раздел 1. Анализ предметной области и формирование требований
Начальный этап любой серьезной разработки — это не написание кода, а глубокое исследование. В контексте курсовой работы этот раздел демонстрирует ваше умение мыслить как системный аналитик. Актуальность создания современной информационной системы продажи билетов обусловлена ростом цифровизации и необходимостью компаний повышать эффективность через автоматизацию бизнес-процессов. Цель данной работы — разработка информационной системы для автоматизации процесса продажи железнодорожных билетов. Объектом исследования является сам процесс продажи, а предметом — методы и инструменты его проектирования и автоматизации.
Для достижения этой цели необходимо решить следующие задачи:
- Проанализировать предметную область и выявить ключевые бизнес-процессы.
- Сформулировать функциональные и нефункциональные требования к системе.
- Спроектировать архитектуру и разработать модель базы данных.
- Обосновать выбор технологического стека для реализации.
- Описать основные сценарии работы системы.
Все требования к системе принято делить на две большие группы, которые отвечают на разные вопросы.
Функциональные требования (Что система делает?)
Здесь описываются основные функции, доступные разным ролям (акторам), в нашем случае — Пользователю и Администратору.
- Для Пользователя:
- Регистрация и аутентификация в системе.
- Поиск билетов по заданным параметрам (маршрут, дата).
- Просмотр расписания, доступных поездов и вагонов.
- Интерактивный выбор места на схеме вагона.
- Управление бронированиями в личном кабинете.
- Онлайн-оплата с использованием платежных шлюзов.
- Получение электронного билета в формате PDF или с QR-кодом.
- Для Администратора (административная часть):
- Управление расписаниями: добавление, изменение и отмена рейсов.
- Управление поездами и вагонами.
- Управление ценовой политикой и тарифами.
- Просмотр статистики продаж и управление данными клиентов.
Нефункциональные требования (Как система это делает?)
Эти требования определяют качественные атрибуты системы:
- Производительность: Система должна обеспечивать быстрый отклик даже при высоких нагрузках.
- Надежность: Бесперебойная работа и корректная обработка транзакций.
- Безопасность: Защита персональных данных и платежной информации.
- Масштабируемость: Архитектура должна позволять наращивать мощности при росте числа пользователей.
- Удобство использования (Usability): Интерфейс должен быть интуитивно понятным как для покупателей, так и для администраторов.
Раздел 2. Проектирование архитектуры будущей системы
Архитектура программного обеспечения — это его «генеральный план», который определяет, из каких крупных блоков состоит система и как они взаимодействуют между собой. Правильный выбор архитектуры на раннем этапе критически важен, так как он напрямую влияет на масштабируемость, надежность и сложность поддержки проекта в будущем. Для нашей задачи можно рассмотреть несколько подходов.
Чаще всего выбор стоит между монолитной и распределенной архитектурой. Монолит проще в разработке на старте, но сложен в масштабировании и обновлении. Распределенные системы, такие как микросервисы, наоборот, гибки и масштабируемы, но требуют больше усилий на этапе проектирования.
Для курсового проекта по разработке системы продажи ж/д билетов оптимальным выбором является клиент-серверная архитектура. Она четко разделяет логику отображения (клиент) и бизнес-логику с данными (сервер), что является отраслевым стандартом для веб-приложений.
Эта архитектура состоит из двух основных частей:
- Клиентская часть (Frontend): Это то, с чем взаимодействует пользователь — веб-интерфейс, созданный с помощью HTML, CSS и JavaScript-фреймворков. Его задача — отправлять запросы на сервер и отображать полученные данные в удобном виде.
- Серверная часть (Backend): Это «мозг» системы, который обрабатывает бизнес-логику. Он принимает запросы от клиента, взаимодействует с базой данных, обрабатывает платежи и возвращает клиенту результат.
Для повышения масштабируемости можно применить элементы микросервисной архитектуры. Например, вынести наиболее важные и независимые части функционала в отдельные сервисы. Это могут быть:
- Сервис аутентификации пользователей.
- Сервис управления расписаниями.
- Сервис бронирования и работы с билетами.
- Платежный сервис.
Взаимодействие между клиентом и сервером (а также между микросервисами) будет осуществляться через стандартизированный программный интерфейс — RESTful API. Это обеспечит гибкость и позволит в будущем легко подключить к системе новые клиентские приложения, например, мобильное.
Раздел 3. Разработка логической и физической модели базы данных
База данных — это «сердце» нашей информационной системы. В ней хранится вся критически важная информация: о пользователях, поездах, расписаниях и, конечно, билетах. Учитывая структурированный характер этих данных и необходимость обеспечения их целостности, наиболее подходящим решением является использование реляционной модели данных и СУБД вроде PostgreSQL или MySQL.
Процесс проектирования БД включает несколько последовательных шагов.
1. Выделение ключевых сущностей
На основе анализа требований мы можем выделить следующие основные сущности, которые станут таблицами в нашей базе данных:
- Пользователи (Users)
- Поезда (Trains)
- Станции (Stations)
- Маршруты (Routes)
- Расписания (Schedule_Entries)
- Вагоны (Cars) и Места (Seats)
- Бронирования (Bookings)
- Билеты (Tickets)
- Платежи (Payments)
2. Определение атрибутов и связей
Каждая сущность обладает набором атрибутов (например, Пользователь имеет имя, email, хеш пароля). Затем между сущностями устанавливаются связи:
- Один-ко-многим (1:M): Один Пользователь может иметь много Бронирований. Одно Бронирование может включать несколько Билетов.
- Многие-ко-многим (M:M): Один Маршрут может обслуживаться многими Поездами, и один Поезд может следовать по разным Маршрутам. Такая связь реализуется через промежуточную таблицу, в нашем случае — Расписания.
3. Построение ER-диаграммы
Визуальное представление сущностей, их атрибутов и связей называется ER-диаграммой (Entity-Relationship Diagram). В курсовой работе этот элемент является обязательным, так как он наглядно демонстрирует структуру всей базы данных. Диаграмма должна быть вставлена в работу в виде рисунка.
4. Нормализация базы данных
Чтобы избежать дублирования данных и аномалий при их обновлении, базу данных необходимо нормализовать. Цель — привести таблицы к третьей нормальной форме (3NF). Это означает, что все атрибуты в таблице зависят только от первичного ключа, а не от других неключевых атрибутов. Например, название станции должно храниться в таблице «Станции» и связываться с расписанием по ID, а не дублироваться в каждой записи о рейсе.
Раздел 4. Обоснование выбора технологического стека
Выбор инструментов для разработки (технологического стека) должен быть не случайным, а инженерным решением, основанным на требованиях проекта, скорости разработки и доступности специалистов. Разделим наш стек на две части: Backend и Frontend.
Backend
Для серверной части, отвечающей за логику, существует несколько популярных фреймворков. Сравним основные варианты:
- Java (Spring): Очень мощный и надежный фреймворк, идеален для крупных энтерпрайз-решений. Однако для курсового проекта он может быть избыточно сложным.
- PHP (Laravel): Популярен в веб-разработке, имеет низкий порог входа и большое сообщество.
- Python (Django): Сочетает в себе скорость разработки, строгую структуру и мощные встроенные инструменты («батарейки в комплекте»), такие как ORM для работы с БД и готовая административная панель.
Для нашей задачи оптимальным выбором является Python с фреймворком Django. Его философия «Don’t Repeat Yourself» и наличие встроенной админки позволяют быстро создать надежный и функциональный бэкенд, что идеально подходит для формата курсовой работы.
Frontend
Для создания интерактивного и отзывчивого пользовательского интерфейса сегодня используются JavaScript-фреймворки.
- Angular: Комплексный фреймворк от Google, предлагает строгую структуру, что хорошо для больших команд.
- Vue.js: Считается самым простым для изучения, гибок и имеет отличную документацию.
- React: Библиотека от Facebook, построенная на компонентном подходе. Обладает огромной экосистемой, высокой производительностью и позволяет создавать сложные интерактивные интерфейсы.
Выбор React для клиентской части является обоснованным решением. Его компонентный подход позволяет легко создавать переиспользуемые элементы интерфейса (например, карточку поезда или форму поиска), что значительно ускоряет и упрощает разработку.
Прочие ключевые технологии
- СУБД: PostgreSQL — мощная, бесплатная и надежная реляционная база данных.
- Система контроля версий: Git — является стандартом де-факто для отслеживания изменений в коде.
- Платежные шлюзы: Интеграция с сервисами вроде Stripe или аналогами для обработки онлайн-оплаты.
Раздел 5. Проектирование ключевых модулей и сценариев работы
Этот раздел переводит теоретические наработки (архитектуру, модель БД) в практическую плоскость. Здесь мы описываем, как именно система будет выполнять свои ключевые функции с точки зрения пользователя и взаимодействия компонентов. Для визуализации этих процессов принято использовать UML-диаграммы (Unified Modeling Language).
Рассмотрим два основных сценария работы системы.
1. Сценарий «Покупка билета пользователем» (Use Case)
Это основной пользовательский путь, который необходимо детально проработать. Для его визуализации идеально подходит диаграмма вариантов использования (Use Case Diagram).
Шаги сценария:
- Пользователь открывает сайт и вводит в форму поиска станцию отправления, станцию назначения и дату.
- Система (Backend) обрабатывает запрос, ищет в базе данных подходящие рейсы и возвращает их список.
- Пользователь выбирает подходящий поезд из списка.
- Система отображает схему вагонов этого поезда с доступными местами.
- Пользователь кликает на одно или несколько свободных мест.
- Система временно бронирует места и перенаправляет пользователя на страницу подтверждения и оплаты.
- Пользователь вводит данные и производит оплату через платежный шлюз.
- После успешной оплаты система генерирует PDF-билет и сохраняет его в личном кабинете пользователя, а также отправляет на email.
2. Сценарий «Управление расписанием администратором»
Этот сценарий описывает одну из ключевых функций административной панели.
Шаги сценария:
- Администратор авторизуется в системе и переходит в раздел «Управление расписаниями».
- Он нажимает кнопку «Добавить новый рейс».
- Открывается форма, где администратор выбирает поезд, маршрут, указывает дату и время отправления/прибытия, а также задает цены для разных типов вагонов.
- После заполнения всех полей администратор сохраняет изменения.
- Система проверяет данные на корректность и добавляет новую запись в таблицу `schedule_entries`. Рейс становится доступным для поиска пользователями.
Для более детального описания сложного взаимодействия между объектами (например, между клиентом, сервером, базой данных и платежной системой в момент бронирования) рекомендуется использовать диаграмму последовательности (Sequence Diagram). Она наглядно покажет, какие вызовы и в каком порядке происходят между компонентами системы.
Раздел 6. Обеспечение качества, безопасности и развертывания
Разработка не заканчивается на написании кода. Комплексный подход подразумевает планирование тестирования, обеспечение безопасности и подготовку к «выкладке» проекта в интернет (развертыванию).
Тестирование
Чтобы гарантировать качество и надежность системы, необходимо провести несколько видов тестирования:
- Модульное (Unit) тестирование: Проверка корректности работы самых маленьких, изолированных частей кода (отдельных функций или методов).
- Интеграционное тестирование: Проверка того, как разные модули системы (например, модуль бронирования и модуль оплаты) работают вместе.
- Системное (End-to-End) тестирование: Полная проверка пользовательских сценариев от начала до конца, имитирующая реальное использование системы.
Безопасность
Для системы, работающей с персональными данными и платежами, безопасность является абсолютным приоритетом. Необходимо предусмотреть следующие меры защиты:
- Безопасная аутентификация: Хранение паролей в хешированном виде с использованием «соли».
- Шифрование данных: Использование протокола HTTPS (SSL/TLS) для шифрования всего трафика между клиентом и сервером.
- Авторизация: Четкое разграничение прав доступа для обычных пользователей и администраторов.
- Защита от распространенных уязвимостей: Применение встроенных в фреймворки механизмов для защиты от SQL-инъекций и XSS-атак.
Развертывание (Deployment)
После того как система разработана и протестирована, ее нужно разместить на сервере, чтобы она стала доступна пользователям в интернете. Существует несколько подходов:
- Виртуальный или выделенный сервер: Традиционный способ, требующий ручной настройки веб-сервера (Nginx), сервера приложений (Gunicorn для Django) и базы данных.
- Облачные платформы (PaaS): Сервисы вроде AWS, Azure или GCP предоставляют готовые решения, которые упрощают процесс развертывания и масштабирования, хотя и могут быть дороже.
Заключение
В ходе выполнения данной курсовой работы была достигнута поставленная цель — спроектирована современная информационная система для автоматизации процесса продажи железнодорожных билетов.
Для этого был выполнен ряд ключевых шагов:
- Проведен детальный анализ предметной области и сформулированы исчерпывающие функциональные и нефункциональные требования.
- Обоснован выбор гибкой клиент-серверной архитектуры с возможностью применения микросервисного подхода.
- Разработана логическая модель реляционной базы данных, отвечающая принципам нормализации.
- Подобраны и аргументированы современные технологии для реализации: Django для бэкенда и React для фронтенда.
- Описаны ключевые пользовательские сценарии и подходы к обеспечению качества и безопасности.
Главный вывод заключается в том, что спроектированная архитектура и выбранные технологические решения полностью соответствуют поставленным требованиям и создают надежную основу для дальнейшей практической реализации, тестирования и внедрения системы.
В качестве возможных направлений для дальнейшего развития проекта можно рассмотреть:
- Разработку нативного мобильного приложения для платформ iOS и Android.
- Внедрение программы лояльности с бонусными баллами для постоянных клиентов.
- Создание модуля предиктивного анализа для прогнозирования спроса на билеты.
Список литературы
- ГОСТ 34.602-89 «Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы»;
- ГОСТ 34.601-90 «Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания».
- Гультяев А. К., «Microsoft Office Project 2007. Управление проектами: практическое пособие. » — СПб.: КОРОНА-Век, 2008 – 480с, ил.
- Атре Ш. Структурный подход к организации баз данных. – М.: Финансы и статистика, 1998.
- Вендров А.М. CASE – технологии. Современные методы и средства проектирования информационных систем. – М.: Финансы и статистика, 1998.
- Вендров А.М. Проектирование программного обеспечения экономических информационных систем.- М.: Финансы и статистика, 2000.
- Дейт К. Дж. ведение в системы баз данных. — 6-е изд. — Киев: Диалектика, 1998. — 784 с.
- Маклаков С.В. BPWin, ERWin. CASE – средства разработким информационных систем. – М.: Диалог – МИФИ , 1999.
- Липаев В.В. Проектирование программных средств. – М.: Высшая школа, 1990.
- Методическое руководство по проектированию ИС CASE средствами Platinum Technology (Login Work) BPWin, ERWin. – Пермь: ПГТУ, ГНИИМС, 2002.
- Алексунин В.А., Родигина В.В. «Электронная коммерция и маркетинг в Интернет.» — Учебное пособие. — М.: «Дашков и К0», 2005
- Балабанов И.Т. – «Торговля через виртуальный магазин» / «Электронная коммерция»/ 2004 г. С. 195–197.
- Дронов В. «PHP, MySQL и Dreamweaver MX 2004. Разработка интерактивных Web-сайтов.» – СПб.: БХВ-Петербург, 2005.
- Карпова Т.С. – «Базы данных: Модели, разработка, реализация» СПб.: Питер, 2002. – 304 с.: ил.
- Кавторева Я. «Интернет магазин. «Организация, налогообложение, учет.» — Фактор, 2009 — 119 с.
- Костяев Р.А. «Бизнес в Интернете: финансы, маркетинг, планирование» / Р.А Костяев – СПб. БХВ-Петербург, 2002. – 630 с.: ил.
- Лора Томсон, Люк Веллинг, «Разработка Web – приложений с помощью PHP и MySQL». Издательство “Вильямс” 2003г. Москва Санкт – Петербург, Киев.
- Орлов Л. «Как создать электронный магазин в Интернет», 2_е изд., М.: Бук. пресс, 2006. — 384 с.
- Разработка и поддержка Интернет — магазинов
- Харрис Э. «PHP/MySQL для начинающих.» Пер. с англ. – М.: Кудиц – Образ,2005. – 384 с.