Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Разработка и внедрение информационной системы "Автовокзал"

Работа из раздела: «Программирование, компьютеры и кибернетика»

/

Разработка и внедрение информационной системы «Автовокзал»

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. РАЗРАБОТКА ТРЕБОВАНИЙ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ

1.1 Анализ существующих решений в предметной области

1.2 Анализ предметной области

1.3 Выбор методологии проектирования

1.4 Сбор требований

1.5 Анализ и моделирование требований

1.6 Спецификация требований к ПО

1.7 Аттестация требований

Выводы к разделу

2. ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ

2.1 Архитектурное проектирование

2.2 Проектирование пользовательского интерфейса

2.3 Проектирование баз данных

2.4 Обоснование выбора платформы создания ИС

2.5 Проектирование модулей

3. РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ

3.1 Реализация приложения

3.2 Взаимодействие приложения с источниками данных

3.3 Тестирование приложения

3.4 Методика развертывания приложения

Выводы к разделу

4. УПРАВЛЕНИЕ ИНФОРМАЦИОННЫМ ПРОЕКТОМ

4.1 Выбор жизненного цикла разработки программного обеспечения

4.2 Определение цели и области действия программного проекта

4.3 Создание структуры пооперационного перечня работ

4.4 Идентификация ресурсов проекта

4.5 Оценка длительности разработки программного обеспечения

4.6 Распределение ресурсов проекта

4.7 Идентификация задач и действий

4.8 Оценка стоимости разработки программного обеспечения

4.9 Оценка экономической эффективности проекта

Выводы к разделу

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ Б - ПРОТОТИПЫ ИНТЕРФЕЙСА

ПРИЛОЖЕНИЕ В - СТРУКТУРНЫЕ КАРТЫ КОНСТАНТАЙНА

ПРИЛОЖЕНИЕ Г - ТАБЛИЦЫ ТЕСТОВЫХ ДАННЫХ

ПРИЛОЖЕНИЕ Д - ПРОГРАММНЫЙ КОД МЕТОДОВ И ФУНКЦИЙ 3

ВВЕДЕНИЕ

Данная дипломная работа посвящена разработке и внедрению модуля автоматизации сбора информации аналитически данных продажи билетов и работы компании в целом на примере ОАО «Автовокзал».

Полная и достоверная статистическая информация является тем необходимым основанием, на котором базируется процесс прогноза, планирования и консолидации экономических показателей деятельности компании. Вся информация, имеющая экономическую значимость, в конечном счете, обрабатывается и анализируется с помощью статистики.

Именно статистические данные позволяют определить объемы валового внутреннего продукта и национального дохода, выявить основные тенденции развития отраслей экономики, оценить уровень инфляции, проанализировать состояние финансовых и товарных рынков, исследовать уровень жизни населения и другие социально-экономические явления и процессы. Овладение статистической методологией одно из условий познания конъюнктуры рынка, изучения тенденций и прогнозирования, принятия оптимальных решений на всех уровнях управления деятельности компании.

Статистическая практика это деятельность по сбору, накоплению, обработке и анализу цифровых данных, характеризующих все явления в жизни общества. Для современного бизнеса свойственна необходимость быстрого принятия правильных решений в неопределенной ситуации и рыночном давлении со стороны конкурентов. При этом становится невозможно достигать успеха за счет одного двух успешных действий или на основе преимущества в одном критерии. Необходимо постоянно анализировать ситуацию на рынке, действия конкурентов и свои собственные для выбора правильной стратегии и тактики в постоянно меняющихся условиях.

Являясь крупнейшим предприятием в сфере автоперевозок на юге России, ОАО «Автовокзал» имеет в своём составе 55 автовокзалов и автостанций, расположенных по всей Ростовской области. Ежегодно предприятие обслуживает более 6 миллионов пассажиров, из которых свыше 1 миллиона пользуются различными льготами.

Исходными данными для решения ряда задач текущего и дальнейшего планирования модуля являются материалы, полученные при детальном изучении функциональной деятельности компании по основному направлению предоставление услуг по перевозке пассажиров. Разрабатываемое решение будет являться дополнительным программным модулем к существующей автоматизированной системе «Продажа билетов».

В настоящее время большинство систем автоматизации позволяет получать те или иные аналитические отчеты. Однако всем им свойственен один недостаток: вид отчета является фиксированным и, как правило, его структурное изменение требует привлечения программистов и сотрудников отделов автоматизации. В условиях крупных компаний это имеет целый набор дополнительных проблем: необходимость большого числа согласований, необходимость модификации программного кода системы с сопутствующими проблемами по отладке, инсталляции, распространения версий между офисами и последующего контроля над тем, кто на какой версии работает. В конечном итоге это приводит к большим задержкам в получении менеджерами компании информации, необходимой для успешного ведения бизнеса и финансовым потерям (как прямым, так и косвенным из-за не получения полной прибыли). В данной дипломной работе предложено решить эту проблему.

Зачастую главными проблемами при сборе аналитических данных является рутинная работа по обработке документов и подсчета, как операций, так и каких либо числовых показателей. Помимо этого наблюдается такой момент как потеря данных, не своевременная обработка данных, человеческий фактор. В зависимости от сложности проблемы теряется одно из самых главных свойств информации непосредственно ориентированное на качественное управление и экономическую эффективность, это актуальность информации.

Актуальность информации - степень соответствия информации текущему моменту времени. При разработке автоматизированной системы информация будет достоверной и адекватной, так как система будет использовать при формировании отчетов оперативные данные, устаревшая информация будет неактуальна при оперативном расчете, но послужит в дальнейшем для анализа работы всей компании в целом за определенный продолжительный промежуток времени.

Целями дипломного проекта является анализ, проектирование, разработка и внедрение в эксплуатацию модуля, который должен автоматизировать функцию выбора сформированных главной программой данных и отвечать требованиям заказчика. Так же по функциональной части система должна автоматизировать режимы получения аналитических данных, сведения о срывах и не заходах автобуса, анализ пассажиропотока, расчеты коэффициента использования вместимости автотранспорта по временному промежутку, проданных билетов, расчеты коэффициента использования вместимости автотранспорта по временному промежутку, проданных билетов, выручки, наполняемость автобусов.

Помимо этого главной задачи, для получения дальнейшего хода анализа данных, модуль должен формировать отчеты работы автовокзала в целом и предоставляя тем самым полное аналитическое финансовое состояние проводимых операций продажи билетов ОАО «Автовокзал». Решение указанных целей и задач предпринято в настоящем исследовании.

Полученная обработанная информация, сохраненная в простейших отчетах, послужит основными данными для работы экономического отдела компании. Экономисты компании, пользуясь полученными статистическими данными, могут сравнивать средние показатели и показатели распределения, анализируя структуру совокупности, исследуя динамику и взаимосвязь между изучаемыми явлениями и процессами, и при этом вести выбор параметров направленный на улучшение работы компании. Так же формируемые отчеты послужат хорошей информационной базой для Государственного комитета Российской Федерации по статистике.

Сложной, трудоемкой и ответственной является сбор аналитических исследуемых данных. Современные технологии позволяют автоматизировать данный процесс от начала и до конца.

Считаю актуальным разработку данной системы, а так же ее дальнейшее внедрение поддержку и развитие. Информационную систему предполагается использовать в финансово - экономическом отделе ОАО «Автовокзал. автоматизация автотранспорт билет

1. РАЗРАБОТКА ТРЕБОВАНИЙ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ

1.1 Анализ существующих решений по автоматизации предметной области

Разработка требований - это процесс, включающий мероприятия, необходимые для создания и утверждения документа, содержащего спецификацию системных требований.

Отечественный рынок специализированных систем автоматизации подсчета аналитических данных продажи билетов, практически направлен на продажу билетов по средствам бронирования через Интернет порталы. Как таковых программных продуктов в целом с программой продажи билетов очень мало. Данные модули просто не включены в саму программу, либо просто отражают все данные о продажах только в базах данных этих программ. Сейчас спрос на программное обеспечение этого класса растет.

Обзор статей, публикаций и рынка программных продуктов позволил выявить ряд программных решений, автоматизирующих основные бизнес-процессы, протекающие в организациях, занимающихся перевозками пассажиров.

Использование статистики продаж билетов в Интернет

Основная масса статистических данных приведена нам из Интернета. Точнее с сайтов занимающихся онлайн продажей билетов. По данным Интернет компании Romir Monitoring в первом квартале 2005 года услугами Интернет магазина воспользовалось лишь 11% жителей России. Но ежеквартально эта цифра растет, но достигнуть стопроцентной онлайн продажи не получиться.

Для ведения статистики практически все сайты используют модули языков программирования Интернет приложений. В основном используется язык PHP (Hypertext Preprocessor) - скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных.

Приведенная статистика Интернет магазинами лишь частично представляет всю картину продаж, добавлением к полной статистике служат основные программные продукты, непосредственно установленные на месте продаж. Практически каждая крупная компания имеет в наличии онлайн способ продажи билетов.

Автоматизированная система «Автовокзал91»

Компания «ВПИ» Firm «API» разработала специализированное программное обеспечение для автовокзалов городов Украины; Днепропетровске, Львове, Херсоне, Симферополе.

Система «Автовокзал91» предназначена для автоматизации деятельности кассиров и диспетчеров, обслуживающих междугородные и пригородные рейсы, а также работников автостанции, занятых оформлением расчетов с АТП, выполняющих эти рейсы. Эксплуатация системы предполагается на вычислительном комплексе, расположенном непосредственно на автостанции. Сам программный продукт состоит из набора модулей, которые позволяют, автоматизировано выполнить весь комплекс работ, начиная от ввода и проверки нормативно-справочной информации и заведения рейса в продажу и заканчивая отправкой рейса и формированием документов расчетов с автотранспортными предприятиями.

Система работает с 1991 года по настоящее время. Программный комплекс данной системы со временем усовершенствовался и модернизировался.

Прикладное программное обеспечение функционирует под управлением ОС Linux. Основные прикладные подсистемы можно условно разделить на две группы - первая (или основная) и дополнительная. В первую группу подсистем входят; ядро, разграничение доступа и контроль, управление функционированием, управление нормативно-справочной информацией (НСИ), поддержание целостности данных, касса, бухгалтерия и диспетчерская. Модули этой группы обеспечивают основу функционирования. В дополнительную группу входят; справочная, статистика Интернет бронирования, оператор удаленной продажи, межмашинный обмен. Данные модули функционируют дополнительно по желанию компании.

Компания рекомендует использовать продукт на автостанциях, имеющих от 80 до 800 отправлений в сутки, при этом для различных станций подбирается различный комплекс программного оборудования.

Автоматизированная система управления автовокзалом «Olven»

Еще одним из программных продуктов по автоматизации продажи билетов и работы автовокзала является клиентская программа АСУ Олвен. Данный программный продукт реализует автоматизацию рабочих мест автовокзала; кассу, диспетчера, справочное бюро, отдел перевозок, онлайн расписание.

Система «Olven» построена по трехуровневой схеме «клиент-сервер» и состоит их системы управления базой данных (СУБД), сервера приложений и клиентской программы, реализующей в себе функциональность всех рабочих мест системы. Взаимодействие компонентов системы осуществляется по протоколу TCP/IP с использованием протокола XML. Сервер приложений представляет собой веб-сервер, с библиотекой необходимых программ, реализующих функциональность системы.

Клиентская программа обменивается с сервером приложений по протоколу HTTP или HTTPS. Сервер приложений осуществляет авторизацию и аутоинтефикацию клиента с помощью логина и пароля оператора, а также при использовании протокола HTTPS по открытым криптографическим алгоритмам с использованием асимметричных ключей и системы цифровой подписи. Такая организация системы позволяет добиться высоких показателей безопасности системы от внутренних вторжений и атак.

Сервер приложений, выполняя запросы клиентов, взаимодействует с СУБД также про протоколу TCP/IP с использованием авторизации и аутоинтефикации. Структура системы и архитектура взаимодействия позволяет организовать удаленные рабочих мест любых типов.

АИС продажа билетов

Программы данного класса были реализованы на основе методов структурного и объектно-ориентированного программирования. Основным языком программирования является С++, как язык наиболее широко использовавшийся для научных и инженерных расчетов.

Одной из наиболее актуальных проблем данных программ является не полное представление модуля статистики продаж непосредственно при работе самой программы, а не удаленно с примерами проведения интернет статистики. Некоторые и программ предоставляют лишь частичную информацию о статистических данных работы автовокзала. Данные конфигурации рассмотренных программ только предлагают режим просмотра введенных данных, а не сформированные комплексные отчеты по определенному разделу продаж, или работы транспорта. Так же отсутствует режимы расчетов на будущее время работы автовокзала.

В настоящее время рассматриваемая на предприятии информационная система «Продажи билетов», реализована в среде FoxPro, функционирующей под оболочкой DOS 2.6 и сетевых ОС Novell Netware, как консольное приложение, с помощью которой ведется обработка данных - учет продажи и бронирования билетов.

Выбор Foxpro DOS 2.6 и сетевых ОС Novell Netware обусловлен в первую очередь минимизацией требований, предъявляемых к технике на рабочих местах. Количество одновременно работающих пользователей в сети ограничивается лишь версией Novell.

Анализируя существующие решения по автоматизации предметной области в ОАО «Автовокзал», выявлен тот факт, что в организации не существует модуля по оценке загруженности рейсов, как и не существует в самой автоматизированной системе учета продажи билетов, которую используют в компании для работы со справочниками, входными и выходными документами. Для устранения отсутствия данной аналитической системы было предложено ее разработать.

Данная система будет являться подсистемой, дополнительным модулем основной системы учета продаж билетов. Его работа будет основываться на автоматизированном сборе данных, сформированных существующей системой. Обращение к базе данных будет осуществляться с использованием процедур - запросов.

В качестве вывода отчета анализа данных будет использоваться простой Excel документ. В этом случае данные извлекаются модулем-клиентом непосредственно из реляционной СУБД, формируясь в отчетные таблицы.

Использование данной подсистемы облегчит процесс работы по сбору аналитической информации работы главной системы, процесс работы по созданию и формированию отчетов выбранных аналитических данных.

Отчеты, сформированные в Excel, позволяют облегчить дальнейшую работу по сбору нужных данных о работе компании финансово экономическому отделу и контрольно ревизорскому отделу.

Полученные отчеты в дальнейшем подвергаются четкому анализу экономистов, работающих в компании, которые в свою очередь ведут выбор параметров с принятием решений на выявление эффективной работы и организации пассажироперевозки. Помимо этого сформированные отчеты служат информационной базой для Госкомстата.

Результаты разработки данного модуля приведут к сокращению времени на формирование необходимых документов и отчетов, а так же существенно повлияет на дальнейшее экономическое и финансовое прогнозирование работы пассажироперевозки.

1.2 Анализ предметной области

Анализ предметной области, является одним из важнейших этапов проекта, разработки автоматизированной системы, целью которого является выявление, классификация и формализация информации обо всех аспектах предметной области, влияющих на конечный результат.

Проведем предварительный анализ предметной области проектирования разрабатываемой системы.

Акционерное общество «Автовокзал» являясь крупнейшим предприятием в сфере автоперевозок на юге России, ОАО «Автовокзал» имеет в своём составе 55 автовокзалов и автостанций, расположенных по всей Ростовской области. Об объёмах работы предприятия можно судить и по состоянию маршрутной сети.

Каждый день от перронов автовокзалов, принадлежащих объединению, отправляются более 1800 рейсов по 374 маршрутам. Основным направлением деятельности компании является перевозка пассажиров.

Пассажирские перевозки осуществляются как в города России, так и по территории других стран.

С автовокзалов предприятия прямым сообщением отправляются автобусы, следующие по маршрутам в города Германии, Болгарии, Украины, страны Закавказья и республики Северного Кавказа, в населённые пункты Краснодарского и Ставропольского краёв, Воронежской, Волгоградской и Астраханской областей.

Организационная структура компании изображена в соответствии с рисунком 1.1

Рисунок 1.1 - Организационная структура компании
OAO «Автовокзал»

Согласно уставу открытого акционерного общества «Автовокзал», зарегистрированным регистрационной палатой администрации города Ростова-на-Дону № 2091-РП от 06 октября 1993 года, общество осуществляет следующие виды деятельности:

- транспортно-экспедиционная деятельность;

- предварительная и текущая продажа и бронирование проездных билетов на автобусы, и другие виды транспорта, доставка билетов, другие услуги, оказываемые на автовокзалах, пассажирских автостанциях и в автокассах, а так же в пунктах приема и исполнения заказов на перевозки пассажиров автомобильным транспортом;

- перевозка пассажиров автомобильным транспортом на городских, пригородных, междугородных и международных маршрутах;

- оказание сервисных услуг;

- организация общепита;

- рекламные услуги;

- гостиничные услуги;

- ремонт, техническое обслуживание, мойка автотранспортных средств, оборудование автомобилей газобаллонными устройствами;

- оказание услуг по техническому осмотру автотранспортных средств;

- оптово-розничная торговля;

- торговля горюче-смазочными материалами с открытием автозаправочных станций;

- оказание услуг по хранению, бытовых и иных услуг.

Исходными данными для решения ряда задач текущего и дальнейшего планирования работы компании являются материалы, полученные при детальном изучении функциональной деятельности компании по основному направлению - предоставление услуг по перевозке пассажиров.

Проведение анализа работы компании позволяет получить представление о пассажиропотоке, движении транспорта, а так же данные сведения необходимы в дальнейшем для разработки транспортной схемы и могут быть использованы при решении ряда планово - экономических и инженерных задач в области перспектив транспортной и городской деятельности.

На этапе проведения анализа были сформулированы следующие задачи исследования системы:

- изучение пассажиропотока и спроса населения в пассажирских перевозках;

- разработка маршрутов, расписаний и графиков движения при перевозке пассажиров автомобильным транспортом;

- контроль над исполнением графиков движения и диспетчерское сопровождение автобусов на маршрутах;

