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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.06.2012
Размер файла 4,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» (ГОУВПО «ВГТУ»)

Кафедра систем автоматизированного проектирования и информационных систем

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

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

Разработал Д.С. Терехов

Руководитель Д.В. Долгих

Воронеж

Введение

Документы были, есть и будут. Единственное, что меняется со временем - это их носители.

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

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

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

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

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

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

1. Описание предметной области

1.1 Описание логистического бизнес-процесса

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

Повышение эффективности управления логистикой возможно за счет интегрированности логистической цепочки по всему жизненному циклу заказа.

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

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

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

Участниками логистического процесса являются: руководитель процесса, логист, инженер, продавец.

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

С каждым договором ассоциируется набор платежных и электронных документов.

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

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

Договорная специфика представляет собой перечень товаров и услуг. Атрибутами договорной специфики являются: название, проект, договор, дата создания, автор, клиент по проекту, контрагент по договору, статус, сумма, комментарий. Взаимосвязь проектов и договоров осуществляется через соответствующие договорные специфики. В качестве статуса договорной спецификации (ДС) выступают следующие значения: новая, согласованная, утвержденная. В рамках проекта / договора может быть несколько ДС. Необходимо вести историю ДС. ДС - это перечень сгруппированных позиций. Каждая позиция может быть составной и иметь атрибуты. Также есть два типа позиций: плановая и фактическая. При формировании фактической ДС позиции в ней могут отличаться от позиций ДС по документам (иметь другое наименование, стать составной или простой).

С каждой позицией ассоциируется номенклатура, которая группируется по товарам, услугам и правам на ПО. Атрибутами номенклатуры являются: наименование, краткое наименование, артикул, единица измерения, поставщики, вид. У номенклатуры может быть целый набор единиц измерения, а так же поставщиков. Должна быть предусмотрена возможность выбора основного поставщика. С каждой номенклатурой ассоциируется картинка(ее внешний вид).

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

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

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

Структура предприятия «БиАй-лизинг» представлена на рис. 1.

Рисунок 1 - Структура предприятия «БиАй-лизинг»

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

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

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

Работа проектного отдела тесно связана со всеми подразделениями фирмы. Проектный отдел занимается разработкой проектов как вновь строящихся, так и реконструируемых и модернизируемых автоматизированных систем. Основные направления деятельности по работе с персоналом:

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

- мониторинг, оценка качества труда;

- система отбора кадров;

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

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

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

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

1.2 Пример автоматизированных систем и сравнение с разрабатываемой системой

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

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

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

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

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

Разработанный мною программный продукт, будет:

1. Осуществлять ведение проектов:

- добавлять, изменять, удалять проект / подпроект;

- определять набор складов для каждого проекта;

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

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

2. Осуществлять ведение договоров:

- добавлять, удалять, изменять договора / этапы договоров;

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

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

3. Осуществлять ведение договорной спецификации.

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

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

- хранить историю изменения договорной спецификации;

- предоставлять предпросмотр планового и фактического содержимого договорной спецификации.

4. Осуществлять формирование плановых и фактических договорных спецификаций.

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

- добавлять, удалять, изменять позиции;

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

- осуществлять загрузку / выгрузку из / в Excel.

5. Осуществлять формирование закупочных спецификаций (мониторинг закупок).

6. Осуществлять ведение номенклатур.

- добавлять, удалять, изменять номенклатуру;

- задавать набор единиц измерения;

- задавать набор поставщиков (с возможностью указания основного);

- использовать тегирование при поиске.

7. Осуществлять ведение штатного расписания.

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

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

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

- хранить историю назначенных должностей;

- хранить информацию о родственных отношениях.

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

Еще одним плюсом является - недорогая стоимость.

1.3 Цель и задачи

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

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

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

- минимизация потерь;

- снижение издержек;

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

2. Логистический бизнес-процесс

2.1 Взаимодействие бизнес-объектов

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

Участниками логистического процесса являются: руководитель процесса, логист, инженер, продавец.

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

Атрибуты договора:

1) номер;

2) название;

3) вид;

4) контрагент;

5) дата подписи;

6) дата окончания;

7) общая стоимость;

8) отгружено;

9) оплачено;

10) описание.

