Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Планирование закупок и размещение заказов поставщикам

Содержание:

ВВЕДЕНИЕ

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

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

Цель работы – спроектировать автоматизированную систему для управления документооборотом.

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

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

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

Объектом исследования курсовой работы является ОАО «Тандем».

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

1 глава. Аналитическая часть

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

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

Процесс взаимоотношения с поставщиками в ОАО «Тандем» включает несколько стадий. Рассмотрим их более подробно.

- прием заявки на заказ от заказчика менеджером поставщика. В данном случае ОАО «Тандем» говорит о своих предпочтениях, о том, что он видит в роли результата. Здесь говорится о стоимости, на которую рассчитывает предприятие, а также то, насколько срочно нужен ему товар или услуга;

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

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

- оплата услуги. ОАО «Тандем» оплачивает выставленный счет (чаще всего по безналичному расчету), менеджер отдает накладную и счет-фактуру;

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

1.2. Характеристика существующих бизнес-процессов

ОАО «Тандем» в связи со спецификой своей деятельности использует клиентоориентированную модель управления взаимоотношениями с поставщиками: повышает лояльность старых поставщиков и привлекает новых.

В соответствии с моделью по управлению лояльностью поставщиком ОАО «Тандем» проводит следующие мероприятия:

- акция «Приведи друга» - при условии того, что ОАО «Тандем» предоставить своему поставщику возможность сотрудничать с компаниями данной отрасли, то предприятие получит скидку на определенный ряд товаров;

- при заказе определенной товарной линейки на сумму более 100000 руб., ОАО «Тандем» получит кэшбэк в размере 5% от заказа за счет поставщика.

Недостатками существующей модели взаимоотношений с поставщиками в ОАО «Тандем» являются:

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

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

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

  1. Прием заказа (встреча с клиентом, определение его потребностей). Здесь с клиентом ведет деятельность менеджер, устанавливающий требования к заказу [18, c.12]. Сведения о его заказе в лучшем случае фиксируются в установленной программе, иначе просто пишутся в блокнот. На базе таких сведений менеджер начинает оформлять документы. Анкетные сведения не приводятся.
  2. Оформление договора. Договор оформляется на базе созданного шаблона в текстовом редакторе, где фиксируются ФИО, адрес, телефон и вид услуг.
  3. Заказ расходного материала. На базе заказов менеджер по снабжению заказывает товар у поставщика.
  4. После поставки необходимого товара, сведения о заказе поступают к мастеру или менеджеру, которые приступают к выполнению данного заказа.

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

Соответственно, в ОАО «Тандем» для оптимизации взаимоотношения с поставщками необходимо установить CRM-систему, которая позволит решить следующие задачи:

- вести историю заказов;

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

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

- определить лояльных клиентов;

- создавать различные необходимые отчеты.

1.3. Характеристика документооборота, возникающего при решении задачи

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

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

Таблица 1.1 - Документооборот клиентского заказа поставщику в ОАО «Тандем»

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

Необходимые технические средства в процессе обработки заявок, изображенных в таблице 1.1, отражены в таблице 1.2.

Таблица 1.2 - Технические средства, применяемые на стадиях обработки заявки

Этап №

Программные и технические средства

A1

Компьютер пользователя, почтовый клиент

A2, А3,А4

Сервер приложений, БД, ПО системы SD, почтовый сервер

A5

Компьютер инженера или администратора

A6

Компьютер администратора, ПО системы SD

Отразим соотношение текущих показателей затрат на реализацию анализа и исполнения заявки (таблица 1.3).

Таблица 1.3 - Соотношение показателей затрат на анализ и исполнение заявки

Показатели

Имеется

Планируется

Число потерянных заявок за месяц

5-7 шт

0 шт

Число обрабатываемых заявок ночью

3-5 шт

20-30 шт

Время реакции на какую-либо претензию от клиента

1-20 мин

1-3 мин

Отношение числа обработанных заказов ежедневно в ручную к автоматически обработанным

500\0 шт

500\350 шт

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

При применении CRM-системы оптимизированная диаграмма декомпозиции («TO-BE» – как должно быть) приведены на рисунке 1.1.

Необходимо автоматизировать деятельность ОАО «Тандем» прежде всего для того, чтобы выстроить эффективную систему работы с поставщиками при клиентских заказах. Каждая сделка не должна быть потеряна, должна сопровождаться определенной задачей. Автоматизация способствует сокращению временных затрат, а также постепенному наращиванию клиентской базы [18, c.61].

Описание: C:\Documents and Settings\Admin\Рабочий стол\материалы д\скрины бп\4.JPG