- предварительная и текущая продажа и бронирование проездных билетов на автобусы, и другие виды транспорта.

Этап изучения системы управления организацией основывался на основе однодневного рабочего дня организации, а так же информационных баз данных сформированных работой организации предыдущего периода.

В области выявления конкретных проблем системы управления в целом не выявлено особых недостатков, единственной проблемой можно выделить несвоевременную сдачу отчетности сотрудниками компании. Данная проблема объясняется большим количеством затраченного времени на сбор нужной информации, для представления ее в отчете о проделанной работе компании за определенный период.

Задача разработчика системы в «общем» виде сводится к выбору конфигурации изученных элементов и их расположения в пространстве, таким образом, чтобы удовлетворить требованиям технического задания заказчика на параметры системы.

Сравнение параметров системы управления в компании, полученных в результате анализа взаимодействия выбранных конструктивных элементов связанных с накоплением статистических данных, ведет к принятию решения о возможности создания и использования предложенной системы.

Интерфейс пользователя должен позволять персоналу вывод статистических данных согласно выбору, а также обеспечивать возможность их дальнейшего редактирования в отчетной форме, для сравнения, изменений параметров накопленной статистики отчетности. Данные для составления отчетности должны быть выбраны из сформированных главной программой баз данных. Система должна предоставлять возможность документирования полученных результатов анализа в виде отчетов Excel. Разрабатываемая система должна иметь динамическую информационно-справочную подсистему.

Выбор методологии проектирования

В настоящее время в области разработки и реализации информационных систем существует две базовых методологии проектирования информационных структурный и объектно-ориентированный анализ.

Сущность структурного подхода к разработке информационной системы заключается в ее декомпозиции на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. При разработке системы «снизу-вверх» от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.

Все наиболее распространенные методологии структурного подхода базируются на ряде общих принципов. В качестве двух базовых принципов используются следующие принципы:

- принцип «разделяй и властвуй» - принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;

- принцип иерархического упорядочивания - принцип организации составных частей проблемы в иерархические древовидные структуры с добавлением новых деталей на каждом уровне.

Использование объектно-ориентированных методов позволяет создать описание (модель) предметной области в виде совокупности объектов - сущностей, объединяющих данные и методы обработки этих данных (процедуры). Каждый объект обладает своим собственным поведением и моделирует некоторый объект реального мира. С этой точки зрения объект является вполне осязаемой вещью, которая демонстрирует определенное поведение.

В объектном подходе акцент переносится на конкретные характеристики физической или абстрактной системы, являющейся предметом программного моделирования. Объекты обладают целостностью, которая не может быть нарушена. Таким образом, свойства, характеризующие объект и его поведение, остаются неизменными. Объект может только менять состояние, управляться или становиться в определенное отношение к другим объектам.

Наиболее подходящей методологией проектирования информационной системы расчета аналитических данных продажи билетов, была выбрана методология структурного подхода.

В соответствии с традиционным подходом основное внимание должно уделяться информации, с которой работает система. В зависимости от того, какая информация нужна пользователям, используются базы данных хранящие эту информацию, после создаются экраны для ее вывода и встраивается возможность вывода сформированных на основе использованных БД отчетов. Иначе говоря, прежде всего, необходимо сфокусировать внимание на самой информации. Такой подход называется ориентированным на данные.

1.3 Сбор требований

Среди определенного выбора программных продуктов, предлагаемых различными компаниями в области аналитики продажи билетов трудно найти программы, полностью удовлетворяющие потребителя по всем необходимым в настоящее время критериям.

Данный этап является важным, поскольку именно здесь заказчиком и разработчиком рассматривается первоначальное создание виртуального программного обеспечения исходя из представленных требований. Поэтому требования, которые предоставляет заказчик, должны быть сформулированы правильно, четко и корректно.

На этапе сбора требований производится подборка существующих в организации документов (входных, выходных) на основании которых разрабатывается информационная система (ИС), а так же производится определение требований к основным функциям разрабатываемой системы.

Требования к новому программному обеспечению были собраны по желанию заказчика с предоставлением некоторых аналогичных решений. Этот метод достаточно интересен тем что, при его использовании был рассмотрен некоторый предыдущий опыт в данной области.

Заказчик представили ряд главных требований, которые должны быть рассмотрены в первую очередь:

- эргономичность пользовательского интерфейса;

- ввод и редактирование различных видов данных;

- надежное хранение информации;

- вывод конечных результатов в удобном и наглядном для пользователя виде;

- возможности сравнения, редактирования, сортировки;

- создание форм отчетности для печати бланков и результатов.

Накопление данных производит главная программа продажи билетов.

При обработке сформированных данных были составлены следующие виды отчетных документов, для предоставления статистики в АИС:

- сведения о работе АТП;

- показатели работы рейса;

- срывы и не заходы автобусов;

- плановое задание по доходам;

- оперативные сведения;

- перевозка пассажиров;

- доходы от продаж билетов по месяцам;

- анализ предварительной продажи билетов на формирующиеся рейсы;

- отчет о предварительной продаже билетов на формирующиеся и транзитные рейсы;

- отчет о льготном проезде;

- сведения о предоставлении льготного проезда в автобусах;

- сведения о продаже билетов, выручке и наполняемости автобусов;

- станционное расписание движения автобусов;

- коэффициенты повышения тарифов на перевозку пассажиров за месяцы.

Результатом проектирования на данной стадии является разработка технико-экономического обоснования (ТЭО) необходимости создания дополнительного модуля «Анализ статистических данных продажи билетов» в соответствии с приложением А.

1.4 Анализ и моделирование требований

Разработка требований - это процесс, включающий мероприятия, необходимые для создания и утверждения документа, содержащего спецификацию требований к системе.

На этапе формирования и анализа требований разработчики программного обеспечения работают с заказчиком и конечными пользователями системы для выяснения функциональности, описания системных требований, определения режимов работы системы и т.д.

В процесс формирования требований к разрабатываемой информационной системе учитываются пожелания конечных пользователей, обслуживающего персонала подразделения информационных технологий компании, бизнес - менеджеров и специалистов по предметной области.

В процессе формирования требований принимали участие следующие лица:

* директор и заместитель директора по общим вопросам;

* разработчики информационной системы;

* сотрудники финансово - экономического отдела компании.

Анализируя существующие решения по автоматизации предметной области в организации, согласно типовым этапам разработки автоматизированной информационной системы (АИС), требуется разработать комплекс моделей предметной области. Данный комплекс моделей представляет собой совокупность диаграмм, выполненных в какой-либо нотации; структурированных спецификаций, описывающих элементы модели, а также перечень нормативных и операционных документов предметной области, являющихся первоисточником информации, представленной в диаграммах и спецификациях.

Стоит отметить, что подробность описания моделей должна соответствовать уровню анализируемой системы и в достаточности отражать концептуальное содержание разрабатываемой АИС.

Для предоставления расширения функциональных возможностей следует предоставить информацию в формализованном виде, т.е. построить ряд функциональных моделей («как есть», «как надо», концептуальная модель).

Данные модели обычно строятся с целью выявления слабых и уязвимых мест работы системы, анализ преимуществ новых бизнес-процессов и степени изменения существующей структуры организации деятельности.

Самым удобным отражением моделирования бизнес-процессов является тип диаграмм IDEF0 (Integration Definition for Function Modeling). С точки зрения функциональности системы. В рамках методологии IDEF0 бизнес-процесс представляется в виде набора элементов-работ, которые взаимодействуют между собой, а также показывается информационные, людские и производственные ресурсы, потребляемые каждой работой. Данный тип диаграммы отображает систему в целом, как комплексную совокупность функций системы.

Функции системы анализируются независимо от объектов, которыми они оперируют. Это позволяет более четко смоделировать логику и взаимодействие процессов организации.

Организация пассажирских перевозок состоит из нескольких функциональных взаимодействий. В основе обслуживания пассажиров производится продажа билетов, предоставление автобусных маршрутов, транспорта по категориям поездок, услуги хранения и транспортировки багажа, а так же доставка пассажиров из начального, в конечный пункт.

Единым документом, отражающим потребности в пассажирских перевозках, являются маршрутные расписания движения.

В управлении движением пассажирского транспорта оперативно осуществляются все диспетчерские функции по отправке автобусов, по открытию мест на продажу, по замене марки автобуса, по отмене рейса, по открытию нового рейса, т.е. происходит полная реализация функций диспетчера.

Учет тарифов стоимостных услуг ведется с помощью основной программы и персональных компьютеров. На них составляются диспетчерские наряды, которые решают вопросы тарифов и стоимости различных услуг.

Схематичное отображение в рамках методологии IDEF0 основной деятельности компании ОАО «Автовокзал» «Продажа билетов» изображено на рисунке 1.2.

Рисунок 1.2 - Продажа билетов

Первая диаграмма в иерархии диаграмм IDEF0 всегда изображает функционирование системы в целом. Данная диаграмма контекстная и описывает моделирование области. После того как контекст описан, проводится построение следующих диаграмм в иерархии. Каждая последующая диаграмма является более подробным описанием (декомпозицией) одной из работ на вышестоящей диаграмме.

Пример декомпозиции контекстной работы показан на рисунке 1.3

Рисунок 1.3 - Декомпозиция «Продажа билетов»

На рисунке 1.4 изображена дальнейшая декомпозиция работы «Ведение справочников».

Рисунок 1.4 - Декомпозиция работы «Ведение справочников»

Рисунок 1.5 - Декомпозиция работы «Создание отчета»

Сформированные данные заносятся в единую базу о состоянии продаж и пассажироперевозок компании. В последующем скомпонованная база данных будет служить исходными данными для формирования отчета о пассожироперевозках и проданных билетах.

Для того чтобы документировать механизмы передачи и обработки информации в моделируемой системе, используются диаграммы потоков данных (Data Flow Diagrams). Диаграммы DFD обычно строятся для наглядного изображения текущей работы системы документооборота вашей организации. Чаще всего диаграммы DFD используют в качестве дополнения модели бизнес-процессов, выполненной в IDEF0.

На рисунке 1.6 изображена схема документирования процесса получения отчетности.

Рисунок 1.6 - Схема документирования процесса получения отчетности, DFD диаграмма

Из данной диаграммы мы имеем четкое представление о том, какие данные используются, и какие функции выполняются системой документооборота.

1.6 Спецификация требований к ПО

При сборе информации о требованиях, предъявляемых к разрабатываемой информационной системе, использовался опрос сотрудников компании, в ходе которого была собрана информация, позволившая представить все основные функции, которые должна реализовывать информационная система, а также проводилось изучение нормативных материалов, определяющих требования к деятельности компании.

В соответствии с классификацией требований, были использованы следующие три типа требований:

Функциональные требования, описывающие желательные функциональные возможности или вариант использования.

Требования, описывающие общее ограничения системы.

Требования к представлению системы.

Для описания требований целесообразно использовать условные обозначения представленные в таблице 1.1.

Таблица 1.1- Условные обозначения требований

Обозначение

Описание

F

Функциональные требования, описывающие желательные функциональные возможности или вариант использования.

С

Требования, описывающие общее ограничения системы.

Р

Требования к представлению системы.

Далее в таблице 1.2 приведены функциональные требования к разрабатываемой системе.

Данные требования были согласованы с заказчиком, конечными пользователями и разработчиками информационной системы.

Таблица 1.2 - Функциональные требования к информационной системе

Название

Описание

F: Анализ загрузки рейсов

Подсистема должна автоматизировать функцию выбора данных из базы, формируемой автоматизированной системы «Продажа и бронирования билетов» для анализа загрузки рейсов автовокзала.

Автоматизировать режимы получения аналитических данных, сведения о срывах и не заходах автобуса, анализ пассажиропотока, расчеты коэффициента использования вместимости автотранспорта по временному промежутку, проданных билетов, расчеты коэффициента использования вместимости автотранспорта по временному промежутку, проданных билетов, выручки, наполняемость автобусов в соответствии с заданным дизайном и технологией

Системные требования отражают описание системных функций и ограничений, предъявляемых к проектируемой информационной системе. Системные требования представлены в таблице 1.3.

Таблица 1.3 - Описание системных требований

Название

Описание

С: Архитектура

Программный комплекс должен быть реализован в соответствии с архитектурой «клиент - сервер». Система должна обеспечивать обработки информации с централизованным хранением данных. Основная функциональность информационной системы должна быть реализована на «клиенте». Взаимодействие «клиента» с «сервером» должно осуществляться посредством SQL- запросов.

С :Среда разработки

В качестве среды разработки приложения должна использоваться Microsoft Visual FoxPro 9.0.

С: Взаимодействие приложения с источником данных

Для взаимодействия приложения с базой данных должны использоваться стандартизированные технологии и интерфейс Open Database Connectivity
(ODBC), удаленные представления используют для удаленных источников данных SQL синтаксис.

С :База данных

В качестве модели данных должна использоваться реляционная модель.

Требования к представлению включают ограничения на интерфейс конечного пользователя с информационной системой. Требования к представлению приведены в таблице 1.4.

Таблица 1.4 - Описание требований к представлению

Название

Описание

Р: Общий интерфейс

Интерфейс должен быть логичным и понятным.

Р: Форма представления данных

Информация должна отображаться на одном экране, а в случае невозможности разместить информацию на одном экране, необходимо структурировать экраны.

Р: Обязательные поля

Обязательные поля для ввода должны быть помечены определёнными данными.

Р: Система меню

Программа должна обеспечивать активизации функций: через главное меню.

Р: Расположение полей ввода данных

Расположение полей ввода данных должны соответствовать логичной последовательности их ввода, при вертикальном расположении - сверху вниз, а при горизонтальном - слева направо

1.7 Аттестация требований

Аттестация требований позволяет продемонстрировать заказчику общую работоспособность системы, и что его требования действительно правильно определяют изготовляемую систему.

Во время аттестации требований были выполнены следующие типы проверок:

- проверка правильности требований;

- проверка на непротиворечивость;

- проверка на полноту;

- проверка на выполнимость.

Одним из наиболее наглядных для заказчика методов аттестации является прототипирование. В процессе которого, была создана диаграмма потоков пользовательского интерфейса, используемая для того, чтобы проследить за взаимосвязями между основными элементами пользовательского интерфейса.

Диаграмма потоков пользовательского интерфейса представлена на рисунке 1.7.

Рисунок 1.7 - Диаграмма потоков пользовательского интерфейса

Создание прототипа программного обеспечения - это частичная или возможная реализация предлагаемого продукта. Само создание прототипов позволяет решать три основные задачи: прояснение и завершение процесса формулировки требований, исследование альтернативных решений и создание конечного продукта.

В процессе аттестации были разработаны прототипы пользовательского интерфейса, воплощающие срез функциональности приложения, формы которых представлены согласно рисункам Б.1 - Б.17в приложении Б.

Выводы к разделу

В процессе разработки требований к программному обеспечению были решены следующие задачи:

Был проведен анализ наиболее популярных существующих решений по автоматизации предметной области.

Был проведен сбор требований, в процессе которого были выявлены основные функции разрабатываемой системы.

В процессе анализа требований был разработан комплекс моделей предметной области.

Выполняя спецификацию требований, были определены и описаны функции системы, а также основные требования к внешнему интерфейсу.

Во время аттестации требований были разработаны прототипы пользовательского интерфейса и построена диаграмма потоков пользовательского интерфейса.

Был проведен выбор методологии проектирования информационной системы.

2. ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ

2.1 Архитектурное проектирование

Архитектура системы представляет собой концептуальное видение структуры будущих функциональных процессов и технологий на системном уровне и во взаимосвязи системы и пользователя. Информационные системы могут очень значительно различаться по своим функциям, архитектуре, реализации.

Разработка архитектуры информационной системы - это процесс описания архитектур информационных систем в достаточно детальном представлении. Существует несколько видов программных архитектур, используемых в настоящее время, это файл-серверная архитектура, клиент-серверная и многоуровневая.

Архитектура клиент-сервер разделяет компоненты приложения и размещает их там, где они будут функционировать наиболее эффективно. Особенностью архитектуры клиент-сервер является использование выделенных серверов баз данных, понимающих запросы на языке структурированных запросов SQL (Structured Query Language) и выполняющих поиск, сортировку и агрегирование информации.

Отличительная черта серверов БД - наличие справочника данных, в котором записана структура БД, ограничения целостности данных, форматы и даже серверные процедуры обработки данных по вызову или по событиям в программе. Объектами разработки в таких приложениях помимо диалога и логики обработки являются, прежде всего, реляционная модель данных и связанный с ней набор SQL-операторов для типовых запросов к базе данных.

Большинство конфигураций клиент-сервер использует двухуровневую модель, в которой клиент обращается к услугам сервера. Предполагается, что диалоговые компоненты управления данными размещаются на клиенте, что позволяет обеспечить графический интерфейс. Компоненты управления данными размещаются на сервере. Двухуровневое определение архитектуры клиент-сервер использует именно этот вариант: приложение работает у клиента, СУБД - на сервере. Поскольку такая схема предъявляет наименьшие требования к серверу.

При внедрении модуля сбора данных взаимодействие между приложением и источником данных осуществлялось при помощи компонента меню «Система».

Компонент меню «Система» используется для настройки доступа к данным из различных систем управления базами данных. Например, при наличии программы, работающей с данными из базы данных SQL, компонент меню «Система» позволит использовать программу для доступа к данным в базе данных FoxPro. Компонент «Источник данных» используется для настройки приложений, чтобы обеспечить им доступ к данным из различных систем управления базами данных.

Для реализации программного модуля мною была выбрана технология Open DataBase Connectivity (открытая система связи с базами данных).

ODBC представляет собой набор динамических библиотек DLL, которые обслуживают подключение и работу с конкретным типом базы данных. При запросе на подключение к определенной, заранее описанной базе «активизируется» определенная DLL - драйвер этого типа БД.