С каждым договором ассоциируется набор платежных и электронных документов.

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

Атрибуты проекта:

1) код;

2) РП;

3) дата начала (план, факт);

4) дата окончания (план, факт);

5) клиент;

6) статус;

7) описание.

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

Атрибуты склада:

1) наименование;

2) материально ответственное лицо;

3) признак закрытости;

4) общая стоимость;

5) адрес;

6) описание;

7) тип (постоянный, приобъектный, виртуальный).

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

Договорная спецификация (ДС) представляет собой перечень товаров и услуг.

Атрибуты ДС:

1) название;

2) проект;

3) договор.

4) дата создания;

5) автор;

6) клиент по проекту;

7) контрагент по договору;

8) статус;

9) сумма;

10) комментарий.

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

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

Атрибуты позиций:

1) порядковый номер;

2) артикул;

3) номенклатура;

4) единица измерения;

5) количество;

6) валюта;

7) цена за единицу;

8) сумма;

9) срок поставки (договорная и директивная даты);

10) аннулированность;

11) официальный;

12) статус.

В качестве статуса выступают следующие значения: не заказана, заказана, изменена (если позиция в ДС по документам отличается от соответствующей позиции в фактической ДС).

Для классификации ДС на плановые (по документам) и фактические были введены типы позиций: плановая, фактическая.

При формировании фактической ДС позиции в ней могут отличаться от позиций ДС по документам (иметь другое наименование, стать составной или простой).

С каждой позицией ассоциируется номенклатура, которая группируется по товарам, услугам и правам на ПО.

Атрибуты номенклатуры:

1) наименование;

2) краткое наименование;

3) артикул;

4) единица измерения;

5) поставщики;

6) вид.

Если номенклатура из группы «Товар», то список атрибутов дополняется:

1) тип (материал или оборудование);

2) производитель;

3) серия;

4) новая или б/у.

Если же из группы «Права на ПО», то основной список атрибутов дополняется:

1) существование сублицензии;

2) учет НДС (с или без);

3) серия.

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

На базе утвержденной ДС формируются закупочные спецификации (ЗС). Статус ЗС принимает два значения: утверждена или нет.

В рамках ЗС с каждой позицией ассоциируется дополнительный набор атрибутов:

1) поставщик;

2) закупочная цена;

3) дата поступления по документам;

4) срок поставки;

5) срок оплаты;

6) счет поставщика;

7) ответственный.

Каждая позиция либо резервируется на складе, либо заказывается у поставщика (через заказ поставщику).

Процедура утверждения ЗС была описана в модели бизнес процессов.

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

Атрибуты платежного поручения:

1) номер;

2) дата;

3) вид;

4) сумма;

5) плательщик (название, ИНН, КПП, № счета);

6) получатель (название, ИНН, КПП, № счета);

7) назначение платежа;

8) комментарий;

9) банк плательщика (БНК, № счета);

10) банк получателя (БНК, № счета);

11) основной проект;

12) основной договор.

2.2 Функциональная структура предприятия

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

2.2.1 Функциональная модель предметной области

Функциональная модель предназначена для описания существующих бизнес-процессов на предприятии и идеального положения вещей - того, к чему нужно стремиться. Данная модель построена в среде функционального моделирования BP-win, которая включает в себя три стандартные нотации: IDEF0, DFD, IDEF3. Методология IDEF0 предписывает построение иерархической системы диаграмм - единичных описаний фрагментов системы. Сначала проводится описание системы в целом и ее взаимодействия с окружающим миром (контекстная диаграмма), после чего проводится декомпозиция - система разбивается на подсистемы и каждая подсистема описывается отдельно (диаграммы декомпозиции). Затем каждая подсистема разбивается на более мелкие и так далее до достижения нужной степени подробности.

Рассмотрим предлагаемую нами функциональную модель выбранной предметной области (рис. 2).

Рисунок 2 - Контекстная диаграмма

В таблицу запишем определения стрелок на контекстной диаграмме.

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

Название стрелки

Определение стрелки

Тип стрелки

Выбор формы

Выбор необходимой формы

Input

Сортировка

Сортировка данных по возрастанию, убыванию

Control

Фильтрация

Фильтрация данных с помощью sql-запросов

Control

Технология «Drag and Drop»