Рисунок 1.9 – Модель «TO-BE»

Рисунок 1.1 – Диаграмма декомпозиции TO-BE

Сейчас на рынке ПО есть множество зарубежных и отечественных предложений и продуктов по автоматизации деятельности отделов принятия заказов: CRM «Битрикс 24», AmoCRM и т.д.

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

1.4. Обоснование проектных решений по информационному обеспечению

Информационное обеспечение (ИО) состоит из:

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

- системы унифицированной документации, применяемой в ИО;

- информационной базы.

Классификатор - это систематизированный свод наименований группировок объектов, признаков и их кодовых обозначений [6, c.39]. Классификаторы являются средством описания сведений, аргументируют единство классификации и кодирования данных и необходимы для выполнения машинного анализа данных в удобной форме пользователям при выполнении разнообразных задач. Исходя из области применения, классификаторы делятся на 3 группы:

- общегосударственные;

- отраслевые;

- локальные [2, c.78].

В данной работе будет применяться лишь локальный классификатор, поскольку в иных классификаторах нет необходимости. Заказы будут делиться по приоритету, по компании и по зоне ИТ, к которой относится тот или иной заказ.

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

В данной работе применяются локальные документы: «Заявка на закупку материальных ценностей», «Заявка на регистрацию пользователя и доступ к программным ресурсам», «Заявка на устранение неполадок», «Заявка на доступ к сетевым ресурсам». Информационные файлы разрабатываются на базе исходных данных, имеющихся в названных первичных документах - ключевых носителях первичной экономической информации в системах ее машинной обработки [7, c.98]. Помимо всего прочего есть следующие требования, которые к ним устанавливаются:

- необходимая полнота сведений для выполнения задачи;

- исключение избыточных данных;

- достоверность и актуальность данных;

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

- логичность создания документа.

Есть 3 способа организации информационной базы (ИБ): файловая, интегрированная, смешанная.

Под файловой организацией ИБ определено локальное расположение базы на ПК, доступ к которому других пользователей реализуется стандартными методами ОС для обмена данными по сети, например, в MS Windows - это Sharing и Security, что замедляет анализ информации в БД. Под смешанной организацией ИБ предполагается распределённая БД, установленная на нескольких серверах и создающая изменения в каждой из них по расписанию. Такая структура ИБ применяется в системах класса ERP для функционирования в одной ИБ территориально удалённым офисам одновременно.

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

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

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

В иерархической модели каждой информационной единице (сегменту), кроме корневого, соответствует один исходный сегмент и между ними создается лишь одна связь. В таких моделях экземпляру исходного сегмента соответствует в общем случае определенное количество экземпляров порожденного сегмента. Данные структуры удобны для отображения отношений типа «один ко многим» в предметной области. Обзор такой структуры имеет место быть лишь с корневой вершины. Пропуск сегмента в иерархическом пути при доступе к определенному сегменту не позволяется [8, c.65]. Ключевые недостатки иерархической структуры: сложность (неэффективность) отображения отношений типа «многие ко многим»; долгое время обеспечения доступа к сегментам, состоящих на нижних уровнях иерархии; направленность на некоторый тип (разрез) запроса.

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

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

Достоинства применения реляционных БД следующие:

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

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

- независимость данных – когда нужно изменить структуру БД, то это ведет к минимальным изменениям в программе [17, c.15].

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

Исходные данные для выполнения установленной задачи получают из таких документов, как:

- e-mail от работника фирмы с описанием проблемы на неформальном языке в ИТ-области;

- регламент работы службы горячей линии;

- ежедневное письмо о нахождении работников ИТ-отдела по всем направлениям;

- письма, определяющие изменения ответственных лиц по установленным направлениям инцидентам и новым направлениям [6, c.55].

Результаты выполнения задачи видны в таких отчетах и документах, как:

- отчет по согласованным заказам;

- отчет заказов по местоположению клиента;

- отчет о логике назначения клиента.

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

Таблица 1.4 - Описание применяемых классификаторов

Наименование кодируемого множества объектов

Значимость кода

Система кодирования

Система классифи-кации

Вид классифи-катора

Регион

4

Порядковая

Нет

Локальный

Город

4

Порядковая

Нет

Локальный

Улица

4

Порядковая

Нет

Локальный

Код описания неисправности

4

Порядковая

Нет

Локальный

1.5. Обоснование проектных решений по программному обеспечению

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