Преимущества данного выбора в том, что приложения не привязаны к программному интерфейсу какого-то одного поставщика, SQL-запросы могут быть включены непосредственно в исходный код приложения либо генерироваться «на лету», приложения могут полностью игнорировать коммуникационные протоколы, используемые для непосредственного доступа к данным. Пи этом данные могут получаться или отсылаться в выбранном формате.

2.2 Проектирование пользовательского интерфейса

Пользовательский интерфейс представляет собой совокупность программных и аппаратных средств, обеспечивающих взаимодействие пользователя с компьютером. При разработке информационной системы одной из главных задач разработки является создание простого интерфейса для понимания конечному пользователю. Но при этом интерфейс должен быть незагруженным, то есть не должно быть ничего лишнего. Именно с помощью интерфейса происходит «общение» конечного пользователя программного продукта с информационной системой.

Основу такого взаимодействия составляют диалоги формы. Под диалогом в данном случае понимают регламентированный обмен информацией между человеком и компьютером, осуществляемый в реальном масштабе времени и направленный на совместное решение конкретной задачи: обмен информацией и координация действий. Каждый диалог состоит из отдельных процессов ввода-вывода, которые физически обеспечивают связь пользователя и компьютера. Обмен информацией осуществляется передачей сообщений и управляющих сигналов.

По аналогии с процедурным и объектным подходом к программированию различают процедурно-ориентированный и объектно-ориентированный подходы к разработке интерфейсов.

Процедурно-ориентированные интерфейсы используют традиционную модель взаимодействия с пользователем, основанную на понятиях «процедура» и «операция». В рамках этой модели программное обеспечение предоставляет пользователю возможность выполнения некоторых действий, для которых пользователь определяет соответствующие данные и следствием выполнения которых является получение желаемых результатов.

При реализации разрабатываемой информационной системы использовалась реализация процедурно-ориентированные интерфейсы. Данный выбор обоснован простотой реализации системы, и выбором методологии проектирования. Графические пользовательские прототипы интерфейса были разработаны при определении требований к проектируемой системе и приведены в приложении Б.

После запуска приложения открывается главная форма, которая содержит основное меню, состоящее из пяти пунктов меню: Система, Расчет, Аналитика, Выход. Интерфейс-меню позволяет пользователю выбирать необходимые операции из специального списка, выводимого ему программой. Эти интерфейсы предполагают реализацию множества сценариев работы, последовательность действий в которых определяется пользователем.

2.3 Проектирование баз данных

База данных - это единое, хранение структур данных, которое затем используется одновременно многими пользователями из разных подразделений. Основным ресурсом для составления отчетности разрабатываемой системой будут являться данные сформированные главной программой «Продажа билетов».

Проектирование базы данных основано на информации, которая будет использоваться разрабатываемой программой. Необходимая для проектирования базы данных информация собрана посредством изучения документов, которые используются для сбора или представления информации. Перечень требуемых документов был определен на этапе сбора требований. Собранная на этом этапе информация может быть плохо структурирована и включать некоторые неформальные заявления пользователей, которые впоследствии потребуется преобразовать и представить в виде более четко сформулированных требований.

При проектировании БД важной задачей ставилось определение представления данных и связей между ними, необходимых для всех основных областей применения данного приложения. В процессе проектирования были созданы три уровня модели - концептуальный, логический и физический.

Концептуальный уровень модели отражает в себе сущности и взаимосвязи, отражающие основные бизнес-правила предметной области. Диаграмма сущность-связь может включать связи «многие ко многим» и не включать описание ключей. Концептуальная модель базы данных приведена на рисунке 2.1.

Рисунок 2.1 - Концептуальная модель базы данных

Доработка этой концептуальной модели с учетом атрибутов таблиц позволяет перейти непосредственно к логической модели БД. Логическая модель базы данных показана на рисунке 2.2

Рисунок 2.2 - Логическая модель базы данных

Физический уровень модели данных, напротив, зависит от конкретной системы управления базами данных, фактически являясь отображением системного каталога. В физическом уровне модели содержится информация обо всех объектах базы данных. На физическом уровне модели важно описать всю информацию о конкретных физических объектах - таблицах, колонках, индексах, процедурах. Физическая модель базы данных показана на рисунке 2.3.

Рисунок 2.3 - Физическая модель базы данных

В процессе создания моделей баз данных были получены таблицы, отображающие необходимую информацию. Список таблиц разрабатываемого модуля для ОАО «Автовокзал»:

- анализ пассажиропотока (Analpass);

- анализ работы АТП (Atp_Anal)

- выручка за багаж (Bagaj_D)

- показатели работы рейса (Coef_CRT)

- срывы и незаходы автобусов (FailRejs)

- плановое задание по доходам (FuturDoh)

- перевозка пассажиров фактическая (LoadFact)

- периодичность рейсов (MinSched)

- положение по продажам (NegPass)

- справка о неприбытиях и опозданиях автобусов по АТП (NerpOATP)

- оперативные сведения (Oper_All)

- сведения о работе АТП по выполнению условий«Договора об организации и перевозки» (OrderAtp)

- расчет потребности кассовых ведомостей (OrderCnt)

- перевозка пассажиров дальнего следования (PassKmAV)

- доходы по месяцам от продаж (PlanDoh)

- анализ предварительной продажи билетов на формирующиеся рейсы (Pr_SalSv)

- отчет о предварительной продаже билетов на формирующиеся и транзитные рейсы (Pre_Sale)

- льготный проезд (Priv_All)

- сведения о предоставлении льготного проезда в автобусах по отдельным категориям лиц (Privileg)

- обслуживающее АТП (SoldTis1)

- сведения о продаже билетов, выручке и наполняемости автобусов (SoldTisk)

- станционное расписание движения автобусов (St_Sched)

- коэффициент повышения тарифов на перевозку пассажиров за месяцы (TarifRat)

2.4 Обоснование выбора платформы создания информационной системы

Согласно требованиям к разрабатываемой системе, а так же согласно требованиям стороны заказчика, для создания разрабатываемой информационной системы анализа продажи проездных билетов на примере ОАО «Автовокзал» был выбран Microsoft Visual FoxPro 9.0.

Первоначальное название FoxPro - FoxBase. Данный продукт разработка компании Fox Software. Начало разработки данного продукта было положено еще в 1984 году. С течением времени в 1992 году компания Fox Software объединилась с компанией Microsoft и новые версии продукта обрели ряд новых функций а так же приставку «Visual». Последняя версия оригинального FoxPro - версия 2.6 - работала под Mac OS, DOS, Windows и Unix. Уже в версии Visual FoxPro 3.0 список поддерживаемых платформ сократился до Mac OS и Windows, а в более поздних версиях -- уже только до Windows.

Текущая версия Visual FoxPro основана на Component Object Model (COM), и Microsoft утверждает, что .NET-версии продукта не будет. COM - это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих распределённых компонентов, каждый из которых может использоваться во многих программах одновременно. Стандарт COM был разработан в 1993 году корпорацией Майкрософт как основа для развития технологии Object Linking and Embedding (OLE) - технология связывания и внедрения объектов в протокол.

Технология OLE уже позволяла создавать так называемые «составные документы». Например, в пакете Microsoft Office эта технология позволяла включать диаграммы Microsoft Excel в документы Microsoft Word. Стандарт же COM должен был унифицировать процесс создания, внедрения и связывания таких внедряемых объектов, а также стандартизировать разработку приложений, использующих внедряемые объекты.

Visual FoxPro это визуальная среда разработки систем управления реляционными базами данных, выпускаемая в настоящее время корпорацией Майкрософт. Последней версией продукта является Microsoft Visual FoxPro 9.0, данный продукт использует язык программирования FoxPro. Среда разработки версии 7.0 может работать в операционных системах Windows 9x и ядра NT, версии 8.0 и 9.0 -- только в Windows XP, 2000, 2003. Среда исполнения версий 8.0 и 9.0 работает под любой версией Windows, начиная с 98.

Visual FoxPro позволяет создавать решения на основе баз данных в диапазоне от локальных приложений до Web решений, предоставляет мощные возможности в обработке данных, инструменты быстрой разработки приложений, обеспечивающих максимальную продуктивность труда и гибкость, необходимую для построения всех типов решений на основе баз данных.

Инструментарий Visual FoxPro - это мощное средство для создания настольных и распределённых приложений. Его основные достоинства - удобный интерфейс разработчика, простота базового языка, мощный диалект языка структурированных запросов Structured Query Language (SQL), поддержка технологии Open Database Connectivity (ODBC) и COM.

Open Database Connectivity - удаленные представления, используют для удаленных источников данных. Visual FoxPro позволяет спроектировать приложение для обработки автономных данных. Представления являются совокупностью комбинацией различных характеристик таблиц и запросов, обеспечивающих получение результирующих наборов данных из одной или нескольких исходных таблиц или других представлений. Существует возможность использовать создаваемые представления для просмотра получаемых данных или для проведения соответствующих корректировок данных. Представления могут использоваться как локальные образы наборов данных для удаленных источников.

Visual FoxPro использует таблицы в формате строки и колонки. Эти строки и колонки известны как записи и поля. Построение базы данных, включает в себя создание таблиц. При разработке дизайна базы данных, определяются элементы, которые необходимы в базе данных, такие, как таблицы, поля и отношения, которые будут использоваться приложением. При создании таблиц, делаются более конкретные выборы, относящиеся к деталям этих элементов, например, типы данных, заголовки и, возможно, значения по умолчанию для каждого поля, триггеры для каждой таблицы, и табличные индексы, необходимые для установки отношений между таблицами.

Получив некоторую копию таблиц из удаленной базы данных можно выполнять требуемые вычисления непосредственно с указанными представлениями, которые были созданы ранее, при «Активном» режиме работы с базой данных. При завершении работы, можно отправить сделанные изменения обратно, на удаленную базу данных, дискретно обновить удаленные представления и исходные таблицы.

Visual FoxPro подходит для создания приложений масштаба предприятия, клиентских приложений, вертикальных решений c возможностью обработки локальных данных, для создания хранения структур данных, которые сочетают мощь и защищенность баз данных, создания приложения в рамках подразделения (рабочей группы) с использованием файл - сервера или архитектуры клиент - сервер.

Visual FoxPro позволяет осуществить процесс создания приложений автоматизации офисной деятельности с интеграцией продуктов Microsoft. Это позволяет эффективно использовать разнообразный функционал установленных приложений, например: Microsoft Excel. Процесс создания отчета происходит следующим образом. Данные формируются запросом и сохраняются в таблице, функция «alltrim» удаляет начальные и конечные пробелы заданного символьного выражения и возвращает усеченное выражение в виде символьной строки. Для последующих полей производится проверка на пустоту, чтобы избежать вывода на печать нулевых значений.

Для передачи данных в документ Excel формируется массив, определенной структуры. Каждая из строк массива соответствует типу полос отчета, столбцы массива - столбцам отчета. При этом шаблон отчета уже создан в Excel и запускается в момент передачи данных.

Процедуры, необходимые для формирования отчета в Excel, передаются вместе с данными, но после отработки уничтожаются. В итоге в Excel получаем файл, в котором есть необходимые данные

В нашем случае программный комплекс Microsoft Visual FoxPro 9.0 является незаменимым и подходящим по большинству параметров разработки системы.

2.5 Проектирование модулей

Фактически структурное проектирование является мостом между структурным анализом и реализацией.

На этапе проектирования описывается, как реализуются требования пользователя, которые порождены и зафиксированы на фазе анализа. При этом осуществляется построение модели реализации модулей.

Процесс проектирования начинается с того, что модель анализа принимается в качестве основной входной информации. Далее, в процессе проектирования модель анализа трансформируется в новую форму - модель проектирования, которая затем может быть реализована в виде программного продукта.

Пример модели проектирования модулей системы изображен на рисунке 2.4.

Рисунок 2.4 -Модель взаимодействия модулей системы

При разработке модели взаимодействия модулей преследуются следующие цели:

- определить распределение компонентов системы по ее физическим узлам;

- показать физические связи между всеми узлами реализации системы на этапе ее исполнения.

Для полного представления взаимодействия данных и отношений модулей системы стоит построить структурные карты Константайна. Данное схематичное отображение карт является моделью отношений иерархии между программными модулями. Узлы структурных карт соответствуют модулям и областям данных, потоки изображают межмодульные вызовы.

Структурные карты Константайна разрабатываемого модуля изображены в приложении В.

Выводы к разделу

В процессе проектирования информационной системы были решены следующие задачи:

Была определена и проанализирована архитектура информационной системы.

Были уточнены пользовательские интерфейсы.

Было выполнено проектирование базы данных информационной системы, а именно построены концептуальная, логическая и физическая модели, был произведен выбор системы управления базами данных.

Было выполнено обоснование выбора платформы проектируемой информационной системы.

Было выполнено структурное проектирование информационной системы, а именно была построена модель взаимодействия модулей, для того, чтобы продемонстрировать, каким образом происходят отношения между модулями программы.

3. РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ

3.1 Реализация приложения

На этапе проектирования выполнялась разработка приложения. На данном этапе производилось итеративное построение реальной системы на основе полученных ранее моделей, а также требований нефункционального характера

Разработка приложения велась с использованием Microsoft Visual FoxPro 9.0, на языке программирования FoxPro. Результатом данного этапа работ является готовая информационная система, удовлетворяющая всем требованиям пользователей.

В результате разработки информационной системы были реализованы основные процедуры, приведенные в таблице 3.1.

Таблица 3.1 - Процедуры реализации модулей

Название процедуры (функции)

Описание

Fail_Delay_Atp_All

Итоги неприбытий и опозданий по АТП

FailRejs

Перечень сорванных и незашедших рейсов

FailRejs_Sv

Сорванные и незашедшие рейсы, сводная

Fail_Delay_AV

Неприбытия и опоздания по АВ

Future_Dohod

Расчет дохода

Min_Sched

Расчет потребностей в ведомостях

Open_Table

Открытие таблиц в директории

Oper_All

Оперативные данные по всему АВ

Pacpicah

Расписание маршрутов

Pre_Sale

Бронирование, предварительная продажа билетов

Privileg

Льготный проезд

Priv_All

Льготный проезд по АВ

Priv_atp

Льготники по АТП

Sold_Tisked

Сведения о продаже билетов, выручке и наполняемости автобусов

Min_Sched

Суммарный километраж и количество пассажиров

Tarif_Ratio

Коэффициент повышения тарифов

Приведем пример реализации меню функций «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет».

На рисунке 3.1 представлена форма вызова данной функции, за кнопкой выполнить закреплен ряд обработчиков на правильность и полноту выбранных данных, и непосредственно выполнение выбранной функции.

Рисунок 3.1 - Диалоговое окно меню функций «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет»

Листинг программы изображен на рисунке 3.2.

Рисунок 3.2 - Реализация обработчиков на правильность выбранных данных

После проверки на правильность выбранных данных происходит выборка данных согласно заданным параметрам выбора. Выборка происходит из базы данных состав маршрутов «sostmar». При выборке используются идентификаторы, поля таблиц такие, как «Порядок и номер последовательности» - «PLS», «Код населенного пункта прохождения» - «KPP», а так же «Плановое отправление, прибытие рейса» - «BEDOM». Далее обращаемся к полям баз таких, как «Количество пассажиров» - «kolp», «Следование пассажиров» - «sled_pas», «Количество чеков» - «p_colp», «Количество проданных прямых мест» - «colp», «Общее количество мест» - «kolm», запоминаем данные во временные таблицы, обнуляем поля, сумма, количество пассажиров.

Формируем выбранные данные в таблицу повременных рейсов, при этом производя сортировку по порядку следования, либо ее еще называют по географическому пути.

Формируем данные о прямом и обратном направлении, используя «P_Len» - количество пунктов маршрутов. Создаем курсор для хранения времени следования по маршруту, и его расстояния в прямом направлении. После вычисляем время отправления с автостанции для прямого, и создаем курсор для хранения времени следования по маршруту, а так же его расстояние в обратном направлении. После вычисляем отправление с автостанции для обратного, на основе этих данных получаем расстояние и время следования. Сохраняем время отправления. Производим расчет проданных билетов за месяц, по выбранному количеству месяцев. Создаем таблицу выбранных данных, считываем Excel шаблон «Coef_CRT1.xls», передаем параметры с помощью «Lparametrs» в лист отчета, запоминаем данные. Листинг процедур приведен на рисунке 3.3.

Рисунок 3.3 - Листинг реализации меню функций «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет»

Рисунок 3.3 -Продолжение. Листинг реализации меню функций «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет»

Рисунок 3.3 -Продолжение. Листинг реализации меню функций «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет»

В результате реализации функций и методов мы получаем отчет «Проданные билеты, выручка, наполняемость автобуса» согласно рисунку 3.4.

Рисунок 3.4 -Отчет «Проданные билеты, выручка, наполняемость автобуса» из модуля «Расчет» за апрель месяц 2008 года

Также приведем пример формирования отчета из меню «Аналитика», расчет функции «Неприбытия и опоздания автобусов по АТП». Выбираем пункт из меню «Аналитика» «Неприбытия и опоздания», выбираем данные в диалоговом окне изображенным на рисунке 3.4, далее получаем отчет согласно рисунку 3.5.

Рисунок 3.4 - Диалоговое окно выбора промежутка расчета «Неприбытия и опоздания автобусов по АТП»

Рисунок 3.5 -Отчет «Справка о неприбытиях и опозданиях автобусов по АТП» за апрель месяц 2008 года

Листинг остальных процедур и функций приведен в приложении Д - «Программный код методов и функций».

3.2 Взаимодействие приложения с источниками данных

Доступ к базе данных в разрабатываемом модуле представляет собой обычный сценарий доступа типичного настольного приложения клиент - сервер. В разработанном модуле осуществление доступа к БД главной программы «Продажа билетов» происходит через меню приложения «Система». Выбор команды данного меню позволит осуществить настройку доступа путем указания пути к расположению БД. При отсутствии соединения программа выдаст предупреждающее окно о том, что соединение не установлено. Иначе при успешном соединении программа отреагирует действием об инициализации БД.

