Аэропорт-курсовая (2). 1. Анализ предметной области
Скачать 382.22 Kb.
|
1. Анализ предметной области 1.1. Особенности предметной области Начнем с того, что для начала оказания услуг необходимо, чтобы пришел в аэропорт и зарегистрировался или заполнил данные «онлайн». Пассажир подходит к окну регистрации и сообщает свое имя, номер паспорта, возраст пол. Регистрация пассажира на рейс осуществляется специалистом или стойкой регистрации, регистратор проверяет правильность ввода данных, проверяет наличие паспорта и т.п. После ввода данных о пассажире регистратор узнает информацию о рейсе и уточняет дату и время вылета, изменения в расписании. В системе уже должна иметься вся информация о всех рейсах: место отправления, место прибытия, дата отправления, время отправления. После регистрации, пассажир ожидает рейса и в назначенное время отправляется на посадку. На рисунке 1 показана упрощенная организационная схема аэропорта. Галочками отмечены сущности (понятия), которые планируется реализовать в курсовой работе. А информацию о самолетах и персонале аэропорта в этой работе рассматривать не будем, потому реализовать все это вместе будет слишком сложно. Рисунок 1 – Организационная схема аэропорт 1.2. Описание процессов по подразделениям Бизнес-процесс – совокупность различных видов деятельности определенной группы людей, в рамках которой «на входе» используется один или более видов ресурсов, и в результате этой деятельности «на выходе» создается продукт, представляющий ценность для потребителя. Основными бизнес-процессами аэропорта являются: 1) Редактирование информации о рейсах (полетах) добавление рейса, удаление рейса поиск информации о рейсе 2) Ввод информации о пассажирах Добавление пассажира Поиск информации о пассажире 3) Регистрации Регистрация пассажира на рейс Поиск информации о регистрациях на рейс, например, получить список всех пассажиров, зарегистрированных на определенный рейс Выявление бизнес процессов в функционировании организации позволяет: Во-первых, упорядочить работу всех сотрудников, установить цели, последовательность ключевых действий и планируемый результат для каждого процесса. Во-вторых, снизить зависимость компании от сотрудников, поскольку работа строится не на личных компетенциях работников, а на отлаженном и документированном процессе. Даже если кто-то из числа сотрудников уволится, у компании будет необходимая информация о том, как должна вестись работа. Это позволит получить достаточно четкие и последовательные действия, ведущие к необходимому результату, от вновь принятых сотрудников и снизит временные и прочие затраты на их введение в курс дела. 1.3. Проблемы и способы их решенияПроблемы, которые могут возникнуть при осуществлении данной деятельности такие: Потеря билета пассажиром Потеря багажа Сбой в работе приложения или устройства регистрации Задержки рейсов Ошибки при вводе данных о пассажирах или рейсах Опоздание пассажира на регистрацию 1.4. Анализ существующих аналоговЕсть различные готовые информационные системы для управления аэропортом и информацию о них можно найти в интернете. Например, поисковик «Яндекса» сразу выдает информацию от двух из них: Информационная система «Аэропорт» от компании АВИАБИТ Система управления операционной деятельностью аэропорта IS_AODB от кампании integral Рассмотрим их более подробно. Информационная система «Аэропорт» от компании АВИАБИТ ИС «Аэропорт» — это комплексное решение, призванное обеспечить поддержку производственных, технологических и финансовых процессов авиационного предприятия. Оно позволяет решать задачи, связанные с организацией, подготовкой и выполнением работ по обеспечению авиационных перевозок в аэропорту. Развитие системы осуществляется с учетом требований российских и международных (ICAO, IATA) нормативных документов, рекомендаций и правил, регламентирующих деятельность аэропортов в области наземного обслуживания воздушных судов, пассажиров и организации воздушного движения. Основными функциями системы являются: управление процессом обслуживания рейсов и пассажиров; управление ресурсами (статичными и мобильными); управление персоналом; управление финансами; голосовое и визуальное информирование. ИС «Аэропорт» основывается на решениях, которые проверены временем и сочетают в себе надежность и удобство в повседневной работе, а также призваны решать следующие задачи: обеспечение безопасности полетов; эффективное планирование расписания и суточного плана обслуживания воздушных судов; сокращение времени на обслуживание, повышение качества; эффективное планирование и использование персонала и ресурсов, задействованных в обслуживании; сокращение издержек производства; сокращение реакции на сбои и задержки в технологическом процессе; уменьшение численности административного и обслуживающего персонала за счет повышения эффективности его работы; своевременное предоставление максимального объема оперативной информации каждому участнику производственного процесса с применением различных технических средств. При разработке системы учтены требования нормативных документов, регламентирующих деятельность эксплуатантов гражданской авиации РФ. Рис.2 Информационная система аэропорт компании АВИАБИТ Система управления операционной деятельностью аэропорта IS_AODB от кампании integral IS-AODB (Airport Operational Database) обеспечивает основную операционную деятельность аэропорта — прием и отправку воздушных судов. Система предназначена для хранения и управления основными данными и операциями аэропорта: планирование и управление расписанием, диспетчеризация взлетов/посадок и управление обслуживанием на перроне. Основные функциональные возможности системы Управление данными суточного плана полетов. Управление дневным оперативным расписанием. Управление технологией пассажирских терминалов и технологическими зонами аэропорта. Управление перроном. Управление, хранение и тиражирование технологических норм обслуживания ВС на перроне. Управление данными справочника ВС и компоновки их салонов. Управление справочниками авиакомпаний, аэропортов, городов и стран. Управление и хранение данных о договорах обслуживания авиакомпаний (handling agreement). Хранение и управление данными центровки воздушного судна AHM-560. Хранение и управление справочником норм провоза багажа авиакомпаниями. Отслеживание работоспособности системы. Интеграция с внешними системами: DCS, FIDS, BHS, ERP. Экспорт суточного плана полетов на веб-сайт. Рис.3 Информационная система аэропорт компании integral 1.5 Цели и задачиЦелью работы является создание и разработки программы для хранения, обработки данных и оптимизации процессов, упрощающих работу аэропорта. Реализовать программу требуется с использование методов и принципов объектно – ориентированного программирования: использования структур, классов, методов и т.п. Для выполнения цели, следует выполнить задачи: Анализ предметной области; Выбор эффективного метода решения задачи, включающее в себя описание основных свойство ООП; Разработка классов программы; Разработка алгоритма решения задачи; Реализация диалога с пользователем; Отладка и тестирование программы; 2. Моделирование и разработка системы на основе принципов ООП2.1 Постановка задачиПрограмма должна осуществлять такие функции как: Добавление новых пассажиров Вывод списка пассажиров Вывод списка рейсов Добавление нового рейса Регистрация пассажира на рейс Вывод информации о регистрациях Сохранение всей информации в файлы Загрузка всех данных из файлов 2.2. Разработка классовРазработаны следующие классы: 1) Passanger – содержит информацию о пассажире: ФИО пассажира, номер паспорта, возраст, пол, уникальный номер пассажира 2) Flight – содержит информацию о рейсе: место отправления, место назначения, дата вылета, время вылета уникальный номер рейса 3) Registration – регистрация на рейс, хранит пару чисел: Номер рейса Номер пассажира, зарегистрированного на этот рейс Рассмотренные классы хранят информацию только об одном объекте, например, пассажире. Для того, чтобы хранить информацию обо всех пассажирах, необходимо создавать массивы или списки этих объектов. Таким образом, у нас будет 3 списка: список пассажиров список рейсов список регистраций Для представления таких «списков» в программе будем использовать контейнер «вектор». Поэтому в программе у нас будут три вектора: vector passengers – вектор пассажиров vector vector 2.3. Функционирование разрабатываемой системыБудем считать, что нашей системой будут пользоваться специально обученные сотрудники аэропорта и они будут выполнять ввод данных о пассажирах, просматривать и сообщать информацию о рейсах и регистрировать пассажиров на рейсы. 2.4. Объектно-ориентированные принципы и компонентыОбъектно-ориентированное программирование (ООП) — программирование, основанное на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования. Объекты — это данные и функции, предназначенные для их обработки. Класс – это образ, определяющий структуру своих объектов. Самые основные принципы ООП это: Инкапсуляция – это соединение в классе данных и операций над данными в сочетании со скрытием ненужной для использования этих данных информации. Инкапсуляция также позволяет изменить реализацию класса без модификации основной части программы, если интерфейс остался прежним. Наследование – это процесс создания новых классов, называемых наследниками или производными классами, из уже существующих или базовых классов. Производный класс получает все возможности базового класса, но может также быть усовершенствован за счет добавления собственных. Базовый класс при этом остается неизменным. Полиморфизм – это свойство кода вести себя по-разному, в зависимости от ситуации, возникающей в данный момент выполнения программы. В нашей работе мы планируем использовать только инкапсуляцию, то есть размещение данных (переменных) и методов (функций) внутри классов. Использование наследования и полиморфизма в этой работе не требуется. 2.5 Хранение данных Данные, которые будут использованы при работе программы, будут храниться в текстовых файлах: Flight.txt Passangers.txt Registration.txt Формат этих файлов следующий: На первой строке указано целое число - количество записей в этом файле, то есть, количество пассажиров в файле flight.txt или регистраций в файле registrations.txt. Пример файла flight.txt 4 1 Tokyo New york 01.03.2022 11:00 2 Moscow New york 02.03.2022 11:00 3 Milan Paris 03.03.2022 11:00 4 Riga Moscow 04.03.2022 11:00 Пример файла passangers.txt 5 1 Ivan 0001 21 m 2 Ann 0002 22 f 3 Lena 0003 23 f 4 Nick 0004 24 m 5 Bob 0005 25 m Пример файла registrations.txt 7 1 1 1 2 1 3 2 5 2 2 4 5 4 1 3. Реализация системы на общесистемном языке программирования3.1. Выбор средств программной реализацииДля разработки данного программного обеспечения была выбрана интегрированная среда разработки Dev-C++. Языком разработки программного обеспечения был выбран язык программирования C++. Dev-C++– интегрированная среда разработки программного обеспечения и ряда других инструментов. Язык программирования С++ представляет высокоуровневый компилируемый язык программирования общего назначения со статической типизацией, который подходит для создания самых различных приложений. С++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. С++ имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы. С++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В нашей программе мы будем использовать один из таких контейнеров – vector для представления списков пассажиров, рейсов и регистраций. 3.2. Разработка алгоритма функционирования системыАлгоритм - конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения задачи. Наиболее распространённые способы записи алгоритма: словесный (запись на естественном языке); графический (запись с использованием графических символов); программный (тексты на языках программирования). Упрощенная схема алгоритма работы программы показана на рисунке ниже. Рис. 4 Обобщенный алгоритм работы программы 3.4. Описание диалога с пользователемДиалог – процесс обмена информацией между пользователем и программой. В созданной системе диалог с пользователем представлен в виде древовидной структуры меню. Изначально необходимо выбрать тип пользователя или завершить работу программы. Выбор осуществляется выбором цифры соответствующей пункту меню (рисунок 5). Рис.5 Окно для выбора типа пользователя При выборе типа пользователя, будет выведено меню возможных действий (рисунок 6, рисунок 7, рисунок 8). Рис.6 Окно пассажиров Рис.7 Окно полётов Рис.8 Окно регистраций Для завершения программы необходимо выбрать соответствующий пункт в меню (рисунок 9). Рис.9 Окно завершение работы Заключение В ходе выполнения курсового проекта была разработана система с древовидным интерфейсом для автоматизации деятельности службы такси, при помощи объектно-ориентированного подхода программирования. Данная система предназначена для использования: Медсестрой(регистратурой) Врачом В системе реализованы такие функции, как: Вывод списка пациентов; Добавление и удаления пациентов; Изменение информации о пациенте; Показывать информацию о пациенте; Список используемой литературы «Программы для клиник и медицинских центров» [Электронный ресурс]: https://www.livemedical.ru/tools/clinic/ [Дата обращения 18.06.21 ] «Управление бизнес процессами медицинской организации» [Электронный ресурс]: https://www.zdrav.ru/articles/4293657068-qqq-17-m4-13-04-2017-upravlenie-biznes-protsessami [Дата обращения 18.06.21 ] «Программы для клиник и медицинских центров» [Электронный ресурс]: https://www.livemedical.ru/tools/clinic/ [Дата обращения 18.06.21 ] «Бизнес процессы: понятие, виды, определения» [Электронный ресурс]: https://delayte-biznes.ru/osnovnye-biznes-processy-vidy-opisanie-i-analiz-biznes-processov/ [Дата обращения 18.06.21] “Что такое бизнес-процесс и описание бизнес процесса” [Электронный ресурс]: https://habr.com/ru/company/trinion/blog/342448/ [Дата обращения 18.06.21] “СИСТЕМНЫЙ АНАЛИЗ Описание предметной области” [Электронный ресурс]: https://studbooks.net/2023396/informatika/sistemnyy_analiz [Дата обращения 18.06.21] «Классы в C++» [Электронный ресурс]: https://code-live.ru/post/cpp-classes/ [Дата обращения 18.06.21] «Работа с файлами в С++» [Электронный ресурс]: http://cppstudio.com/post/446/ [Дата обращения 18.06.21] «Урок 154. Базовое наследование» [Электронный ресурс]: https://ravesli.com/urok-154-bazovoe-nasledovanie-v-c/#toc-0. [Дата обращения 18.06.21] Приложение Листинг программы C++ #include #include #include using namespace std; struct Passanger { int number; string name; string id; int age; char sex; void Print() { cout << "Passanger #" << number << ": " << name << " " << id << " " << age << " " << sex << endl; } }; struct Flight { int number; string from; string to; string date; string time; void Print() { cout << "Flight #" << number << " " << from << " -> " << to << " at " << date << " " << time << endl; } }; struct Registration { int flight_number; int passenger_number; void Print() { cout << "Passanger #" << passenger_number << " registered on the flight #" << flight_number << endl; } }; void AddPassanger(vector & passengers) { Passanger p; p.number = passengers.size() + 1; // new passanger number cout << "Input data for a new passanger" << endl; cout << "name: "; cin >> p.name; cout << "passport: "; cin >> p.id; cout << "age: "; cin >> p.age; cout << "sex: "; cin >> p.sex; passengers.push_back(p); } void AddFlight(vector { Flight f; f.number = flights.size()+1; cout << "Input data for a new flight" << endl; cout << "from: "; cin >> f.from; cout << "to: "; cin >> f.to; cout << "date: "; cin >> f.date; cout << "time: "; cin >> f.time; flights.push_back(f); } void AddRegistration(vector { Registration r; cout << "Input data for registration" << endl; cout << "flight number: "; cin >>r.flight_number; cout << "passenger number: "; cin >>r.passenger_number; registrations.push_back(r); } void SavePassengers(vector & passengers) { string filename = "passengers.txt"; // Имяфайла ofstream file(filename); // Создаем файловый поток для записи в файл for(int i=0; i < passengers.size(); i++) { file << passengers[i].number << " " ; file << passengers[i].name << " "; file << passengers[i].id << " "; file << passengers[i].age << " "; file << passengers[i].sex << " "; file << endl; } file.close(); } void SaveFlights(vector { string filename = "flights.txt"; // Имяфайла ofstream file(filename); // Создаем файловый поток для записи в файл for(int i=0; i < flights.size(); i++) { file << flights[i].number << " " ; file << flights[i].from << " "; file << flights[i].to << " "; file << flights[i].date << " "; file << flights[i].time << " "; file << endl; } file.close(); } void SaveRegistrations(vector { string filename = "registrations.txt"; // Имяфайла ofstream file(filename); // Создаем файловый поток для записи в файл for(int i=0; i < registrations.size(); i++) { file << registrations[i].flight_number << " "; file << registrations[i].passenger_number << " "; file << endl; } file.close(); } int main() { vector passengers { {1, "Ivan", "0001", 21, 'm'}, {2, "Ann", "0002", 22, 'f'}, {3, "Lena", "0003", 23, 'f'}, {4, "Nick", "0004", 24, 'm'}, {5, "Bob", "0005", 25, 'm'} }; vector { {1, "Tokyo", "New york", "01.03.2022", "11:00"}, {2, "Moscow", "New york", "02.03.2022", "11:00"}, {3, "Milan", "Paris", "03.03.2022", "11:00"}, {4, "Riga", "Moscow", "04.03.2022", "11:00"}, }; vector { // №рейса, №пассажира {1, 1}, {1, 2}, {1, 3}, {2, 5}, {2, 2}, {4, 5}, {4, 1} }; while(1) { cout << "0 - Exit" << endl; cout << "1 - Print passengers" << endl; cout << "2 - Print flights" << endl; cout << "3 - Print registrations" << endl; cout << "4 - Add a new passenger" << endl; cout << "5 - Add a new flight" << endl; cout << "6 - Add a new registration" << endl; cout << "7 - Save" << endl; // TODO: // 1) добавление пассажира + // 2) добавление рейса + // 3) регистрация пассажира на рейс + // 4) сохранение базы в файлы // 5) загрузка из файлов int x; cin >> x; if(x==0) { cout << "Bye!" << endl; break; } else if(x==1) { // печатьпассажиров for(int i=0; i< passengers.size() ; i++) { passengers[i].Print(); } cout << endl; } else if(x==2) { // печатьрейсов for(int i=0; i< flights.size() ; i++) { flights[i].Print(); } cout << endl; } else if(x==3) { // печатьрегистраций for(int i=0; i< registrations.size(); i++) { registrations[i].Print(); } cout << endl; } else if(x==4) { AddPassanger(passengers); } else if(x==5) { AddFlight(flights); } else if(x==6) { AddRegistration(registrations); } else if(x==7) { SavePassengers(passengers); SaveFlights(flights); SaveRegistrations(registrations); } } } |