Технология работающая по принципу «Схватить и перетащить»

Control

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

Разрабатываемая система

Mechanism

Персонал производственного отдела

Инженеры, проектировщики и т.д.

Mechanism

Готовый документ

Данные, хранящиеся в базе

Output

Чтобы посмотреть работу предприятия более детально, декомпозируем систему на несколько уровней (рис. 3 и рис. 4).

Рисунок 3 - декомпозиция первого уровня

Рисунок 4 - Декомпозиция второго уровня

2.2.2 Инфологическая модель предметной области

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

Рисунок 5 - Инфологическая модель предметной области «Взаимодействие бизнес-объектов»

Рисунок 6 - Инфологическая модель предметной области «Взаимодействие бизнес-объектов»

Рисунок 7 - Инфологическая модель предметной области «Взаимодействие бизнес-объектов»

2.2.3 Даталогическая модель предметной области

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

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

2.2.4 Диаграмма вариантов использования

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

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

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

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

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

Данная диаграмма построена в среде IBM Rational Rose Enterprise Edition v7.0.0, которая предназначена для визуального моделирования и проектирования программных систем на основе стандарта UML, позволяющих моделировать, как компоненты программного обеспечения, так и бизнес-процессы. Диаграмма вариантов использования приведена на рис. 8.

Рисунок 8 - Диаграмма вариантов использования

2.2.5 Диаграмма классов

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

На диаграмме классов (рис. 9) представлены девять классов. Запуск программы начинается с класса «LaunchForm.cs», где отображается логотип фирмы-разработчика. Далее управление передается в класс менеджера форм «ManagerForm», откуда можно запустить настройки (класс «SettingsForm») и сами формы. В большинстве классов используются такие поля, как «connector» и «description», соответственно служащие для загрузки данных в формы из базы данных и описания выбранной формы. Представленные методы или функции преимущественно используются для добавления, удаления, обновления и загрузки данных.

Рисунок 9 - Диаграмма классов

2.2.6 Диаграмма состояний

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

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

Рисунок 10 - Диаграмма состояний

2.2.7 Диаграмма компонентов

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

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

Рисунок 11 - Диаграмма компонентов

3. Разработка программного средства

3.1 Выбор языка программирования

В ходе выполнения выпускной квалификационной работы была разработана программа «Автоматизация закупок IS»

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