Доступ к данным при успешной инициализации баз ведется на стороне пользователя приложением. Программа содержит ряд процедур и функций, с помощью которых происходит обращение к БД.

Обращение к определенной базе данных происходит по имени так называемого источника данных Open DataBase Connectivity (ODBC) (открытая система связи с базами данных) (или DSN - data source name). Можно представить DSN как своего рода объявление БД на данном компьютере. Причем DSN может быть пользовательским, т.е. находится в области видимости, только одного пользователя, в сеансе которого был создан этот DSN. И системным, т.е. видимым всеми пользователями данного компьютера и файловым, который может совместно использоваться всеми пользователями, у которых установлены необходимые драйверы. Управление источниками данных ODBC (да и вообще настройкой всей системы ODBC) осуществляется с помощью специальной программы - ODBC-администратора. Эта программа входит в средства управления Windows.

Физически ODBC представляет собой набор динамических библиотек DLL, которые обслуживают подключение и работу с конкретным типом базы данных. При запросе на подключение к определенной, заранее описанной базе «активизируется» определенная DLL - драйвер этого типа БД.

3.3 Тестирование приложения

Тестирование - это проверка работы программ с данными, которые будут обрабатываться в процессе эксплуатации системы. Процесс тестирования осуществляется на основе фактических или смоделированных входных данных (как стандартных, так и не стандартных) при определённых контролируемых условиях.

Тестирование приложения должны быть ориентированы на результаты сбора данных и на предполагаемое поведение программы. Необходимо произвести тестирование дефектов обусловленных ошибками в программе (синтаксические ошибки, ошибки периода выполнения, логические ошибки), а так же при работе с программой оценивать следующие проблемные моменты:

- функциональные возможности программы;

- практичность программы;

- навигацию модулей;

- форму отчетов;

- структурное содержимое отчетов;

- достоверность содержимого отчетов.

Проведение этих тестов в контролируемой и изолированной среде тестирования помогает убедиться в том, что основные функции системы работают корректно.

Тестирование модуля проводилось методом «черного ящика». Данный тип тестирования основан на тестировании путем взаимодействия с приложением через графический интерфейс пользователя и анализа выводимых результатов. Метод предполагает обработку системы как «неизвестного объекта», таким образом, знание внутренней структуры в явном виде не используется. Тестирование данным методом подразумевает проверку функциональных возможностей.

Среда тестирования приложения - операционная система Microsoft Windows 2000. Целью данного тестирования является проверка полной работоспособности модуля.

Тестовый сценарий взаимодействия пользователя с системой:

- пользователь запускает приложение;

- производит настройку программы, через меню «Система»;

- пользователь выбирает нужный модуль расчета;

- выбирает необходимые поля и данные для формирования отчета, и нажимает кнопку выполнить.

План тестирование приведен в приложении Г в таблице Г.1.

Для всех пунктов меню были проведены тесты, подтверждающие корректность содержимого с точки зрения пользователя.

Чтобы убедиться в корректности содержимого, было проверено содержимое на точность, оценена правильность орфографии, расчетов, отношение полей, грамматики и терминологии.

3.4 Методика развертывания приложения

Для полного и нормального функционирования приложения требуется наличие выделенного сервера, рабочая станция с выделенным клиентом, СУБД Foxpro DOS 2.6, сформированные главной программой «Продажа билетов» базы данных.

Для обеспечения работоспособности приложения необходимо установить разработанное приложение. Для установки информационной системы достаточно запустить файл Setup.exe, и следовать инструкциям мастера установки.

Для доступа к данным необходимо указать путь к данным через установленное приложение в меню «Система».

Выводы к разделу

В результате реализации и аттестации информационной системы были решены следующие задачи:

Была реализована информационная система, ,были написаны основные функции, процедуры и сценарии доступа к данным.

Были написаны код приложения и все необходимые для функционирования модуля опции.

Была определена технология доступа к данным.

Было выполнено функциональное тестирование модуля и написаны сценарии тестирования.

Была определены методика развертывания приложения, был скомпилирован инсталляционный пакет для установки информационной системы.

4. УПРАВЛЕНИЕ ИНФОРМАЦИОННЫМ ПРОЕКТОМ

4.1 Выбор жизненного цикла разработки программного обеспечения

Под моделью жизненного цикла проекта понимается структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач, выполняемых на протяжении жизненного цикла. Модель жизненного цикла зависит от специфики информационной системы и специфики условий, в которых последняя создается и функционирует.

Существует стандарт ISO/IEC 12207, который описывает структуру процессов жизненного цикла программного обеспечения, но не конкретизирует в деталях, как реализовать, или выполнить действия и задачи, включенные в эти процессы.

В настоящее время наибольшее распространение получили следующие две основные модели жизненного цикла:

- каскадная модель;

- спиральная модель.

При разработке программного модуля была выбрана спиральная модель, (рисунок 4.1)

Рисунок 4.1 - Спиральная модель

Данная модель делает упор на начальные этапы жизненного цикла: анализ и проектирование. На этих этапах реализуемость технических решений проверяется путем создания прототипов.

Выбор данной модели обосновывается тем, что изначально нельзя конкретно сказать обо всех функциях, которые должна выполнять система. Сроки выполнения проекта сильно ограничены, что не допускается при использовании других жизненных циклов программного обеспечения.

Так как система изначально создается как дополнительный модуль большой информационной системы, то необходимые доработки и нововведения в проект могут быть выполнены на следующих итерациях, не дожидаясь полного завершения разработки.

4.2 Определение цели и области действия программного проекта

Разрабатываемая информационная система «Анализ продажи проездных документов» в первых версиях реализации позволит проводить автоматический сбор данных продажи проездных документов. А в последующих версиях программа производит расчеты по багажу, нагрузке пассажиропотока, расчеты потребностей в кассовых ведомостях, получение сведений о работе АТП, сведения о льготных пассажирах, сведения о выполнении плана по договору, оперативные сведения по работе автостанции.

Основная функциональность системы:

- получение аналитических данных о срывах и не заходах автобуса;

- анализ пассажиропотока;

- расчеты коэффициента использования вместимости автотранспорта по временному промежутку;

- анализ проданных билетов;

- наполняемость автобусов;

- сведения о работе АТП;

- показатели работы рейса;

- срывы и не заходы автобусов;

- плановое задание по доходам;

- оперативные сведения;

- перевозка пассажиров;

- доходы от продаж билетов по месяцам;

- анализ предварительной продажи билетов на формирующиеся рейсы;

- отчет о предварительной продаже билетов на формирующиеся и транзитные рейсы;

- отчет о льготном проезде;

- сведения о предоставлении льготного проезда в автобусах;

- станционное расписание движения автобусов;

- коэффициенты повышения тарифов на перевозку пассажиров за месяцы.

4.3 Создание структуры пооперационного перечня работ

При составлении проекта, для решения поставленных задач, используются следующие процессы:

Область охвата:

- определение области охвата проекта;

- предварительное определение ресурсов.

Разработка требований к программному обеспечению:

- определение назначения проекта;

- анализ и определение требований;

- разработка графика выполнения работ;

- разработка технического задания;

- оценка стоимости проекта.

Проектирование:

- описание основных функций системы;

- разработка прототипов;

- разработка модели базы данных;

- выбор платформы создания информационной системы;

- проектирование модулей.

Разработка:

- разработка БД;

- разработка пользовательского интерфейса;

- разработка, написание кода программы;

- первичная отладка.

Тестирование:

- разработка планов тестирования модулей.

Тестирование модулей:

- тестирование модулей компонента;

- изменение кода;

- повторное тестирование измененного кода.

Для создания пооперационного перечня работ был использован специализированный продукт Microsoft Office Project 2007. Данный продукт позволяет эффективно управлять и выявлять приоритеты для проектов и ресурсов организации.

Microsoft Office Project 2007 предоставляет предполагаемые действия:

- эффективное планирование всех типов трудозатрат;

- более эффективное управление ресурсами;

- получение четкого представления и анализ проекта;

- упрощение отправки уведомлений и совместной работы.

Задачи по управлению информационным проектом предоставлены на рисунке 4.2.

Рисунок 4.2 - Пооперационный перечень работ проекта

4.4 Идентификация ресурсов проекта

Ресурсами проекта являются - исполнители, оборудование и материалы, используемые для выполнения задач в проекте.

При разработке проекта было выявлено использование трудовых ресурсов, представленных в таблице 4.1.

Таблица 4.1 - Трудовые ресурсы проекта

Название ресурса

Количество

Стандартная ставка (рублей в час)

Ставка сверхурочных (рублей в час)

Руководитель проета

1

150

300

Аналитик

2

80

160

Разработчик

4

100

200

Тестер

2

60

120

Проектировщик

3

120

240

Ресурсы проекта, определенные так же с помощью инструментария Microsoft Project представлены на рисунке 4.3.

Рисунок 4.3 - Ресурсы проекта

4.5 Оценка длительности разработки программного обеспечения

Есть различные способы оценки длительности разработки программного обеспечения (общий промежуток активного рабочего времени, необходимый для выполнения задачи).

Существует три оценки длительности - это оптимистическая (общий промежуток активного рабочего времени, ожидаемый для задачи в наиболее благоприятной ситуации), пессимистическая (общий промежуток активного рабочего времени, ожидаемый для задачи в наиболее неблагоприятной ситуации) и ожидаемая (общий промежуток активного рабочего времени, ожидаемый для задачи). Данные оценки не позволяют изучать наилучший и наихудший сценарии, однако подобной гибкостью обладает анализ по методу PERT (процесс оценки возможных результатов на основании трех сценариев: наилучшего, ожидаемого и наихудшего).

Чтобы провести анализ по методу PERT, необходимо задать оптимистическую, пессимистическую и ожидаемую длительность имеющихся задач (действия, имеющие начало и конец) и с помощью Microsoft Office Project 2007 получить взвешенные значения.

Задав значения длительности для каждого из трех типов, можно составить календарный план (расписание и последовательность выполнения задач в проекте, календарный план в основном содержит сведения о задачах, зависимостях задач, длительностях, ограничениях и другие сведения о временных параметрах проекта), основанный исключительно на длительностях одного типа -- оптимистических, пессимистических или ожидаемых.

Общая длительность работ по изготовлению программного продукта составляет 38 дней.

Длительность разработки программного обеспечения можно представить в виде таблицы (таблица 4.2).

Таблица 4.2 - Длительность разработки программного обеспечения

Наименование работы

Длительность

Дата начала

Дата окончания

Область охвата

0,38 дней

Пн 10.12.07

Пн 10.12.07

Определение области охвата проекта

2 ч

Пн 10.12.07

Пн 10.12.07

Предварительное определение ресурсов

1 ч

Пн 10.12.07

Пн 10.12.07

Разработка требований к программному обеспечению

3,88 дней

Вт 11.12.07

Пт 14.12.07

Определение назначения проекта

1 день

Вт 11.12.07

Вт 11.12.07

Анализ и определение требований

2 ч

Ср 12.12.07

Ср 12.12.07

Разработка графика выполнения работ

1 день

Ср 12.12.07

Чт 13.12.07

Разработка технического задания

1 день

Чт 13.12.07

Пт 14.12.07

Оценка стоимости проекта

5 ч

Пт 14.12.07

Пт 14.12.07

Проектирование

14,5 дней

Пн 17.12.07

Пт 04.01.08

Описание основных функций системы

1 день

Пн 17.12.07

Пн 17.12.07

Разработка прототипов

4 дней

Вт 18.12.07

Пт 21.12.07

Разработка модели базы данных

2 дней

Пн 24.12.07

Вт 25.12.07

Выбор платформы создания информационной системы

0,5 дней

Ср 26.12.07

Ср 26.12.07

Проектирование модулей

7 дней

Ср 26.12.07

Пт 04.01.08

Разработка

10 дней

Пн 07.01.08

Пт 18.01.08

Разработка БД

2 дней

Пн 07.01.08

Вт 08.01.08

Разработка пользовательского интерфейса

1 день

Ср 09.01.08

Ср 09.01.08

Разработка, написание кода программы

5 дней

Чт 10.01.08

Ср 16.01.08

Первичная отладка

1 день

Пт 18.01.08

Пт 18.01.08

Тестирование

8 дней

Пн 21.01.08

Ср 30.01.08

Разработка планов тестирования модулей

2 дней

Пн 21.01.08

Вт 22.01.08

Тестирование модулей

6 дней

Ср 23.01.08

Ср 30.01.08

Тестирование модулей компонента

2 дней

Ср 23.01.08

Чт 24.01.08

Изменение кода

2 дней

Пт 25.01.08

Пн 28.01.08

Повторное тестирование измененного кода

2 дней

Вт 29.01.08

Ср 30.01.08

Завершение разработки ПО

0 дней

Чт 31.01.08

Чт 31.01.08

Ниже (рисунок 4.4) предоставлена диаграмма Ганта. Это встроенное представление, в котором слева отображаются задачи проекта, а справа - отрезки, соответствующие длительностям задач.

Рисунок 4.4 - Диаграмма Ганта

4.6 Распределение ресурсов проекта

Далее необходимо назначать задачам ресурсы (исполнители, оборудование и материалы, используемые для выполнения задач в проекте) для того, чтобы уточнить, кто должен отвечать за выполнение этих задач. Назначение ресурсов также помогает определить, сколько времени уйдет на выполнение задачи и (если отслеживаются затраты) каких это потребует затрат.

Ресурсом может быть один человек, универсальный ресурс (прототипы ресурсов, используемые для указания умений и навыков, необходимых для выполнения конкретной задачи), который может быть заменен позднее, группа людей (например программистов), компонент оборудования (например подъемный кран или компьютер) или материал (комплектующие и другие расходные материалы, такие как бетон, пиломатериалы или гвозди), расходуемый в процессе выполнения задачи.

При разработке информационной системы ресурсы проекта были распределены следующим образом:

Руководитель проекта - определение области охвата проекта, закрепление финансирования проекта, предварительное определение ресурсов, разработка графика выполнения работ, разработка технического задания, оценка стоимости проекта;

Аналитик - анализ требований, определение целевого назначения проекта, описание основных функций системы;

Проектировщик - разработка объектных диаграмм, разработка модели БД, разработка пользовательского интерфейса, разработка прототипов;

Разработчик - разработка БД, разработка кода приложений, первичное тестирование;

Тестер - разработка планов тестирования, тестирование модулей, ревизия кода модулей, выявление аномалий, изменение кода, повторное тестирование.

4.7 Идентификация задач и действий

Определение задач и необходимые трудозатраты для их достижения представлены в таблице 4.3.

Таблица 4.3 - Идентификация задач и действий

Наименование ресурса

Трудозатраты

Руководитель проекта

36 ч

Определение области охвата проекта

2 ч

Предварительное определение ресурсов

1 ч

Определение назначения проекта

8 ч

Разработка графика выполнения работ

8 ч

Разработка технического задания

8 ч

Оценка стоимости проекта

5 ч

Выбор платформы создания информационной системы

4 ч

Аналитик

18 ч

Определение назначения проекта

8 ч

Анализ и определение требований

2 ч

Описание основных функций системы

8 ч

Разработчик

72 ч

Разработка БД

16 ч

Разработка пользовательского интерфейса

8 ч

Разработка, написание кода программы

40 ч

Первичная отладка

8 ч

Тестер

112 ч

Разработка планов тестирования модулей

16 ч

Тестирование модулей

48 ч

Тестирование модулей компонента

16 ч

Изменение кода

16 ч

Повторное тестирование измененного кода

16 ч

Проектировщик

108 ч

Разработка прототипов

32 ч

Разработка модели базы данных

16 ч

Выбор платформы создания информационной системы

4 ч

Проектирование модулей

56 ч

4.8 Оценка стоимости разработки программного обеспечения

Стоимость разработки программного обеспечения можно рассчитать по формуле:

где:

СРПО - стоимость разработки программного обеспечения;

ПС - почасовая ставка использования ресурса;

i - номер ресурса;

Q - количество часов использования ресурса.

Почасовая (стандартная) ставка использования ресурса для проекта разрабатываемой информационной системы представлена на рисунке 4.3 - «Ресурсы проекта». Количество часов использования ресурса представлены в таблице 4.3 - «Идентификация задач и действий».

Используя формулу 4.1, необходимо рассчитать стоимость разработки программного обеспечения:

Стоимость разработки информационной системы автоматически рассчитывается при помощи Microsoft Office Project 2007 (рисунок 4.5), и составит 33720 рублей.

Рисунок 4.5 - Стоимость разработки программного обеспечения

В таблице 4.4 представлен перечень необходимых затрат.

Таблица 4.4 - Затраты на внедрение программного продукта

Наименование

Стоимость (рублей)

Разработка информационной системы

33720

Microsoft Visual Fox Pro 9.0

1600

Итого:

35320

4.9 Оценка экономической эффективности проекта

Цель проектирования и внедрения проекта автоматизированной информационной системы заключается в автоматизации и замене ручного труда. Разработка данной системы приведет к экономии затрат, связанных с оформлением выходных документов сбора аналитических данных продажи проездных билетов, а так же работы автовокзала в. целом

Под эффективностью проекта принято понимают степень соответствия произведенных действий определенным целям.

Для того чтобы говорить об эффективности применения того или иного варианта разработанных информационных технологий необходимо иметь численный показатель или критерий, характеризующий степень качества выполнения системой своих функций.

При оценке данного инвестиционного проекта используется метод расчета чистого приведенного дохода, который предусматривает дисконтирование денежных потоков: все доходы и затраты приводятся к одному моменту времени. Чистый приведенный доход иногда называют чистым экономическим эффектом от внедрения проекта.

Центральным показателем в рассматриваемом методе является показатель NPV (net present value) - текущая стоимость денежных потоков за вычетом текущей стоимости денежных оттоков. Это обобщенный конечный результат инвестиционной деятельности в абсолютном измерении.

