Автоматизация процесса обработки и согласования заявок и нарядов страховой компании ОАО "Росно"

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

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

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

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

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

В данном дипломном проекте используются только входящие файлы и справочники. Входящим файлом является письмо(заявка) на почтовый ящик горячей линии Росно. Письмо представляет из себя неструктурированны текст с описанием неисправности, отправитель по умолчанию становится заявителем, если данного пользователя нет в системе HP open View Service Desk то он добавляется в справочник пользователей в ручную пользователем горячей линии. Письмо содержит в себе текс, который распознается процедурой классификации инцидентов. Также в теле письма может быть описание для какого сотрудника должно быть реализована заявка, эта информация также определяется алгоритмом классификации инцидентов.

Справочником для работы процесса регистрации заявок безусловно является таблица классификации заявок, она содержит базу знаний, по которой в соответствии с регламентом, назначаются, согласовываются и выполняются заявки в компании ОАО "РОСНО" .

Справочник «Классификация» состоит из следующих полей:

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

2.Код (ключевое поле, уникально идентифицирующее запись);

3.Ключевая фраза/слово (список синтаксических выражений как полных так и не полных, однозначно классифицирующие проблему.);

4. Код группы(идентифицирует группу - департамент ИТ (Сетевики/поддержка пользователей, поддержка ИС, почтовые администраторы,Vip обслуживание));

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

6. Согласование., даннео поле имеет логически тип Истина/ложь;

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

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

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

1. «Отчет по согласованным заявкам»

Формируется на основе след таблиц и полей:

· Дата создания заявки

· Пользователь (заявитель)

· Ответственная группа

· Назначенный на заявку сотрудник

· Статус

· Приложенное исходное письмо (тема и тело письма в оригинале)

2. Отчет ”заявки по местоположению заявителя”:

Содержит таблицу со следующими полями:

· Дата создания заявки

· Даты писем по согласованию

· Пользователь (заявитель)

· Месторасположение(город)

· Адрес (улица, дом, корпус, офис)

· Ответственная группа

· Текущий статус переписки и зарегистрирована ли заявка

· Приложенное окончательное письмо (тема и тело письма в оригинале)

Данного рода отчеты имею в информационных поток предприятия служат скорее для получения статистики нежели для оперативного управления и принятия решений, а Информация в этих журналах является скорее уточняющей, нежели обобщающей. В итогах данной ведомостей за месяц можно понять насколько загружена горячая линия по регистрации заявок в ручную, сколько ошибок при регистрации допускает служба и допускает ли. на рисунке №14 представлена скриншот Журнала Созданных заявок в оду итерацию(без согласования) за 1/3/6 часов».

2.3 Программное обеспечение задачи

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

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

Рисунок 15 Сценарий Диалога работы программы

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

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

Рисунок № 16 Дерево функций

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

Базу данных ИС можно представить в виде следующей ER модели -

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

Таблица «registered_letter» что означает обработанное письмо, имеет следующие поля - таблица 12.

Таблица 12. Таблица «registered_letter»

Наименование поля

Тип данных поля

Длина поля

ID

Целое Число (ключевое поле)

11

Date created

Дата

10

Letter_date

Дата

10

Letter_from

Строка

50

Letter_title

Строка

50

Letter_body

Строка

250

It_worker_ID

Целое число

5

It_Group_ID

Целое число

5

IT_Mestopologenie

Целое число

5

Id_history

Целое число

5

Таблица «Group», имеет следующие поля - таблица 13.

Таблица 13. Таблица «Group»

Наименование поля

Тип данных поля

Длина поля

ID_group

Целое Число (ключевое поле)

11

Group_Name

Строка

100

Таблица называется «IT_worker» и подразумевает список сотрудников ИТ отдела, имеет следующие поля - таблица 14.

Таблица 14. Таблица «IT_worker»

Наименование поля

Тип данных поля

Длина поля

ID

Целое Число (ключевое поле)

11

Name

Строка

15

Second_Name

Строка

20

Extension

Число

5

Mobile_phone

число

10

IT_Group

Число

11

Таблица «History», имеет следующие поля - таблица 15.

Таблица 15. Таблица «History

Наименование поля

Тип данных поля