Программное обеспечение для решения нашей цели, должно максимально минимизировать время таких процессов как поиск, отображение, запись и редактирование данных, создание картограмм и формирование отчетов по результатам записанных измерений, с возможностью отправки отчетов используя корпоративную почту. Для подключения к базе данных потребуется установка драйвера ODBC. Для отправка корпоративной почты потребуются Mozilla Thunderbird, для создания картограмм помещений потребуется MS Visio или Corel Draw. Для запуска этих программ на персональном компьютере пользователя нам потребуется операционная система, поддерживающая запуск данных приложений. В связи с тем, что в последнее время все вновь поступившие компьютеры оснащены корпоративной версией Microsoft Windows 10 PRO, так как на сегодняшний момент это основная поддерживаемая обновлениями от корпорации Microsoft. Исходя из выше изложенных требований версия Windows 10 PRO sp1 Rus будет использован в качестве основной пользовательской ОС. Как итог на компьютере пользователя должны быть установлены следующие программы:

  • операционная система Windows 10 PRO sp1 Rus;
  • почтовый клиент Mozilla Thunderbird.

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

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

ИС могут быть классифицированы по разным признакам. По способу организации ИС разбиты на:

  • системы на основе архитектуры файл-сервер;
  • системы на основе архитектуры клиент-сервер;
  • системы на основе многоуровневой архитектуры;
  • системы на основе Интернет/интернет - технологий.

Системы, основанные на клиент-серверной архитектуре, характеризуют себя наличием двух взаимодействующих самостоятельных процесса – клиента и сервера, которые могут выполнятся на разных компьютерах, обмениваясь данными по сети. По такой схеме могут быть построены системы обработки данных на основе СУБД. В таких системах хранением и любыми операциями с данными занимается сервер баз данных, в качестве которого может выступать MySQL, MS SQL Server, PostgreSQ. Если сравнить ее с файл-серверной системой, в которой данные хранятся на файловом сервере, а обработка осуществляется на персональных компьютерах пользователей, кроме того файловый сервер предоставляет услуги только самого низкого уровня – открытие, закрытие и модификацию файлов, помимо всего перечисленного для осуществления любой обработки, все данные необходимо передавать по сети с сервера на рабочую станцию, такие системы еще называют «настольными СУБД» - Access, Paradox, FoxPro и т.п..

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

Информационные системы также классифицируются:

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

В состав обеспечивающих подсистем обычно входят:

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

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

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

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

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

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

Рассмотрим общие характеристики основных ведущих производителей СУБД, Oracle, MS SQL Server и MySQL.

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

К достоинствам MS SQL Server относятся гибкие и мощные средства администрирования и языки запросов Transact-SQL, надежность, эффективная работа, ориентация на коллективное использование. Основной недостаток отсутствие средства визуальной разработки приложений.

Огромным преимуществом MySQL, сравнительно с проприетарными продуктами, является открытость ее исходного кода:

  • Наличие движка InnoDB;
  • Полусинхронная репликация;
  • Улучшенный механизм секционирования данных;
  • Новая система блокировок;
  • Оптимизация под многоядерные процессоры.

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

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

  1. Совместимость с существующей системой серверов АСРК;
  2. Возможность создания резервных копий данных и просмотр результатов измерений по отдельным точкам.

При выборе ОС под данное решение был выбран MS Windows 10, так как данный вид серверных ОС требователен к ресурсам, а также давно используются в инфраструктуре компании.

Для серверной части необходимо также выбрать систему управления базами данных (СУБД). В таблице 1.5 представлены основные современные СУБД.

Таблица 1.5

Сравнение современных СУБД.

Название

Oracle 11g

MySQL 5.7

MS SQLServer 2008

Интерфейс

GUI, SQL

SQL

GUI, SQL, другое

Поддержка языка программирования

С, С++, Delphi, Ruby, Objective С и

др.

С, С++, Delphi, Ruby, Objective С и

др.

Java, Ruby, Python, VB, .Net, PHP

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

Windows, Linux, Solaris, HP-UX, OS X, z/OS, AIX

Windows, Linux, OS X, FreeBSD, Solaris

Windows

Лицензия

Проприетарная

Свободная

Проприетарная

В качестве СУБД для программы будет использоваться MySQL ver 5.7. Выбором в пользу компании MySQL сделан в связи с свободным исходным кодом, простотой в обращении и возможность интеграции в уже существующую систему АСРК.

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

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

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

Таблица 1.6

Сравнения языков программирования.

Язык программирования

С++

Delphi 7

Python 2.7

Сложность изучения

Сложный

Простой

Простой

Совместимость с ОС Windows 7, 10

Да

Да

Да

Встроенный редактор интерфейса