Компания рассматривает целесообразность инвестиционного проекта, стоимость которого составляет 33720 рубля. Денежные затраты на проект составят в месяц 23140 рублей. Проект рассчитан на два месяца. Ставка дисконтирования составляет 12%.

При разовой инвестиции расчет чистого приведенного дохода можно представить следующим выражением (формула 4.2):

где: Rk - ежемесячные денежные поступления;

Rk = DPk - Zk,

DPk - ежемесячная дополнительная прибыль от реализации проекта;

Zk - ежемесячные затраты на реализацию проекта;

IC - стартовые инвестиции;

i - ставка дисконтирования.

Показатель NPV является абсолютным приростом, поскольку оценивает, на сколько приведенный доход перекрывает приведенные затраты. Так как NPV > 0, то проект следует принять.

Коэффициент возврата инвестиций рассчитывается по формуле (4.3).

Если ROI > 100%, то проект прибылен.

После расчета коэффициента возврата инвестиций необходимо вычислить срок окупаемости проекта по формуле (4.4).

Срок окупаемости проекта 1,5 месяцев.

Выводы к разделу

В процессе управления информационным проектом были решены следующие задачи:

Был проанализирован и осуществлен выбор жизненного цикла разработки информационной системы.

Были определены цели и области действия программного проекта.

Была создана структура пооперационного перечня работ.

Были определены задачи и действия, необходимые для реализации проекта.

Была произведена оценка длительности и стоимости программного обеспечения, а также подсчитана суммарная стоимость разработки проекта, включая стоимость необходимых для функционирования приложения программных средств.

Была произведена оценка экономической эффективности проекта, рассчитаны такие показатели, как чистый приведенный доход, коэффициент возврата инвестиций и срок окупаемости проекта.

ЗАКЛЮЧЕНИЕ

В процессе разработки дипломного проекта были проанализированы существующие автоматизированные системы продажи проездных документов, а так же процесс сбора статистических данных в ОАО «Автовокзал». В результате чего были сделаны следующие выводы:

- существующие программные решения не всегда удовлетворяли требованиям заказчика;

- многие из подходящих программных проектов имеют большую стоимость на рынке программного обеспечения;

- собственные разработки не унифицированы и не пригодны к коллективной работы над проектом разработки;

- некоторые модули программных продуктов должны заказываться дополнительно, что показывает отсутствие данных модулей в стандартной конфигурации АИС., а именно аналитической сборки данных о продажах проездных документов;

- сбор документации для аналитической отчетности не автоматизирован, все мероприятия производятся вручную с большой затратой времени.

На основе высшее поставленных выводов было принято решение о создании АИС по созданию и формированию отчетов выбранных аналитических данных ОАО «Автовокзал».

В процессе написания дипломной работы была разработана система по по созданию и формированию отчетов выбранных аналитических данных продажи проездных документов и работы ОАО «Автовокзал» в целом. Данная система является дополнительным модулем к системе продажи билетов.

Разработанный модуль рассчитан на дальнейшие модификации и дополнения различными компонентами, расчетными модулями, модулями графического отображения моделей и графиков. Реализация данных функций возможна при использовании новой технологии разработки.

Создание данного модуля является необходимым решением расчетно-экономического отдела по усовершенствованию процесса сбора аналитических данных по продажам проездных документов и работы автовокзала в целом для быстрого и своевременного предоставления отчетности и расчета оптимального использования показателей продаж.

Данная информационная система позволит централизовать и усовершенствовать работу членов статистики, а также облегчить возможность наращивания информационных ресурсов для составления аналитических карт.

В процессе проектирования и реализации информационной системы, были решены следующие задачи:

- разработка требований к программному продукту;

- проектирование информационной системы, включающее в себя: архитектурное проектирование, проектирование пользовательского интерфейса, проектирование базы данных и проектирование модулей;

- реализация программного кода, разработка запросов к базе данных и хранимых процедур;

- функциональное тестирование программного продукта с написанием тестовых сценариев;

- разработка методики развертывания приложения, реализация установочного пакета и настройка расположения базы данных;

- произведены работы по управлению информационным проектом, включающие в себя: создание структуры пооперационного перечня работ, идентификация задач и действий, оценка длительности и стоимости разработки программного обеспечения, распределение ресурсов проекта и оценка экономической эффективности проекта.

Внедрение разработанного информационного модуля в расчетно-экономический отдел позволит:

- получать информацию о доходах от продаж билетов по месяцам, сведения о продаже билетов, выручке и наполняемости автобусов, отчет о предварительной продаже билетов на формирующиеся и транзитные рейсы;

- позволит рассчитывать на основе выбранных данных коэффициенты повышения тарифов на перевозку пассажиров за месяцы, показатели работы рейсов, выполнения заданий о доходам;

- ускорить процесс получения аналитических да, используя базы данных главной программы продажи билетов;

- легко формировать полученные результаты для наглядности использования в отчеты;

- ускорить процесс сбора аналитических данных, сократить время сбора нужной расчетной информации для предоставления отчетности.

На этапе расчета экономической эффективности проекта была определена стоимость реализации системы, и составила 33720 рублей, не включая цену за необходимое для функционирования приложения программное обеспечение.

По результатам расчетов был получен чистый приведенный доход и составил 5388 рублей. Также был определен коэффициент возврата инвестиций ROI=115%. И был определен срок окупаемости проекта, который составил 1,75 месяца.

Экономический эффект от внедрения системы очевиден. Экономия достигается за счет ускорения информационного обмена, более эффективной обработки данных, снижения вероятности ошибок.

В заключении можно сделать вывод, что цели, поставленные в работе, достигнуты, задачи выполнены.

Список использованных источников

1. Акперов, И. Г. Управление проектами: учебно-методический комплекс / И. Г. Акперов, В. А. Долятовский. ? Ростов-на-Дону: ИУБиП, 1999.

2. Калянов, Г.Н. Системное проектирование - новый вид деятельности на российском рынке / Информационные технологии. - 1995. - №3. -С. 20-21.

3. Дрогобыцкий, И.Н. Проектирование автоматизированных информационных систем. Учебник /И.Н. Дрогобыцкий/ - М.: Финансы и статистика, 1992.

4. Дрогобыцкий, И.Н. Управление проектированием информационных систем. Учебник /И.Н. Дрогобыцкий/ - М.: Финансы и статистика, 1992.

5. Калашян, А.Н. Структурные модели бизнеса: DFD- технологии. Учебник /А.Н. Калашян, Г.Н. Калянов/ - М.: Финансы и статистика, 2003.

6. Дейт, К. Дж. Введение в системы баз данных.: Пер. с англ. / К. Дж. Дейт .- М.: Издательский дом «Вильямс», 2002.

7. Баженова, И. Ю. Visual FoxPro 7.0. / И. Ю. Баженова. - М.: «Диалог - МИФИ», 2005. - 45с.

8. Конноли Т., Бегг К., Страчан А. База данных: проектирование, реализация и сопровождение. Теория и практика, 2-е изд.: Пер. с англ.: Уч. пос. - М.: Издательский дом «Вильямс», 2002. - 1120с.: ил. - Парал. тит. англ.