Длина поля

ID_history

Целое Число (ключевое поле)

11

ID_status

Целое число

11

Soglasovano

Логическая

1

Таблица называется "Klassification" и подразумевает набор ключевых слов и по которым будут назначены исполнители заявки - таблица 16.

Таблица 16. Таблица "Klassification"

Наименование поля

Тип данных поля

Длина поля

ID_Klassification

Целое Число (ключевое поле)

11

KeyPhrases

Строка

150

Group_ID

Целое число

11

Id_it_Worker

Целое число

11

Soglasovanie

Логическое

1

Date

дата

10

2.3.3 Структурная схема пакета (дерево вызова процедур и программ)

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

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

Таблица 17. Таблица модулей разрабатываемого программного продукта.

п/п

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

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

1

Форма “основная процедура работы сервиса”

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

2

Форма “Журнал Созданных заявок в одну итерацию”

Форма формирование и отправки отчета Созданных заявок в одну итерацию.

3

Форма «Журнал обработанных заявок»

Форма формирование и отправки отчета обработанных заявок.

4

Форма «Авторизация»

Данная форма содержит запрос логина и пароля для входа в веб интерфейс программы.

5

Форма «О программе»

Краткая информация о созданной программе.

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

Для описание работы программы наиболее понятным будет пояснение основного моlудя программы, процедуры Main. Программный код данной процедуры будет приведен в приложении 1.

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

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

Разрабатываемая в данном диплом проекте программа запущена на компьютере где находится ИС “HP OpenView Service Desk” в фоновом режиме (сервис) и с периодичностью в 1 минуту проверяет почту горячей линии на вопрос поступления новых писем. При поступлении нового письма программа выкачивает его по протоколу pop3 и удаляет из почтового ящика, вместе с тем она анализирует от кого пришло письмо, с какой темой и детально прорабатывает тело письма. Вся интерактивность работы с данным сервисом реализована с помощью веб интерфейса с использованием веб сервера Apache.

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

Далее у нас появляется меню авторизации пользователей, согласно определенным ранее ролям прав доступа в пункте 2.1.3. Здесь следует ввести логин и пароль, используемый в системе ИС “HP OpenView Service Desk”.

После входа в систему мы можем просмотреть статус работы нашего сервиса в разделе STATUS и синхронизировать таблицы пользователей с основной таблицей ИС “HP OpenView Service Desk”. После нажатия кнопки Syncronize справочники сотрудников и исполнителей из ИС “HP OpenView Service Desk” автоматически обновят недостающие записи в таблицах - справочниках сервиса, обрабатывающего заявки на почте.

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

После нажатия на кнопку “Create” перед нами откроется форма для выбора типа отчета , следует выбрать один из них и нажать кнопку NEXT для переходя к следующему этапу мастера формирования отчета. Данное окно мастера формирования отчета представлено на рисунке № 24

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

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

Рисунок № 26 Письмо с вложенным отчетом.

3. Обоснование экономической эффективности

3.1 Выбор и обоснование методики расчета экономической эффективности

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

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

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

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

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

Основными показателями являются временные и трудовые показатели затрат на осуществление операций в ИС.

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

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

После выбора показателей необходимо произвести расчет:

Для трудовых затрат:

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

Т = Т0 - Т1,

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

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

- коэффициент относительного снижения трудовых затрат

КТ =Т / T0 * 100%,

- индекс снижения трудовых затрат или повышение производительности труда

YT = T0 / T1

А так же для стоимостных затрат.

- абсолютное снижение стоимостных затрат

С = С0 - С1,

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

- коэффициент относительного снижения трудовых затрат

Кс =С / С0 * 100%,

- индекс снижения трудовых затрат или повышение производительности труда

YС = С0 / С1

А после чего рассчитать срок окупаемости проекта:

Ток = КП /C

3.2 Расчёт показателей экономической эффективности проекта

На основании представленных в п 3.1 формул можно сделать следующие расчеты.

Таблица 24. Сводная таблица показателей эффективности

Показатели

Существует

Планируется достигнуть

Количество заявок оформленных ошибочно за мес.(назначена не тому или потеряна в процессе согласования)

15 заявок

0

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

3 минуты