Да

Да

Да

Визуальная среда разработки

Нет

Да

Да

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

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

Для реализации была выбрана система программирования Delphi версии 7 фирмы Enterprise (Borland), так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.

Delphi – это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее хозяйство, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.

Прежде всего Delphi предназначен для профессиональных разработчиков, желающих очень быстро разрабатывать приложения в архитектуре клиент-сервер. Delphi производит небольшие по размерам (до 15-30 Кбайт) высокоэффективные исполняемые модули (.exe и .dll), поэтому в Delphi должны быть прежде всего заинтересованы те, кто разрабатывает продукты на продажу. С другой стороны, небольшие по размерам и быстро исполняемые модули означают, что требования к клиентским рабочим местам существенно снижаются – это имеет немаловажное значение и для конечных пользователей.

Преимущества Delphi по сравнению с аналогичными программными продуктами.

– быстрота разработки приложения;

– высокая производительность разработанного приложения;

– низкие требования разработанного приложения к ресурсам компьютера;

– наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

– возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

– удачная проработка иерархии объектов.

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

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

2. Проектная часть

2.1. Информационная модель и её описание

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

Информационная система работает со справочниками Отделы, Сотрудники, Контрагенты, Типы и Категории документов, Клиенты, экранными формами ввода документов. Информационная система формирует выборки по типам и категориям документов.

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

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

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

ИМ.jpg

Рис.2.1. Информационная модель

2.2. Характеристика нормативно-справочной, входной и оперативной информации

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

- трудовая книжка;

- штатное расписание;

- документ.

Трудовая книжка сотрудника используется при регистрации его в системе. Источником получения данного документа является отдел кадров. При этом из нее используются следующие реквизиты:

- фамилия, имя, отчество;

- дата рождения;

- наименование должности;

- наименование отдела.

Частота возникновения данного документа – по мере регистрации новых сотрудников, объем – около 10 строк.

Штатное расписание используется при формировании справочника Отделы, при этом используется только такой реквизит, как наименование отдела. Источником получения данного документа также является отдел кадров, объем – 15 строк.

Документ является основным входным документом. При регистрации документа в системе задействуются следующие реквизиты:

- наименование;

- тип документа;

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

- количество страниц;

- описание документа;

- электронная копия документа.

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

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

Таблица 2.1

Перечень используемых справочников

№ пп

Название справочника

Ответственный за ведение

Средний объём справочника в записях

Средняя частота актуализации

Средний объем актуализации, %

1

Отделы

Администратор

45

1 раз в месяц

10

2

Документы

Администратор

10

1 раз в год

10

3

Клиенты

Администратор

2000

1 раз в год

10

4

Типы документов

Администратор

50

1 раз в месяц

25

5

Категории документов

Администратор

20

1 раз в месяц

25

6

Контрагенты

Администратор

20

1 раз в год

10

7

Сотрудники

Администратор

20

1 раз в месяц

25

Справочник Отделы имеет следующие реквизиты:

- код отдела;

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

- сокращенное наименование отдела.

Справочник Сотрудники имеет следующие реквизиты:

  • фамилия;
  • имя;
  • отчество;
  • дата рождения
  • пароль
  • логин
  • дата регистрации

Справочник Клиенты:

  • полное наименование
  • краткое наименование
  • фактический адрес
  • юридический адрес
  • банковские реквизиты;
  • контактное лицо;
  • телефон
  • e-mail;
  • дата регистрации

Справочник Контрагенты:

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

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

Справочник Категории содержит наименования категорий документов.

2.3. Характеристика результатной информации

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

- список сотрудников;

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

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

- список клиентов.

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

- фамилия, имя, отчество сотрудников;

- дата регистрации;

- должность;

- отдел;

- дата рождения;

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

Данный документ формируется на основе справочников Отделы и Сотрудники.

Списки документов имеют следующие реквизиты:

- наименование документа;

- дата регистрации;

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

- количество страниц;

- адресат;

- ссылка на электронную версию документа;

-тип документа;

- категория документа;

- код клиента.

Список контрагентов содержит перечень контрагентов со всеми реквизитами, так же, как и список клиентов.

2.4. Общие положения (дерево функций и сценарий диалога)

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

В разработанной системе предусмотрено 2 вида пользователей;

  • Делопроизводитель;
  • Администратор.

Дерево функций для каждого из пользователей представлено на рисунках 2.2-2.3.

ДФ1.jpg

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

Рис. 2.3 Дерево функций системы для администратора

Сценарии диалога для соответствующих пользователей системы приведены на рисунках 2.4-2.5.