9. Вендров А.М. Современные технологии создания программного обеспечения / [Электронное издание]. (http://www.jetinfo.ru). Проверено 29.03.2006.

10. Предпритие «ВПИ». / Firm «API» Автоматизированная система «Автовокзал». [Электронный документ]. (http://forum.bus.com.ua). Проверено 11.04.2008.

11. Джерк Н. Разработка приложений для электронной коммерции. - С.Пт.: «Питер», 2001.

12. Зиндер Е.З. Проектирование баз данных: новые требования, новые подходы / СУБД. - 1996.

13. Зиндер, Е.З. Новое Системное Проектирование: Информационные Технологии и Бизнес-реинжиниринг. / Системы Управления Базами Данных. - 1996.

14. Разработка клиент-сервер приложений с использованием Visual FoxPro. [Электронный документ]. (http://www.caws.atnet.ru/vfox/excel1.html). Проверено 08.04.2008.

15. Притыкин Д. А. BPwin 4.0: пришел, увидел, реорганизовал. Мнение пользователя. [Электронный документ]. (http://info-system.ru/designing/methodology/bpwin/bpwin.html). Проверено 12.02.2008.

16. Омельченко Л., Федоров А. «Самоучитель Microsoft® Visual FoxPro 7.0», 2005, с. 78.

17. Коберн А. Быстрая разработка программного обеспечения.: Пер. с англ. - М.: ЛОРИ, 2002.

18. Коберн А. Современные методы описания функциональных требований к системам.: Пер. с англ. - М.: ЛОРИ, 2002.

19. Попов А.А. «Программирование в среде СУБД Fox Pro 2.0. Построение систем обработки данных», 2004, с. 352

20. Конноли Т., Бегг К., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. - М.: «Вильямс», 2001.

21. Кузнецов С.Д. Направления исследований в области баз данных / Открытые системы. - 1997.

22. Марка, Д.А. Методология структурного системного анализа и проектирования SADT Учебник: пер. с англ. /Д.А. Марка, К. МакГоун/ - М.: Метатехнология, 1993.

23. Шоморев Д. «Microsoft® Visual FoxPro.Уроки программирования», 2006, с. 42

24. Школин, А. Легковесная автоматизация. IT - системы для небольших предприятий /Финанс. ? 2005. №15. - С. 56 - 61.

25. Шафер, Дональд, Ф., Управление программными проектами: достижение оптимального качества при минимуме затрат.: Пер. с англ. - М.: Издательский дом «Вильямс», 2004. - 1136 с.

26. Олифер В.Г., Олифер Н.А. Основы сетей передачи данных // [Электронное издание]. (http://www.intuit.ru). Проверено 11.02.2008.

27. Грофф, Дж. Р. Энциклопедия SQL. / Дж. Р. Грофф, П. Н. Вайнберг.: Пер. с англ. - СПб: «Питер», 2003. - 896 с.

28. Петров Ю.К. JAM - инструментальное средство разработки приложений в информационных системах архитектуры «клиент/сервер», построенных на базе РСУБД. «СУБД», 1995.

29. Справочник по Microsoft OLE DB 1.1. / Пер. с англ. - М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd». 1997. - 624 с.

30. Тамре Л. Введение в тестирование программного обеспечения : Пер. с англ. - М.: Издательский дом «Вильямс», 2003.

31. Вендров, А.М. Практикум по проектированию программного обеспечения экономических информационных систем / А.М. Вендров. - Москва: «Финансы и статистика», 2004.

32. Леффингуэлл Д., Уидриг Д. Принципы работы с требованиями к программному обеспечению. Унифицированный подход: Пер. с англ. - М.: Издательский дом «Вильямс», 2002 - 448 с

33. Скрипкин К.Г. Экономическая эффективность информационных систем. - М.: ДМК Пресс, 2002.-256с.

34. Малахов А. Н., Максюков Н. И. Никишин В. А. Высшая математика: учебное пособие / Московский государственный университет экономики, статистики и информатики. - М.: МЭСИ, 2002. - 352с.

35. Тельнов Ю.Ф. Интеллектуальные информационные системы: учебное пособие / Московский государственный университет экономики, статистики и информатики. - М.: МЭСИ, 2000. - 201 с.

36. Смирнова Г.Н., Тельнов Ю.Ф. Проектирование экономических информационных систем (часть 1) / Московский государственный университет экономики, статистики и информатики. - М.: МЭСИ, 2004. - 223 с.

37. Дaнилoв A. B, Дигo C. M., CopoкинA. A. Кopпopaтивныe инфopмaциoнныe cиcтeмы: Учeбнoe пocoбиe, pукoвoдcтвo пo изучeнию диcциплины, пpaктикум пo куpcу, учeбнaя пpoгpaммa куpcoв / Московский государственный университет экономики, статистики и информатики. - М.: МЭСИ, 2004. -60 c.

38. Флинт Д. Локальные сети и ее архитектура / Учебник для Вузов. - М.: Финансы и статистика, 1999.

39. Чертовской, В.Д. Базы и банки данных: Учебное пособие. СПб.: Изд-во МГУП, 2001.

ПРИЛОЖЕНИЕ А - ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ НЕОБХОДИМОСТИ СОЗДАНИЯ ДОПОЛНИТЕЛЬНОГО МОДУЛЯ

«ВЫБОРКА СТАТИСТИЧЕСКИХ ДАННЫХ ПРОДАЖИ
ПРОЕЗДНЫХ ДОКУМЕНТОВ»

(обязательное)

1. Исходное положение………………………….1

2. Обоснование цели создания АИС....……………… 2

3. Обоснование комплексов задач и подсистем…..3

4. Перечень технических мероприятий по созданию АИС.…...4

5. Оценка экономической эффективности проекта……….5

6. Выводы и предложения……………7

Исходное положение

Рассматриваемым предприятием является открытое акционерное общество «Автовокзал». Являясь крупнейшим предприятием в сфере автоперевозок на юге России, ОАО «Автовокзал» имеет в своём составе 55 автовокзалов и автостанций, расположенных по всей Ростовской области. Об объёмах работы предприятия можно судить и по состоянию маршрутной сети.

Организационная структура компании изображена в соответствии с рисунком А.1

Рисунок А.1 - Организационная структура компании OAO «Автовокзал»

Обоснование цели создания АИС

Целью создания дополнительного модуля автоматизированной информационной системы анализа данных о продажах проездных документов является облегчить процесс работы по сбору аналитической информации работы главной системы, процесс работы по созданию и формированию отчетов выбранных аналитических данных.

Результаты разработки данной системы приведут к сокращению времени на формирование необходимых документов и отчетов, а так же существенно повлияет на дальнейшее экономическое и финансовое прогнозирование работы пассажироперевозки.

Обоснование комплексов задач и подсистем

Исходными данными для решения ряда задач текущего и дальнейшего планирования работы компании являются материалы, полученные при детальном изучении функциональной деятельности компании по основному направлению - предоставление услуг по перевозке пассажиров.

Проведение данного анализа позволяет получить полное представление о пассажиропотоке, движении транспорта, а так же данные сведения необходимы в дальнейшем для разработки транспортной схемы и могут быть использованы при решении ряда планово - экономических и инженерных задач в области перспектив транспортной и городской деятельности.

На этапе проведения анализа были сформулированы следующие задачи исследования системы:

- изучение пассажиропотока и спроса населения в пассажирских перевозках;

- разработка маршрутов, расписаний и графиков движения при перевозке пассажиров автомобильным транспортом;

- контроль над исполнением графиков движения и диспетчерское сопровождение автобусов на маршрутах;

- предварительная и текущая продажа и бронирование проездных билетов на автобусы, и другие виды транспорта.

Этап изучения системы управления организацией основывался на основе однодневного рабочего дня организации, а так же информационных баз данных сформированных работой организации предыдущего периода.

Информационной базой, с точки зрения обеспечения требований ИС явился перечень составленных документов, для предоставления отчетной статистики в АИС:

- сведения о работе АТП;

- показатели работы рейса;

- срывы и не заходы автобусов;

- плановое задание по доходам;

- оперативные сведения;

- перевозка пассажиров;

- доходы от продаж билетов по месяцам;

- анализ предварительной продажи билетов на формирующиеся рейсы;

- отчет о предварительной продаже билетов на формирующиеся и транзитные рейсы;

- отчет о льготном проезде;

- сведения о предоставлении льготного проезда в автобусах;

- сведения о продаже билетов, выручке и наполняемости автобусов;

- станционное расписание движения автобусов;

- коэффициенты повышения тарифов на перевозку пассажиров
за месяцы.

В данной информационной системе учет данных проводится в экономическом отделе. Обработанная информация отражается в виде отчетов в данном отделе, взаимодействуя с основной программой продажи билетов. Цель данного исследования состоит в том, чтобы выявить статистические данные, сформированные основной программой, в дальнейшем сравнивая средние показатели и показатели распределения, анализируя структуру совокупности, исследуя динамику и взаимосвязь между изучаемыми явлениями и процессами, и при этом сформировать подбор параметров направленный на улучшение работы компании.

Перечень организационно-технических мероприятий
по созданию АИС

Автоматизированная информационная система анализа данных о продажах проездных документов разрабатывается для предприятия с целью упростить процесс документооборота и функционирования системы сбора данных в целом.

Для внедрения АИС на предприятии необходимо произвести следующие изменения:

- проведение анализа и определение необходимости в разработке АИС на данном предприятии;

- определение требований по внедрению АИС;

- работы по разработке программного обеспечения (ПО);

- получение утверждение на принятие в использование данного ПО;

- установка необходимого программного обеспечения;

- обучение персонала.

Оценка экономической эффективности проекта

Цель проектирования и внедрения проекта автоматизированной информационной системы заключается в автоматизации и замене ручного труда. Разработка данной системы приведет к экономии затрат, связанных с оформлением выходных документов сбора аналитических данных продажи проездных билетов, а так же работы автовокзала в. целом

При оценке данного инвестиционного проекта используется метод расчета чистого приведенного дохода, который предусматривает дисконтирование денежных потоков: все доходы и затраты приводятся к одному моменту времени.

Компания рассматривает целесообразность инвестиционного проекта, стоимость которого составляет 33720 рубля. Денежные затраты на проект составят в месяц 23140 рублей. Проект рассчитан на два месяца. Ставка дисконтирования составляет 12%.

При разовой инвестиции расчет чистого приведенного дохода можно представить следующим выражением (формула 5.1):

где: Rk - ежемесячные денежные поступления;

Rk = DPk - Zk,

DPk - ежемесячная дополнительная прибыль от реализации проекта;

Zk - ежемесячные затраты на реализацию проекта;

IC - стартовые инвестиции;

i - ставка дисконтирования.

Показатель NPV является абсолютным приростом, поскольку оценивает, на сколько приведенный доход перекрывает приведенные затраты. Так как NPV > 0, то проект следует принять.

Коэффициент возврата инвестиций рассчитывается по формуле (5.2).

Если ROI > 100%, то проект прибылен.

После расчета коэффициента возврата инвестиций необходимо вычислить срок окупаемости проекта по формуле (5.3).

Срок окупаемости проекта 1,5 месяцев.

Выводы и предложения

Сложной, трудоемкой и ответственной является сбор аналитических исследуемых данных. Современные технологии позволяют автоматизировать данный процесс от начала и до конца, работа должна содержать элементы предвидения проблем в процессе обработки информации, указывать на возможные последствия складывающихся ситуаций.

Таким образом, становится актуальным разработка системы, обеспечивающих экономистов и менеджеров компании оперативной информацией. При этом данная информация должна представляться не только быстро, но и в самом разнообразном виде, необходимом в текущий момент.

Работа системы приведет к сокращению времени на формирование необходимых документов и отчетов, а так же существенно повлияет на дальнейшее экономическое и финансовое прогнозирование работы пассажироперевозки.

На этапе расчета экономической эффективности проекта была определена стоимость реализации системы, и составила 33720 рублей, не включая цену за необходимое для функционирования приложения программное обеспечение.

По результатам расчетов был получен чистый приведенный доход и составил 5388 рублей. Также был определен коэффициент возврата инвестиций ROI=115%. И был определен срок окупаемости проекта, который составил 1,75 месяца.

Экономический эффект от внедрения системы очевиден. Экономия дос-тигается за счет ускорения информационного обмена, более эффективной обработки данных, снижения вероятности ошибок.

В заключении можно сделать вывод, что цели, поставленные в работе, достигнуты, задачи выполнены.

Считаю актуальным разработку данной системы, а так же ее дальнейшее внедрение поддержку и развитие.

Приложение Б - Прототипы интерфейса

Рисунок Б.1 - Главное окно системы

Рисунок Б.2 - Меню настроек параметров системы

Рисунок Б.3 - Меню расчетов финансовых параметров

Рисунок Б.4 - Меню анализа доходов

Рисунок Б.5 - Меню аналитической статистики показателей

Рисунок Б.6 - Форма выбора данных вывода отчета по расчету
коэффициента вместимости маршрута согласно временному промежутку

Рисунок Б.7 - Форма для вывода отчета показателей проданных билетов

Рисунок Б.8 - Форма выбора промежутка времени для вывода отчета
потребностей в кассовых ведомостях, сведений о срывах и не заходах автобуса, дохода по багажу и задания по доходам, суммарного километража и количества пассажиров, коэффициента загрузки и
суммарного коэффициента загрузки автовокзала

Рисунок Б.9 - Форма получения отчета о вокзальном расписании

Рисунок Б.10 - Форма получения отчета о работе автовокзала

Рисунок Б.11 - Форма выбора промежутка времени для ввода статистики продаж согласно договору компании

Рисунок Б.12 - Форма выбора промежутка времени для вывода отчета о не прибытии и опоздании автотранспорта

Рисунок Б.13 - Форма выбора интервала времени отчета по оформленным штрафам и сведений о работе АТП

Рисунок Б.14 - Форма выбора данных для составления отчета
пассажиропотока по автовокзалу

Рисунок Б.15 - Форма выбора данных для отчета показателей перевозки пассажиров

Рисунок Б.16 - Форма выбора данных для вывода сведений по льготному проезду

Рисунок Б.17 - Форма выбора данных для вывода сведений по
предварительным продажам билетов

Приложение В - Структурные карты Константайна разрабатываемого модуля АИС

Приложение Г - таблицы тестовых данных

Таблица Г.1 - Таблица тестов взаимодействия пользователя с системой

Описание входных данных

Входные данные

Ожидаемый результат

Реальный результат

Отметка о дефектах

Выбрать пункт меню «Настройка приложения» из меню «Система». Указать путь расположения БД, нажать кнопку «Выполнить»

Окно «Настройка приложения»

Выбранный путь к БД

Отобразилось окно настройки приложения. Отобразилось окно указания пути к БД

Отобразилось окно настройки приложения. Отобразилось окно указания пути к БД

Выбрать пункт меню «Коэффициент вместимости по временному промежутку» из меню «Расчет», нажать кнопку «Выполнить»

Окно «Выберете промежуток и рейс» Маршрут, время, рейс, дата

Отобразился отчет в формате Excel «Коэффициент вместимости по временному промежутку»

Отобразился отчет в формате Excel «Коэффициент вместимости по временному промежутку

Выбрать пункт меню «Проданные билеты, выручка, наполняемость автобусов» из меню «Расчет», нажать кнопку «Выполнить»

Окно «Выберете промежуток и АВ» Дата, город, название автостанции, тип расчета.

Отобразился отчет в формате Excel «Проданные билеты, выручка, наполняемость автобусов»

Отобразился отчет в формате Excel «Проданные билеты, выручка, наполняемость автобусов»

Выбрать пункт меню «Потребность в кассовых ведомостях» из меню «Расчет», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год

Отобразился отчет в формате Excel «Потребность в кассовых ведомостях»

Отобразился отчет в формате Excel «Потребность в кассовых ведомостях»

Выбрать пункт меню «Вокзальное расписание» из меню «Расчет», нажать кнопку «Выполнить»

Окно «Выберете месяц и АВ» Месяц, год, название автовокзала, тип расписания (поминутное, станционное)

Отобразился отчет в формате Excel «Вокзальное расписание»

Отобразился отчет в формате Excel «Вокзальное расписание»

Выбрать пункт меню «Оперативные сведения» из меню «Доходы», нажать кнопку «Выполнить»

Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип ведомости (сводная, обычная)

Отобразился отчет в формате Excel «Оперативные сведения»

Отобразился отчет в формате Excel «Оперативные сведения»

Выбрать пункт меню «Задания по доходам» из меню «Доходы», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год

Отобразился отчет в формате Excel «Задания по доходам»

Отобразился отчет в формате Excel «Задания по доходам»

Выбрать пункт меню «Выполнение условий договора АТП» из меню «Доходы», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год, город, область

Отобразился отчет в формате Excel «Выполнение условий договора АТП»

Выбрать пункт меню «Расчет планового задания по выручке и доходам» из меню «Доходы», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Год

Отобразился отчет в главном окне программы «Расчет планового задания по выручке и доходам»

Отобразился отчет в главном окне программы «Расчет планового задания по выручке и доходам»

Выбрать пункт меню «Доходы по багажу» из меню «Доходы», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год

Отобразился отчет в формате Excel «Доходы по багажу»

Отобразился отчет в формате Excel «Доходы по багажу»

Выбрать пункт меню «Не прибытия и опоздания» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год, отчет по типу (автостанция, АТП)

Отобразился отчет в формате Excel «Не прибытия и опоздания»

Отобразился отчет в формате Excel «Не прибытия и опоздания»

Выбрать пункт меню «Штрафы АТП» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год, название АТП

Отобразился отчет в формате Excel «Штрафы АТП»

Отобразился отчет в формате Excel «Штрафы АТП»

Выбрать пункт меню «Сведения о срывах и не заходах» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите период» Месяц, год, тип ведомости (развернутая, сводная)

Отобразился отчет в формате Excel «Сведения о срывах и не заходах»

Отобразился отчет в формате Excel «Сведения о срывах и не заходах»

Выбрать пункт меню «Анализ пассажиропотока» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип отчета (полный, по области, другой)

Отобразился отчет в формате Excel «Анализ пассажиропотока»

Отобразился отчет в формате Excel «Анализ пассажиропотока»

Выбрать пункт меню «Показатели перевозки пассажиров» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Показатели перевозки пассажиров» Выбор интервала времени, тип следования рейса (межгород, пригород, транзит)

Отобразился отчет в формате Excel «Показатели перевозки пассажиров»

Отобразился отчет в формате Excel «Показатели перевозки пассажиров»

Выбрать пункт меню «Сведения о работе АТП» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год, название АТП

Отобразился отчет в формате Excel «Сведения о работе АТП»

Отобразился отчет в формате Excel «Сведения о работе АТП»

Выбрать пункт меню «Суммарный километраж и количество пассажиров» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год

Отобразился отчет в формате Excel «Суммарный километраж и количество пассажиров»

Отобразился отчет в формате Excel «Суммарный километраж и количество пассажиров»

Выбрать пункт меню «Льготные пассажиры» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Сведения по льготному проезду» Месяц, год, вид ведомости (по категориям, сводная, по АТП)

Отобразился отчет в формате Excel «Сведения по льготному проезду»

Отобразился отчет в формате Excel «Сведения по льготному проезду»

Выбрать пункт меню «Суммарный коэффициент загрузки» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберите интервал времени» Месяц, год

Отобразился отчет в формате Excel «Суммарный коэффициент загрузки»

Отобразился отчет в формате Excel «Суммарный коэффициент загрузки»

Выбрать пункт меню «Предварительная продажа билетов» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип ведомости (развернутая сводная)

Отобразился отчет в формате Excel «Предварительная продажа билетов»

Отобразился отчет в формате Excel «Предварительная продажа билетов»

Выбрать пункт меню «Коэффициент повышения тарифов» из меню «Аналитика», нажать кнопку «Выполнить»

Окно «Выберете месяцы расчета» Месяц, год

Отобразился отчет в формате Excel «Коэффициент повышения тарифов»»

Отобразился отчет в формате Excel «Коэффициент повышения тарифов»

Приложение Д - Программный код методов и функций

Реализация функции Atp_Anal, Atp_Anal_All - «Анализ работы АТП»

public pubDate[2]

local buf

buf='01.'+str(ThisForm.From_Month)+'.'+str(ThisForm.From_Year)

if empty(ctod(buf))

MessageBox('Неверная дата начала периода',16,'Выбор интервала времени')

return

else

pubDate[1]=ctod(buf)

endif

if ThisForm.To_Month=12

buf=31

else

buf=day(ctod('01.'+str(ThisForm.To_Month+1)+'.'+str(ThisForm.To_Year))-1)

endif

buf=str(buf)+'.'+str(ThisForm.To_Month)+'.'+str(ThisForm.To_Year)

if empty(ctod(buf))

MessageBox('Неверная дата конца периода',16,'Выбор интервала времени')

return

else

pubDate[2]=ctod(buf)

endif

if pubDate[1]>pubDate[2]

MessageBox('Дата начала периода больше даты конца периода',16,'Выбор интервала времени')

return

endif

if pubDate[2]>date()

MessageBox('Дата конца периода больше текущей даты',16,'Выбор интервала времени')

return

endif

if Year(pubDate[1])<Year(pubDate[2])-1

MessageBox('Слишком большой период',16,'Выбор интервала времени')

return

endif

*******************************************************

WAIT 'Ждите, идет формирование отчета ...' WINDOW NOWAIT

create cursor RejsMas (Pec N(5), Name C(22), Time N(5,2))

create cursor C_BdBase (Pec N(5), tMonth N(2), tYear N(4), KolP N(4), SumN N(11,2), Km_Sum N(8), K_Load N(6,2))

PRIVATE XLApp, pubMonth, pubYear

public MassLen

local MaxLen

local j, ii, lName, lTime, lYear

MaxLen=0

XLApp=0

pubMonth=ThisForm.MonthArray[Month(pubDate[1])]

pubYear=alltrim(str(Year(pubDate[1])))

pubAtp=Atp.Naim

if ThisForm.From_Month=ThisForm.To_Month and ThisForm.From_Year=ThisForm.To_Year && За один месяц

PRIVATE XLSheets

XlSheets=0

if !CreatExc(@XLApp, 1, @XLSheets, 25)

return .f.

endif

if empty(Open_Table('bd'+ALLTRIM(STR(ThisForm.From_Month))+ALLTRIM(str(ThisForm.From_Year)),,;

'Bd_Base'))

return

endif

buf=Atp.Kat

SET TALK ON

select Pec, ;

sum(KolP) as KolP, ;

sum(SumN) as SumN, ;

sum(Km_Sum) as Km_Sum, ;

sum(KolP/KolM) as K_Load ;

from Bd_Base ;

group by Pec ;

where Atp1=buf ;

order by Pec ;

into cursor C_Bd

set talk off

scan

select RejsMas

locate for Pec=C_Bd.Pec

if !found()

select C_Rejs

locate for Rec=C_Bd.Pec

if found()

lName=Name+' п'

lTime=Tyda

endif

locate for Reo=C_Bd.Pec

if found()

lName=Name+' о'

lTime=Obra

endif

select RejsMas

append blank

replace Pec with C_Bd.Pec, Name with lName, Time with lTime

endif

select C_BdBase

append blank

replace Pec with C_Bd.Pec, tMonth with ThisForm.From_Month, tYear with ThisForm.From_Year, ;

KolP with C_Bd.KolP, SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, ;

K_Load with C_Bd.K_Load

select C_Bd

endscan

use

select Bd_Base

use

select RejsMas

MassLen=RecCount()

if MassLen=0

MessageBox('Выбранное АТП рейсов за указанный период не совершало.')

return

endif

Atp_Anal(@XlSheets, Month(pubDate[1]), Year(pubDate[1]))

XLApp.Visible = .T.

select RejsMas

use

select C_BdBase

use

release XlSheets, pubDate

return

endif

local Month_Num && Несколько месяцев

if Year(pubDate[1])=Year(pubDate[2])

Month_Num=Month(pubDate[2])-Month(pubDate[1])+1

else

Month_Num=13-Month(pubDate[1])+Month(pubDate[2])

endif

Month_Num=Month_Num+1 && Итоговый лист

****************************************************

public Month_Array[Month_Num], XLSheets[Month_Num]

store 0 to XlSheets

j=1

buf=Atp.Kat

if Year(pubDate[1])=Year(pubDate[2])

lYear=Year(pubdate[1])

for ii=Month(pubDate[1]) to Month(pubDate[2])

Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(lYear))

if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(lYear)),, 'Bd_Base'))

return

endif

SET TALK ON

select Pec, ;

sum(KolP) as KolP, ;

sum(SumN) as SumN, ;

sum(Km_Sum) as Km_Sum, ;

sum(KolP/KolM) as K_Load ;

from Bd_Base ;

group by Pec ;

where Atp1=buf ;

order by Pec ;

into cursor C_Bd

set talk off

scan

select RejsMas

locate for Pec=C_Bd.Pec

if !found()

select C_Rejs

locate for Rec=C_Bd.Pec

if found()

lName=Name+' п'

lTime=Tyda

endif

locate for Reo=C_Bd.Pec

if found()

lName=Name+' о'

lTime=Obra

endif

select RejsMas

append blank

replace Pec with C_Bd.Pec, Name with lName, Time with lTime

endif

select C_BdBase

append blank

replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;

SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load

select C_Bd

endscan

use

j=j+1

select Bd_Base

use

endfor

else

lYear=Year(pubdate[1])

for ii=Month(pubDate[1]) to 12

Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(Year(pubdate[1])))

if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(Year(pubdate[1]))),,;

'Bd_Base'))

return

endif

SET TALK ON

select Pec, ;

sum(KolP) as KolP, ;

sum(SumN) as SumN, ;

sum(Km_Sum) as Km_Sum, ;

sum(KolP/KolM) as K_Load ;

from Bd_Base ;

group by Pec ;

where Atp1=buf ;

order by Pec ;

into cursor C_Bd

set talk off

scan

select RejsMas

locate for Pec=C_Bd.Pec

if !found()

select C_Rejs

locate for Rec=C_Bd.Pec

if found()

lName=Name+' п'

lTime=Tyda

endif

locate for Reo=C_Bd.Pec

if found()

lName=Name+' о'

lTime=Obra

endif

select RejsMas

append blank

replace Pec with C_Bd.Pec, Name with lName, Time with lTime

endif

select C_BdBase

append blank

replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;

SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load

select C_Bd

endscan

use

j=j+1

select Bd_Base

use

endfor

lYear=Year(pubdate[2])

for ii=1 to Month(pubDate[2])

Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(Year(pubdate[2])))

if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(Year(pubdate[2]))),,;

'Bd_Base'))

return

endif

SET TALK ON

select Pec, ;

sum(KolP) as KolP, ;

sum(SumN) as SumN, ;

sum(Km_Sum) as Km_Sum, ;

sum(KolP/KolM) as K_Load ;

from Bd_Base ;

group by Pec ;

where Atp1=buf ;

order by Pec ;

into cursor C_Bd

set talk off

scan

select RejsMas

locate for Pec=C_Bd.Pec

if !found()

select C_Rejs

locate for Rec=C_Bd.Pec

if found()

lName=Name+' п'

lTime=Tyda

endif

locate for Reo=C_Bd.Pec

if found()

lName=Name+' о'

lTime=Obra

endif

select RejsMas

append blank

replace Pec with C_Bd.Pec, Name with lName, Time with lTime

endif

select C_BdBase

append blank

replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;

SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load

select C_Bd

endscan

use

j=j+1

select Bd_Base

use

endfor

endif

select RejsMas

MassLen=RecCount()

if MassLen=0

MessageBox('Выбранное АТП рейсов за указанный период не совершало.')

return

endif

Month_Array[j]='Итого'

if !CreatExc(@XLApp, Month_Num, @XLSheets, 25, @Month_Array)

return .f.

endif

XLApp.Calculation=xlCalculationManual

j=1

if Year(pubDate[1])=Year(pubDate[2])

lYear=Year(pubdate[1])

for ii=Month(pubDate[1]) to Month(pubDate[2])

pubMonth=ThisForm.MonthArray[ii]

pubYear=alltrim(str(lYear))

Atp_Anal(XlSheets[j], ii, lYear)

if MaxLen<MassLen

MaxLen=MassLen

endif

j=j+1

endfor

else

lYear=Year(pubdate[1])

for ii=Month(pubDate[1]) to 12

pubMonth=ThisForm.MonthArray[ii]

pubYear=alltrim(str(lYear))

Atp_Anal(XlSheets[j], ii, lYear)

if MaxLen<MassLen

MaxLen=MassLen

endif

j=j+1

endfor

lYear=Year(pubdate[2])