1 минута

Время на согласование одной заявки

От 20 до 50мин

10-15 минут

Количество обрабатываемых заявок с почтового ящика горячей линии в день

800 сообщений

100 сообщений

Попробуем рассчитать плановый и текущий показатели:

Т0 = 22дня*11мес*((800зявок*3мин)/ 6чел) = 96800

Т1 = 22дня*11мес*((100зявок*3мин)/ 6чел)=12100

Теперь рассчитаем абсолютное снижение затрат:

Т = Т0 - Т1 =96800-12100 = 84700минут

Далее рассчитаем общий индекс снижения трудовых затрат:

УТ =Т0 / T1 =96800/12100 = 8

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

На рисунке 27 представлена диаграмма трудоёмкости обработки одного клиента при базовом варианте обработки («как есть») и при внедряемом («как должно быть») в целом.

Рисунок 27 Общая диаграмма трудоемкости.

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

C0 = 12*6*20000рублей = 1440000 рублей в год

C1 = 12*4*20000рублей = 960000 рублей в год

Теперь рассчитаем абсолютное снижение стоимостных затрат:

С = С0 - С1= 1440000 рублей-960000 рублей = 480000рублей за год

На рисунке 28 представлена общая диаграмма, демонстрирующая общие стоимостные расходы на обработку одного клиента при базовом варианте обработки («как есть») и при внедряемом («как должно быть») в целом.

Рисунок 28 Общая диаграмма стоимостных затрат

Далее рассчитаем общий индекс снижения стоимостных затрат.

YС = С0 / С1 = 1440000/960000 = 1,5

Общие затраты на проект составляют:

Стоимость работы программиста в течении 2х месяцев составляет около 70000 тысяч рублей с учётом отработки 40часов в неделю. Затрат на дополнительное техническое оснащение у нас не предусмотрено. Поэтому Кп = 70000руб.

Ток = КП /C = 70000рублей/480000рублей = 0,15 года

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

Заключение

В проекте рассматриваются все этапы внедрения доработки ИС, от аналитической разработки проекта, до внедрения проекта на предприятии.

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

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

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

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

В проекте решены задачи автоматизации процесса обработки и согласования заявок и нарядов регистрируемой горячей линией страховой компании “РОСНО”, а именно:

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

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

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

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

1. Электронная библиотека МФПА Microsoft Solutions Framework Модель процессов MSF вер. 3.1

2. ГОСТ Р 51241-2008 - «Средства и системы контроля и управления доступом. Классификация. Общие технические требования. Методы испытаний», Руководящий документ, 2008г.

3. ГОСТ Р ИСО/МЭК 12207-99 - «Информационная технология. Процессы жизненного цикла программных средств» Руководящий документ, Госстандарт России, Москва, Переиздан июль 2003г.

4. «Методология функционального моделирования IDEF0», Руководящий документ, Госстандарт России.;

5. Вендров А.М. «CASE технологии Современные методы и средства проектирования информационных систем» М.: Финансы и статистика, 1998г. - 176 с.: ил.;

6. Гулиян Г.Б., Нестеров И.А. «Основы организации компьютерных сетей. Часть 1.», Московская финансово-промышленная академия. - М., 2007г. - 169 с. ил.;

7. Крис Дж. Дейт «Введение в системы баз данных» - Киев: Вильямс, 2007г. - 1328 с.: ил.;

8. Микрюков В. Ю. «Информация, информатика, компьютер, информационные системы, сети», Москва: Феникс, 2007г. - 448 с.: ил.;

9. Мишенин А. И. «Теория экономических информационных систем», Москва: Финансы и статистика, 2007г. - 240 с.: ил.;

10. Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. «Баз данных», Учебник, Корона - Век, 2010г. - 736 с.: ил.;

11. «Memory Limits for Windows Release»

12. http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx

13. https://msdb.ru/Downloads/WindowsServer2008/Datasheet_Windows_Server_2008.pdf

14. «Сравнение различных выпусков Windows Server 2003»

15. http://www.microsoft.com/Rus/WindowsServer2003/evaluation/features/compareeditions.mspx

16. http://www.openview.ru/s_desk.htm

17. Лекция: Основные понятия технологии проектирования информационных систем (ИС) http://www.intuit.ru