СД1.jpg

Рис. 2.4 Сценарий диалога для пользователя

Сд2.jpg

Рис. 2.5 Сценарий диалога для администратора системы

2.5. Характеристика базы данных

ER-модель отображает состав и взаимосвязи таблиц, отражающих содержание информационной модели в терминах конкретной СУБД. Перечень сущностей и их соответствие информационной модели приведено в таблице 2.2.

Таблица 2.2

Перечень сущностей и их соответствие информационной модели

Название сущности в информационной модели

Идентификатор таблицы

Справочник «Отделы»

Otdel

Справочник «Сотрудники»

Sotr

Справочник «Клиенты»

Klient

Справочник «Типы документов»

Tipi

Справочник «Категории документов»

Kategorii

Справочник «Контрагенты»

Kontragent

Таблица «Документы»

Dok

ER-диаграмма базы данных представлена на рисунке 2.6.

Характеристика каждой таблицы базы данных приведена ниже, в таблицах 2.3-2.9.

Таблица 2.3

Таблица Документы

Идентификатор

Тип данных

Примечание

 idd 

int(11)

Код документа

 ids 

int(5)

Код сотрудника

 named 

varchar(45)

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

 idkd 

int(5)

Код типа

 datepod 

varchar(45)

Дата подготовки

 datez 

timestamp

Дата и время регистрации

 kolvostr 

varchar(45)

Количество страниц

 prim 

varchar(45)

Примечание

 otkuda 

varchar(45)

Адресат

 link 

text

Ссылка на документ

 status 

int(1)

Статус

 archiv 

int(1)

Флаг помещения в архив

 rnp 

int(1)

Флаг резолюции начальника отдела

БД.png

Рис. 2.6 ER-диаграмма базы данных

Таблица 2.4

Таблица Отделы

Идентификатор

Тип данных

Примечание

 idOtd 

int(11)

Код отдела

 nameOtd 

varchar(100)

Наименование отдела

 KrNameOtd 

varchar(10)

Краткое наименование отдела

Таблица 2.5

Таблица Сотрудники

Идентификатор

Тип данных

Примечание

 idsotr 

int(11)

Код сотрудника

 name 

varchar(45)

Фамилия

 dolg 

int(2)

Код должности

 login 

varchar(10)

Логин

 parol 

varchar(10)

Пароль

 dates 

timestamp

Дата регистрации

 surname 

varchar(45)

Имя и отчество

 datebor 

varchar(14)

Дата рождения

 udal 

int(1)

Отметка об удалении

Таблица 2.6

Таблица Типы документов

Идентификатор

Тип данных

Примечание

idtip 

int(11)

Код типа документа

 namet 

varchar(10)

Наименование типа документа

idkat_tip

int(11)

Код категории документов

Таблица 2.7

Таблица Клиенты

Идентификатор

Тип данных

Примечание

 idKlient 

Код клиента

Код клиента

 namekl 

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

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

 krnamekl 

Краткое наименование

Краткое наименование

 adresskl 

Фактический адрес

Фактический адрес

 uradrkl 

Юридический адрес

Юридический адрес

 banrekKl 

Реквизиты

Реквизиты

 kontlizoKl 

Контактное лицо

Контактное лицо

 tlfKl 

Телефон

Телефон

 emailKl 

Адрес электронной почты

Адрес электронной почты

 dateregKl 

Дата регистрации

Дата регистрации

 udalKl 

Отметка об удалении

Отметка об удалении

Таблица 2.8

Таблица Контрагенты

Идентификатор

Тип данных

Примечание

idb

int(11)

Код

nameb

text

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

fullnameb

text

Полное наименование

region

text

Регион

telefon

varchar(255)

Телефоны

site

varchar(100)

Сайт

number_liz

varchar(10)

Номер лицензии

status_uch_vkl

text

Статус участника системы страхования вкладов

activi

text

Размер активов

adres

text

Адрес

Таблица 2.9

Таблица Категории документов

Идентификатор

Тип данных

Примечание

idkat

int(11)

Код категории документа

namekat

text

Наименование категории документа

2.6. Структурная схема пакета (дерево вызова программных модулей)

Структурная схема пакета представлена на рисунке 2.7.

Рис.2.7. Структурная схема пакета

2.7. Описание программных модулей

Описание программных модулей приведено в таблице 2.10.

Таблица 2.10

Описание функций модулей

Наименование модуля

Функции модуля

Модуль безопасности

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

Модуль инициализации программы

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

Модуль взаимодействия с базой данных

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

Модуль справочной системы

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