for ii=1 to Month(pubDate[2])

pubMonth=ThisForm.MonthArray[ii]

pubYear=alltrim(str(lYear))

Atp_Anal(XlSheets[j], ii, lYear)

if MaxLen<MassLen

MaxLen=MassLen

endif

j=j+1

endfor

endif

Atp_Anal_All(XlSheets[Month_Num], @Month_Array, Month_Num, ;

pubDate[1], pubDate[2], MaxLen)

XLApp.Calculation=xlCalculationAutomatic

XLApp.Visible = .T.

select RejsMas

use

select C_BdBase

use

release XlSheets, MassLen, pubDate

parameters pXlSheet, Set_Month, Set_Year, Beg_Date, End_Date

set deleted on

local XlSheet

XlSheet=pXlSheet

local i, j

i=Atp.Kat

if empty(Open_Table('bd'+ALLTRIM(STR(Set_Month))+ALLTRIM(str(Set_Year)),,;

'Bd_Base'))

return

endif

WAIT 'Производится выборка из рейсовых ведомостей за '+pubMonth+' '+pubYear WINDOW NOWAIT

SET TALK ON

select b.Pec, ;

sum(b.KolP) as KolP, ;

sum(b.SumN) as SumN, ;

sum(b.Km_Sum) as Km_Sum, ;

sum(b.KolP/b.KolM) as K_Load ;

from Bd_Base b ;

group by b.Pec ;

where Atp1=i ;

order by b.Pec ;

into cursor C_Bd

select Bd_Base

use

i=1

MassLen = reccount('C_Bd')

if MassLen>0

local Otch[MassLen*2, 6]

STORE 0 TO Otch

select C_Bd

use

return

endif

susp

select C_BdBase

set filter to tMonth=Set_Month and tYear=Set_Year

select RejsMas

scan

Otch[i, 1]=RejsMas.Name

Otch[i, 2]=RejsMas.Time

select C_BdBase

locate for Pec=RejsMas.Pec

Otch[i, 3]=KolP

Otch[i, 4]=SumN

Otch[i, 5]=Km_Sum

Otch[i, 6]=K_Load

select RejsMas

i=i+1

endscan

select C_Rejs

scan

select RejsMas

locate for Pec=C_Rejs.Rec

if found()

select C_Bd

locate for Pec=C_Rejs.Rec

if found()

Otch[i, 1]=C_Rejs.Name+' п'

Otch[i, 2]=C_Rejs.tyda

Otch[i, 1]=RejsMas.Name

Otch[i, 2]=RejsMas.Time

Otch[i, 3]=KolP

Otch[i, 4]=SumN

Otch[i, 5]=Km_Sum

Otch[i, 6]=K_Load

else

Otch[i, 1]=C_Rejs.Name+' нет'

endif

i=i+1

endif

select RejsMas

locate for Pec=C_Rejs.Reo

if found()

select C_Bd

locate for Pec=C_Rejs.Reo

if found()

Otch[i, 1]=C_Rejs.Name+' о'

Otch[i, 2]=C_Rejs.obra

Otch[i, 1]=RejsMas.Name

Otch[i, 2]=RejsMas.Time

Otch[i, 3]=KolP

Otch[i, 4]=SumN

Otch[i, 5]=Km_Sum

Otch[i, 6]=K_Load

else

Otch[i, 1]=C_Rejs.Name+' нет'

endif

i=i+1

endif

select C_Rejs

endscan

select C_Bd

use

********************************************************

MassLen=i-1

i=5

XlSheet.Activate

XlSheet.Range('A2:F2').Value=PubAtp+' за '+pubMonth+' месяц ' + pubYear+' г.'

XLSheet.Range('A5:F5').Copy

XLSheet.Range('A6:F'+alltrim(str(MassLen+5))).Select

XLSheet.Paste

for j=1 to MassLen

XLSheet.Cells(i,1).Value = Otch[j,1]

XLSheet.Cells(i,2).Value = Otch[j,2]

XLSheet.Cells(i,3).Value = Otch[j,3]

XLSheet.Cells(i,4).Value = Otch[j,4]

XLSheet.Cells(i,5).Value = Otch[j,5]

XLSheet.Cells(i,6).Value = Otch[j,6]

i=i+1

endfor

ci = alltrim(str(i-1))

XLSheet.Cells(i,1).Value = 'Итого:'

XLSheet.Cells(i,3).Formula = '=Sum(C5:C'+ci+')'

XLSheet.Cells(i,4).Formula = '=Sum(D5:D'+ci+')'

XLSheet.Cells(i,5).Formula = '=Sum(E5:E'+ci+')'

XLSheet.Cells(i,6).Formula = '=Sum(F5:F'+ci+')/COUNTIF(F5:F'+ci+', '<>0')'

XLSheet.Range('A5:F5').Borders(3).Weight=xlMedium

ci = alltrim(str(i))

XLSheet.Range('A'+ci+':F'+ci).Borders(3).Weight=xlMedium

XLSheet.Range('A'+ci+':F'+ci).Borders(4).Weight=xlMedium

*************************************************************

XLSheet.Range('A5').Select

WAIT CLEAR

RELEASE Otch, XlSheet

Реализация процедуры sould_tisket - «Проданные билеты»

* Procedure Sold_Tisked

* Сведения о продаже билетов, выручке и наполняемости автобусов по АВ (АС)

parameters Rep_Type

* 1 - Накопительная, 2 - на 1 рейс

set deleted on

local Def_Path

Def_Path=set('default')

set default to &gl_Temp_Path

PRIVATE XLApp, XLSheet

XLApp=0

XLSheet=0

if empty(Open_Table('Hace','IHace'))

return

endif

seek pubBg1 && 1 Bg

if Cru>0 && Если есть варианты ID

Cru_buf=Cru

* выбираем все ID города

select Khp from Hace where Cru=Cru_buf into cursor C_BG_ID1

else

select Khp from Hace where Khp=pubBG1 into cursor C_BG_ID1

endif

select Hace

seek pubBg2 && 2 Bg

if Cru>0 && Если есть варианты ID

Cru_buf=Cru

* выбираем все ID города

select Khp from Hace where Cru=Cru_buf into cursor C_BG_ID2

else

select Khp from Hace where Khp=pubBG2 into cursor C_BG_ID2

endif

***************************************************

if empty(Open_Table('SostMar','IPoiskm'))

return

endif

************* Маршруты, проходящие через оба BG

select mar distinct from SostMar s, C_BG_ID1 b1 ;

where s.Kpp=b1.Khp ;

into cursor Mar_C1

select mar distinct from SostMar s, C_BG_ID2 b2 ;

where s.Kpp=b2.Khp ;

into cursor Mar_C2

select m1.mar from Mar_C1 m1, Mar_C2 m2 ;

where m1.Mar=m2.Mar ;

into cursor Mar_C

select Mar_C1

use

select Mar_C2

use

*********** Города, лежащие на маршрутах

select s.Kpp, f.Name distinct from SostMar s, Mar_C m, Filial f ;

where s.Mar=m.Mar and s.kpp=f.Kab ;

order by s.Psl ;

into table BG_Temp

if empty(Open_Table('Atp'))

return

endif

if empty(Open_Table('Pejc','IRejc'))

return

endif

****************************************************

select 0

if file('Rejs_Table.dbf')

if used('Rejs_Table')

select Rejs_Table

use

endif

erase Rejs_Table.dbf

erase Rejs_Table.cdx

endif

create table Rejs_Table (Bg N(4), Atp1 N(4), Atp_Name C(20), Pec N(5), ;

Mar N(5), Otprav N(5), KolM N(5), KolP N(5), P_KolP N(5), ;

SumN N(11,2), Km N(5), AKolP N(5), Tranz N(5), Numb N(4), ;

Name C(20), Tydap N(5,2), Obra C(1), BG_Time N(5,2), Fop N(1), ;

Direct N(11,2), ObraM C(1), Km_Sum N(8))

index on str(Bg_Time,5,2)+ObraM+str(Pec,5)+str(Atp1,4)+str(Tydap,5,2) ;

tag Bg_Time of Rejs_Table

index on str(Pec)+str(Fop)+Obra tag Pec of Rejs_Table

index on Bg tag Bg of Rejs_Table

local buf, i, j

*****************************************************

if Year(pubDate[1])=Year(pubDate[2])

for j=Month(pubDate[1]) to Month(pubDate[2])

do Rejs_Scan with j, Year(pubDate[1]), pubDate[1], pubDate[2]

endfor

else

for j=Month(pubDate[1]) to 12

do Rejs_Scan with j, Year(pubDate[1]), pubDate[1], pubDate[2]

endfor

for j=1 to Month(pubDate[2])

do Rejs_Scan with j, Year(pubDate[2]), pubDate[1], pubDate[2]

endfor

endif

*****************************************************

if reccount('Rejs_Table')=0

release Num_Bg, MassLen, XlApp, XlSheet

MessageBox('Не найдено ни одного рейса между данными городами',16,'')

return

endif

select Atp

use

select Mar_C

use

select Rejs_Table

set order to Bg

local Old_Bg, New_Bg, N_Rec

Old_Bg=-1

scan

if Bg#Old_Bg

Old_Bg=Bg

New_Bg=-1

select Bg_Temp

locate for Kpp=Old_Bg

if !found()

select Hace

seek Old_Bg

if Cru>0

buf=Cru

scan for Cru=buf

select Bg_Temp

locate for Kpp=Hace.Khp

if found()

New_Bg=Hace.Khp

exit

endif

select Hace

endscan

endif

select Rejs_Table

if New_Bg>0

skip -1

N_Rec=recno()

replace Bg with New_Bg for Bg=Old_Bg

go N_Rec

endif

endif

endif

endscan

select Bg_Temp

scan

select Rejs_Table

if !seek(Bg_Temp.Kpp)

select Bg_Temp

delete

endif

select Bg_Temp

endscan

pack

select Rejs_Table

set order to Pec

local Old_Rejs, Old_Obra, luPsl, luTime, luObra, luRec, luRejs

Old_Rejs=-1

Old_Obra='!'

scan

if Pec#Old_Rejs or Obra#Old_Obra

Old_Rejs=Pec

Old_Obra=Obra

luTime=-1

if Fop=0 && Формирующийся рейс

select C_BG_ID1

locate for Khp=Rejs_Table.Bg

if found()

select Rejs_Table

luTime=Tydap

luObra='1'

endif

endif

if luTime<0

luPsl=-1

select C_BG_ID1 && Ищем Psl 1 BG

scan

select SostMar

if seek(Old_Obra+str(C_BG_ID1.Khp,5)+str(Rejs_Table.Mar,5))

luPsl=Psl

exit

endif

select C_BG_ID1

endscan

if luPsl>0

select C_BG_ID2 && Ищем Psl 2 BG

luTime=-2

scan

select SostMar

if seek(Old_Obra+str(C_BG_ID2.Khp,5)+str(Rejs_Table.Mar,5))

if luPsl<Psl && Прямой маршрут

select Rejs_Table

luTime=Tydap

luObra='1'

else

luTime=-1

luObra='2'

endif

exit

endif

select C_BG_ID2

endscan

if luTime=-2

luPsl=-1

endif

endif

if luPsl<0 && На маршруте не найден хотя бы один BG

luTime=-1

luObra='0'

endif

endif

select Rejs_Table

endif

replace BG_Time with luTime, ObraM with luObra

endscan

Old_Rejs=-1

scan

if BG_Time<0

if Pec#Old_Rejs

luRec=recno()

select Pejc

if Rejs_Table.Obra='п' && Прямой рейс

locate for Rec=Rejs_Table.Pec

if found()

luRejs=Reo

else

locate for Reo=Rejs_Table.Pec

if found()

luRejs=Rec

endif

endif

else

locate for Reo=Rejs_Table.Pec

if found()

luRejs=Rec

else

locate for Rec=Rejs_Table.Pec

if found()

luRejs=Reo

endif

endif

endif

select Rejs_Table

if !seek(str(luRejs))

go luRec

endif

luTime=BG_Time

luObra=Obram

go luRec

endif

replace BG_Time with luTime

if ObraM='0'

replace Obram with iif(luObra='2','1','2')

endif

endif

endscan

scan for BG_Time<0

replace BG_Time with Tydap

endscan

local Old_Time, luRec

Old_Rejs=-1

Old_Time=-1

Old_Obra='!'

set order to BG_Time

scan

if Old_Time=BG_Time and Old_Rejs#Pec and Old_Obra=ObraM

skip -1

luRec=recno()

skip

buf=BG_Time

replace BG_Time with buf+0.01

go luRec

loop

endif

Old_Time=BG_Time

Old_Rejs=Pec

Old_Obra=ObraM

endscan

select SostMar

use

select C_BG_ID1

use

select C_BG_ID2

use

select count(*) from Rejs_Table ;

group by Pec, Atp1, Tydap into cursor C_Temp

public Num_Bg, MassLen

Num_Bg=reccount('Bg_Temp')

MassLen=reccount('C_Temp')

select C_Temp

use

public Otch[MassLen, 20+Num_Bg*9]

store 0 to Otch

************************************************************

i=0

local Old_Atp, Old_Rejs, Old_Tydap, Sum_Pass, Old_Name

select Rejs_Table

set order to BG_Time

Old_Atp=-1

Old_Rejs=-1

Old_Tydap=-1

Old_Name='!'

Sum_Pass=0

scan

if Old_Atp#Atp1 or Old_Rejs#Pec or Old_Tydap#Tydap

if i>0

if Otch[i,11]>0

Otch[i,11]=Sum_Pass/Otch[i,11]

endif

Sum_Pass=0

if Otch[i,17]>0

Otch[i,17]=Otch[i,14]/Otch[i,17]

endif

endif

i=i+1

if Name#Old_Name

Otch[i,1]=Name

Old_Name=Name

endif

* Otch[i,3]=Km

Otch[i,19]=BG_Time

Otch[i,15]=Pec && № рейса

Otch[i,4]=Tydap && Время отправления

Otch[i,2]=Atp_Name

Otch[i,20]=ObraM

* Otch[i,20]=Atp1 && Код АТП

Old_Atp=Atp1

Old_Rejs=Pec

Old_Tydap=Tydap

endif

if Fop=0 && Формирующийся рейс

Otch[i,5]=Otch[i,5]+Numb && Рейсов - план

if Otprav<20

Otch[i,6]=Otch[i,6]+Numb && Рейсов - факт

endif

Otch[i,17]=Otch[i,17]+Direct*KolM

endif

select Bg_Temp

locate for Kpp=Rejs_Table.Bg

if !found() && Не АВ ДАВ

select Rejs_Table

if Otprav<20

Otch[i,7]=Otch[i,7]+KolP && Продано всего

Otch[i,8]=Otch[i,8]+P_KolP && Продано прямых

Otch[i,9]=Otch[i,9]+SumN && Выручка

Otch[i,12]=Otch[i,12]+KolP && Всего продано билетов

Otch[i,13]=Otch[i,13]+P_KolP && Всего прямых

Otch[i,14]=Otch[i,14]+SumN && Сумма выручки

if KolP>0

Otch[i,10]=Otch[i,10]+Km_Sum && Общий километраж

endif

Otch[i,11]=Otch[i,11]+KolM && Коэф. наполн

Sum_Pass=Sum_Pass+KolP+Tranz

endif

loop

endif

j=recno()

select Rejs_Table

Otch[i,3]=Km

if Otprav<20

Otch[i,12+j*9]=Otch[i,12+j*9]+KolP && Продано всего

Otch[i,12+j*9+1]=Otch[i,12+j*9+1]+P_KolP && Продано прямых

Otch[i,12+j*9+2]=Otch[i,12+j*9+2]+SumN && Выручка

if KolP>0

Otch[i,12+j*9+4]=Otch[i,12+j*9+4]+Km_Sum && Общий километраж

endif

Otch[i,12+j*9+5]=Otch[i,12+j*9+5]+KolM && Макс. кол-во мест

Otch[i,12+j*9+6]=Otch[i,12+j*9+6]+KolP+Tranz && Всего отправлено

Otch[i,12+j*9+7]=Otch[i,12+j*9+7]+P_KolP+AKolP && Отправлено прямых

Otch[i,12+j*9+8]=Otch[i,12+j*9+8]+Numb && Рейсов факт

Otch[i,12]=Otch[i,12]+KolP && Всего продано билетов

Otch[i,13]=Otch[i,13]+P_KolP && Всего прямых

Otch[i,14]=Otch[i,14]+SumN && Сумма выручки

endif

if Otch[i,12+j*9+8]>0

if Otch[i,12+j*9+6]/Otch[i,12+j*9+8]>Otch[i,18] && Макс. число пасс.

Otch[i,18]=Otch[i,12+j*9+6]/Otch[i,12+j*9+8]

endif

endif

endscan

if Otch[i,11]>0

Otch[i,11]=Sum_Pass/Otch[i,11]

endif

if Otch[i,17]>0

Otch[i,17]=Otch[i,14]/Otch[i,17]

endif

select Pejc

use

select Rejs_Table

use

for i=1 to MassLen

if Otch[i,7]>0

Otch[i,10]=Otch[i,10]/Otch[i,7] && Средн. километраж

endif

buf=0

for j=1 to Num_Bg

if Otch[i,12+j*9+8]>buf

buf=Otch[i,12+j*9+8]

endif

if Otch[i,12+j*9+5]>0

Otch[i,12+j*9+5]=Otch[i,12+j*9+6]/Otch[i,12+j*9+5] && Коэф. наполн

endif

if Otch[i,12+j*9]>0

Otch[i,12+j*9+4]=Otch[i,12+j*9+4]/Otch[i,12+j*9] && Средн. километраж

endif

endfor

if Otch[i,6]=0

Otch[i,6]=buf

endif

endfor

set default to &Def_Path

************************************************************

if Rep_Type=1 && Накопительная

Summary_Rep()

else

OneRejs_Rep()

endif

XLSheet.Range('A5').Select