18. Сайт московского исследовательского института системного проектирования http://miisp.ru/index.php?option=content&task=view&id=491

19. http://www.rodnik.ru/product/server/rab_station/server/ Критерии выбора серверной платформы.

20. http://www.interface.ru/fset.asp?Url=/misc/rcrm1.htm Рынок CRM-систем

21. http://www.erpselection.ru/analitiks/koltunova_demands.shtmlТребования к информационной системе и модели жизненного цикла

22. Лекция: Классификаторы в ИС http://www.intuit.ru

23. ГОСТ 19781-90

24. Липаев В.В. / Процессы и стандарты жизненного цикла сложных программных средств / Москва / СИНТЕГ / 2006

25. Методология и технология ЖЦ http://cmcons.com/articles/obshhie_stati_rup/

23. курс Верификация программного обеспечения информация [+]Авторы: С.В. Синицын, Н.Ю. Налютин http://www.intuit.ru

Приложение 1

Описание фаз Автоматизации по стандарту MSF

Таблица № 11 Ответственность участников в фазе разработки.

Ролевой кластер

Фокус

Управление продуктом

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

Управление программой

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

Разработка

Оценка технологий; логический и физический дизайн; план и календарный график разработки; смета разработки (development estimates).

Удовлетворение потребителя

Сценарии/примеры использования, пользовательские требования, требования локализации и общедоступности (accessibility); пользовательская документация/план обучения/график тестирования удобства эксплуатации; обучение.

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

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

Управление выпуском

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

Таблица № 12 Ответственность участников в фазе стабилизации.

Ролевой кластер

Фокус

Управление продуктом

Ожидания заказчика.

Управление программой

Управление функциональной спецификацией; мониторинг проекта; доработка планов.

Разработка

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

Удовлетворение потребителя

Обучение; доработка плана обучения; тестирование удобства эксплуатации (usability testing); графический дизайн.

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

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

Управление выпуском

Чеклисты развертывания (rollout checklists); доработка планов внедрения (включая пилотное внедрение); чеклисты подготовки к внедрению (site preparation checklists).

Таблица № 13. Ответственность участников в фазе разработки.

Ролевой кластер

Фокус

Управление продуктом

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

Управление программой

Мониторинг проекта; приоритезация ошибок.

Разработка

Устранение ошибок; оптимизация программного кода.

Удовлетворение потребителя

Доработка эксплуатационных руководств; учебные материалы.

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

Тестирование; сообщение об ошибках и их статусе; тестирование конфигурации.

Управление выпуском

Развертывание и поддержка пилотного внедрения; планирование внедрения; обучение персонала сопровождения.

Приложение 2

Программный код основной процедур main и syntax

#!/usr/bin/env python

import poplib

import email

import string

import time

def main():

try:

while True:

try:

print 'Connecting mail server...'

M = poplib.POP3('mango.rosno.ru')

M.user('HPOPSD_mailer')