Модуль главного меню

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

Модуль «Отчеты»

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

Модуль «Справочники»

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

Модуль «Пользователи»

Содержит процедуры функции, позволяющие управлять списками пользователей (если позволяют права доступа)

Модуль «Регистрация»

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

2.8. Контрольный пример реализации проекта и его описание

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

Рисунок 2.8. Регистрация должностей

Рисунок 2.9. Форма учета отделов

После заполнения Справочника Должности следует заполнить Справочник Сотрудники (рисунок 2.10).

Рисунок 2.10. Справочник Сотрудники

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

Рисунок 2.11. Выбор категории документа

После чего можно перейти к регистрации документа:

Мотив - admin - stroitexsnab.png

Рисунок 2.12. Форма регистрации первичного документа

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

Рисунок 2.13. Редактирование карточки внутренних документов

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

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

Рисунок 2.14. Форма для получения списков документов

Рисунок 2.15. Список документов

Листинг основных программных модулей приведен в Приложении.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. ГОСТ 34.602-89 «Техническое задание на создание автоматизированной системы»
  2. Белов Е.Б, Лось В.П. и др. Основы информационной безопасности. - М.: Горячая линя - Телеком, 2010. – 544 с.
  3. Вигерс К. Разработка требований к программному обеспечению, пер, с англ. - Москва.: «Русская Редакция», 2010. – 576 с.
  4. Гвоздева Т.В. Проектирование информационных систем. – Ростов-на-Дону: Феникс, 2009. – 512 с.
  5. Грекул В.И. Проектирование информационных систем. – Москва.: Интуит, 2008. – 304 с.
  6. Диго С.М. Базы данных: проектирование и использование: Учебник. – Москва.: Финансы и статистика, 2007. – 592 с.
  7. Додонова И.В., Кабанова О.В. Автоматизированная обработка банковской информации. – Москва.: КноРус, 2008. – 176 с.
  8. Елиферов В.Г., Репин В.В. Бизнес-процессы. Регламентация и управление. – Москва.: Инфра-М, 2009. – 320 с.
  9. Емельянова Н.З. Проектирование информационных систем. – Москва.: Форум, 2009. – 432 с.
  10. Козлов А.С. Проектирование и исследование бизнес-процессов. – Москва.: Флинта, 2007. – 272 с.
  11. Меняев М.Ф, Информационные технологии управления: Книга 3: Системы управления организацией, Москва.: Омега-Л, 2008. - 464 с.
  12. Мещеряков С.В., Иванов В.М. Эффективные технологии создания информационных систем. – Москва.: Политехника, 2009. – 309 с.
  13. Мишенин А.И. Теория экономических информационных систем. – Москва.: Финансы и статистика, 2010. – 240 с.
  14. Овчинников, В.Г. Методология проектирования автоматизированных информационных систем. Основы системного подхода. – Москва.: Компания Спутник+, 2009. – 286 с.
  15. Орлик С., Булуй Ю, Введение в программную инженерию и управление жизненным циклом ПО Программная инженерия. Программные требования
  16. Пестриков, В. М. Delphi на примерах / В. М. Пестриков, А. Н. Маслобоев. — СПб. : БХВ-Петербург, 2008. — 496 с.
  17. Репин В.В. Бизнес-процессы компании. Построение, анализ, регламентация. – Москва.: Стандарты и качество, 2009. – 240 с.
  18. Титоренко Г.А. Автоматизированные информационные технологии в экономике: Учебник. – Москва.: ЮНИТИ, 2009. – 399с.

Приложение

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

<?php

$settings = array(

'baseDir' => '../',

'charSet' => 'utf-8',

'debug' => true,

'gzip' => true,

'compressionLevel' => 9,

'gzipExceptions' => array('gif','jpeg','jpg','png','swf'),

'minify' => true,

'concatenate' => true,

'separator' => ',',

'embed' => true,

'embedMaxSize' => 5120,

'embedExceptions' => array('htc'),

'serverCache' => true,

'serverCacheCheck' => false,

'cacheDir' => 'cache/',

'cachePrefix' => 'so_',

'clientCache' => true,

'clientCacheCheck' => false,

);

//mime types

$mimeTypes = array(

"js" => "text/javascript",

"css" => "text/css",

"htm" => "text/html",

"html" => "text/html",

"xml" => "text/xml",

"txt" => "text/plain",

"jpg" => "image/jpeg",

"jpeg" => "image/jpeg",

"png" => "image/png",

"gif" => "image/gif",

"swf" => "application/x-shockwave-flash",

);