Для разработки был использован язык программирования C Sharp (C#) для операционных систем Windows 98/2000/XP/Vista/Seven. Листинг программы представлен в приложении В.

По сравнению с другими языками программирования C# выглядит намного проще. Многие языки обладают запутанным синтаксисом, приводящим к трудностям, как при компилировании программ, так и при их написании. Создатели C# предприняли специальные усилия для упрощения языка:

- запрет прямой манипуляции памятью;

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

- отказ от провала в следующую ветку в switch;

- запрещение множественного наследования.

C# занимает некоторую промежуточную позицию: из стандарта языка убраны наиболее неприятные и неоднозначные особенности С++, но в то же время язык сохранил мощные выразительные возможности, присущие для таких языков, как С++, Java или VB. Укажем некоторые особенности языка С++, которые не поддерживаются C#:

По умолчанию, С# запрещает прямое манипулирование памятью, предоставляя взамен богатую систему типов и сборку мусора. Непосредственная работа с памятью по-прежнему доступна в специальном режиме "опасного" кода, но требует явного декларирования. Как следствие, в C# активно используется всего один оператор доступа ".".

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

Одной из типичных ошибок в С++ было отсутствие оператора break при обработке одной из веток оператора switch. Проблема "провала" (fall-through) в C# решена кардинальным образом: компилятор требует наличия явного оператора перехода (break или goto case <name>) в любой ветке.

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

3.2 Выбор среды разработки

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

Visual Studio 2010 - универсальное средство для специалистов по разработке и проектированию, поддерживающее большинство платформ разработки, в том числе Windows и Windows Server, облачную и веб-среду, Office и SharePoint и гарантирующее 100% корректность конечного кода.

Ключевыми функциями Visual Studio 2010 Professional являются:

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

- возможность разработки приложений в Visual Studio 2010 через тестирование на уровне модулей и компиляцию;

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

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

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

- упрощённое развёртывание в Visual Studio 2010: мгновенный перенос кода, параметров IIS и схемы БД созданных веб-приложений в среду производства, расположенную на целевом сервере.

3.3 Структура системы

Пакет Forms:

LaunchFrom.cs - класс, с которого начинается запуск программы. Содержит в себе логотип фирмы-разработчика.

SettingsForm.cs - класс, представляющий собой модальное окно настроек программы. Вызывается по кнопке "Настройки" из менеджера форм.

VedenieDogovornixSpecifikaciyForm.cs - класс "Ведение ДС". Представляет собой форму, открывающуюся в отдельной вкладке. Вызывается по клику из дерева в менеджере форм.

DogovornieSpecifikaciiForm.cs - класс "Договорные спецификации". Представляет собой форму, открывающуюся в отдельной вкладке. Вызывается по клику в необходимой строке главной таблицы "Ведение ДС".

Пакет ControlsLibrary:

AddingPanelForSplitContainer.cs - составная часть стандартного компонента SplitContainer, представляющая собой разделительную панель с кнопками.

Draggable.cs - представляет собой панель, которую можно передвигать по форме в любых направлениях с помощью технологии "Drag and Drop".

ExtendedContextMenu.cs - модификация стандартного компонента ContextMenu (всплывающее меню), позволяющая располагать внутри себя любые другие компоненты.

ExtendedDataGridView.cs - модификация стандартного компонента DataGridView (таблица), позволяющая внутри себя содержать группированные столбцы.

ExtendedTabControl.cs - модификация стандартного компонента TabControl (вкладка), в котором присутствует кнопка закрытия вкладки.

FilterControl.cs - компонент, позволяющий с помощью sql-запросов совершать фильтрацию в необходимой таблице.

TreeGridView.cs - модификация стандартного компонента DataGridView (таблица), который имеет уже древовидно-табличную структуру.

BlockPanel.cs - компонент, представляющий собой блок, который может принимать состояния: активный или неактивный.

PressedButton.cs - модификация стандартного компонента Button (кнопка), которая может принимать 2 состояния: вдавлена или не нажата.

ScrollPanel.cs - модификация стандартного компонента Panel (панель), при переполнении которого другими различными компонентами появляются боковые кнопки прокрутки.

Splitter.cs - компонент, представляющий собой разделительную полосу, служащую для оформления.

TextBoxButton.cs - модификация стандартного компонента TextBox (текстовое поле), в который встроена кнопка, при клике по которой открывается модальное окно со списком выбора.

Рисунок 12 - Структурная схема разработанного ПО

На рисунке 12 приведена структурная схема разработанного программного обеспечения.

Опишем каждый блок программы более подробно:

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

Выбор форм. В менеджере доступны для выбора две формы: «Ведение ДС» и «Закупочные спецификации».

Для «Ведения ДС» действия могут развиваться следующим образом:

- загрузка данных о ДС;

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

- редактирование ДС;

- управление транзакцией;

- выбор ДС;

- предпросмотр план/факт данных.

В последнем пункте мы можем перейти на форму «Договорные спецификации», откуда доступны действия:

- фильтрация, сортировка, смена порядка отображения;

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

- управление транзакцией.

Для формы «Закупочные спецификации» доступны следующие действия:

- загрузка данных о закупочных спецификациях;

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

- мониторинг закупок;

- управление транзакцией.

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

3.4 Руководство администратора

В этом разделе рассмотрим все шаги, которые необходимы для установки и запуска программы «Автоматизация закупок IS» («WarehousesIS»).

Установить Microsoft.NET Framework 4. Следовать инструкциям установки.

Установить Microsoft SQL Server 2008 R2. Следовать инструкциям установки.

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

Установить программу, запустив файл setup.exe.

При запуске запустится мастер установки (рис. 13). Необходимо нажать на кнопку «Далее».

Рисунок 13

Затем появится окно (рис.14), в котором нужно указать папку, в которую хотите установить программу. После выбора папки необходимо нажать на кнопку «Далее».

Рисунок 14

Появится окно (рис. 15), в котором надо указать папку, в которую установится ярлык. Затем нажать на кнопку «Далее».

Рисунок 15

Появится окно (рис. 16), в котором указать хотите ли создавать ярлык на рабочем столе или нет. Затем нажать на кнопку «Далее».

Рисунок 16

Появится окно (рис. 17), в котором показана результирующая информация, куда будет устанавливаться программа. Если все правильно, то нажмите на кнопку «Установить». Начнется установка программы (рис. 18).

Рисунок 17

Рисунок 18

Запустить программу WarehousesIS.exe.

3.5 Руководство пользователя

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

3.5.1 Описание форм

В программе представлены 3 формы:

- ведение ДС;

- договорные спецификации - доступна из формы ведения ДС;

- закупочные спецификации.

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

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

Внешний вид программы на рисунке 19.

Рисунок 19 - Внешний вид программы

Форма «Ведение ДС». Представляет собой главную таблицу «Ведение ДС» (рис. 20) и ее детальный просмотр в виде таблиц «Просмотр ДС по документам» и «Предпросмотр фактических ДС» (рис. 21). Последние две таблицы имеют древовидную структуру и служат только для чтения. При двойном клике по выбранной ДС в главной таблице открывается новая форма - «Договорные спецификации», соответствующая выбранной ДС.

Рисунок 20 - Таблица «Ведение ДС»

Рисунок 21 -«Ведение ДС» детальный просмотр

Форма «Договорные спецификации». Представляет собой две таблицы: «По документам» и «Фактически» (рис. 22), оформленные в виде древовидной структуры. Над ними располагается панель с полями для чтения (наименование, проект, договор, дата создания) и две кнопки («По документам» и «Фактически», при клике по которым происходит отображение только необходимой таблицы).

В таблице «По документам» с помощью технологии «Drag & Drop» происходит изменение позиций ДС и их копировании из исходной таблицы в таблицу «Фактически».

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

Рисунок 22 - «Договорные спецификации»

Форма «Закупочные спецификации». Представляет собой главную таблицу «Закупочные спецификации» (рис. 23), доступную только для чтения. Предназначена для мониторинга закупок в рамках всей системы.

Рисунок 23 - «Закупочные спецификации»

3.5.2 Описание специальных компонентов форм

Приведем более детальное описание каждого из компонентов библиотеки «ControlsLibrary».

Панель управления. Представляет собой панель, расположенную в верхней левой части окна программы, с пятью кнопками: «Выйти из программы», «Настройки программы», «Обновить данные из Базы», «Сохранить последние изменения» и «Отменить последние изменения» (рис. 24).

«Выйти из программы» - закрывает окно программы.

«Настройки программы» - отдельное модальное окно, в котором необходимо прописать настройки соединения.

«Обновить данные из Базы» - осуществляет обновление.

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

«Отменить последние изменения» - выполняется откат, происходит загрузка последних успешно сохраненных данных.

Рисунок 24 - Панель управления

Менеджер форм. Представляет собой дерево форм (рис. 25). По двойному клику осуществляется открытие выбранной форме в отдельной вкладке в компоненте «Спецификации».

Рисунок 25 - Менеджер форм

Описание формы. Представляет собой текстовый блок (рис. 26). По одиночному клику в менеджере форм или же смене вкладки в спецификациях меняется описание формы.

Рисунок 26 - Описание формы

Спецификации. Представляет собой блок, служащий для отображения выбранных форм в виде вкладкок (рис. 27).

Рисунок 27 - Спецификации

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

Рисунок 28 - Автофильтр

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

Рисунок 29 - Сортировка

Технология «Draq & Drop». На форме "Договорные спецификации” имеется возможность “перетаскивания” групп и позиций из таблицы “По договору” в таблицу “Фактически”, а так же менять порядок отображения позиций в пределах своего уровня вложенности (рис. 30).

Рисунок 30 - Технология Draq & Drop

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

Рисунок 31 - Панель редактирования спецификаций

Фильтр. Представляет собой два компонента: панель фильтра (рис. 32) и само модальное окно фильтра (рис. 33).

Панель фильтра состоит из трех частей:

- кнопка «Фильтр» - вызывает окно фильтра;

- выпадающее меню - показывает список доступных фильтров, которые можно перетягивать с помощью технологии «Drag & Drop» на панель для кнопок;

- панель для кнопок.

Окно фильтра состоит из двух частей:

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

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

Рисунок 32 - Фильтр-панель

Рисунок 33 - Фильтр-форма

Заключение

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

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

В качестве языка программирования был выбран язык C Sharp (C#) из-за его простоты в использовании и удобного графического интерфейса. В качестве системы управления реляционными базами данных была выбрана Microsoft SQL Server 2008 R2.

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

Список литературы

1. Электронный документооборот. - Электрон. дан. - Режим доступа: http://www.documoborot.ru/

2. Википедия - свободная энциклопедия - Электрон. дан. - Режим доступа: http://ru.wikipedia.org/wiki/UML

3. Интернет университет информационных технологий - «Особенности разработки диаграмм вариантов использования в среде IBM Rational Rose» - Электрон. дан. - Режим доступа: http://www.intuit.ru/department/se/ibmrrose/3/

4. Интернет университет информационных технологий - «Особенности разработки диаграмм классов в среде IBM Rational Rose 2003» - Электрон. дан. - Режим доступа: http://www.intuit.ru/department/se/ibmrrose/4/

5. Интернет университет информационных технологий - «Особенности разработки диаграммы деятельности в среде IBM Rational Rose 2003» - Электрон. дан. - Режим доступа: http://www.intuit.ru/department/se/ibmrrose/10/

6. Интернет университет информационных технологий - «Особенности разработки диаграммы последовательности в среде IBM Rational Rose» - Электрон. дан. - Режим доступа: http://www.intuit.ru/department/se/ibmrrose/8/

7. Авторизованный учебный Центр Aptech Computer Education. Основы C# / Aptech Computer Education, 2004. - 248 с.

8. Авторизированный учебный Центр Aptech Computer Education. Разработка приложение с использованием WinForms / Aptech Computer Education, 2004. - 236 с.

9. Авторизированный учебный Центр Aptech Computer Education. Основы систем управления реляционными базами данных SQL Server / Aptech Computer Education, 2003. - 203 с.

10. Авторизированный учебный Центр Aptech Computer Education. SQL Server / Aptech Computer Education, 2003. - 157 с.

11. Pierre Henri Kuate. NHibernate in Action / Tobin Harris, Christian Baver, Gavin King. - Covers Version 1.2 - Manning Publications, 2009. - 399 с.

12. Jason Dentler. NHibernate 3.0 Cookbooc / Jason Dentler. - Packt Publishing, 2010. 328 c.

13. Кристиан Нейгел. C# 2008 и платформа.NET 3.5 для профессионалов / Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер. - Компьютерное изд-во «Диалектика», 2009. - 1392 с.

14. Пол Нильсен. Microsoft SQL Server 2005. Библия пользователя / Пол Нильсен - компьютерное изд-во «Диалектика», 2008. - 1228 с.

ПРИЛОЖЕНИЕ А

Даталогическая модель

ПРИЛОЖЕНИЕ Б

Листинг программы:

VedenieDogovornixSpecifikaciyForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ControlsLibrary.Others;

using ControlsLibrary.NHibernate.MappingClasses;

using ControlsLibrary.Controls.TreeGridView;

using ControlsLibrary.Controls.dgvUserCellControls;

using System.Reflection;

using ControlsLibrary;

using ControlsLibrary.Interfaces;

using ControlsLibrary.Controls.ExtendedTabControl;

namespace Forms.FormModels

{

public partial class VedenieDogovornixSpecifikaciyForm : TabPage, ISessionable

{

public Connector connector = new Connector();

public static string desc = "Форма Ведение договорных спецификаций представляет собой...";

private ChoiseDialog ProjectChoiseForm = new ChoiseDialog("Projects");

private ChoiseDialog ContractChoiseForm = new ChoiseDialog("Contracts");

private Dictionary<string, string> dict = null;

private Type MappingClassType = typeof(Contract_spec);

private bool canTrackMainTGVChanges = false;

private int RowForDetail = -1;

public VedenieDogovornixSpecifikaciyForm()

{

InitializeComponent();

ProjectColumn.setEventOnClick(new System.EventHandler(ProjectColumnTextBoxButtonClick));

ContractColumn.setEventOnClick(new System.EventHandler(ContractColumnTextBoxButtonClick));

mainDGV.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(mainDGV_CellClick);

delDCButton.Click += new System.EventHandler(this.delDCButton_Click);

dict = Dictionaries.Contract_SpecDict;

//filterPanel1.LocalDGV = unitsDGV;

updateView(false);

//ToolTips

ToolTip t = new ToolTip();

t.SetToolTip(addDCButton, "Добавить договорную спецификацию");

t.SetToolTip(delDCButton, "Удалить договорную спецификацию");

t.SetToolTip(detailDCButton, "Детальный просмотр");

}

#region Converters

private Contract_spec ConverterContract_spec(object obj)

{

return (Contract_spec)obj;

}

private Positions ConverterPositions(object obj)

{

return (Positions)obj;

}

private Statuses ConverterStatuses(object obj)

{

return (Statuses)obj;

}

private Units_measur ConverterUnits_measur(object obj)

{

return (Units_measur)obj;

}

private Valuta ConverterValuta(object obj)

{

return (Valuta)obj;

}

private Pos_group ConverterPos_group(object obj)

{

return (Pos_group)obj;

}

#endregion

private void mainDGV_CellClick(object sender, DataGridViewCellEventArgs e)

{

if (e.RowIndex > -1 && e.ColumnIndex > -1)

{

//MessageBox.Show(mainDGV.Columns[e.ColumnIndex].Name);

RowForDetail = e.RowIndex;

updateView(true);

}

}

#region Редактирование,Добавление, Удаление mainDGV

private void ProjectColumnTextBoxButtonClick(object sender, EventArgs e)

{

if (ProjectChoiseForm.ShowDialog() == DialogResult.OK)

{

((Contract_spec)mainDGV.Rows[((TextBoxButtonEditingControl)mainDGV.EditingControl).EditingControlRowIndex].Tag).proj_proj_id =

(Projects)ProjectChoiseForm.choiseListBox.SelectedItem;

((TextBoxButtonEditingControl)mainDGV.EditingControl).EditingControlFormattedValue =

((Projects)ProjectChoiseForm.choiseListBox.SelectedItem).name_proj;

}

}

private void ContractColumnTextBoxButtonClick(object sender, EventArgs e)

{

if (ContractChoiseForm.ShowDialog() == DialogResult.OK)

{

((Contract_spec)mainDGV.Rows[((TextBoxButtonEditingControl)mainDGV.EditingControl).EditingControlRowIndex].Tag).cont_cont_id =

(Contracts)ContractChoiseForm.choiseListBox.SelectedItem;

((TextBoxButtonEditingControl)mainDGV.EditingControl).EditingControlFormattedValue =

((Contracts)ContractChoiseForm.choiseListBox.SelectedItem).name_cont;

}

}

private void addDCButton_Click(object sender, EventArgs e)

{

mainDGV.Rows.Add();

mainDGV.Rows[mainDGV.Rows.Count - 1].Cells[0].ErrorText = "Пустое поле недопустимо";

mainDGV.Rows[mainDGV.Rows.Count - 1].Cells[1].ErrorText = "Пустое поле недопустимо";

mainDGV.Rows[mainDGV.Rows.Count - 1].Cells[2].ErrorText = "Пустое поле недопустимо";

mainDGV.Rows[mainDGV.Rows.Count - 1].Cells[9].ErrorText = "Пустое поле недопустимо";

mainDGV.Rows[mainDGV.Rows.Count - 1].ErrorText = "Пустые поля недопустимы";

mainDGV.Rows[mainDGV.Rows.Count - 1].Tag = new Contract_spec();

}

private void delDCButton_Click(object sender, System.EventArgs e)

{

if (mainDGV.SelectedRows[0].Tag!=null)

if (MessageBox.Show(this, "Вы уверены, что хотите удалить договорную спецификацию с названием: "

+ ((Contract_spec)mainDGV.SelectedRows[0].Tag).name + "?\nВместе с ним удалятся все ссылающиеся на него записи! "

, "Вопрос", MessageBoxButtons.YesNo) == DialogResult.Yes)

{

connector.Delete(mainDGV.SelectedRows[0].Tag);

}

}

private void mainDGV_CellValidating(object sender, System.Windows.Forms.DataGridViewCellValidatingEventArgs e)

{

if (e.RowIndex > -1 && e.ColumnIndex > -1)


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.