M.pass_(' HPOPSD_mailer)

numMessages = len(M.list()[1])

for i in range(numMessages):

print "=" * 40

msg = M.retr(i + 1)

str = string.join(msg[1], "\n")

mail = email.message_from_string(str)

print "From:", mail["From"]

print "Subject:", mail["Subject"]

print "Date:", mail["Date"]

mail_str = ''

if mail.is_multipart():

mail_str = mail.get_payload(0).get_payload()

else:

mail_str = mail.get_payload()

# This string contains message text

\ procedure л

# Delete message from server

M.dele(i + 1)

M.quit()

print '%d new messages received' % numMessages

time.sleep(10)

except KeyboardInterrupt:

raise

except Exception as e:

print 'Error: %s' % str(e)

time.sleep(1)

except KeyboardInterrupt:

print('Terminating signal received. Shutting down')

if __name__ == '__main__':

main()

from doc.text import DocTextReader doc = DocTextReader('parus.doc') root_entry = doc.root_entry word_document = doc.get_entry_by_name('WordDocument') one_table = root_entry.child.left_sibling.left_sibling fc_clx = self.word_document.get_long(0x01a2) one_table.seek(fc_clx) print one_table.read(1) print one_table.tell() # fc_clx + 1 print doc.read()

import xlrd rb = xlrd.open_workbook('d:/final.xls',formatting_info=True) sheet = rb.sheet_by_index(0) for rownum in range(sheet.nrows): row = sheet.row_values(rownum) for c_el in row: print c_el

# -*- coding: UTF-8 -*-

if __name__ == '__build__':

raise Exception

def canonize(source):

stop_symbols = '.,!?:;-\n\r()'

stop_words = (u'это', u'как', u'так',

u'и', u'в', u'над',

u'к', u'до', u'не',

u'на', u'но', u'за',

u'то', u'с', u'ли',

u'а', u'во', u'от',

u'со', u'для', u'о',

u'же', u'ну', u'вы',

u'бы', u'что', u'кто',

u'он', u'она')

return ( [x for x in [y.strip(stop_symbols) for y in source.lower().split()] if x and (x not in stop_words)] )

def genshingle(source):

import binascii

shingleLen = 10 #длина шингла

out = []

for i in range(len(source)-(shingleLen-1)):

out.append (binascii.crc32(' '.join( [x for x in source[i:i+shingleLen]] ).encode('utf-8')))

return out

def compaire (source1,source2):

same = 0

for i in range(len(source1)):

if source1[i] in source2:

same = same + 1

return float(same*2)/float(len(source1) + len(source2))*100

class doc extends cfb {

public function parse() {

parent::parse();

$wdStreamID = $this->getStreamIdByName("WordDocument");

if ($wdStreamID === false) { return false; }

$wdStream = $this->getStreamById($wdStreamID);

$bytes = $this->getShort(0x000A, $wdStream);

$fComplex = ($bytes & 0x0004) == 0x0004;

$fWhichTblStm = ($bytes & 0x0200) == 0x020;

$fcClx = $this->getLong(0x01A2, $wdStream);

$lcbClx = $this->getLong(0x01A6, $wdStream);

$ccpText = $this->getLong(0x004C, $wdStream);

$ccpFtn = $this->getLong(0x0050, $wdStream);

$ccpHdd = $this->getLong(0x0054, $wdStream);

$ccpMcr = $this->getLong(0x0058, $wdStream);

$ccpAtn = $this->getLong(0x005C, $wdStream);

$ccpEdn = $this->getLong(0x0060, $wdStream);

$ccpTxbx = $this->getLong(0x0064, $wdStream);

$ccpHdrTxbx = $this->getLong(0x0068, $wdStream);

$lastCP = $ccpFtn + $ccpHdd + $ccpMcr + $ccpAtn + $ccpEdn + $ccpTxbx + $ccpHdrTxbx;

$lastCP += ($lastCP != 0) + $ccpText;

$tStreamID = $this->getStreamIdByName(intval($fWhichTblStm)."Table");

if ($tStreamID === false) { return false; }

$tStream = $this->getStreamById($tStreamID);

$clx = substr($tStream, $fcClx, $lcbClx);

$lcbPieceTable = 0;

$pieceTable = "";

$pieceCount = 0;

$from = 0;

while (($i = strpos($clx, chr(0x02), $from)) !== false) {

$lcbPieceTable = $this->getLong($i + 1, $clx);

$pieceTable = substr($clx, $i + 5);

if (strlen($pieceTable) != $lcbPieceTable) {

$from = $i + 1;

continue;

}

break;

}

$cp = array(); $i = 0;

while (($cp[] = $this->getLong($i, $pieceTable)) != $lastCP)

$i += 4;

$pcd = str_split(substr($pieceTable, $i + 4), 8);

$text = "";

for ($i = 0; $i < count($pcd); $i++) {

$fcValue = $this->getLong(2, $pcd[$i]);

$isANSI = ($fcValue & 0x40000000) == 0x40000000;

$fc = $fcValue & 0x3FFFFFFF;

$lcb = $cp[$i + 1] - $cp[$i];

if (!$isANSI)

$lcb *= 2;

else

$fc /= 2;

$part = substr($wdStream, $fc, $lcb);

if (!$isANSI)

$part = $this->unicode_to_utf8($part);

$text .= $part;

}

return $text;

}

}

Размещено на Allbest.ru


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

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