function headerExit($status) {

header("HTTP/1.0 $status");

exit();

}

function headerNoCache() {

// already expired

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified

header("Last-Modified: " . gmdatestr());

// HTTP/1.1

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Cache-Control: max-age=0", false);

// HTTP/1.0

header("Pragma: no-cache");

//generate a unique Etag each time

header('Etag: '.microtime());

}

function headerNeverExpire(){

header("Expires: " . gmdatestr(time() + 315360000));

header("Cache-Control: max-age=315360000");

}

function debugExit($msg){

global $settings;

if (!$settings['debug']) {

headerExit('404 Not Found');

}

headerNoCache();

header('Content-Type: text/html; charset='.$settings['charSet']);

header("Content-Encoding: none");

echo "//<script>\n";

echo "alert('SmartOptimizer Error: ".str_replace("\n", "\\n", addslashes($msg))."');\n";

echo "//</script>\n";

exit();

}

function gmdatestr($time = null) {

if (is_null($time)) $time = time();

return gmdate("D, d M Y H:i:s", $time) . " GMT";

}

function filesmtime() {

global $files, $fileType;

static $filesmtime;

if ($filesmtime) return $filesmtime;

$filesmtime = max(@filemtime("minifiers/$fileType.php"), filemtime('index.php'), filemtime('config.php'));

foreach ($files as $file) {

if (!file_exists($file)) debugExit("File not found ($file).");

$filesmtime = max(filemtime($file), $filesmtime);

}

return $filesmtime;

}

@include('config.php');

list($query) = explode('?', urldecode($_SERVER['QUERY_STRING']));

if (preg_match('/^\/?(.+\/)?(.+)$/', $query, $matchResult)) {

$fileNames = $matchResult[2];

$fileDir = $settings['baseDir'].$matchResult[1];

} else debugExit("Invalid file name ($query)");

if (strpos(realpath($fileDir), realpath($settings['baseDir'])) !== 0) debugExit("File is out of base directory.");

if ($settings['concatenate']) {

$files = explode($settings['separator'], $fileNames);

$settings['concatenate'] = count($files) > 1;

} else $files = array($fileNames);

foreach ($files as $key => $file) {

if (preg_match('/\.([a-z0-9]+)$/i', $file, $matchResult)) {

$fileTypes[] = strtolower($matchResult[1]);

} else debugExit("Unsupported file ($file)");

$files[$key] = $fileDir.$file;

}

if ($settings['concatenate']) {

if (count(array_unique($fileTypes)) > 1) debugExit("Files must be of the same type.");

}

$fileType = $fileTypes[0];

if (!isset($mimeTypes[$fileType])) debugExit("Unsupported file type ($fileType)");

header("Content-Type: {$mimeTypes[$fileType]}; charset=".$settings['charSet']);

$settings['gzip'] =

($settings['gzip'] &&

!in_array($fileType, $settings['gzipExceptions']) &&

in_array('gzip', array_map('trim', explode(',' , @$_SERVER['HTTP_ACCEPT_ENCODING']))) &&

function_exists('gzencode'));

if ($settings['gzip']) header("Content-Encoding: gzip");

$settings['minify'] = $settings['minify'] && file_exists('minifiers/'.$fileType.'.php');

$settings['embed'] = $settings['embed'] && $fileType == 'css' && (!preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/msie 8|opera/i', $_SERVER['HTTP_USER_AGENT']));

$settings['serverCache'] = $settings['serverCache'] && ($settings['minify'] || $settings['gzip'] || $settings['concatenate'] || $settings['embed']);

if ($settings['serverCache']) {

$cachedFile = $settings['cacheDir'].$settings['cachePrefix'].md5($query.($settings['embed']?'1':'0')).'.'.$fileType.($settings['gzip'] ? '.gz' : '');

}

$generateContent = ((!$settings['serverCache'] && (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != gmdatestr(filesmtime()))) ||

($settings['serverCache'] && (!file_exists($cachedFile) || ($settings['serverCacheCheck'] && filesmtime() > filemtime($cachedFile)))));

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

if ($settings['serverCache'] && !$generateContent) $mtime = filemtime($cachedFile);

elseif ($settings['serverCache']) $mtime = time();

else $mtime = filesmtime();

$mtimestr = gmdatestr($mtime);

}

if (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != $mtimestr) {

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

header("Last-Modified: " . $mtimestr);

header("Cache-Control: must-revalidate");

} elseif ($settings['clientCache']) {

headerNeverExpire();

} else headerNoCache();