XLApp.Calculation=xlCalculationAutomatic

release Otch, MassLen, Num_Bg, AllTyda, AllObra, AllRejs

wait clear

XLApp.Visible=.T.

release XlApp, XlSheet

***********************************************************

Реализация процедуры Rejs_Scan - «Следование рейса»

procedure Rejs_Scan

parameters DB_Month, DB_Year, Beg_Date, End_Date

local bd_base

bd_base='bd'+alltrim(str(DB_Month))+alltrim(str(DB_Year))

if empty(Open_Table(bd_base,'IBEDOM','BD_Table'))

return

endif

set talk on

select Bg, Atp1, Pec, Mar, Otprav, sum(KolM) as KolM, sum(KolP) as KolP, ;

sum(P_KolP) as P_KolP, sum(SumN-SumS-SumT) as SumN, Km, ;

sum(AKolP) as AKolp, sum(Tranz) as Tranz, Count(*) as Numb, Naim, ;

Obra, Tydap, Fop, sum(Km_Sum) as Km_Sum, ;

iif(Fop=0, Direct*20/21-1.5, 0000000.00) as Direct ;

from BD_Table ;

where DatV>=Beg_Date and ;

DatV<=End_Date and prib=0 and Otprav#30 ;

group by Bg, Atp1, Pec, Otprav, Obra, Tydap, Direct ;

into cursor Rejs_Temp1

select b.Bg, b.Atp1, a.Naim as Atp_Name, b.Pec, b.Mar, b.Otprav, KolM, KolP, ;

P_KolP, SumN, AKolp, Tranz, b.Km, b.Numb, b.Naim as Name, b.Obra, ;

b.Tydap, b.Fop, b.Km_Sum, iif(b.Direct>0,Direct, 0000000.00) as Direct;

from Rejs_Temp1 b, Mar_C m, Atp a ;

where m.Mar=b.Mar and b.Atp1=a.Kat;

into table Rejs_Temp

set talk off

select Bd_Table

use

select Rejs_Temp1

use

select Rejs_Table

append from Rejs_Temp

select Rejs_Temp

use

ENDPROC

**********************************************

Реализация процедуры Summary_Rep - «Суммарный километраж»

PROCEDURE Summary_Rep

LOCAL i, j, buf

buf=(pubDate[2]-pubDate[1])/30*4

i=1

do while i<=MassLen

if Otch[i,6]<buf

if empty(Otch[i+1,1])

Otch[i+1,1]=Otch[i,1]

endif

adel(Otch,i)

MassLen=MassLen-1

else

i=i+1

endif

enddo

CreatExc(@XLApp, 1, @XLSheet, 13)

XLApp.Calculation=xlCalculationManual

for i=2 to Num_Bg

XlSheet.Columns('S:AA').Copy

XlSheet.Cells(1,10+i*9).Select

XlSheet.Paste

XlSheet.Cells(1,10+i*9).Value = ''

endfor

XlSheet.Range('S1:AB1').MergeCells = .T.

select BG_Temp

i=1

scan

XlSheet.Cells(2,10+i*9).Value=Name

i=i+1

endscan

use

local Old_Time, Old_Rejs, Old_Obra, k, n, m, ci, ci1

local RejsTyda, RejsObra, AllRejs, AllTyda, AllObra

RejsTyda=''

RejsObra=''

AllTyda=''

AllObra=''

AllRejs=''

k=Masslen+8

XLSheet.Rows(5).Copy

XLSheet.Range('A6:A'+alltrim(str(k))).Select

XLSheet.Paste

j=5

ci=alltrim(str(j))

Old_Time=Otch[1,19]

Old_Rejs=Otch[1,15]

Old_Obra=Otch[1,20]

for i=1 to MassLen

if Otch[i,19]#Old_Time or Otch[i,15]#Old_Rejs

if ci#alltrim(str(j-1))

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Font.Bold=.T.

if Old_Obra='1' && Прямой рейс

XlSheet.Cells(j,1).Value='Итого прямой рейс:'

else

XlSheet.Cells(j,1).Value='Итого обратн. рейс:'

endif

Itog(ci,alltrim(str(j-1)),j)

j=j+1

endif

if Old_Obra='1' && Прямой рейс

AllTyda=AllTyda+RejsTyda

else

AllObra=AllObra+RejsObra

endif

if Otch[i,19]#Old_Time && Итого рейс

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

XlSheet.Cells(j,1).Value='Итого рейс:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Font.Bold=.T.

AllRejs=RejsTyda+RejsObra+'0'

AllItog(AllRejs, j, 0)

RejsTyda=''

RejsObra=''

j=j+1

endif

ci=alltrim(str(j))

Old_Rejs=Otch[i,15]

Old_Time=Otch[i,19]

Old_Obra=Otch[i,20]

endif

ci1=alltrim(str(j))

if Old_Obra='1' && Прямой рейс

RejsTyda=RejsTyda+'Otch['+alltrim(str(i))+',k]+'

else

RejsObra=RejsObra+'Otch['+alltrim(str(i))+',k]+'

endif

for n=1 to 14

XlSheet.Cells(j,n).Value=Otch[i,n]

endfor

for n=16 to 18

XlSheet.Cells(j,n).Value=Otch[i,n]

endfor

for n=1 to Num_Bg

if Otch[i,12+n*9]>0

Otch[i,12+n*9+3]=Otch[i,12+n*9+2]/Otch[i,12+n*9]

endif

for m=1 to 3

XlSheet.Cells(j,9+n*9+m).Value=Otch[i,11+n*9+m]

endfor

for m=5 to 9

XlSheet.Cells(j,9+n*9+m).Value=Otch[i,11+n*9+m]

endfor

endfor

j=j+1

endfor

***************************************************

if ci#alltrim(str(j-1))

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

endif

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

if ci#alltrim(str(j-1))

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j+3,18+Num_Bg*9)).Font.Bold=.T.

if Old_Obra='1'

XlSheet.Cells(j,1).Value='Итого прямой рейс:'

else

XlSheet.Cells(j,1).Value='Итого обратн. рейс:'

endif

Itog(ci,alltrim(str(j-1)),j)

j=j+1

endif

if Old_Obra='1'

AllTyda=AllTyda+RejsTyda+'0'

AllObra=AllObra+'0'

else

AllObra=AllObra+RejsObra+'0'

AllTyda=AllTyda+'0'

endif

**********************************************

XlSheet.Cells(j,1).Value='Итого рейс:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Font.Bold=.T.

AllRejs=RejsTyda+RejsObra+'0'

AllItog(AllRejs, j, 0)

j=j+1

XlSheet.Cells(j,1).Value='Всего в прямом:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.

AllItog(AllTyda, j, 0)

j=j+1

XlSheet.Cells(j,1).Value='Всего в обратном:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.

AllItog(AllObra, j, 0)

j=j+1

XlSheet.Cells(j,1).Value='Всего:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.

AllRejs='XlSheet.Cells('+alltrim(str(j-2))+',k-buf).Value+'+ ;

'XlSheet.Cells('+alltrim(str(j-1))+',k-buf).Value'

AllItog(AllRejs, j, 2)

XlSheet.Range(XlSheet.Cells(5,1), XlSheet.Cells(5,18+Num_Bg*9)) ;

.Borders(3).Weight = xlMedium

ENDPROC

*****************************************************************

Реализация процедуры OneRejs_Rep - «Километраж за единый рейс»

PROCEDURE OneRejs_Rep

local i, j, n, m, buf

buf=(pubDate[2]-pubDate[1])/30*4

i=1

do while i<=MassLen

if Otch[i,6]>buf

for j=7 to 10

Otch[i,j]=Otch[i,j]/Otch[i,6]

endfor

for j=12 to 14

Otch[i,j]=Otch[i,j]/Otch[i,6]

endfor

for n=1 to Num_Bg

for m=1 to 3

Otch[i, 11+n*9+m]=Otch[i, 11+n*9+m]/Otch[i,6]

endfor

for m=7 to 8

Otch[i, 11+n*9+m]=Otch[i, 11+n*9+m]/Otch[i,6]

endfor

endfor

i=i+1

else

if empty(Otch[i+1,1])

Otch[i+1,1]=Otch[i,1]

endif

adel(Otch,i)

MassLen=MassLen-1

endif

enddo

CreatExc(@XLApp, 1, @XLSheet, 14)

XLApp.Calculation=xlCalculationManual

FOR i=2 TO Num_Bg

XlSheet.Columns('Q:X').Copy

XlSheet.Cells(1,9+i*8).Select

XlSheet.Paste

XlSheet.Cells(1,9+i*8).Value = ''

ENDFOR

XlSheet.Range('Q1:Y1').MergeCells = .T.

select BG_Temp

i=1

scan

XlSheet.Cells(2,9+i*8).Value=Name

i=i+1

endscan

use

local Old_Time, Old_Rejs, Old_Obra, k, ci, ci1

local RejsTyda, RejsObra, AllRejs, AllTyda, AllObra

RejsTyda=''

RejsObra=''

AllTyda=''

AllObra=''

AllRejs=''

k=Masslen+8

XLSheet.Rows(5).Copy

XLSheet.Range('A6:A'+alltrim(str(k))).Select

XLSheet.Paste

j=5

ci=alltrim(str(j))

Old_Time=Otch[1,19]

Old_Rejs=Otch[1,15]

Old_Obra=Otch[1,20]

for i=1 to MassLen

if Otch[i,19]#Old_Time or Otch[i,15]#Old_Rejs

if ci#alltrim(str(j-1))

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Font.Bold=.T.

if Old_Obra='1' && Прямой рейс

RejsTyda='XlSheet.Cells('+alltrim(str(j))+',k).Value+'

XlSheet.Cells(j,1).Value='Итого прямой рейс:'

else

RejsObra='XlSheet.Cells('+alltrim(str(j))+',k).Value+'

XlSheet.Cells(j,1).Value='Итого обратн. рейс:'

endif

Itog1(ci,alltrim(str(j-1)),j)

j=j+1

else

if Old_Obra='1' && Прямой рейс

RejsTyda='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'

else

RejsObra='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'

endif

endif

if Old_Obra='1' && Прямой рейс

AllTyda=AllTyda+RejsTyda

else

AllObra=AllObra+RejsObra

endif

if Otch[i,19]#Old_Time && Итого рейс

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

XlSheet.Cells(j,1).Value='Итого рейс:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Font.Bold=.T.

AllRejs=RejsTyda+RejsObra+'0'

AllItog1(AllRejs, j)

RejsTyda=''

RejsObra=''

j=j+1

endif

ci=alltrim(str(j))

Old_Rejs=Otch[i,15]

Old_Time=Otch[i,19]

Old_Obra=Otch[i,20]

endif

ci1=alltrim(str(j))

for n=1 to 4

XlSheet.Cells(j,n).Value=Otch[i,n]

endfor

for n=7 to 14

XlSheet.Cells(j,n-2).Value=Otch[i,n]

endfor

for n=16 to 18

XlSheet.Cells(j,n-2).Value=Otch[i,n]

endfor

for n=1 to Num_Bg

if Otch[i,12+n*9]>0

Otch[i,12+n*9+3]=Otch[i,12+n*9+2]/Otch[i,12+n*9]

endif

for m=1 to 3

XlSheet.Cells(j,8+n*8+m).Value=Otch[i,11+n*9+m]

endfor

for m=5 to 8

XlSheet.Cells(j,8+n*8+m).Value=Otch[i,11+n*9+m]

endfor

endfor

j=j+1

endfor

***************************************************

if ci#alltrim(str(j-1))

XLSheet.Rows(k).Copy

k=k+1

XLSheet.Rows(k).Select

XLSheet.Paste

endif

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

if ci#alltrim(str(j-1))

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j+3,16+Num_Bg*8)).Font.Bold=.T.

if Old_Obra='1'

XlSheet.Cells(j,1).Value='Итого прямой рейс:'

RejsTyda='XlSheet.Cells('+alltrim(str(j))+',k).Value+'

else

XlSheet.Cells(j,1).Value='Итого обратн. рейс:'

RejsObra='XlSheet.Cells('+alltrim(str(j))+',k).Value+'

endif

Itog1(ci,alltrim(str(j-1)),j)

j=j+1

else

if Old_Obra='1' && Прямой рейс

RejsTyda='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'

else

RejsObra='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'

endif

endif

if Old_Obra='1'

AllTyda=AllTyda+RejsTyda+'0'

AllObra=AllObra+'0'

else

AllObra=AllObra+RejsObra+'0'

AllTyda=AllTyda+'0'

endif

**********************************************

XlSheet.Cells(j,1).Value='Итого рейс:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Font.Bold=.T.

AllRejs=RejsTyda+RejsObra+'0'

AllItog1(AllRejs, j)

j=j+1

XlSheet.Cells(j,1).Value='Всего в прямом:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.

AllItog1(AllTyda, j)

j=j+1

XlSheet.Cells(j,1).Value='Всего в обратном:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.

AllItog1(AllObra, j)

j=j+1

XlSheet.Cells(j,1).Value='Всего:'

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;

.Borders(4).Weight = xlMedium

XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.

AllRejs='XlSheet.Cells('+alltrim(str(j-2))+',k).Value+'+ ;

'XlSheet.Cells('+alltrim(str(j-1))+',k).Value'

AllItog1(AllRejs, j)

XlSheet.Range(XlSheet.Cells(5,1), XlSheet.Cells(5,16+Num_Bg*8)) ;

.Borders(3).Weight = xlMedium

ENDPROC

*********************************************************

Реализация функции load_factor - «Загруженность работы автовокзала»

local buf, pubDate[2]

buf='01.'+str(ThisForm.From_Month)+'.'+str(ThisForm.From_Year)

if empty(ctod(buf))

MessageBox('Неверная дата начала периода',16,'Выбор интервала времени')

return

else

pubDate[1]=ctod(buf)

endif

if ThisForm.To_Month=12

buf=31

else

buf=day(ctod('01.'+str(ThisForm.To_Month+1)+'.'+str(ThisForm.To_Year))-1)

endif

buf=str(buf)+'.'+str(ThisForm.To_Month)+'.'+str(ThisForm.To_Year)

if empty(ctod(buf))

MessageBox('Неверная дата конца периода',16,'Выбор интервала времени')

return

else

pubDate[2]=ctod(buf)

endif

if pubDate[1]>pubDate[2]

MessageBox('Дата начала периода больше даты конца периода',16,'Выбор интервала времени')

return

endif

if pubDate[2]>date()

MessageBox('Дата конца периода больше текущей даты',16,'Выбор интервала времени')

return

endif

if Year(pubDate[1])<Year(pubDate[2])-1

MessageBox('Слишком большой период',16,'Выбор интервала времени')

return

endif

PRIVATE XLApp, pubMonth, pubYear

XLApp=0

pubMonth=ThisForm.MonthArray[Month(pubDate[1])]

pubYear=alltrim(str(Year(pubDate[1])))

public _BG[1], MassLen, NDS

if empty(Open_Table('Filial'))

return

endif

set deleted on

Set_BG()

MassLen = ALEN(_BG)

if MassLen<=1

release _BG, _Atp, MassLen, pubDate

return

endif

if ThisForm.From_Month=ThisForm.To_Month and ThisForm.From_Year=ThisForm.To_Year && За один месяц

PRIVATE XLSheets

XlSheets=0

if !CreatExc(@XLApp, 1, @XLSheets, 28)

return .f.

endif

XLApp.Calculation=xlCalculationManual

Load_Factor(@XlSheets, Month(pubDate[1]), Year(pubDate[1]), pubMonth)

XLApp.Calculation=xlCalculationAutomatic

XLApp.Visible = .T.

release XlSheets, _BG, MassLen, pubDate

ThisForm.Release

return

endif

local Month_Num && Несколько месяцев

if Year(pubDate[1])=Year(pubDate[2])

Month_Num=Month(pubDate[2])-Month(pubDate[1])+1

else

Month_Num=13-Month(pubDate[1])+Month(pubDate[2])

endif

Month_Num=Month_Num+1 && Итоговый лист

****************************************************

public Month_Array[Month_Num], XLSheets[Month_Num]

store 0 to XlSheets

local j

j=1

if Year(pubDate[1])=Year(pubDate[2])

for i=Month(pubDate[1]) to Month(pubDate[2])

Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[1])))

j=j+1

endfor

else

for i=Month(pubDate[1]) to 12

Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[1])))

j=j+1

endfor

for i=1 to Month(pubDate[2])

Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[2])))

j=j+1

endfor

endif

Month_Array[j]='Итого'

if !CreatExc(@XLApp, Month_Num, @XLSheets, 28, @Month_Array)

return .f.

endif

XLApp.Calculation=xlCalculationManual

j=1

if Year(pubDate[1])=Year(pubDate[2])

for i=Month(pubDate[1]) to Month(pubDate[2])

pubMonth=ThisForm.MonthArray[i]

pubYear=alltrim(str(Year(pubDate[1])))

Load_Factor(XlSheets[j], i, Year(pubDate[1]), ThisForm.MonthArray[i])

j=j+1

endfor

else

for i=Month(pubDate[1]) to 12

pubMonth=ThisForm.MonthArray[i]

pubYear=alltrim(str(Year(pubDate[1])))

Load_Factor(XlSheets[j], i, Year(pubDate[1]), ThisForm.MonthArray[i])

j=j+1

endfor

for i=1 to Month(pubDate[2])

pubMonth=ThisForm.MonthArray[i]

pubYear=alltrim(str(Year(pubDate[2])))

Dohod(XlSheets[j], i, Year(pubDate[2]), ThisForm.MonthArray[i])

j=j+1

endfor

endif

Load_Factor_All(XlSheets[Month_Num], @Month_Array, Month_Num, pubDate[1], pubDate[2])

select Filial

use

XLApp.Calculation=xlCalculationAutomatic

XLApp.Visible = .T.

release XlSheets, _BG, MassLen, pubDate

ThisForm.Release

ref.by 2006—2025
contextus@mail.ru