Сохрани и опубликуйсвоё исследование
О проекте | Cоглашение | Партнёры
Выпускная квалификационная работа 09.03.03 Прикладная информатика
Источник: Белгородский государственный университет - национальный исследовательский университет (НИУ «БелГУ»)
Комментировать 0
Рецензировать 0
Скачать - 2,5 МБ
Enter the password to open this PDF file:
-
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ» (НИУ«БелГУ») ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК Кафедра Прикладной информатики и информационных технологий РАЗРАБОТКА ПОДСИСТЕМЫ БРОНИРОВАНИЯ И ПРОДАЖИ АВИАБИЛЕТОВ Выпускная квалификационная работа студента очной формы обучения направления подготовки 09.03.03. Прикладная информатика 4 курса группы 07001204 Босого Ярослава Андреевича Научный руководитель кандидат физико-математических наук доцент Кузьмичева Т.Г. БЕЛГОРОД 2016
СОДЕРЖАНИЕ ВВЕДЕНИЕ ................................................................................................................... 3 1 ИЗУЧЕНИЕ И АНАЛИЗ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИОННОЙ ПОДСИСТЕМЫ В АО “БЕЛГОРОДАВИА” ............................................................ 5 1.1 Общая характеристика структуры и деятельности “Белгородавиа” .... 5 1.2 Краткая характеристика подразделения или видов его деятельности . 9 1.3 Анализ существующих подсистем бронирования и продажи авиабилетов ................................................................................................................. 10 1.4 Обоснование необходимости автоматизации и цели создания подсистемы бронирования и продажи авиабилетов ............................................... 12 1.5 Разработка структурно функциональной диаграммы («КАК ЕСТЬ») по методологии SADT(IDEF0) .................................................................................. 13 1.6 Постановка задачи ................................................................................... 17 2 ОБОСНОВАНИЕ ПРОЕКТНЫХ РЕШЕНИЙ ...................................................... 19 2.1 Обоснование проектных решений по техническому обеспечению ... 19 2.2 Обоснование проектных решений по информационному обеспечению................................................................................................................ 21 2.3 Обоснование проектных решений по программному обеспечению .. 26 3 ПРОЕКТНАЯ ЧАСТЬ ............................................................................................. 28 3.1 Разработка структурно функциональной диаграммы («КАК ДОЛЖНО БЫТЬ») по методологии SADT(IDEF0) ................................................ 28 3.2 Разработка программных модулей ........................................................ 32 3.3 Описание контрольного примера реализации проекта ........................ 44 3.4 Калькуляция себестоимости научно-технической продукции ........... 51 ЗАКЛЮЧЕНИЕ .......................................................................................................... 58 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ................................................. 59 ПРИЛОЖЕНИЯ .......................................................................................................... 64 2
ВВЕДЕНИЕ Темой данной выпускной квалификационной работы является разработка и создание подсистемы бронирования и продажи авиабилетов. Актуальность выбранной темы обусловлена тем, что в настоящее время в РФ отсутствует такая отечественная подсистема, которая бы обеспечивала работу специалиста в авиакассе. В основном используются подсистемы из зарубежных стран, на которых хранятся все сведения о пассажирах и их перелётах. Из-за этого очень большое количество средств тратится на обслуживание данного программного обеспечения и для оптимальной работы с данным продуктом зачастую требуется бесперебойное подключение к сети интернет. Целью работы является разработка подсистемы бронирования и продажи авиабилетов, предназначенной для процесса работы авиакасс в России. В соответствии с целью задачами выпускной квалификационной работы будут являться: – изучение предметной области; – анализ структуры и организации деятельности АО “Белгородавиа”; – выявление проблем информационной поддержки авиакасс; – оценка экономической эффективности внедрения разработки бронирования и продажи авиабилетов; – проведение анализа и выбор средств и технологий для разработки подсистемы; – разработка функциональных моделей и создание программного продукта для работы в авиакассе; Выпускная квалификационная работа состоит из введения, 3 разделов: – Изучение и анализ использования информационной подсистемы в АО “Белгородавиа”; 3
– Обоснование проектных решений автоматизированной подсистемы бронирования и продажи авиабилетов; – Проектная часть; Так же в ВКР включено заключение, список использованных источников и приложения. В первой разделе выпускной квалификационной работы описывается общая характеристика структуры и деятельности АО “Белгородавиа”, краткая характеристика подразделения или видов его деятельности, анализ существующих автоматизированных подсистем бронирования и продажи авиабилетов, обоснование необходимости автоматизации и цели создания подсистемы, выделяются основные задачи. Во втором разделе выпускной квалификационной работы выявляется обоснование бронирования программных и продажи решений автоматизированной авиабилетов. Принимаются подсистемы решения по технологическому, информационному и программному обеспечению. В третьей разделе происходит анализ и оценка эффективности программных решений информационной подсистемы, создается и тестируется готовый программный продукт. Выпускная квалификационная работа включает в себя 5 таблиц, 45 рисунков 4
1 ИЗУЧЕНИЕ И АНАЛИЗ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИОННОЙ ПОДСИСТЕМЫ В АО “БЕЛГОРОДАВИА” 1.1 Общая характеристика структуры и деятельности “Белгородавиа” Полное фирменное наименование Общества: Акционерное общество «Белгородское авиапредприятие». Местонахождение Общества: 308000, г. Белгород, Проспект Богдана Хмельницкого, дом 166. Акционерное общество “Белгородавиа”, именуемое в дальнейшем “Общество”, приобрело свои права юридического лица с момента его государственной регистрации (30 августа 1954 года) и осуществляет свою деятельность в соответствии с положениями настоящего Устава, действующего законодательства Российской Федерации, и на основании полученных сертификатов (Сертификат АС, АБ; Сертификат на международный аэропорт, на обслуживание пассажиров и грузов, на штурманское обеспечение, на аэропортовскую деятельность, на техническое обслуживание; ГОСТ ISO 9001-2011; СПАСОП; ЭСТОП) Рассмотрим технические характеристики. Аэропорт Белгорода имеет одну ВПП с искусственным асфальтобетонным покрытием длинной 2 500 и шириной 45 метра. Максимальная взлётная масса воздушного судна составляет 190 тонн. Аэропорт может принимать все узкофюзеляжные и некоторые широкофюзеляжные самолеты. При максимальной загруженности аэропорт может осуществлять до 16 взлётно-посадочных операций в час. Пропускная способность нового аэровокзального комплекса — до 450 пассажиров в час: 300 — на внутренних рейсах и 150 на международных. По сравнению с 2010 годом, в 2011 объём пассажирских перевозок увеличился на 45 % и составил 132 тыс. человек. За 5 месяцев 2012 года увеличение по сравнению с аналогичным периодом прошлого года составило 47 % [30]. 5
Грузовой терминал общей площадью 1000 м² рассчитанный на одновременное хранение международных и внутренних грузов и почты объёмов до шести тонн. Расчетный грузооборот участка по обработке грузов и почты 2,3 тонны в сутки. На рисунке 1.1 представлена организация подразделений предприятия. Рисунок 1.1 – Организационная модель предприятия 6
Первые четыре слоя организационной модели составляют различного рода директора, на них возлагается: общее руководство производственнохозяйственной и финансово-экономической деятельностью предприятия; организация взаимодействия всех структурных подразделений, цехов и производственных единиц; обеспечение выполнения всех принимаемых предприятием обязательств, включая обязательства перед бюджетами разных уровней и внебюджетными фондами, а также по договорам; создание условий для внедрения новейшей техники и технологии, прогрессивных форм управления и организации труда; принятие мер по обеспечению здоровых и безопасных условий труда на предприятии; контроль за соблюдением законодательства Российской Федерации в деятельности всех служб; защита имущественных интересов предприятия в суде, органах государственной власти [28]. Справочная служба занимается приемом входящих звонков и выдачей необходимой информации для клиентов. Главной целью службы организации перевозок является обеспечение безопасности и регулярности полетов, поддержание высокого уровня культуры обслуживания пассажиров, грузовой клиентуры. Служба организации перевозок является производственной службой аэропорта, которая обеспечивает обслуживание пассажиров, обработку багажа, груза и почты на внутренних и международных воздушных линиях. Финансово-экономическая служба: – ведение бухгалтерского учета в соответствии с российским законодательством; – представление налоговой и статистической отчетности в контролирующие органы; – формирование международной финансовой отчетности; – ведение управленческого деятельности; – управление финансами; 7 учета финансово-хозяйственной
– планирование и бюджетирование; – осуществление платежей, привлечение финансирования, проведение финансовых операций; – внутренний контроль; – финансово-экономический анализ [29]. Служба по управлению персоналом занимается работой по комплектованию кадров предприятия руководит. А также организует работу на предприятии и проводит систему мероприятий, направленных на повышение квалификации работников. Служба авиационной безопасности система органов безопасности аэропортов, осуществляющая в пределах своих полномочий решение задач по обеспечению авиационной безопасности Инженерно-авиационная служба осуществляет: проверку содержания самолётов, вертолётов, планёров, авиационных двигателей, вооружения и оборудования в исправном и готовом к эксплуатации состоянии. Занимается также организацией и осуществлением технически правильного использования авиационной техники, руководит технической подготовкой лётного и инженерно-технического состава, научно-исследовательской работой по совершенствованию авиационной техники, разрабатывает руководства и наставления по техническому обеспечению, информирует командиров о состоянии авиационной техники, оказывает помощь руководителям полётов по руководству действиями лётного состава Аэродромная служба осуществляет ряд задач: – эксплуатационное содержание и текущий ремонт аэродромных покрытий, водоотводных и дренажных систем, грунтовой части летного поля, внутриаэропортовых дорог; – разработка изменений к схемам руления и расстановки воздушных судов на перроне и местах стоянок; – обеспечение информацией об ограничениях, действующих на аэродроме; 8
– внесение изменений в документы аэронавигационной информации; – согласование и контроль за строительством объектов на аэродроме и приаэродромной территории; – обеспечение контроля за работой сторонних организаций на аэродроме. 1.2 Краткая характеристика подразделения или видов его деятельности В АО ”Белгородавиа” программным обеспечением, которое позволяет производить бронирования и продажу авиабилетов занимаются два подразделения (службы): Кассы аэровокзала и служба информационных технологий и связи. Кассы аэропорта являются непосредственно связующим звеном между пассажирами и рейсами, то есть они относятся к категории конечного пользователя. В кассах аэропорта организуется снятие с брони и продажа билетов пассажиру или просто продажа авиабилетов без предварительного бронирования. Служба информационных технологий и связи занимается: предоставлением технической компьютерной поддержки, включая установку и техническое обслуживание серверов, персональных компьютеров и программного обеспечения; соблюдает стандарты в отношении компьютерного оборудования; аппаратным и техническим сопровождением конференций планирования и совещаний; поддержкой общеорганизационных инфраструктуры ресурсов и других программ систем автоматизации делопроизводства; налаживанием работы электронной почты и программное обеспечение для коллективной работы; обеспечением безопасности прикладных и серверных данных и защиты компьютеров от вирусов, хакеров и аналогичных угроз; обслуживанием сотовых телефонов, 9
коммутационных телефонных узлов и факсимильной связи, а также услуги по проведению аудио- и видеоконференций; обеспечением бесперебойной работы и аварийного восстановления данных. В данной работе нас интересует техническое обслуживание программного обеспечения, так как служба информационных технологий и связи занимается установкой, дальнейшей настройкой и изменением программного обеспечения необходимого для бронирования и продажи авиабилетов. 1.3 Анализ существующих подсистем бронирования и продажи авиабилетов В современной России отсутствуют подобные подсистемы. Отечественные авиакассы используют следующие системы бронирования. 1) Компьютерная система бронирования “Amadeus”, представленная на российском рынке с 1993 г. Вместе с увеличением интенсивности резервирования растет и число агентств - пользователей системы. Amadeus имеет доступ к ресурсам более 780 зарубежных и 12 российских авиакомпаний В России, работающих с системой Amadeus; – Более 800 терминалов, подключенных к системе Amadeus в России; – Самые низкие цены на подключение; – Гибкая система оплаты. – Программные продукты, работающие в операционной среде Windows; – Автоматическое заполнение и печать бланков ручной выписки билетов на все основные авиакомпании, представленные на российском рынке; – Доступ к конфиденциальным тарифам, вводимым крупнейшими авиакомпаниями для своих агентов самостоятельно; 10
– Возможность создания собственной базы данных конфиденциальных тарифов, полученных от авиакомпаний; – Возможность отправки информации (расписание, подтверждение бронирования, маршрут, счет для оплаты и т.д.) непосредственно из системы. – Выбор наиболее оптимального способа подключения, конфигурации. 2) Система GALILEO - это целый комплекс встроенных подсистем, каждая из которых предназначена для выполнения задачи получения полной информации и обеспечения простого доступа к ресурсам 527 авиакомпаний. Galileo Availability - обеспечивает доступ к информации о наличии свободных мест на рейсы более чем 500 авиакомпаний, при этом имеется возможность обращаться непосредственно к базам данных большинства авиакомпаний, а по отдельным авиакомпаниям выбирать свободные места вплоть до последнего на момент запроса; Galileo Sell - позволяет бронировать места из экрана наличия мест, при этом агент может за один запрос осуществить бронирование мест на рейсы любых типов (прямые, стыковочные и с любым набором промежуточных посадок) по необходимому маршруту; Galileo Advance Seat Reservation - позволяет осуществлять резервирование конкретного места (с номером) в салоне самолета; Galileo Enhanced Booking File Servicing - позволяет формировать запросы в системы бронирования авиакомпаний в едином формате; 3) Worldspan работает в России с 1994 года. Представители компании приложили много сил, чтобы практически сразу обеспечить расширенные возможности клиентам по бронированию рейсов авиакомпаний Аэрофлот и Трансаэро и прилагает большие усилия для привлечения авиакомпаний, выполняющих внутренние перевозки. Из представленных в системе авиакомпаний, более 200 бронируются в режиме прямого доступа, т.е. дают возможность пользователю практически эмулировать экран той или иной авиакомпании на своем компьютере. Для 11
обеспечения наиболее полной и точной информации по тарифам система Worldspan использует две тарифные базы данных, оригинальную, наиболее полно перекрывающие американский континент, а также SITA Airfare, которую традиционно пользуются перевозчики в остальном мире [27]. 1.4 Обоснование необходимости автоматизации и цели создания подсистемы бронирования и продажи авиабилетов Необходимость разработки обусловлена тем, что на данный момент российские авиаперевозчики используют в основном иностранные сервисы бронирования и продажи авиабилетов. Все сведения о пассажирах и их перелётах хранятся на серверах за границей. Поэтому необходимо создать отечественный программный продукт, который будет использоваться на территории РФ. Автоматизированная подсистема бронирования и продажи авиабилетов создается с целью: – уменьшения времени на поиск из списка рейсов; – снижение стоимости авиабилетов; – системности в организации архива работ; – организации рабочего процесса; – организации процесса взаимодействия между клиентом и сотрудниками; Так же подразумевается создание соответствующего программного средства для упрощения взаимодействия сотрудников и облегчения выполнения их работы. Перед разработкой подсистемы заказчик и разработчик должны ясно представлять, какие функциональные возможности будут заложены в подсистему, и как будет организовано функциональное взаимодействие внутри подсистемы. 12
1.5 Разработка структурно функциональной диаграммы («КАК ЕСТЬ») по методологии SADT(IDEF0) Построение функциональных моделей должно решить большую часть проблем рассмотренных в предыдущей главе. Построение происходит путём разбиение контекстной диаграммы которые на функциональные подсистемы, делятся на подфункции, а те, в свою очередь, на конкретные процедуры. Для этих целей используем известные методологии IDEF0, IDEF3 и DFD. Кроме того, данные модели помогают понять, где находятся слабые места, в чем будут состоять преимущества новых процессов и насколько измениться эффективность деятельности работы авиакассы. USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 18 .04 .2 016 REV: 07 .06 .2 016 NOTES: 1 2 3 4 5 6 7 8 9 10 WORKING DRAFT RECOMMENDED PUBL ICATION Норм ат ив ные до кум ен т ы Инфо рм ация о кл и ент ах READER DATE CONTEXT: TOP Ли це нз ия на пр одажу Бр он ир ова ни е и пр одажа ав иа би л ет ов 0р . От че т ы 0 Ка сси р NODE: TITLE: Бронирование и продажа авиабилетов NUMBER: A-0 Рисунок 1.1 - Контекстная диаграмма («КАК ЕСТЬ») Далее необходимо детализировать деятельность подсистемы, то есть создать диаграмму-декомпозицию. 13
Декомпозируем контекстную диаграмму на 4 функциональных блоков (см. рисунок 1.2): USED AT: – «Работа в авиакассе»; – «Работа с бронью»; – «Создание заказа»; – «Составление отчета»; AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 07 .06 .2 016 NOTES: 1 2 3 4 5 6 7 8 9 10 Ли це нз ия на про да жу WORKING DRAFT RECOMMENDED PUBL ICATION READER DATE CONTEXT: A-0 Инфо рм ация о н е пр одан ных би л е т а х Ра бо т а в а ви ака ссе 0р . Инфо рм ация о про да нн ых би л е т а х 1 Норм ат ив ные до кум ен т ы Ра бо т а с бро нью Инфо рм ация о кл ие нт ах 0р . 2 Выкупл енн ые с бр он и бил ет ы Соз дан ие з а каз а 0р . 3 Ифор ма ци я по з а ка з ам Сост ав л ен ие от че т а 0р . От че т ы 4 Ка сси р NODE: Бронирование и продажа авиабилетов TITLE: NUMBER: A0 Рисунок 1.1 - Диаграмма декомпозиции Прежде всего, разрабатываемая подсистема нацелена на автоматизацию деятельности отдела по работе с клиентами. Подсистема должна обеспечивать бронирование и продажу авиабилетов. Далее каждый из процессов был также детализирован, используя описанные выше методологии. В первую очередь необходимо рассмотреть работу в авиакассе: Декомпозируем функциональный блок «Работа в авиакассе» еще на 4 действия (см. рисунок 1.3): 14
USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 07 .06 .2 016 WORKING DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о кл и ен т а х READER DATE CONTEXT: A0 Ли це нз ия на про да жу Ра бо т а с кл и ент ам и 0р . Во з в ра ще нный би л е т 1 Обно вл ен ие баз ы дан ных Согл аш ен ие с кл и ен т ом Офор мл ен ие выда чи ил и воз вр ат би л е т а 0р . 0р . Инфо рм ация о н е пр одан ных би л е т а х 3 2 Би л е т и че к Выда ча до кум ен т о в 0р . 4 Инфо рм ация о пр одан ных бил ет а х Ка сси р NODE: Работа в авиакассе TITLE: NUMBER: A1 Рисунок 1.2 - Декомпозиция "Работа в авиакассе" Таким же образом детализируем процессы «Работа с бронью» и «Создание заказа» (см. рисунок 1.4, 1.5), используя методологию IDEF0, которая используется для создания функциональных рассматривает отношения между всеми видами работ. 15 моделей и
USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 07 .06 .2 016 WORKING DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о кл ие нт ах READER A0 Бр он ир ова ни е м ест 0р . DATE CONTEXT: Ли це нз ия на про да жу 1 Инфо рм ация о з а бр он иро ва нно м м ест е Выкуп брон и Выкупл енн ые с бро ни би л е т ы 0р . 2 Ка сси р NODE: Работа с бронью TITLE: NUMBER: A2 USED AT: Рисунок 1.3 - Декомпозиция "Работа сREADER бронью" DATE CONTEXT: DATE: 20 .04 .2 016 WORKING AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов REV: 20 .04 .2 016 DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о п ро дан ных би л е т а х Норм ат ив ные докуме нт ы Ра бо т а с п ол уче нн ой ин фо рм ацией Выкупл енн ые с бро ни би л е т ы Инфо рм ация о н е пр одан ных би л е т а х A0 0р . Инфо рм ация о про да жа х 1 Офор мл ен ие з а каз а Ифор ма ци я п о з аказ а м 0р . 2 Пере да ча ин фор ма ци и в другие от де л ы 0р . 3 Ка сси р NODE: TITLE: Создание заказа NUMBER: A3 Рисунок 1.4 - Декомпозиция "Создание заказа" 16
Создаем диаграмму дерева узлов. Диаграмма дерева узлов показывает иерархию работ в модели и позволяет рассмотреть всю модель целиком, но не показывает взаимосвязи между работами USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 20 .04 .2 016 NOTES: 1 2 3 4 5 6 7 8 9 10 WORKING DRAFT RECOMMENDED PUBL ICATION READER DATE CONTEXT: TOP A-0 Бр он ир ова ни е и пр одажа ав иа би л ет ов 0р . Ра бо т а в а ви ака ссе 0р . Ра бо т а с бро нью 1 0р . Ра бо т а с кл и ент ам и Обно вл ен ие баз ы дан ных Выда ча до кум ен т о в TITLE: Сост ав л ен ие от че т а 0р . 4 Соз дан ие з а каз а 2 0р . Бр он ир ова ни е м ест Офор мл ен ие выда чи ил и Выкуп брон и во з в ра т бил ет а NODE: 0 3 Ра бо т а с п ол уче нн ой ин фо рм ацией Офор мл ен ие з а каз а Пере да ча ин фор ма ци и в другие от де л ы Бронирование и продажа авиабилетов NUMBER: A0 Рисунок 1.6 - Диаграмма узлов подсистемы «Бронирования и продажи авиабилетов» 1.6 Постановка задачи Основная задача разработки выпускной квалификационной работы состоит в создании подсистемы, которая будет работать в АО “Белгородавиа”, и возможно в других отечественных аэропортах, как основная подсистема авиакассы по бронированию и продаже авиабилетов. Тип проектируемой подсистемы: это информационная подсистема решений поставленной задачи, которая будет рассчитывать необходимые для подсистемы решения. Под разработкой подсистемы подразумевается решение следующих задач: 17
– Построение единой информационной подсистемы для работы отечественных авиакасс, которая будет включать в себя взаимосвязанные между собой функции (бронирование и продажу); – Разработка задачи бронирования авиабилета; – Разработка задачи продажи авиабилета; – Ведения отчетности по рейсам, клиентам, сотрудникам и.т.д. В результате создания подсистемы должны быть улучшены значения следующих показателей: – числа будущих клиентов, за счет уменьшение цены на билет; – времени доступа к списку авиабилетов и другой информации; – повышения качества (полноты, точности, достоверности, своевременности, согласованности) информации; – времени взаимодействия сотрудников с клиентами; – уменьшение затрат на ПО для работы на авиакассе. Если будут соблюдены данные требования, это позволит говорить о том, что подсистема будет полностью работоспособной и готовой для эксплуатации. 18
2 ОБОСНОВАНИЕ ПРОЕКТНЫХ РЕШЕНИЙ 2.1 Обоснование проектных решений по техническому обеспечению Техническое обеспечение – совокупность технических средств (технические средства предназначенных для обработки, создания хранения, передачи, необходимой обмена), автоматизированной подсистемы. Так же к техническому обеспечению относятся различные методические материалы, техническая документация и технический персонал отвечающий за работу подсистемы Технические средства обработки данных, программное обеспечение и организация БД в совокупности определяют информационно- технологическую архитектуру ИС (ИТА). Различают следующие типы ИТА: 1) централизованная - хранение и обработка данных на центральном компьютере, удобство администрирования ИС. Недостатки: ограничение на рост объемов хранимых данных, увеличение производительности ИС, высокий уровень риска неработоспособности ИС; 2) Система телеобработки данных - наиболее дешевый способ организации одновременной работы большого числа пользователей при использовании мощного центрального компьютера. Высокопроизводительные каналы телекоммуникации позволяют не зависеть от места обработки или хранения данных; 3) Многомашинный комплекс - интеграция нескольких компьютеров, расположенных в непосредственной близости друг от друга, в один "объединенный" компьютер; возможность эффективного выполнения сложных вычислений, повышение надежности ИС, рост объемов хранимых данных, но сохранения централизованного характера хранения и обработки данных и программ, зависимости пользователей от места обработки данных; 19
4) Телекоммуникационная ИГА - наиболее распространенный вариант построения системы обработки данных для крупномасштабных ИС на базе компьютерных сетей (КС) и их ассоциации. Поддержка программных и технических интерфейсов осуществляется в соответствии со стандартами OSI (Open System Interconnection) [26]. В данной работе организацией является АО “Белгородавиа”, поэтому в этом случае используется многомашинный комплекс. Чтобы организовать связь между большим количеством вычислительной техники используют клиент серверную технологию. Данная технология работает по принципу разделения сетевой нагрузки между клиентом (заказчиком услуг) и сервером (поставщиком услуг). Клиент и сервер взаимодействуют с помощью сетевых протоколов и находятся на разных вычислительных машинах. Клиент посылает запрос на сервер на предоставление ресурса, сервер принимает запрос и посылает клиенту необходимую информацию. Основные технические характеристики клиентской части создания подсистемы представлены в таблице 2.1. Таблица 2.1 - Типовая конфигурация клиента. Наименование Характеристика Процессор Intel® Core™2 Duo Жесткие диски Tosiba MK2555GSX Модули памяти. Flash-накопители silicon power 8gb Видеокарты ASUS nvidia geforce g105m Звуковые карты NVIDIA High Definition Audio Приводы CD-R/RW DVD-ROM/RW TSSTcorp CDDVDW TS-L633B Модемы Asus RT-G32 Мышь оптическая. Defender Datum MM-075 Сетевой фильтр Сетевой фильтр (3 розетки) Pilot GL 5м Монитор Универсальный монитор 17”Samsung 20 для
Минимальные технические характеристики серверной части, используемой для разработки подсистемы: Сервер базы данных развернут на HP9000 SuperDome №1, минимальная конфигурация которого: CPU: 16 (32 core); RAM: 128 Gb; HDD: 500 Gb; Network Card: 2 (2 Gbit); Fiber Channel: 4. Сервер сбора, обработки и загрузки данных развернут на HP9000 SuperDome №2, минимальная конфигурация которого: CPU: 8 (16 core); RAM: 32 Gb; HDD: 100 Gb; Network Card: 2 (1 Gbit); Fiber Channel: 2. Сервер приложений развернут на платформе HP Integrity, минимальная конфигурация которого: CPU: 6 (12 core); RAM: 64 Gb; HDD: 300 Gb; Network Card: 3 (1 Gbit) [31]. Приведенные сервера подключены к дисковому массиву HP XP с организацией сети хранения данных. Минимальный объем свободного пространства для хранения данных на дисковом массиве составляет 5 Тб. 2.2 Обоснование проектных решений по информационному обеспечению Под информационным обеспечением понимается предоставление информационных ресурсов, которые относятся к определенному объекту или субъекту, в данной работе этим объектом является подсистема бронирования и продажи авиабилетов Приводятся требования: 1) к составу, структуре и способам организации данных в системе; 2) к информационной совместимости со смежными системами; 3) по использованию республиканских, отраслевых общесоюзных и классификаторов, зарегистрированных унифицированных документов и классификаторов, действующих на данном предприятии; 21
4) по применению систем управления базами данных; 5) к структуре процесса сбора, обработки, передачи данных в системе и представлению данных; 6) к защите данных от разрушений при авариях и сбоях в электропитании системы; 7) к контролю, хранению, обновлению и восстановлению данных [31]. Так же при разработке подсистемы будет использоваться такое понятие как база данных. База данных представляет собой совокупность некоторых данных, которые взаимосвязаны и над которыми происходит процесс обработки и поиска на определенной вычислительной машине. На рисунке 2.1 показана модель данных разрабатываемой подсистемы. Рисунок 2.1 - Модель данных Основные объекты системы: – Самолет – объект, справочный элемент системы, предназначенный для хранения данных о самолетах находящихся в распоряжении предприятия; 22
– Класс места - объект, справочный элемент системы о названиях классов в самолете и ценах на эти классы; – Авиакомпания объект, - справочный элемент системы, предназначенный для хранения данных о авиакомпаниях, выполняющих рейсы; – Клиент объект, - соответствующий реальному клиенту, приходящему в авиакассу. – Сотрудники - объект, соответствующий реальному лицу предприятия. – Должности - объект, справочный элемент системы, предназначенный для хранения данных о должностях предприятия; – Город - объект, справочный элемент системы, предназначенный для хранения данных о городах отправления. – Продажа – объект, справочный элемент системы, предназначенный для хранения данных о проданных билетах. – Рейс - справочный элемент системы, предназначенный для хранения данных о рейсах. – Бронирование - справочный элемент системы, предназначенный для хранения данных о забронированных авиабилетах. Как видно из рисунка все таблицы связаны между собой отношением «один-ко-многим». Это отношение связывает одну строку первой таблицы с несколькими записями второй с помощью первичного или уникального ключа базовой таблицы и соответствующего ему внешнего ключа связанной таблицы. Также видно, что все связи являются не идентифицирующей, так как ни один из первичных ключей родительской дочерней таблицы. таблицы Каждую запись не содержит таблицы внешний можно ключ однозначно идентифицировать то первичному ключу таблицы. На основе построенной модели данных строится инфологическая модель данных. Инфологическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среды хранения. По сути 23
инфологическая модель отражает существующую схему взаимосвязи таблиц на языке определенной СУБД (Система управления базами данных). На рисунке 2.2 представлена инфологическая модель разрабатываемой подсистемы. Рисунок 2.2 - Инфологическая модель БД В таблице 2.2 приведена даталогическая модель подсистемы. Таблица 2.2 – Таблица даталогической модели. Сущность 1 Клиент Идентификатор таблицы 2 KLIENT Атрибут Идентификатор поля 3 4 Код ФИО Серия паспорта Номер паспорта EMAIL Мобильный телефон 24 ID FIO SERIA_P NOMER_P EMAIL MOBTEL Тип поля 5 SMALLINT VARCHAR INTEGER INTEGER VARCHAR VARCHAR
Продолжение таблицы 2.2. 1 Продажа Класс мест Рейс Бронирование Авиакомпании Сотрудники Самолет Город Должности 2 CELL KLASS REIS BRONIROVANIE AVIAKOMPANY SOTRUDNIKI SAMOLET GOROD DOLJNOSTI 3 4 Код Номер рейса ФИО клиента Номер брони ФИО сотрудника Дата продажи Название класса Оплата Код Название класса Коэффициент наценки Код Авиакомпания Самолет Город отправления Город прибытия Дата отправления Дата прибытия Время отправления Время прибытия Стоимость билета Код ФИО Клиента Дата окончания брони Номер рейса Статус оплаты Код Название Адрес Телефон Код ФИО сотрудника Должность Телефон Код Модель самолета Кол-во пассажиров Код Название Код Название 25 ID NOMER_R FIO_K NOMER_B SOTRUDNIK DATA NAME_C OPLATA ID NAME COST ID COMPANY SAMOLET GOROD_OTPR GOROD_PRIB DATA_OTPR DATA_PRIB TIME_OTPR TIME_PRIB COST_BILET ID FIO_K DATA_F NOMER_R STATUS ID NAME ADRES TELEFON ID FIO DOLJNOST MOBTEL ID MODEL KOL-VO_PASS ID NAME ID NAME 5 SMALLINT SMALLINT VARCHAR SMALLINT VARCHAR DATE VARCHAR INTEGER SMALLINT VARCHAR FLOAT SMALLINT VARCHAR VARCHAR VARCHAR VARCHAR DATE DATE TIME TIME INTEGER SMALLINT VARCHAR DATE SMALLINT VARCHAR SMALLINT VARCHAR CHAR VARCHAR SMALLINT VARCHAR VARCHAR VARCHAR SMALLINT VARCHAR INTEGER SMALLINT VARCHAR SMALLINT VARCHAR
2.3 Обоснование проектных решений по программному обеспечению Комплекс программ, правил, процедур, используемых при эксплуатации и вся документация, предназначенная для работы системы, называется программным обеспечением. Все программное обеспечение по назначению делится на 3 типа: Системное по - совокупность программ, которые обеспечивают весь рабочий цикл вычислительных машин и работу сети. Прикладное по – совокупность программ, используемых на компьютере для решения различных задач. Инструментальное по – это совокупность программ, используемых для разработки системного и прикладного программного обеспечения. Для создания подсистемы в ВКР будет использовано следующее ПО: К системному ПО, которое мы будем использовать для данной разработки относится: – операционная система - Microsoft Windows 7 x64; – стандартные программы; – служебные программы; – администрирование и дополнительные средства. Операционная система – это набор взаимосвязанных программ, с помощью которых происходит управление ресурсами и взаимодействие с пользователем. При разработке использовалась операционная система Microsoft Windows 7. Так же были использованы стандартные программы типа: Paint — программа для создания и редактирования изображений Калькулятор — программа, служащая для выполнения различных математических расчетов. Проводник — это программа с помощью которой происходит переход между файлами и папками. 26
К прикладному ПО, используемому в данной разработке относятся: Microsoft Office Word 2010 – программное обеспечение, служащее для создания и редактирования документов различного формата. Microsoft Power Point 2010 – программное обеспечение для создания и редактирования презентации. Ibexpert – программное обеспечение для создания и редактирования баз данных firebird, так же с помощью данной программы можно выбирать и изменять данные, которые хранятся в базе. Firebird – программное обеспечение для управления базами данных К инструментальному ПО, относятся: All fusion Data – Modeler это программное обеспечение, предназначенное для проектирования баз данных. Для создание готового программного обеспечения была использована программа C++ Builder 6. С++ Builder предназначена для быстрой разработки приложений на языке с++. Данное программное обеспечение содержит в себе набор инструментов, различных библиотек и.т.д. с помощью которых получается качественная виртуальная разработка. Так же для разработки были использовано программное обеспечение, которое приведено в таблице 2.3. Таблица 2.3 - Использованное ПО Наименование Характеристика Файловые менеджеры Far manager. Windows Commander Антивирусные пакеты AVG Архиваторы WinRAR, WinZIP, UltraISO Информационно-поисковые Google.ru, Yandex.ru системы 27
3 ПРОЕКТНАЯ ЧАСТЬ 3.1 Разработка структурно функциональной диаграммы («КАК ДОЛЖНО БЫТЬ») по методологии SADT(IDEF0) Под информационным обеспечением решения поставленной задачи понимается создание новой функциональной модели, другими словами модели “КАК ДОЛЖНО БЫТЬ”. Она служит наглядным примером того, как изменится существующая организация информационной системы, после разработки подсистемы. Данная функциональная модель была разработана с помощью методологии IDEF0 и представлена на рисунке 3.1. Входными ресурсами являются: «Информация о клиентах» - информация, необходимая при создании документов бронировании и продажи авиабилетов, а также для заполнения справочника о клиентах; Выходные ресурсы: «Отчеты» - аналитическая информация, представленная в удобном виде. Механизмом управления является кассир и созданная информационная подсистема. Правилами управления включают в себя: нормативные документы и лицензию на продажу авиабилетов. 28
USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 18 .04 .2 016 REV: 07 .06 .2 016 NOTES: 1 2 3 4 5 6 7 8 9 10 WORKING DRAFT RECOMMENDED PUBL ICATION Норм ат ив ные до кум ен т ы READER TOP Ли це нз ия на пр одажу Бр он ир ова ни е и пр одажа ав иа би л ет ов Инфо рм ация о кл и ент ах От че т ы 0р . 0 Ка сси р NODE: Инфо рм ацио нна я по дсист ем а Бронирование и продажа авиабилетов TITLE: DATE CONTEXT: NUMBER: A-0 Рисунок 3.1 - Контекстная диаграмма («КАК ДОЛЖНО БЫТЬ») Декомпозировали контекстную диаграмму («КАК ДОЛЖНО БЫТЬ») (см. рисунок 3.2). USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 18 .04 .2 016 REV: 07 .06 .2 016 NOTES: 1 2 3 4 5 6 7 8 9 10 Ли це нз ия на про да жу WORKING DRAFT RECOMMENDED PUBL ICATION READER DATE CONTEXT: A-0 Инфо рм ация о н е пр одан ных би л е т а х Ра бо т а в а ви ака ссе 0р . Инфо рм ация о про да нн ых би л е т а х 1 Норм ат ив ные до кум ен т ы Ра бо т а с бро нью 0р . Инфо рм ация о кл ие нт ах 2 Выкупл енн ые с бр он и бил ет ы Соз дан ие з а каз а 0р . 3 Ифор ма ци я по з а ка з ам Сост ав л ен ие от че т а 0р . Ка сси р От че т ы 4 Инфо рм ацио нна я п одсист е ма NODE: TITLE: Бронирование и продажа авиабилетов NUMBER: A0 Рисунок 3.2 - Декомпозиция контекстной диаграммы 29
Декомпозировали функциональный блок «Работа в авиакассе» еще на 4 действия (см. рисунок 3.3): USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 07 .06 .2 016 WORKING DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о кл и ен т а х READER DATE CONTEXT: A0 Ли це нз ия на про да жу Ра бо т а с кл и ент ам и 0р . Во з в ра ще нный би л е т 1 Обно вл ен ие баз ы дан ных Согл аш ен ие с кл и ен т ом Офор мл ен ие выда чи ил и воз вр ат би л е т а 0р . 0р . Инфо рм ация о н е пр одан ных би л е т а х 3 2 Би л е т и че к Выда ча до кум ен т о в 0р . 4 Инфо рм ацио нна я п одсист е ма Инфо рм ация о пр одан ных бил ет а х Ка сси р NODE: Работа в авиакассе TITLE: NUMBER: A1 Рисунок 3.5 - Декомпозиция "Работа в авиакассе" Таким же образом детализировали процессы «Работа с бронью» и «Создание заказа» (см. рисунок 3.4, 3.5), используя методологию IDEF0, которая используется для создания функциональных рассматривает отношения между всеми видами работ. 30 моделей и
USED AT: AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 07 .06 .2 016 WORKING DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о кл ие нт ах READER A0 Бр он ир ова ни е м ест 0р . DATE CONTEXT: Ли це нз ия на про да жу 1 Инфо рм ация о з а бр он иро ва нно м м ест е Выкуп брон и Выкупл енн ые с бро ни би л е т ы 0р . 2 Инфо рм ацио нна я п одсист е ма Ка сси р NODE: Работа с бронью TITLE: NUMBER: A2 USED AT: Рисунок 3.6 - Декомпозиция "Работа с бронью" AUTHOR: Босый Яр осл а в PROJECT: Бр они ро ва ние и пр ода жа ав иа би л ет ов DATE: 20 .04 .2 016 REV: 06 .06 .2 016 WORKING DRAFT RECOMMENDED PUBL ICATION NOTES: 1 2 3 4 5 6 7 8 9 10 Инфо рм ация о п ро дан ных би л е т а х DATE CONTEXT: A0 Норм ат ив ные докуме нт ы Ра бо т а с п ол уче нн ой ин фо рм ацией Выкупл енн ые с бро ни би л е т ы Инфо рм ация о н е пр одан ных би л е т а х READER 0р . Инфо рм ация о про да жа х 1 Офор мл ен ие з а каз а Ифор ма ци я п о з аказ а м 0р . 2 Пере да ча ин фор ма ци и в другие от де л ы 0р . 3 Инфо рм ацио нна я п одсист е ма Ка сси р NODE: TITLE: Создание заказа NUMBER: A3 Рисунок 3.7 - Декомпозиция "Создание заказа" На рисунке 3.3 показана работа кассира в авиакассе. В начале, приходит клиент с просьбой купить или отдать билет на рейс. При продаже 31
кассир заполняет всю необходимую информацию о клиенте, вносит эти данные в базу данных и в базу по рейсам. После заполненных данных кассир выдает клиенту билет и чек о проданном билете. В случае если клиент пришел в авиакассу за возвратом билета и получением денег за этот билет, то кассир возвращает всю необходимую сумму и удаляет клиента из базы данных о рейсе и обновляет данную базу. На рисунке 3.4 показан процесс бронирования билета. Клиент звонит на кассу, и кассир вносит данные по брони. Затем если клиент успевает до окончания даты бронирования выкупить билет, то кассир вносит данные клиента в рейс, если же этого не происходит, то кассир ничего не предпринимает, просто удаляет клиента из базы брони и тем самым освобождает место на рейсе. На рисунке 3.5 показан процесс создания заказа кассира на рейс. Кассир суммирует полученные данные о проданных и не проданных билетах, так же смотрит остаток мест на рейсе и оформляет все необходимые документы для предоставления их в другие отделы предприятия. На основе полученных заказов в дальнейшем формируются отчеты о проделанной работе и с помощью них предприятия производят свои финансовые расчеты о прибыли полученной от продаж авиабилетов. 3.2 Разработка программных модулей Разработка подсистему бронирования и продажи авиабилетов была создана с помощью продукта Borland C++ Builder 6. Вся работа была разделена на три этапа: на первом этапе мы создавали базу данных в Ibexpert, вторым этапом был графический интерфейс пользователя, а на третьем этапе все компоненты графического интерфейса были взаимосвязаны и в результате был получен готовый программный продукт. В самом начале работы создали базу данных с помощью программы Ibexpert, основное меню программы представлена на рисунке 3.6. 32
Рисунок 3.6 – Основное меню Ibexpert. Открыли вкладку База данных–> Создание базы и внесли данные для создания. Данные о базе представлены на рисунке 3.7. Рисунок 3.7 – Создание базы данных После этого внесли регистрационную информацию базы. Указали сервер, имя сервера, протокол и версию сервера (см. рисунок 3.8). Нажали кнопку «ок». Быдаа создана база данных необходимая для разработки. 33
Рисунок 3.8 – Регистрационная информация Создали таблицы исходя из инфологической модели, приведённой во второй главе. К созданным таблицам относятся: авиакомпании, сотрудники, клиенты, рейсы, бронирование, самолеты, класс цен, город, продажа, должности. Пример заполнения таблицы «Бронирование» представлен на рисунке 3.9, остальные таблицы представлены в приложении B. 34
Рисунок 3.9 – Создание таблицы бронирования Каждую таблицу связали между собой ключами (первичным и внешним) и создали триггеры, генераторы и индексы. Триггер – это хранимая процедура, которая исполняется при изменении каких либо данных. Генератор существует для создания случайных чисел для последовательности записей в таблице. Индексы, как ссылки на какой либо источник создаются с целью упрощения. Это упрощение состоит в том, чтобы с легкостью отыскать таблицу необходимую нам просто указав ее индекс. Следующим шагом после создания базы данных в Ibexpert идет создание графического интерфейса пользователя. Графический интерфейс должен быть понятен и удобен любому пользователю, работающему на авиакассе. Поэтому создание интерфейса является, можно считать, основной задачей разработки подсистемы бронирования и продажи авиабилетов. Открыли программу Builder c++ (см. рисунок 3.10). Добавили новую форму, дали ей название «AVIA» и сохранили на жестком диске. Используя компонент «MainMenu1» создали главное меню и в свойстве «Caption» называли форму «Подсистема бронирования и продажи авиабилетов». Меню будет состоять из 6 вкладок: – Рейсы; – Оформить продажу; – Бронирование; 35
– Справочники; – Выход; Так же добавили изображение, чтобы предать нормальный внешний вид главному меню, для этого добавили компонент «Image1» и в свойстве Picture выбирали необходимую картинку. В результате получили главное меню представленное на рисунке 3.11. Рисунок 3.10 – Главное меню C++ Builder 6 Рисунок 3.11 – Главное меню подсистемы бронирования и продажи авиабилетов 36
Далее приступили к созданию справочников: – Должности; – Самолеты; – Авиакомпании; – Города; – Класс цен; – Cотрудники. Каждый из этих справочников содержит 4 компонента (далее приведен пример работы над справочником «должности» остальные справочники представлены в приложении В): – «DBGrid» используется для отображение таблиц из базы данных ibexpert; – Кнопка «Button1» имеющая название «Добавить», содержит код для добавление новой записи в таблицу (см. рисунок 3.12); – Кнопка «Button2» имеющая название «Удалить», содержит код для удаление записи из таблицы (см. рисунок 3.13); – Кнопка «Button3» имеющая название «Сохранить», содержит код для сохранения всех изменений проделанных с таблицей (см. рисунок 3.14). Рисунок 3.12 – Код кнопки “Добавить” Рисунок 3.13 – Код кнопки “Удалить” 37
Рисунок 3.14 – Код кнопки “Сохранить” Суммируя все эти компоненты и свойство «BorderStyle»->«SkyBlue» получили форму справочников, приведённую на рисунке 3.15. \ Рисунок 3.15 – Интерфейс справочника “Должности” Далее создали справочник «клиенты», который отличается от других справочников по составу (см. рисунок 3.16). Отличие этого справочника состояло в наличии в нем компонента «Edit», в который вносились данные, и изменилась кнопка добавить (см. рисунок 3.17). Так же в справочнике «клиент» был добавлен поиск для удобства поиска клиента, код этого компонента представлен на рисунке 3.18. 38
Рисунок 3.16 – Интерфейс справочника “Клиенты” Рисунок 3.17 – Код кнопки «Добавить» Рисунок 3.18 – Код поиска клиента по ФИО Следующим шагом идет создание интерфейса для форм: «рейсы», «продажа» и «бронирование» (см. рисунок 3.19, 3.20, 3.21). Данные формы содержат те же самые компоненты, рассмотренные выше с добавлением 39
«DBNavigator» и «Panel», которые служат для навигации по таблице и отображение значения соответственно. Рисунок 3.19 – Интерфейс справочника “Рейсы” Рисунок 3.20 – Интерфейс справочника “Продажа” 40
Рисунок 3.21 – Интерфейс справочника “Бронирование” После создания всех справочников добавили код во вкладки, установленные в главном меню (см. рисунок 3.22). Рисунок 3.22 – Код вкладок главного меню 41
Затем создали форму «DM», которая будет отвечать за взаимодействия всех компонентов между собой, и будет содержать в себе все не визуальные компоненты подсистемы. На данной форме установили компонент «IBDatabase1» и в свойстве «DatabaseName» установили соединение с базой данных (см. рисунок 3.23). Рисунок 3.23 – Подключение к базе данных «AVIA.FDB» Так же создали компонент «IBTransaction1» для управления транзакциями. Подключили каждую таблицу через компонент «IBTable», связали с компонентами «IBDatabase» и «IBTransaction1», в свойстве «TableName» указали необходимую таблицу (см. рисунок 3.24). 42
Рисунок 3.24 – Свойства компонента «IBTable» Для соединения созданных справочников и документов с базой данных, связали компоненты «DataSource» и «DbGrid». Так же создали запросы, которые будут использоваться на форме «Продажа» для вычисления количества мест на рейсе, оставшихся мест и вывода необходимой к оплате суммы. Код запросов приведен на рисунке 3.25. Рисунок 3.25 – Код запросов «Продажа» 43
3.3 Описание контрольного примера реализации проекта Запускаем приложение с помощью файла «Avia.exe». Открывается главное меню с названием «Подсистема бронирования и продажи авиабилетов», представленная на рисунке 3.26. Рисунок 3.26 – Запуск приложения Приступаем к заполнению справочников. Для этого открываем вкладку «справочники» и выбираем необходимый (см. Рисунок 3.27). Выбираем, к примеру, справочник «города». 44
Рисунок 3.27 – Выбор справочника «Города» Открывается справочник «Города». В этом справочнике добавляем новую запись. Для этого нажимаем кнопку «Добавить». После нажатия данной кнопки курсор переводится на последнюю строчку в таблиц е, в которую можно вписать название нового города (см. рисунок 3.28). Рисунок 3.28 – Добавление города Воронеж Если при добавлении ввели не правильно название города, то для этого на форме имеется вкладка «Удалить». При ее нажатии появится запись 45
с подтверждением удаления (см. рисунок 3.29), выбираем «да» и запись удаляется из таблицы. Есть так же возможность изменить запись, для этого выбираем необходимую запись из таблицы, щелкаем на нее мышью и изменяем ее так как необходимо. Рисунок 3.29 – Подтверждение удаления записи Так же в справочнике имеется возможность поиска города. Для того чтобы найти город необходимо навести курсор мыши на панель поиска и ввести необходимый город. Найдем, к примеру, город Курск (см. рисунок 3.30). Рисунок 3.30 – Поиск города Курск 46
После работы со справочником нажимаем кнопку «Сохранить» и выходим в главное меню с помощью красного креста в правом верхнем углу формы. Создадим, например клиента Степанова Дмитрия Владимировича забронировавшего билет 25.05.2016 на рейс 243 Белгород – Джерба во 2-й класс и оплатившего его 30.05.2016. Открываем справочник «Клиенты» (см. рисунок 3.31). Рисунок 3.31 – Справочник «Клиенты» Производим добавление нового клиента Степанова Дмитрия Владимировича. Остальные данные берем произвольно. Для этого вносим данные в окно «Добавление клиента» и нажимаем кнопку «Добавить». Появившиеся новая запись представлена на рисунке 3.32. 47
Рисунок 3.32 – Добавление нового клиента Сохраняем базу и выходим в главное меню. Затем оформляем бронь. Для этого открываем вкладку «Бронирование» (см. рисунок 3.33). Рисунок 3.33 – Форма «Бронирование» 48
В окне добавление брони с помощью выпадающих списков выбираем ФИО клиента забронировавшего билет (см. рисунок 3.34). Рисунок 3.34 – Выбор клиента для брони С помощью такого же списка выбираем номер рейса 243. Выставляем дату брони 25.05.2016 и статус оплачен. Нажимаем кнопку «Добавить». Появляется новая запись забронированного билета. Сохраняем форму и закрываем. Переходим на вкладку «Оформить продажу» (см. рисунок 3.35). 49
Рисунок 3.35 – Форма «Продажа» С помощью выпадающих списков в окне «Заполнение данных» выбираем «номер рейса – 243» и при выборе рейса в окне появляется информация о количестве свободных мест и сумме к оплате (см. рисунок 3.36) Рисунок 3.36 – Выбор номера рейса 50
После этого выбираем: – ФИО Клиента – Степанов Дмитрий Владимирович; – Номер брони – 8; – Сотрудник – произвольно; – Дату – 30.05.2016; – Имя класса – 2-й класс. После выбора класса сумма к оплате будет автоматически посчитана, исходя из коэффициента на данный класс, и выведена на экран. В итоге мы получаем оформленную продажу, представленную на рисунке 3.37. Рисунок 3.37 – Добавление продажи билета 3.4 Калькуляция себестоимости научно-технической продукции Для анализа экономической эффективности разрабатываемой подсистемы необходимо рассчитать трудоемкость разработки, все затраты, которые будут использоваться при разработке и в итоге рассчитать срок окупаемости подсистемы на предприятии. 51
Чтобы рассчитать затраты на оплату труда разработчиков необходимо произвести оценку трудоемкости разработки. Данные о трудоемкости разработки представлены в таблице 3.1. Таблица 3.1 – Оценка трудоемкости разработки Характер работы Производительность 1) изучение задачи 30 2) обработка текстовой и графической информации 50 3) разработка схем 55 4) информационное наполнение 85 5) создание интерфейса 80 6) отладка 60 7) Составление и согласование проекта пакета 40 служебных инструкций Исходя из таблицы 2, трудоемкость для данной разработки составит 400 часов или 50 рабочих дней при восьмичасовом рабочем дне. Месячный фонд времени работы программиста 168 часов, среднемесячная заработная плата 15000 рублей [32]. Расчет основной заработной платы программиста ( ЗОСН ) произведен по формуле 1. ЗОСН 15000 8 30 21428,57( руб.) 168 Дополнительная заработная дополнительной заработной платы ( (1) плата З ДОП 12 %. Расчет ) произведен по формуле 2, общая заработная плата рассчитана по формуле 3 . 52 составляет
З ДОП ЗОСН 0,12 21428,57 0,12 2571,42( руб.) (2) ЗОБЩ ЗОСН З ДОП 21428,57 2571,42 24000( руб.) (3) В соответствии с Федеральный законом от 24 июля 2009 года N 212ФЗ "О страховых взносах в Пенсионный фонд РФ, Фонд социального страхования РФ, страхования и Федеральный территориальные фонд обязательного медицинского фонды обязательного медицинского страхования" (в редакции Федерального закона от 03.12.2011 № 379-ФЗ) страховые взносы следует считать по следующим тарифам: − отчисления в Пенсионный фонд – 22% от затрат на оплату труда (см. формулу 4): ПФР ЗОБЩ 0,22 24000 0,22 5280( руб.) − (4) отчисления в Фонд Социального страхования – 2,9% от затрат на оплату труда (см. формулу 5): ФСС ЗОБЩ 0,029 24000 0,029 696 ( руб.) − (5) отчисления в Федеральный Фонд обязательного медицинского страхования – 5,1% от затрат на оплату труда (см. формулу 6): ФФОМС ЗОБЩ 0,051 24000 0,051 1224 ( руб.) (6) Накладные расходы составляют 15 % от затрат на оплату труда [32]. Расчет накладных расходов ( РН ) произведен по формуле 7. 53
РН ЗОБЩ 0,15 24000 0,15 3600( руб.) (7) Итого единый социальный налог 10800 рублей. Страховой взнос на обязательное социальное страхование от 48 несчастных случаев на производстве и профессиональных заболеваний (0,2% от затрат на оплату труда) 0,002*24000=48 Итого отчисления на социальные нужды 10848 руб. К прямым расходам относятся расходы на всю систему связи: интернет, для связи с сервером и телефон, для подтверждения бронирования. В среднем расходы на интернет (на примере компании NETBYNET– тариф «Мой тариф 100») составляет 750 рублей в месяц. Телефонные расходы составят 200 рублей в месяц (на примере компании NETBYNET – тариф «Комбинированный 100»). Так же к прочим прямым расходам относится приобретение лицензионного ключа для C++BUILDER, они составляют 206 999 рублей. Итого к прочим прямым расходам относится сумма 207949. На основе произведенных расчетов калькуляции заполним таблицу 3. 54 по отдельным статьям
Таблица 3.2 – Калькуляция себестоимости № Наименование статей затрат Сумма (руб.) 1 Материалы 3 Затраты на оплату труда работников, непосредственно 0 24000 занятых созданием научно-технической продукции − 4 Отчисления на социальные нужды 5 Прочие прямые расходы 6 Накладные расходы 7 Итого: 10848 207949 3600 246397 После расчета себестоимости разрабатываемого программного обеспечения для предприятия «Белгородавиа», составляющего 246397 рублей производим расчеты срока окупаемости внедряемой подсистемы. Для этого необходимо определить чистый дисконтированный доход (ЧДД), он показывает величину денежных средств, которую инвестор ожидает получить от проекта, после того, как его инвестиции окупят его первоначальные вложения. Если значение ЧДД будет больше 0, то проект можно внедрять. Если значение ЧЧД окажется меньше 0, то проект будет считаться убыточным и внедрять его не следует. Для расчета ЧДД необходимы значения доходов «Белгородавиа» за несколько лет. Возьмем доходы «Белгородавиа» за 4 предыдущих года: За 2012 год – 92 342 000 руб. За 2013 год – 161 720 000 руб. За 2014 год – 248 563 640 руб. За 2015 год – 260 991 822 руб. Ставка дисконта на 2016 год ЦБ РФ составляет 11%. Рассчитаем значение ЧДД по формуле 8. 55
Пi AO K (1 r ) n N ЧДД i 1 Где Пi – (8) величина чистой прибыли; АОi – амортизационные отчисления; К – единовременные капитало-вложения. Подставим значения в формулу 8 и получим результат. 92,3 161,7 248,5 260,9 246,4 321,55( руб.) ЧДД 2 (1 0,11) 3 (1 0,11) 4 (1 0,11) (1 0,11) Определим индекс доходности (ИД), который отражает эффективность инвестиционного проекта, по формуле 9. N ИД i 1 161,7 248,5 260,9 Пi AO 92,3 2 3 (1 0,11) (1 0,11) (1 0,11) (1 0,11) 4 (1 r ) n 2,3 К 246,4 (9) Значение ИД получилось 2,3 > 0, проект по внедрению системы можно реализовать, так как значение больше 0, проект не будет убыточным. Далее рассчитаем срок окупаемости внедрения разработанной системы по формуле 10. Tок К N i 1 Di (1 r ) n n (10) Где Di – совокупное сальдо денежного потока от операций, инвестиционной деятельности; r – ставка дисконта; n – номер периода. Подставим значение в формулу 10 и произведем расчеты. 56
Т ок 246,4 92,3 161,7 248,5 260,9 2 3 (1 0,11) (1 0,11) 4 (1 0,11) (1 0,11) 4 0,1 Срок окупаемости проекта составил 10 месяцев. Полученные расчеты позволяют говорить о том, что все показатели являются положительными и разработанную подсистему можно внедрять на предприятие. 57
ЗАКЛЮЧЕНИЕ В выпускной квалификационной работе была рассмотрена проблема автоматизации учета и продажи медицинских товаров. Результатом работы является готовое приложение. Для решения поставленной цели были решены следующие задачи: – Построена единая информационная подсистема для работы отечественных авиакасс; – Решена проблема с бронированием авиабилетов; – Разработана подсистема продажи авиабилетов; – Ведется отчетность по рейсам, клиентам, сотрудникам и.т.д. В результате создания подсистемы были улучшены значения следующих показателей: – числа будущих клиентов; – времени доступа к списку авиабилетов и другой информации; – повышения качества (полноты, точности, достоверности, своевременности, согласованности) информации; – времени взаимодействия сотрудников с клиентами; – эффективности распределение задач. 58
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1. Мескон, М.Х. Основы Менеджмента: пер. с англ. [Текст]/ М. Х. Мескон, М. Алберт, Ф. Хедоури. – М.: Дело, 2011. – 342 с. 2. Мшиенин, А.И. Теория экономических информационных систем: [Текст]/ А.И. Мшиенин. — М.: Финансы и статистика, 2011. – 234 с. 3. Петров, В.Н. - «Информационные системы» [Текст]/ В.Н. Петров. - Изд. Питер, 2012г. – 340 с. 4. Алан Р. Саймон Стратегические технологии баз данных: менеджмент на 2010 год [Текст]/ Алан Р. Саймон. - М.: Финансы и статистика, 2009. – 625 с. 5. Кононов, В.Н., «Базы данных: проектирование структуры предметной области» [Текст]/ В.Н. Кононов – Магнитогорск, 2015. – 543 c. 6. Коротков, Э.М. Концепция менеджмента [Текст]/ Э.М. Коротков. – М.: Дека, 2015. – 230 c. 7. Кузнецов, С.Д. Основы современных баз данных [Текст]/ - С.Д. Кузнецов. – Калининград: Издательская группа BHV, 2012. – 332 c. 8. Баронов, В.В. Автоматизация управления предприятием [Текст]/ В.В. Баронов, Г.Н. Калянов, Ю.Н. Попов. - М.: Инфра-М, 2013. – 543 с. 9. Беспалов, Р. С. Инструментарий разработчика бизнес-процессов [Текст] / Р.С. Беспалов. – М.: Актион-Медиа, 2013. – 400 с. 10. Болтенков, В.И. Конфигурирование и настройка автоматизированных информационных систем [Текст]/ В.И. Болтенков, А.Л. Литвинов, Н.В. Лычёва. - Белгород: Издательство БелГУ, 2012. – 25 с. 11. Вендров, А.М. Проектирование программного обеспечения экономических информационных систем [Текст]/ А.М. Вендров. – М.: Финансы и статистика, 2012. - 352 с. 12. Годин, В.В. «Информационное обеспечение управленческой деятельности» [Текст]/ В.В. Годин. - М: «Высшая школа», 2012 г. – 345 с. 59
13. Михелёв, В.М. Базы данных и СУБД [Текст]/ В.М. Михелёв. – Белгород: Издательство БелГУ, 2007. – 200 с. 14. Автоматизированные информационные технологии в экономике под ред. Титоренко, Г.А. [Текст]/ Г.А. Титоренко. – М.: Компьютер, ЮНИТИ, 2015. – 400 с. 15. Архангельский, А.Я. C++ Builder 6 [Текст]/ А.Я. Архангельский. М.: Бином-Пресс, 2014. – 824 с. 16. Дейт К. Дж. Введение в системы баз данных. [Текст]/ Дейт К. Дж. - М., СПб., Киев: Изд. дом Вильяме, 2014. – 234 с. 17. Иванова, Г.С. Технология программирования [Текст]/ Г.С. Иванова. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2012. – 320 с 18. Методические указания по содержанию, выполнению и защите выпускных квалификационных работ [Электронный ресурс]/ Зайцева Т.В., Пусная О.П., Путивцева Н.П., Игрунова С.В., Нестерова Е.В. – Белгород: Изд-во БелГУ, 2015. – с. 94 19. Исаенко, Е.В. Методические рекомендации по выполнению дипломной работы [Текст]/ Е.В. Исаенко. – Белгород: Изд_во БУПК, 2014. – 25 c. 20. Каминский, А.М. Информатизация бизнеса [Текст]/ А.М. Каминский. – М.: Финансы и статистика, 2015. – 190 c. 21. Липаев, В.В. Системное проектирование сложных программных средств для информационных систем [Текст]/ В.В. Липаев. - М.: Синтег, 2011. – 231 c. 22. Маклаков, С.В. BPwin и Erwin. Case – средства разработки информационных систем [Текст]/ С.В. Маклаков. – М.: ДИАЛОГ – МИФИ, 2011. – 150 c. 23. Семенов, М.И. и др. Автоматизированные информационные технологии в экономике [Текст]/ М.И. Семенов. — М.: Финансы и статистика, 2012. – 432 с. 60
24. Смирнова, Г.Н. Проектирование экономических информационных систем: [Текст]/ Г.Н. Смирнова. – М.: Финансы и статистика, 2011. 25. Амириди, Ю. В. Современные IT-решения для финансовой индустрии [Текст]/ Ю. В. Амириди, H. Е. Анненская – М.: Издательская группа «БДЦ-пресс», 2012. 26. Жизненный ресурс]. Режим цикл доступа: информационных систем [Электронный http://studopedia.su/13_115077_zhiznenniy-tsikl- informatsionnih-sistem.html, свободный. 27. [Электронный ресурс]. Режим доступа: http://ref.by/refs/46/9355/1.html, свободный. 28. Совершенствование организационной структуры организации [Электронный ресурс]. Режим доступа: http://diplomba.ru/work/22277, свободный. 29. Организация, планирование и управление производством на примере ООО Производственная компания "Кузнецкий цементный завод" [Электронный ресурс]. Режим доступа: http://westud.ru/work/261989/Organizaciya-planirovanie-i-upravlenie, свободный. 30. Белгород (аэропорт) [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Белгород_(Аэропорт), свободный. 31. [Электронный ресурс]. Режим доступа: http://fullref.ru/job_6d44e54b860ee1cfa53e215197748772.html, свободный. 32. Разработка программного обеспечения поддержки процессов закупа и учёта хранения товаров на склад [Электронный ресурс]. Режим доступа: http://coolreferat.com/Разработка программного обеспечения поддержки процессов закупа и учёта хранения товаров на склад , свободный. 33. центра Автоматизированное рабочее место менеджера сервисного [Электронный ресурс]. 61 Режим доступа:
http://knowledge.allbest.ru/programming/2c0b65635b3bc68a5c53b89421216d36_ 0.html, свободный 34. учреждение Федеральное государственное автономное образовательное высшего государственный профессионального национальный образования «белгородский исследовательский университет» [Электронный ресурс]. Режим доступа: http://edu.znate.ru/docs/114/index5317.html?page=14, свободный 35. Создание и ведение баз данных v http://ref.by/refs/67/15521/1.html, свободный 36. ускоренных обеспечении Модели и структуры базы данных экспертной системы анализа испытаний надежности технических и программных [Электронный ресурс]. средств Режим при доступа: http://cyberleninka.ru/article/n/modeli-i-struktury-bazy-dannyh-ekspertnoysistemy-analiza-uskorennyh-ispytaniy-tehnicheskih-i-programmnyh-sredstv-priobespechenii#ixzz4BcvoVcjz, свободный 37. Давыдов, В.А. Visual C++. Разработка Windows –приложений с помощью MFC и API функций [Текст]/ В.А. Давыдов – М.: БВХ-Петербург, - 2015 г. – 546 с. 38. Румянцев, П.В. Работа с файлами Win32 API [Текст]/ П.В. Румянцев – М.: Горячая линия – Телеком, 2012 г. – 324 с. 39. Мозговой, М.В. C++ мастер класс. 85 нетривиальных проектов, решений и задач [Текст]/ М.В. Мозговой – М.: Наука и техника, 2012 г. – 234 с. 40. Джозеф Джарратано Экспертные системы: принципы разработки и программирование [Текст]/ Джозеф Джарратано, Гари Райли – М.: Издательский дом «Вильямс», 2011. – 156 с. 41. Борри, Х. Firebird: руководство разработчика баз данных [Текст]/ Х. Борри – БХВ.: Петербург 2011. – 342 с. 62
42. Хомоненко, А. Д. Работа с базами данных в C++ Builder [Текст]/ А. Д. Хомоненко, С. Е. Ададуров — СПб.:БХВ – Петербург, 2013. – 300 с. 43. Оболенски, Н. Практический реинжиниринг бизнеса [Текст]/ Н. Оболенски – М: ЛОРИ, 2014. – 368 с. 44. Пилон, Д. Управление разработкой ПО [Текст]/ Д. Пилон – СПб.: Питер, 2015. – 455 с. 45. Ворожцов, А.В Алгоритмы: Построение, анализ и реализация на языке Си [Текст]/ А.В Ворожцов, Н.А. Винокуров – М.: МФТИ, 2015 г. – 453 с. 63
ПРИЛОЖЕНИЯ 64
ПРИЛОЖЕНИЕ А Программный код «DataModule.cpp» #include <vcl.h> #pragma hdrstop #include "DataModule.h" #include "Main.h" #include "REIS.h" #include "GORODA.h" #include "SAMOLET.h" #include "AVIACOMPANY.h" #include "DOLJNOSTI.h" #include "KLIENT.h" #include "SOTRUDNIKI.h" #include "KLASS.h" #include "SELL.h" #include "BRONIROVANIE.h" #include "ReportReis.h" #include "ReportSell.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TDM *DM; //-------------------------------------------------------------------__fastcall TDM::TDM(TComponent* Owner) : TDataModule(Owner) { } //-------------------------------------------------------------------«Main.cpp» #include <vcl.h> #pragma hdrstop #include "Main.h" #include "DataModule.h" #include "REIS.h" #include "GORODA.h" #include "SAMOLET.h" #include "AVIACOMPANY.h" #include "DOLJNOSTI.h" #include "KLIENT.h" #include "SOTRUDNIKI.h" #include "KLASS.h" #include "SELL.h" #include "BRONIROVANIE.h" #include "ReportReis.h" #include "ReportSell.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TMainForm *MainForm; //-------------------------------------------------------------------__fastcall TMainForm::TMainForm(TComponent* Owner) 65
: TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TMainForm::N7Click(TObject *Sender) { FGORODA->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N5Click(TObject *Sender) { FREIS->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N12Click(TObject *Sender) { FSAMOLET->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N6Click(TObject *Sender) { FAVIACOMPANY->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N10Click(TObject *Sender) { FDOLJNOSTI->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N8Click(TObject *Sender) { FKLIENT->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N9Click(TObject *Sender) { FSOTRUDNIKI->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N11Click(TObject *Sender) { FKLASS->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N1Click(TObject *Sender) { FSELL->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N2Click(TObject *Sender) { FBRONIROVANIE->Show(); } //-------------------------------------------------------------------void __fastcall TMainForm::N4Click(TObject *Sender) { Close(); } 66
«REIS.cpp» #include <vcl.h> #pragma hdrstop #include "REIS.h" #include "DataModule.h" #include "Main.h" #include "GORODA.h" #include "BRONIROVANIE.h" #include "ReportReis.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFREIS *FREIS; //-------------------------------------------------------------------__fastcall TFREIS::TFREIS(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFREIS::FormCreate(TObject *Sender) { DM->GORODA->Active = true; DM->GORODA->First(); while (!DM->GORODA->Eof) { CB3->Items->Add(DM->GORODANAME->AsString); CB4->Items->Add(DM->GORODANAME->AsString); DM->GORODA->Next(); } DM->AVIA->Active = true; DM->AVIA->First(); while (!DM->AVIA->Eof) { CB1->Items->Add(DM->AVIANAME->AsString); DM->AVIA->Next(); } DM->SAMOLET->Active = true; DM->SAMOLET->First(); while (!DM->SAMOLET->Eof) { CB2->Items->Add(DM->SAMOLETMODEL->AsString); DM->SAMOLET->Next(); } } //-------------------------------------------------------------------void __fastcall TFREIS::Button1Click(TObject *Sender) { DM->REIS->Insert(); DM->REIS->Edit(); DM->REISID->AsString = Edit1->Text; DM->REISCOMPANY->AsString = CB1->Text; DM->REISSAMOLET->AsString = CB2->Text; DM->REISGOROD_OTPR->AsString = CB3->Text; DM->REISGOROD_PRIB->AsString = CB4->Text; DM->REISDATA_OTPR->AsString = DateTimePicker1->Date; DM->REISDATA_PRIB->AsString = DateTimePicker3->Date; DM->REISTIME_OTPR->AsString = DateTimePicker2->Time; DM->REISTIME_PRIB->AsString = DateTimePicker4->Time; DM->REISCOST_BILET->AsString = Edit2->Text; DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFREIS::Button3Click(TObject *Sender) { if (DM->REIS->Modified) DM->REIS->Post(); } 67
//-------------------------------------------------------------------void __fastcall TFREIS::Button4Click(TObject *Sender) { CB1->Clear(); CB2->Clear(); CB3->Clear(); CB4->Clear(); Edit1->Clear(); Edit2->Clear(); } //-------------------------------------------------------------------void __fastcall TFREIS::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->REIS->Delete(); } //-------------------------------------------------------------------void __fastcall TFREIS::Button5Click(TObject *Sender) { RepReis->QuickRep1->Preview(); } //-------------------------------------------------------------------void __fastcall TFREIS::Edit3Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit3->Text}; DM->REIS->Locate("GOROD_OTPR", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } //-------------------------------------------------------------------void __fastcall TFREIS::Edit4Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit3->Text}; DM->REIS->Locate("GOROD_PRIB", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } «Sell.cpp» #include <vcl.h> #pragma hdrstop #include "SELL.h" #include "DataModule.h" #include "Main.h" #include "REIS.h" #include "ReportSell.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFSELL *FSELL; //-------------------------------------------------------------------__fastcall TFSELL::TFSELL(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFSELL::FormCreate(TObject *Sender) { 68
CB->Clear(); DM->REIS->Active = true; DM->REIS->First(); while (!DM->REIS->Eof) { CB->Items->Add(DM->REISID->AsString); DM->REIS->Next(); } CB1->Clear(); DM->KLIENT->Active = true; DM->KLIENT->First(); while (!DM->KLIENT->Eof) { CB1->Items->Add(DM->KLIENTFIO->AsString); DM->KLIENT->Next(); } CB2->Clear(); DM->BRONIROVANIE->Active = true; DM->BRONIROVANIE->First(); while (!DM->BRONIROVANIE->Eof) { CB2->Items->Add(DM->BRONIROVANIEID->AsString); DM->BRONIROVANIE->Next(); } CB3->Clear(); DM->SOTRUDNIKI->Active = true; DM->SOTRUDNIKI->First(); while (!DM->SOTRUDNIKI->Eof) { CB3->Items->Add(DM->SOTRUDNIKIFIO->AsString); DM->SOTRUDNIKI->Next(); } CB4->Clear(); DM->KLASS->Active = true; DM->KLASS->First(); while (!DM->KLASS->Eof) { CB4->Items->Add(DM->KLASSNAME->AsString); DM->KLASS->Next(); } } //-------------------------------------------------------------------void __fastcall TFSELL::Button1Click(TObject *Sender) { DM->SELL->Insert(); DM->SELL->Edit(); DM->SELLNOMER_R->AsString = CB->Text; DM->SELLFIO_K->AsString = CB1->Text; DM->SELLNOMER_B->AsString = CB2->Text; DM->SELLSOTRUDNIK->AsString = CB3->Text; DM->SELLDATA->AsString = DTP->Date; DM->SELLNAME_C->AsString = CB4->Text; DM->SELLOPLATA->AsString = Edit2->Text; } //-------------------------------------------------------------------void __fastcall TFSELL::Edit1Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit1->Text}; DM->SELL->Locate("FIO_K", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } //------------------------------------------------------------------void __fastcall TFSELL::Edit3Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit3->Text}; DM->SELL->Locate("SOTRUDNIK", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } 69
//-------------------------------------------------------------------void __fastcall TFSELL::CBChange(TObject *Sender) { DM->ost->Close(); DM->ost->SQL->Clear(); DM->ost->SQL->Add("select KOLVO_PASS from samolet left join reis on samolet.model = reis.samolet where reis.id = '" + CB->Text + "'"); DM->ost->Open(); Panel1->Caption = ""; DM->kolvo->Close(); DM->kolvo->SQL->Clear(); DM->kolvo->SQL->Add("select count ( Nomer_r) as kolvo from sell where nomer_r = '" + CB->Text + "'"); DM->kolvo->Open(); Panel1->Caption = DM->ost->FieldValues["kolvo_pass"] - DM->kolvo>FieldValues["kolvo"]; Edit2->Clear(); DM->cena->SQL->Clear(); DM->cena->SQL->Add("select COST_BILET from REIS where ID = '" + CB>Text + "'"); DM->cena->Open(); if (!DM->cena->FieldByName("COST_BILET")->IsNull) Edit2->Text = DM->cena->FieldValues["COST_BILET"]; else Edit2->Text = "0"; } //-------------------------------------------------------------------void __fastcall TFSELL::CB4Change(TObject *Sender) { Edit2->Clear(); CBChange(CB); float a, b; if (CB4->ItemIndex == 0) a = 1; if (CB4->ItemIndex == 1) a = 1.5; if (CB4->ItemIndex == 2) a = 2; b = StrToFloat(Edit2->Text) * a; Edit2->Text = FloatToStr(b); } //-------------------------------------------------------------------void __fastcall TFSELL::Button4Click(TObject *Sender) { RepSell->QuickRep1->Preview(); } //-------------------------------------------------------------------------void __fastcall TFSELL::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->SELL->Delete(); } //-------------------------------------------------------------------void __fastcall TFSELL::Button3Click(TObject *Sender) { if (DM->SELL->Modified) DM->SELL->Post(); } //-------------------------------------------------------------------void __fastcall TFSELL::Button5Click(TObject *Sender) { FREIS->Show(); 70
} //-------------------------------------------------------------------void __fastcall TFSELL::Button6Click(TObject *Sender) { CB->Clear(); CB1->Clear(); CB2->Clear(); CB3->Clear(); CB4->Clear(); Edit1->Clear(); Edit2->Clear(); Edit3->Clear(); } «Bronirovanie.cpp» #include <vcl.h> #pragma hdrstop #include "BRONIROVANIE.h" #include "DataModule.h" #include "Main.h" #include "KLIENT.h" #include "REIS.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFBRONIROVANIE *FBRONIROVANIE; //-------------------------------------------------------------------__fastcall TFBRONIROVANIE::TFBRONIROVANIE(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Edit3Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit3->Text}; DM->BRONIROVANIE->Locate("FIO_K", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Edit4Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit4->Text}; DM->BRONIROVANIE->Locate("STATUS", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::FormCreate(TObject *Sender) { CB->Clear(); DM->KLIENT->Active = true; DM->KLIENT->First(); while (!DM->KLIENT->Eof) { CB->Items->Add(DM->KLIENTFIO->AsString); DM->KLIENT->Next(); } CB1->Clear(); DM->REIS->Active = true; DM->REIS->First(); while (!DM->REIS->Eof) { 71
CB1->Items->Add(DM->REISID->AsString); DM->REIS->Next(); } } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button1Click(TObject *Sender) { DM->BRONIROVANIE->Insert(); DM->BRONIROVANIE->Edit(); DM->BRONIROVANIEFIO_K->AsString = CB->Text; DM->BRONIROVANIEDATA_F->AsString = DTP->Date; DM->BRONIROVANIENOMER_R->AsString = CB1->Text; DM->BRONIROVANIESTATUS->AsString = Edit2->Text; DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button3Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->BRONIROVANIE->Delete(); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button2Click(TObject *Sender) { if (DM->BRONIROVANIE->Modified) DM->BRONIROVANIE->Post(); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button4Click(TObject *Sender) { CB->Clear(); CB1->Clear(); Edit2->Clear(); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button6Click(TObject *Sender) { FKLIENT->Show(); } //-------------------------------------------------------------------void __fastcall TFBRONIROVANIE::Button5Click(TObject *Sender) { FREIS->Show(); } «Klient.cpp» #include <vcl.h> #pragma hdrstop #include "KLIENT.h" #include "DataModule.h" #include "Main.h" #include "BRONIROVANIE.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFKLIENT *FKLIENT; //-------------------------------------------------------------------fastcall TFKLIENT::TFKLIENT(TComponent* Owner) : TForm(Owner) { 72
} //-------------------------------------------------------------------void __fastcall TFKLIENT::Button1Click(TObject *Sender) { DM->KLIENT->Insert(); DM->KLIENT->Edit(); DM->KLIENTFIO->AsString = Edit4->Text; DM->KLIENTSERIA_P->AsString = Edit5->Text; DM->KLIENTNOMER_P->AsString = Edit8->Text; DM->KLIENTEMAIL->AsString = Edit6->Text; DM->KLIENTMOBTEL->AsString = Edit7->Text; DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFKLIENT::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->KLIENT->Delete(); } //-------------------------------------------------------------------void __fastcall TFKLIENT::Button3Click(TObject *Sender) { if (DM->KLIENT->Modified) DM->KLIENT->Post(); } //-------------------------------------------------------------------void __fastcall TFKLIENT::Edit1Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit1->Text}; DM->KLIENT->Locate("FIO", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } //-------------------------------------------------------------------void __fastcall TFKLIENT::Edit2Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit1->Text}; DM->KLIENT->Locate("SERIA_P", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } «Klass.cpp» #include <vcl.h> #pragma hdrstop #include "KLASS.h" #include "DataModule.h" #include "Main.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFKLASS *FKLASS; //-------------------------------------------------------------------__fastcall TFKLASS::TFKLASS(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------73
void __fastcall TFKLASS::Button1Click(TObject *Sender) { DM->KLASS->Insert(); DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFKLASS::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->KLASS->Delete(); } //-------------------------------------------------------------------void __fastcall TFKLASS::Button3Click(TObject *Sender) { if (DM->KLASS->Modified) DM->KLASS->Post(); } «Goroda.cpp» #include <vcl.h> #pragma hdrstop #include "GORODA.h" #include "DataModule.h" #include "Main.h" #include "REIS.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFGORODA *FGORODA; //-------------------------------------------------------------------__fastcall TFGORODA::TFGORODA(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFGORODA::Button1Click(TObject *Sender) { DM->GORODA->Insert(); DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFGORODA::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->GORODA->Delete(); } //-------------------------------------------------------------------void __fastcall TFGORODA::Button3Click(TObject *Sender) { if (DM->GORODA->Modified) DM->GORODA->Post(); } //-------------------------------------------------------------------void __fastcall TFGORODA::Edit1Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit1->Text}; DM->GORODA->Locate("NAME", VarArrayOf(locvalues,1), 74
SearchOptions<<loPartialKey<<loCaseInsensitive); } «Doljnosti.cpp» #include <vcl.h> #pragma hdrstop #include "DOLJNOSTI.h" #include "DataModule.h" #include "Main.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFDOLJNOSTI *FDOLJNOSTI; //-------------------------------------------------------------------__fastcall TFDOLJNOSTI::TFDOLJNOSTI(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFDOLJNOSTI::Button1Click(TObject *Sender) { DM->DOLJNOSTI->Insert(); DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFDOLJNOSTI::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->DOLJNOSTI->Delete(); } //-------------------------------------------------------------------void __fastcall TFDOLJNOSTI::Button3Click(TObject *Sender) { if (DM->DOLJNOSTI->Modified) DM->DOLJNOSTI->Post(); } «Aviacompany.cpp» #include <vcl.h> #pragma hdrstop #include "AVIACOMPANY.h" #include "DataModule.h" #include "GORODA.h" #include "Main.h" #include "SAMOLET.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFAVIACOMPANY *FAVIACOMPANY; //-------------------------------------------------------------------__fastcall TFAVIACOMPANY::TFAVIACOMPANY(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFAVIACOMPANY::Button1Click(TObject *Sender) { DM->AVIA->Insert(); DBGrid1->SetFocus(); 75
} //-------------------------------------------------------------------void __fastcall TFAVIACOMPANY::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->AVIA->Delete(); } //-------------------------------------------------------------------void __fastcall TFAVIACOMPANY::Button3Click(TObject *Sender) { if (DM->AVIA->Modified) DM->AVIA->Post(); } //-------------------------------------------------------------------void __fastcall TFAVIACOMPANY::Edit1Change(TObject *Sender) { TLocateOptions SearchOptions; Variant locvalues[] = {Edit1->Text}; DM->AVIA->Locate("NAME", VarArrayOf(locvalues,1), SearchOptions<<loPartialKey<<loCaseInsensitive); } «Sotrudniki.cpp» #include <vcl.h> #pragma hdrstop #include "SOTRUDNIKI.h" #include "DataModule.h" #include "Main.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFSOTRUDNIKI *FSOTRUDNIKI; //-------------------------------------------------------------------__fastcall TFSOTRUDNIKI::TFSOTRUDNIKI(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFSOTRUDNIKI::Button1Click(TObject *Sender) { DM->SOTRUDNIKI->Insert(); DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFSOTRUDNIKI::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->SOTRUDNIKI->Delete(); } //-------------------------------------------------------------------void __fastcall TFSOTRUDNIKI::Button3Click(TObject *Sender) { if (DM->SOTRUDNIKI->Modified) DM->SOTRUDNIKI->Post(); } 76
«Samolet.cpp» #include <vcl.h> #pragma hdrstop #include "SAMOLET.h" #include "DataModule.h" #include "Main.h" //-------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFSAMOLET *FSAMOLET; //-------------------------------------------------------------------__fastcall TFSAMOLET::TFSAMOLET(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------void __fastcall TFSAMOLET::Button1Click(TObject *Sender) { DM->SAMOLET->Insert(); DBGrid1->SetFocus(); } //-------------------------------------------------------------------void __fastcall TFSAMOLET::Button2Click(TObject *Sender) { if (Application->MessageBox("Действительно хотите удалить запись?","Подтвердите удаление записи", MB_YESNO + MB_ICONEXCLAMATION) == IDYES) DM->SAMOLET->Delete(); } //-------------------------------------------------------------------void __fastcall TFSAMOLET::Button3Click(TObject *Sender) { if (DM->SAMOLET->Modified) DM->SAMOLET->Post(); } 77
ПРИЛОЖЕНИЕ Б ИСХОДНЫЕ ДАННЫЕ Рисунок Б.1 - Данные из справочника «Авиакомпании» Рисунок Б.2 - Данные из справочника «Города» Рисунок Б.3 - Данные из справочника «Класс цен» 78
Рисунок Б.4 - Данные из справочника «Самолет» Рисунок Б.5 - Данные из справочника «Сотрудники» 79
ПРИЛОЖЕНИЕ B Исходные таблицы Рисунок В.1 - Создание справочника «Авиакомпании» Рисунок В.2 - Создание справочника «Должности» Рисунок В.3 - Создание справочника «Сотрудники» 80
Рисунок В.4 - Создание справочника «Продажа» Рисунок В.5 - Создание справочника «Самолет» Рисунок В.6 - Создание справочника «Рейс» 81
Рисунок В.7 - Создание справочника «Клиент» Рисунок В.8 - Создание справочника «Класс цен» Рисунок В.9 - Создание справочника «Город» 82
Отзывы:
Авторизуйтесь, чтобы оставить отзыв