if ($generateContent) {

if ($settings['minify']) include('minifiers/'.$fileType.'.php');

$content = array();

foreach ($files as $file) (($content[] = @file_get_contents($file)) !== false) || debugExit("File not found ($file).");

$content = implode("\n", $content);

if ($settings['minify']) $content = call_user_func('minify_' . $fileType, $content);

if ($settings['gzip']) $content = gzencode($content, $settings['compressionLevel']);

if ($settings['serverCache']) {

$handle = @fopen($cachedFile, 'w') or debugExit("Could not create cache file($cachedFile).");

fwrite($handle, $content);

fclose($handle);

}

header('Content-Length: ' . strlen($content));

echo $content;

} else {

header('Content-Length: ' . filesize($cachedFile));

readfile($cachedFile);

}

} else headerExit('304 Not Modified');

?>

<?php

/*

* SmartOptimizer CSS Minifier

*/

function convertUrl($url, $count)

{

global $settings, $mimeTypes, $fileDir;

static $baseUrl = '';

$url = trim($url);

if (preg_match('@^[^/]+:@', $url)) return $url;

$fileType = substr(strrchr($url, '.'), 1);

if (isset($mimeTypes[$fileType])) $mimeType = $mimeTypes[$fileType];

elseif (function_exists('mime_content_type')) $mimeType = mime_content_type($url);

else $mimeType = null;

if (!$settings['embed'] ||

!file_exists($fileDir.$url) ||

($settings['embedMaxSize'] > 0 && filesize($fileDir.$url) > $settings['embedMaxSize']) ||

!$fileType ||

in_array($fileType, $settings['embedExceptions']) ||

!$mimeType ||

$count > 1) {

if (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'].'?') === 0 ||

strpos($_SERVER['REQUEST_URI'], rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/').'/?') === 0) {

if (!$baseUrl) return $fileDir . $url;

}

return $baseUrl . $url;

}

$contents = file_get_contents($fileDir.$url);

if ($fileType == 'css') {

$oldFileDir = $fileDir;

$fileDir = rtrim(dirname($fileDir.$url), '\/').'/';

$oldBaseUrl = $baseUrl;

$baseUrl = 'http'.(@$_SERVER['HTTPS']?'s':'').'://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/').'/'.$fileDir;

$contents = minify_css($contents);

$fileDir = $oldFileDir;

$baseUrl = $oldBaseUrl;

}

$base64 = base64_encode($contents);

return 'data:' . $mimeType . ';base64,' . $base64;

}

function minify_css($str) {

$res = '';

$i=0;

$inside_block = false;

$current_char = '';

while ($i+1<strlen($str)) {

if ($str[$i]=='"' || $str[$i]=="'") {//quoted string detected

$res .= $quote = $str[$i++];

$url = '';

while ($i<strlen($str) && $str[$i]!=$quote) {

if ($str[$i] == '\\') {

$url .= $str[$i++];

}

$url .= $str[$i++];

}

if (strtolower(substr($res, -5, 4))=='url(' || strtolower(substr($res, -9, 8)) == '@import ') {

$url = convertUrl($url, substr_count($str, $url));

}

$res .= $url;

$res .= $str[$i++];

continue;

} elseif (strtolower(substr($res, -4))=='url(') {//url detected

$url = '';

do {

if ($str[$i] == '\\') {

$url .= $str[$i++];

}

$url .= $str[$i++];

} while ($i<strlen($str) && $str[$i]!=')');

$url = convertUrl($url, substr_count($str, $url));

$res .= $url;

$res .= $str[$i++];

continue;

} elseif ($str[$i].$str[$i+1]=='/*') {//css comment detected

$i+=3;

while ($i<strlen($str) && $str[$i-1].$str[$i]!='*/') $i++;

if ($current_char == "\n") $str[$i] = "\n";

else $str[$i] = ' ';

}

if (strlen($str) <= $i+1) break;

$current_char = $str[$i];

if ($inside_block && $current_char == '}') {

$inside_block = false;

}

if ($current_char == '{') {

$inside_block = true;

}

if (preg_match('/[\n\r\t ]/', $current_char)) $current_char = " ";

if ($current_char == " ") {

$pattern = $inside_block?'/^[^{};,:\n\r\t ]{2}$/':'/^[^{};,>+\n\r\t ]{2}$/';

if (strlen($res) && preg_match($pattern, $res[strlen($res)-1].$str[$i+1]))

$res .= $current_char;

} else $res .= $current_char;

$i++;

}

if ($i<strlen($str) && preg_match('/[^\n\r\t ]/', $str[$i])) $res .= $str[$i];

return $res;

}

?>