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

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

2015-07-13

6.77 MB

7 чел.


Поделитесь работой в социальных сетях

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


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

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

Факультет

Кафедра

вычислительной техники

Вычислительная техника

Направление подготовки

09.03.01 «Информатика и вычислительная техника»

Профиль

Вычислительные машины, комплексы, системы и сети

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

РАБОТА БАКАЛАВРА

на тему

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

Студент                                       ___________     ___________________________

(подпись, дата)    (ФИО полностью)

Руководитель                              ___________   ___________________________

(подпись, дата)    (фамилия, инициалы)

Нормоконтролёр                         ___________   ___________________________

(подпись, дата)    (фамилия, инициалы)

Работа допущена к защите (протокол заседания кафедры от _____________№_____)

Заведующий кафедрой                 __________________        ____________________

             (подпись)   (фамилия, инициалы)

Работа защищена с отметкой ______ (протокол заседания ГАК от ________№____)

Секретарь ГАК                             __________________        ____________________

             (подпись)   (фамилия, инициалы)

Пенза, 2015


РЕФЕРАТ

Пояснительная записка содержит 109 листов, 48 рисунков, 1 таблицу, 9 источников, 7 приложений.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ УПРАВЛЕНИЯ ДОКУМЕНТАМИ ПРЕДПРИЯТИЯ.

Объектом разработки является система автоматизированного управления электронными документами (СУЭД).

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

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

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

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


СОДЕРЖАНИЕ

[1]
РЕФЕРАТ

[2]
СОДЕРЖАНИЕ

[3]
ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ

[3.1] Описание предметной области

[4]
КОНСТРУКТОРСКАЯ ЧАСТЬ

[4.1] Выбор архитектуры приложения

[4.2] Характеристика СУЭД

[4.3] Особенности СУЭД

[4.4] Требования к системе

[5]
ТЕХНОЛОГИЧЕСКИЕ СРЕДСТВА РАЗРАБОТКИ И ОТЛАДКИ

[5.1] Общие сведения

[5.2] Сведения об IDE Eclipse PHP Development Tools

[5.3] Сведения о редакторе Notepad++

[5.4] Сведения о LAMP сервере

[5.5] Сведения о приложении PHPMyAdmin 

[5.6] Сведения об обработчике шаблонов Smarty

[6] ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОГРАММЫ

[6.1] Этапы проектирования

[6.2] Описание логической структуры

[6.3] Проектирование базы данных

[7] УСТАНОВКА И АДМИНИСТРИРОВАНИЕ ПРИЛОЖЕНИЯ

[7.1] Создание базы данных и пользователя для СУЭД

[7.2] Установка СУЭД

[8] РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

[8.1] Раздел «Админ»

[8.2] Создание отделов

[8.3] Создание категорий документов

[8.4] Добавление пользователей

[8.5] Раздел «Добавить документ»

[8.6] Редактирование документа

[8.7] Поиск документов

[8.8] Просмотр изменений документов

[9] ЗАКЛЮЧЕНИЕ

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

[10.1] ДИАГРАММА ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

[10.2] Приложение А

[10.3] Приложение А1. Диаграмма вариантов использования администратора

[10.4]
Приложение А2. Диаграмма вариантов использования пользователя

[10.5] ДИАГРАММА ДЕЯТЕЛЬНОСТИ

[10.6] Приложение Б

[10.7] Приложение Б1. Диаграмма деятельности администратора

[10.8] Приложение Б2. Диаграмма деятельности пользователя

[10.9] ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТИ ДЕЙСТВИЙ

[10.10] Приложение В

[10.11] Приложение В1. Диаграмма последовательности действий администратора

[10.12] Приложение В2. Диаграмма последовательности действий пользователя

[10.13] ДИАГРАММА РАЗВЕРТЫВАНИЯ

[10.14] Приложение Г

[10.15] ДИАГРАММА КЛАССОВ

[10.16] Приложение Д

[10.17] СХЕМА БД

[10.18] Приложение Е

[10.19] ЛИСТИНГИ

[10.20] Приложение Ж

[10.21]
Приложение Ж1. Подключение к базе данных

[10.22] Приложение Ж2. Создание базы данных

[10.23] Приложение Ж3. Информация о пользователях


ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

  1.  
    ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ
    1.  Описание предметной области

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

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

Исторически системы управления документами являлись вертикальными приложениями, т.е. программами, использование которых ограничивается одной специальной областью. СУЭД или DMS (Document Management System) разрабатывались для использования небольшими группами специалистов, работающих в территориальной близости друг от друга с сильно структурированными документами.

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

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

Ниже перечислены категории технологий электронного управления документами (ЭУД) с примерами наиболее известных поставщиков и продуктов в каждом классе (по информации International Data Corporation (IDC)):

  •  Системы ЭУД, ориентированные на бизнес-процессы (Business-process EDM): Documentum, FileNet (Panagon и Watermark), Hummingbird (PC DOCS)
  •  Корпоративные системы ЭУД (Enterprise-centric EDM): Lotus (Domino.Doc), дополнения к Novell GroupWise, Opent Text (LiveLink), Keyfile Corp., Oracle (Context)
  •  Системы управления контентом (Content management): Adobe, Excalibur
  •  Системы управления информацией (порталы) (Information Management): Excalibur, Oracle Context, PC DOCS/Fulcrum, Verity, Lotus (Domino/Notes, K-station)
  •  Системы управления образами (Imaging)
  •  Системы управления потоками работ (Workflow management): Lotus (Domino/Notes и Domino Worflow), Jetform, FileNet, Action Technologies, Staffware
  •  Система управления корпоративным контентом DIRECTUM — система одноименной отечественной компании DIRECTUM — позволяет строить инфраструктуру электронного взаимодействия, закрывающую различные задачи бизнеса на разных уровнях: от делопроизводителей до топ-менеджмента.

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

В составе DIRECTUM выделяются три основных слоя:

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

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

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

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

Системы управления информацией (порталы) — обеспечивают агрегирование, управление и доставку информации через сети Internet, Intranet и Extranet. Эти технологии обеспечивают фундамент создания информационных порталов. Системы управления информацией дают возможность организациям накапливать и использовать экспертизу в распределенной корпоративной среде на основе использования бизнес-правил, контекста и метаданных. Хотя большинство доступных сегодня технологий обеспечивают, в основном, статические публикации, обеспечение большей интерактивности и средств совместной работы — дело ближайшего будущего.

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

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

Из важнейших характеристик СУЭД специалисты обычно выделяют следующие:

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

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

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

  1.  
    КОНСТРУКТОРСКАЯ ЧАСТЬ
     
    1.  Выбор архитектуры приложения

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

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

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

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

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

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

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

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

Рисунок  – Общая схема построения систем с архитектурой «клиент/сервер»

Таблица 1 – Функции, выполняемые участниками взаимодействия в среде «клиент-сервер»

Клиент

Сервер

  1.  Управляет пользовательским интерфейсом
  2.  Принимает и проверяет синтаксис введённого пользователем запроса
  3.  Выполняет приложение
  4.  Генерирует запрос к базе данных и передаёт его серверу
  5.  Отображает полученные данные пользователю
  1.  Принимает и обрабатывает запросы к базе данных со стороны клиентов
  2.  Проверяет полномочия пользователей
  3.  Гарантирует соблюдение ограничений целостности
  4.  Выполняет запросы/обновления и возвращает результаты клиенту
  5.  Поддерживает системный каталог
  6.  Обеспечивает параллельный доступ к базе данных
  7.  Обеспечивает управление восстановлением

Преимущества данного типа архитектуры:

  1.  Обеспечивается более широкий доступ к существующим базам данных.
  2.  Повышается общая производительность системы. Поскольку клиенты и сервер находятся на разных компьютерах, их процессоры способны выполнять приложения параллельно. При этом настройка производительности компьютера с сервером упрощается, если на нём выполняется только работа с базой данных.
  3.  Стоимость аппаратного обеспечения снижается. Достаточно мощный компьютер с большим устройством хранения нужен только серверу – для хранения и управления базой данных.
  4.  Сокращаются коммуникационные расходы. Приложения выполняют часть операций на клиентских компьютерах и посылают через сеть только запросы к базе данных, что позволяет существенно сократить объём пересылаемых по сети данных.
  5.  Повышается уровень непротиворечивости данных. Сервер может самостоятельно управлять проверкой целостности данных, поскольку все ограничения определяются и проверяются только в одном месте. При этом каждому приложению не придётся выполнять собственную проверку.

  1.  Характеристика СУЭД

В процессе разработки было создано веб-приложение, представляющее собой систему управления электронными документами (СУЭД). В качестве средства разработки был выбран язык PHP, специально предназначенный для создания веб-приложений. Веб-приложение выполняет стандарт ISO 17025, который в целом базируется на концепции централизованного хранения документов, ограниченного доступа и отслеживании изменений, а также стандарт МЭБ для управления документами.

В проекте реализовано: 

  •  Управление пользователями и отделами:

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

  •  Централизованное хранение документов:

Централизованное хранение документов делает поиск документов в СУЭД намного проще, так как поиск производится только в одной области.

  •  Ограниченный доступ:

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

  •  Отслеживание изменений:

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

  1.  Особенности СУЭД

Особенности данного проекта:

  •  Возможность добавить файл любого типа в хранилище
  •  Не требуется FTP-сервер. Файлы можно загрузить прямо из браузера.
  •  Мета-данные для каждого файла
  •  Возможность создавать и назначать отдел/категорию каждому файлу
  •  История изменений
  •  Физически документы хранятся на сервере
  •  Файлы имеют срок хранения
  •  Пользователи самостоятельно могут создавать поля документа, которые будут заполнятся данными, в соответствии с потребностями компании
  •  Автоматизированный процесс истечения срока хранения файлов
  •  Администратор/рецензент может одобрить или отклонить загрузку нового или измененного документа в хранилище
  •  Возможен поиск файлов по названию, автору, отделу, категории, комментариям
  •  Не требуется никаких внешних процессов индексирования
  •  Возможность изменить URL
  •  Пользователи могут ограничивать доступ к собственным файлам
  •  Три типа пользователей: пользователь, рецензент и администратор
  •  Управление максимальным размером файлов независимо от более высоких пределов сервера.

  1.  Требования к системе

Для работы СУЭД необходимы следующие компоненты:

  •  Сетевой сервер Apache 2.x (или любой другой веб-сервер, который поддерживает PHP) (http://www.apache.org/)
  •  Сервер MySQL 5.0+ (http://www.mysql.com/)
  •  PHP 5.4+ скомпилирован с поддержкой PDO MySQL (http://www.php.net/).
  1.  
    ТЕХНОЛОГИЧЕСКИЕ СРЕДСТВА РАЗРАБОТКИ И ОТЛАДКИ
    1.  Общие сведения

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

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

В качестве языка программирования был выбран PHP, который является скриптовым языком общего назначения. Он используется на стороне сервера и разработан специально для разработки web-приложений. Он позволяет внедрять код непосредственно в HTML-страницу, выполняемый при каждом ее посещении. При этом программа на PHP интерпретируется web-сервером, а результат ее работы в виде HTML-страницы отображается браузером пользователя.

Язык имеет очень широкое распространение и предустановлен на большинстве хостингов. Изначально разрабатывался для создания домашних страниц «о себе». Но получив массовое распространение и завоевав популярность был значительно доработан.  

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

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

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

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

jQuery — библиотека написанная на JavaScript, позволяющая упростит работу с HTML. В частности позволяет легко получать доступ к элементам модели DOM. В библиотеке реализована функция AJAX для подгрузки контента без перезагрузки основной страницы.

  1.  Сведения об IDE Eclipse PHP Development Tools

Для создания проекта использовалась интегрированная среда разработки приложений на языке программирования PHP — Eclipse PHP Development Tools, разработанная на основе Eclipse, распространяемая на условиях лицензии Eclipse Public License.

При разработке данного проекта использовалась последняя версия IDEEclipse Luna. Т.к. Eclipse написана на Java, для работы потребуется Java Runtime Environment — виртуальная машина для запуска java-приложений.

Возможности:

  •  Сворачивание кода
  •  Рефакторинг
  •  Генерация кода (методы доступа к членам класса, мастер классов и интерфейсов)
  •  Анализ и исправление кода
  •  Поддержка PHP 4 и PHP 5 (включая замыкания и пространства имен)
  •  Иерархическое представление классов и методов
  •  Отладка PHP-скриптов (как локально, так и с помощью интеграции с Zend Server и XDebug)
  •  Поддержка HTML, CSS, JavaScript
  •  и другие.

  1.  Сведения о редакторе Notepad++

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

  1.  Сведения о LAMP сервере

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

  •  Linux — операционная система Linux;
  •  Apache — веб-сервер;
  •  MariaDB / MySQL — СУБД;
  •  PHP — язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).

Акроним LAMP может использоваться для обозначения:

  1.  Инфраструктуры веб-сервера
  2.  Парадигмы программирования
  3.  Пакета программ

Хотя изначально эти программные продукты не разрабатывались специально для работы друг с другом, такая связка стала весьма популярной из-за своей гибкости, производительности и низкой стоимости (все её составляющие являются открытыми и могут быть бесплатно загружены из Интернета). Набор LAMP входит в состав большинства дистрибутивов Linux и предоставляется многими хостинговыми компаниями.

Иногда букву P в аббревиатуре расшифровывают как Perl и Python, другие возможные языки веб-разработки.

Существует множество вариантов термина, в частности:

  •  LEMP — Nginx вместо Apache (Nginx читается Engine-X)

  •  LNMP — другой вариант названия 'Nginx вместо Apache
  •  BAMP — BSD вместо Linux
  •  MAMP — Mac OS X вместо Linux.
  •  SAMP — Solaris вместо Linux
  •  WAMP — под Microsoft Windows вместо Linux
  •  WASP — Windows, Apache, SQL Server и PHP
  •  WIMP — Windows, IIS, MySQL и PHP
  •  PAMP — Personal Apache MySQL PHP — набор серверов для платформы S60. Специфика платформы накладывает свой отпечаток на работу комплекса. Так, в частности, модули PHP получают и возвращают строки только в кодировке UTF-8.
  •  FNMP — FreeBSD и Nginx вместо Linux и Apache.
  •  XAMPP — кроссплатформенная сборка веб-сервера, X (любая из четырёх операционных систем), Apache, MySQL, PHP, Perl.
  •  Zend Server - пакет от разработчиков PHP.
  •  Instant Rails - с языком Ruby.

Поскольку программы, входящие в LAMP, в основном были разработаны для Linux, то установка и взаимная настройка их под Windows требует некоторого времени. Для решения этой проблемы было создано много пакетов программ, которые позволяют начать работать сразу после установки, такой набор называют WAMP. Примеры популярных пакетов: Open Server, Denwer, XAMPP.

  1.  Сведения о приложении PHPMyAdmin 

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

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

Приложение распространяется под лицензией GNU (General Public License) и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP, Denwer, AppServ, Open Server.

Проект на данный момент времени локализован на более чем 62 языках.

  1.  Сведения об обработчике шаблонов Smarty

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

Например, нужно создать страницу, которая показывает газетную статью.

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

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

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

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

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

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

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

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

Одна из уникальных возможностей Smarty — компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости в медленной обработке файла шаблона для каждого запроса. Каждый шаблон может пользоваться всеми преимуществами таких компиляторов PHP и кэшируюших решений, как eAccelerator, ionCube, mmCache, Zend Accelerator и прочих.

Особенности Smarty:

  •  Высокая скорость работы.
  •  Он эффективен, так как обработчик PHP делает за него основную работу.
  •  Никакой лишней обработки шаблонов, они компилируются только один раз.
  •  Перекомпилируются только те шаблоны, которые изменились.
  •  Можно легко создавать собственные пользовательские функции и модификаторы переменных, что делает язык шаблонов чрезвычайно расширяемым.
  •  Настраиваемые {разделители} тэгов шаблона, то есть можно использовать {$foo}, {{$foo}}, <!--{$foo}--> и т.д.
  •  Конструкции {if}..{elseif}..{else}..{/if} передаются обработчику PHP, так что синтаксис выражения {if...} может быть настолько простым или сложным, насколько вам угодно.

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

  1.  ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОГРАММЫ
    1.  Этапы проектирования

Проектирование программного обеспечения выполняется в несколько этапов, что соответствует основным этапам объектно-ориентированного анализа и проектирования программных систем:

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

Последовательный процесс объектно-ориентированного проектирования приведен на рисунке 2.

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

Рисунок  -  Процесс объектно-ориентированного анализа и проектирования программы

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

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

  1.  Описание логической структуры

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

При проведении первого этапа проектирования была построена UML диаграмма вариантов использования (см. Приложение А).

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

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

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

Для отражения последовательности передачи сообщений между объектами была построена диаграмма последовательностей действий (см. Приложение В).

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

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

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

Для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования была построена диаграмма классов (см. Приложение Д). 

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

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

В ходе разработки СУЭД была создана база данных.

Для управления БД используется веб-приложение PHPMyAdmin, входящее в состав XAMPP.

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

 В Приложении Е приведена схема БД.

В Приложении Ж1 приведен листинг подключения приложения к БД, в Приложении Ж2 — создание таблиц, а в Приложении Ж3 — получение информации о пользователях из БД.

На рисунке 3 отображен список созданных в БД таблиц.


Рисунок  – Список таблиц БД

В таблицу odm_access_log (рис.4) заносятся id файла и документа, метка timestamp — это последовательность символов или закодированной информации, показывающей, когда произошло определённое событие, а в поле action перечисляются даты.

Рисунок  - Таблица odm_access_log

В таблице odm_admin (рис.5) проверяется значение является ли пользователь администратором или нет.

Рисунок  - Таблица odm_admin

В таблицу odm_category (рис.6) заносятся добавляемые пользователем категории.

Рисунок  - Таблица odm_categoty

В таблицу odm_data (рис.7) заносится информация о документе.

Рисунок  - Таблица odm_data

В таблицу odm_ department (рис.8) заносятся добавляемые пользователем отделы.

Рисунок  - Таблица odm_department

В таблице odm_ dept_perms (рис.9) определяются права доступа для отдела.

Рисунок  - Таблица odm_dept_perms

В таблице odm_dept_perms (рис.10) проверяется значение является ли пользователь рецензентом или нет.

Рисунок  - Таблица odm_reviewer

В таблице odm_dept_filetypes (рис.11) содержатся типы файлов.

Рисунок  - Таблица odm_dept_filetypes

В таблицу odm_log (рис.12) заносится информация об изменении документа.

Рисунок  - Таблица odm_log

В таблице odm_odmsys (рис.13) содержится информация о версии БД.

Рисунок  - Таблица odm_odmsys

В таблице odm_rights (рис.14) содержатся значения прав доступа.

Рисунок  - Таблица odm_rights

В таблице odm_settings (рис.15) содержатся значения настроек СУЭД.

Рисунок  - Таблица odm_settings

В таблицу odm_udf (рис.16) заносятся поля, создаваемые пользователем (например, заметки, комментарии и т.д.).

Рисунок  - Таблица odm_udf

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

Рисунок  - Таблица odm_user

В таблице odm_user_perms (рис.18) содержатся значения прав доступа пользователей.

Рисунок - Таблица odm_user_perms

 

  1.  УСТАНОВКА И АДМИНИСТРИРОВАНИЕ ПРИЛОЖЕНИЯ
    1.  Создание базы данных и пользователя для СУЭД

Перед созданием БД, должен быть запущен XAMPP (или аналогичный кроссплатформенный дистрибутив, например Open Server или Denwer). Это не требуется если у пользователя имеется зарегистрированное доменное имя и хостинг, поддерживающий PHP и MySQL.

Далее, чтобы создать базу данных, в адресной строке браузера нужно прописать: http://localhost/phpmyadmin. После этого в окне браузера откроется приложение PHPMyAdmin, где пользователь должен создать свою базу данных. Главное окно приложения представлено на рисунке 19.

Рисунок  - Окно PHPMyAdmin

Для того, чтобы создать базу данных, пользователь должен нажать ссылку «Создать БД» (рис.20), которая находится в левой колонке приложения.

Рисунок  - Создание БД

Откроется окно, где пользователь должен дать имя БД, затем нажать кнопку «Создать» (рис.21):

Рисунок  - Создание БД

Созданная БД появится в списке. Следующий шаг – добавление пользователя. Для этого, в панели приложения нужно кликнуть по кнопке «Привилегии» и создать пользователя (рис.22). Ему нужно задать имя пользователя, пароль и тип хоста. В данном проекте используется локальный хост.

Рисунок  - Создание БД

Также нужно задать пользователю права доступа (рис.5):

Рисунок  - Создание БД

После нажатия кнопки «Вперед» пользователь появится в списке (рис.24):

Рисунок  - Создание БД

  1.  Установка СУЭД

Перед установкой СУЭД также должен быть запущен XAMPP.

Чтобы начать автоматическую установку СУЭД нужно в папку с установленным XAMPP например C:\xampp\htdocs скопировать папку docmanager в папку htdocs, или использовать уже зарегистрированное доменное имя (хостинг).

Затем после запуска XAMPP в адресной строке браузера прописать: localhost/docmanager/. Откроется окно автоматической установки СУЭД.

Далее, нужно нажать кнопку «Создать файл конфигурации» (рис.25).

Рисунок  - Установка СУЭД

Прочитав инструкцию нажать кнопку: «Начать!» (рис.26).

Рисунок  - Установка СУЭД

Затем нужно ввести в поля информацию о базе данных и пароль администратора. Кроме того, можно изменить путь к папке. В примере используется C:/xampp/odm_data/document_repository. После заполнения всей информации нужно нажать кнопку «Отправить» (рис.27). 

Рисунок  - Установка СУЭД

Должно появится окно об успешном завершении установки (рис.28):

Рисунок  - Установка СУЭД

Если программа установки не может создать config.php, появится следующее сообщение (рис.29):

Рисунок  - Установка СУЭД

В этом случае можно создать config.php вручную. Для этого нужно открыть папку C:\xampp\htdocs\docmanager и создать текстовый файл, в который нужно скопировать следующий код:

Листинг 1. Конфигурационный файл БД

  <?php

/*

config.php - конфигурационный файл БД

*/

// Eliminate multiple inclusion of config.php

if( !defined('config') )

{

   define('config', 'true', false);

// config.php - useful variables/functions

// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for [DocManager */

define('DB_NAME', 'database_name_here');

/** MySQL database username */

define('DB_USER', 'username_here');

/** MySQL database password */

define('DB_PASS', 'password_here');

/** MySQL hostname */

/* MySQL server. Он также может включать номер порта e.g. "hostname:port" or a path to a

* local socket e.g. ":/path/to/socket" for the localhost.  */

define('DB_HOST', 'localhost');

/**

* Префикс(приставка) для добавления к каждому имени таблицы в базе данных  

(напр. если префикс odm_(по умолчанию), таблица может быть

 * названа "odm_users", "odm_data" и т.д.

* @DEFAULT 'odm_'

* @ARG String

*/

$GLOBALS['CONFIG']['db_prefix'] = 'odm_';

/*** DO NOT EDIT BELOW THIS LINE ***/

/** Absolute path to the DocManager directory. */

if ( !defined('ABSPATH') )

define('ABSPATH', dirname(__FILE__) . '/');

}

Затем нужно сохранить файл в расширении php.  Для этого лучше использовать Notepad++. После создания файла, в окне браузера нажмите кнопку «Proceed to the installer».

После нажатия кнопки «Запуск установки» появится следующее окно (рис.30):

Рисунок  - Установка СУЭД

Затем нужно нажать на ссылку «Новая установка». Появится окно подтверждения действий (рис.31). Следует быть внимательным, потому что новая установка уничтожит все данные

Рисунок  - Установка СУЭД

После нажатия кнопки «ОК» появится окно, где отображается информация о состоянии установки, а также имя пользователя и пароль (рис.32).

Рисунок  - Установка СУЭД

Для окончания установки нужно кликнуть по ссылке, «ЗДЕСЬ». Откроется окно с предложением ввести имя пользователя и пароль, которые были указаны при создании файла config.php.

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

Рисунок  - Установка СУЭД

После входа в систему появится окно настройки сайта (рис.34). Перед тем как применить выбранные настройки, необходимо удалить папку «install» (выведется соответствующее сообщение, выделенное красным шрифтом).

Рисунок  - Установка СУЭД

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

Для ручной установки требуется:

 1. Распаковать файлы в любое место на веб-сервере

 2. Создать базу данных MySQL и пользователя (с паролем)

 3. Создать каталог для файлов, которые будут храниться в доступном месте на веб-сервере, но не доступном при просмотре. Права доступа к этой папке должны позволить серверу записывать данные, например: $>mkdir /usr/local/docmanager/data

4. Скопировать файл conig-sample.php в config.php

 5. Задать в config.php параметры базы данных

 6. Изменить database.sql файл. Задать значения, установленные в таблице odm_settings, специально для этих двух записей:

    DATADIR (прописать путь хранения файлов)

    base_url (прописать URL, например docmanager)

 7. Импортировать database.sql файл в базу данных

 8. В адресной строке браузера прописать: localhost/docmanager/ и войти в систему как администратор (без пароля).

  1.  РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
    1.  Раздел «Админ»

Это раздел администрирования, где вы можете добавлять, удалять и обновлять пользователей, отдел, категорию и т.д. Чтобы перейти к нему нужно сверху кликнуть по вкладке «Админ» (рис.35).

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

Рисунок  - Структура СУЭД

  1.  Создание отделов

Для удобства хранения и поиска документов, в системе можно создавать отделы, названия которых соответствуют отделам предприятия. Чтобы создать отдел, в разделе «Админ», нажмите кнопку «Добавить». В открывшемся окне нужно дать название отделу и нажать кнопку «Добавить отдел» (рис.36). Можно в любое время просмотреть все существующие отделы, изменить имя отдела, добавить или удалить отдел.

Рисунок  - Создание отдела

  1.  Создание категорий документов

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

Рисунок  - Создание категории документов

  1.  Добавление пользователей

Чтобы добавить пользователей непосредственно в приложении, нужно нажать кнопку «Добавить» в разделе «Пользователи» (для этого нужно быть администратором). Также необходимо назначить имя пользователя и пароль (рис.38).

Рисунок  - Добавление пользователей

  1.  Раздел «Добавить документ»

Это раздел, в котором пользователи могут добавлять, удалять и обновлять документы.

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

Рисунок  – Добавление документа

Если расширение (MIMTYPE) и размер документа соответсвует настройкам, должно появиться следующее сообщение (рис.40):

Рисунок  – Добавление документа

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

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

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

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

Рисунок  – Авторизация документа

Откроется следующее окно (рис.42):

Рисунок  - Авторизация документа

Затем надо выбрать документ, и нажать кнопку «Authorize», чтобы утвердить документ (рис.43). 

Рисунок  - Авторизация документа

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

Рисунок  - Авторизация документа

  1.  Редактирование документа

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

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

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

  1.  Поиск документов

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

Рисунок  - Поиск документа

На рисунке 47 показан результат поиска.

Рисунок  – Результат поиска

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

  1.  Просмотр изменений документов

Все изменения документов отслеживаются и записываются. Можно просмотреть их в разделе Админ -> Отчеты -> Журналы доступа (рис.48), где отображается, как и когда изменялся документ.

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

Рисунок  - Журнал доступа

ЗАКЛЮЧЕНИЕ

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

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


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

1. Управление документами и документооборотом. Системы управления электронными документами в современной организации. URLhttp://www.directum.ru/514280.aspx  (дата обращения: 15.05.2015).

2. Системы электронного управления документами: обзор, классификация и оценка возврата от внедрения. URLhttp://iteam.ru/publications/it/section_64/article_2712 (дата обращения: 16.05.2015).

3. Концепция построения системы управления документами.

URL: http://citforum.ru/seminars/cis99/vest32.shtml

4. Веб-приложение.

URL: https://ru.wikipedia.org/  (дата обращения: 02.06.2015).

5. Программирование с использованием PHP и MySQL в разработке Web-приложений: Часть 1. PHP – основы применения при построении Web-сайтов. URL: http://www.ibm.com/developerworks/ru/library/l-php_mysql_1/ (дата обращения: 20.05.2015).

6. Лаура Томсон, Люк Веллинг. Руководство разработчика Web-сайтов. Издательство: ДиаСофтЮП, 2003 г.

7. Руководство по Smarty. URLhttp://www.smarty.net/docsv2/ru/ (дата обращения: 10.05.2015).

8. Котеров Д. В., Костарев А. Ф. PHP в подлиннике. Издательство: БХВ-Петербург, 2006 г.

9. Джон Коггзолл. PHP 5. Полное руководство. Издательство: Диалектика, 2006 г.


ДИАГРАММА ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

Приложение А

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

Приложение А1. Диаграмма вариантов использования администратора


Приложение А2. Диаграмма вариантов использования пользователя


ДИАГРАММА ДЕЯТЕЛЬНОСТИ

Приложение Б

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

Приложение Б1. Диаграмма деятельности администратора

Приложение Б2. Диаграмма деятельности пользователя

ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТИ ДЕЙСТВИЙ

Приложение В

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

Приложение В1. Диаграмма последовательности действий администратора

 

Приложение В2. Диаграмма последовательности действий пользователя

 

ДИАГРАММА РАЗВЕРТЫВАНИЯ

Приложение Г

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

ДИАГРАММА КЛАССОВ

Приложение Д

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

СХЕМА БД

Приложение Е

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



ЛИСТИНГИ

Приложение Ж

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


Приложение Ж1
. Подключение к базе данных

<?php

/*

odm-init.php - для инициализации переменных

  * Если файл config.php не найден, то выведется

  * сообщение, в котором  будет предложено создать

  * файл config.php.

  * Файл config.php будет искаться в корневомм каталоге DocManager

*/

//Подключение к базе данных

$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8";

try {

   $pdo = new PDO($dsn, DB_USER, DB_PASS);

} catch (PDOException $e) {

   print "Error!: " . $e->getMessage() . "<br/>";

   die();

}

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 

$GLOBALS['pdo'] = $pdo;

ob_start();

//Загрузка класса Settings

require_once ( 'Settings_class.php');

$settings = new Settings($pdo);

$settings->load();

//Общие функции

require_once( 'functions.php' );

//Загрузка списка разрешенных типов файлов

require_once ( 'FileTypes_class.php' );

$filetypes = new FileTypes_class($pdo);

$filetypes->load();

// Установка директории прверки. (relative to $dataDir)

$CONFIG['revisionDir'] = $GLOBALS['CONFIG']['dataDir'] . 'revisionDir/';

// Установка директории прверки. (relative to $dataDir)

$CONFIG['archiveDir'] = $GLOBALS['CONFIG']['dataDir'] . 'archiveDir/';

$_GET = sanitizeme($_GET);

$_REQUEST = sanitizeme($_REQUEST);

$_POST = sanitizeme($_POST);

$_SERVER = sanitizeme($_SERVER);

$_FILES = sanitizeme($_FILES);

Приложение Ж2. Создание базы данных

# MySQL dump of DocManager

# Table structure for table 'odm_access_log'

CREATE TABLE `odm_access_log` (

 `file_id` int(11) NOT NULL,

 `user_id` int(11) NOT NULL,

 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

 `action` enum('A','B','C','V','D','M','X','I','O','Y','R') NOT NULL

) ENGINE = MYISAM;

# Table structure for table 'odm_admin'

CREATE TABLE odm_admin (

 id int(11) unsigned default NULL,

 admin tinyint(4) default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_admin'

INSERT INTO odm_admin VALUES (1,1);

# Table structure for table 'odm_category'

CREATE TABLE odm_category (

 id int(11) unsigned NOT NULL auto_increment,

 name varchar(255) NOT NULL default '',

 PRIMARY KEY  (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_category'

INSERT INTO odm_category VALUES (NULL,'SOP');

INSERT INTO odm_category VALUES (NULL,'Training Manual');

INSERT INTO odm_category VALUES (NULL,'Letter');

INSERT INTO odm_category VALUES (NULL,'Presentation');

# Table structure for table 'odm_data'

CREATE TABLE odm_data (

 id int(11) unsigned NOT NULL auto_increment,

 category int(11) unsigned NOT NULL default '0',

 owner int(11) unsigned default NULL,

 realname varchar(255) NOT NULL default '',

 created datetime NOT NULL default '0000-00-00 00:00:00',

 description varchar(255) default NULL,

 comment varchar(255) default '',

 status smallint(6) default NULL,

 department smallint(6) unsigned default NULL,

 default_rights tinyint(4) default NULL,

 publishable tinyint(4) default NULL,

 reviewer int(11) unsigned default NULL,

 reviewer_comments varchar(255) default NULL,

 PRIMARY KEY  (id),

 KEY data_idx (id,owner),

 KEY id (id),

 KEY id_2 (id),

 KEY publishable (publishable),

 KEY description (description)

) ENGINE = MYISAM;

# Dumping data for table 'odm_data'

# Table structure for table 'odm_department'

CREATE TABLE odm_department (

 id int(11) unsigned NOT NULL auto_increment,

 name varchar(255) NOT NULL default '',

 PRIMARY KEY  (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_department'

INSERT INTO odm_department VALUES (NULL,'Information Systems');

# Table structure for table 'odm_dept_perms'

CREATE TABLE odm_dept_perms (

 fid int(11) unsigned default NULL,

 dept_id int(11) unsigned default NULL,

 rights tinyint(4) NOT NULL default '0',

 KEY rights (rights),

 KEY dept_id (dept_id),

 KEY fid (fid)

) ENGINE = MYISAM;

# Dumping data for table 'odm_dept_perms'

# Table structure for table 'odm_dept_reviewer'

CREATE TABLE odm_dept_reviewer (

 dept_id int(11) unsigned default NULL,

 user_id int(11) unsigned default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_dept_reviewer'

INSERT INTO odm_dept_reviewer VALUES (1,1);

# Table structure for table 'odm_log'

CREATE TABLE odm_log (

 id int(11) unsigned NOT NULL default '0',

 modified_on datetime NOT NULL default '0000-00-00 00:00:00',

 modified_by varchar(25) default NULL,

 note text,

 revision varchar(255) default NULL,

 KEY id (id),

 KEY modified_on (modified_on)

) ENGINE = MYISAM;

# Dumping data for table 'odm_log'

# Table structure for table 'odm_rights'

CREATE TABLE odm_rights (

 RightId tinyint(4) default NULL,

 Description varchar(255) default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_rights'

INSERT INTO odm_rights VALUES (0,'none');

INSERT INTO odm_rights VALUES (1,'view');

INSERT INTO odm_rights VALUES (-1,'forbidden');

INSERT INTO odm_rights VALUES (2,'read');

INSERT INTO odm_rights VALUES (3,'write');

INSERT INTO odm_rights VALUES (4,'admin');

# Table structure for table 'odm_user'

CREATE TABLE odm_user (

 id int(11) unsigned NOT NULL auto_increment,

 username varchar(25) NOT NULL default '',

 password varchar(50) NOT NULL default '',

 department int(11) unsigned default NULL,

 phone varchar(20) default NULL,

 Email varchar(50) default NULL,

 last_name varchar(255) default NULL,

 first_name varchar(255) default NULL,

 pw_reset_code char(32) default NULL,

 can_add tinyint(1) NULL DEFAULT 1,

 can_checkin tinyint(1) NULL DEFAULT 1,

 PRIMARY KEY  (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_user'

INSERT INTO odm_user VALUES (NULL,'admin',md5('admin'),1,'5555551212','admin@mailinator.com','User','Admin','', 1, 1);

# Table structure for table 'odm_user_perms'

CREATE TABLE odm_user_perms (

 fid int(11) unsigned default NULL,

 uid int(11) unsigned NOT NULL default '0',

 rights tinyint(4) NOT NULL default '0',

 KEY user_perms_idx (fid,uid,rights),

 KEY fid (fid),

 KEY uid (uid),

 KEY rights (rights)

) ENGINE = MYISAM;

# Dumping data for table 'odm_user_perms'

# New User Defined Fields Table

#

# field_type describes what type of UDF this is. At the momment

# the valid values are:

#

#   1 = Drop down style list

#   2 = Radio Buttons

#

# table_name names the database table where the allow values are listed

#

# display_name is the label shown to the user

CREATE TABLE odm_udf

(

   id  int(11) auto_increment unique,

   table_name  varchar(50),

   display_name    varchar(16),

   field_type  int

) ENGINE = MYISAM;

CREATE TABLE IF NOT EXISTS odm_odmsys

(

   id  int(11) auto_increment unique,

   sys_name  varchar(16),

   sys_value    varchar(255)

) ENGINE = MYISAM;

INSERT INTO odm_odmsys VALUES (NULL,'version','1.3.0');

CREATE TABLE IF NOT EXISTS `odm_settings` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,

`name` VARCHAR( 255 ) NOT NULL ,

`value` VARCHAR( 255 ) NOT NULL ,

`description` VARCHAR( 255 ) NOT NULL ,

`validation` VARCHAR( 255 ) NOT NULL ,

PRIMARY KEY ( `id` ) ,

UNIQUE ( `name` )

) ENGINE = MYISAM;

INSERT INTO `odm_settings` VALUES(NULL, 'title', 'Хранилище документов', 'Это заголовок вкладки в окне браузера', 'maxsize=255');

INSERT INTO `odm_settings` VALUES(NULL, 'authen', 'mysql', 'Проверка подлинности MySQL', '');

INSERT INTO `odm_settings` VALUES(NULL, 'site_mail', 'root@localhost', 'Адрес электронной почты администратора этого сайта', 'email|maxsize=255|req');

INSERT INTO `odm_settings` VALUES(NULL, 'root_id', '1', 'Эта переменная устанавливает пользователю неограниченные права доступа. Он будет иметь доступ ко всем файлам и иметь права на все операции', 'num|req');

INSERT INTO `odm_settings` VALUES(NULL, 'dataDir', '/var/www/document_repository/', 'Расположение хранилища файлов. В идеале оно должно быть вне корневой папки веб-сервера. Убедитесь, что сервер имеет доступ на чтение/запись файлов в этой папке! (Examples: Linux - /var/www/document_repository/ : Windows - c:/document_repository/', 'maxsize=255');

INSERT INTO `odm_settings` VALUES(NULL, 'max_filesize', '5000000', 'Установите максимальный размер загружаемых файлов', 'num|maxsize=255');

INSERT INTO `odm_settings` VALUES(NULL, 'revision_expiration', '90', 'Эта переменная устанавливает период(количество дней), за который документ должен быть пересмотрен', 'num|maxsize=255');

INSERT INTO `odm_settings` VALUES(NULL, 'file_expired_action', '1', 'Условие истечения срока файла. (1)Удаление из списка файлов, пока не продлен срок; (2)Показать в списке файлов, но не проверять; (3)Оповестить проверяющего(email); (4)Ничего не делать', 'num');

INSERT INTO `odm_settings` VALUES(NULL, 'authorization', 'True', 'True/False. Если значение True, каждый документ должен быть рассмотрен администратором, прежде чем его увидят остальные пользователи. Если значение False, то все добавленные файлы заново проверяются и сразу будут в списке', 'bool');

INSERT INTO `odm_settings` VALUES(NULL, 'allow_signup', 'False', 'Разрешить регистрацию?', 'bool');

INSERT INTO `odm_settings` VALUES(NULL, 'allow_password_reset', 'False', 'Разрешить пользователям сброс их забытого пароля?', 'bool');

INSERT INTO `odm_settings` VALUES(NULL, 'theme', 'tweeter', 'Тема оформления', '');

INSERT INTO `odm_settings` VALUES(NULL, 'language', 'russian', 'Язык интерфейса', 'alpha|req');

INSERT INTO `odm_settings` VALUES(NULL, 'base_url', 'http://localhost/docmanager', 'URL сайта. Не обязательно использовать символы \"/\"', 'url');

INSERT INTO `odm_settings` VALUES(NULL, 'max_query', '500', 'Установить максимальное количество строк списка файлов', 'num');

CREATE  TABLE IF NOT EXISTS `odm_filetypes` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,

`type` VARCHAR(255) NOT NULL ,

`active` TINYINT(4) NOT NULL ,

PRIMARY KEY (`id`)

) ENGINE = MYISAM;

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/gif', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'text/html', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'text/plain', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/pdf', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/pdf',1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/x-pdf', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/msword', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/jpeg', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/pjpeg', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/png', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/msexcel', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/msaccess', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'text/richtxt', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/mspowerpoint', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/octet-stream', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/x-zip-compressed', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/x-zip', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/zip', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/tiff', 1);

INSERT INTO `odm_filetypes` VALUES(NUll, 'image/tif', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.ms-powerpoint', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.ms-excel', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.chart', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.chart-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.formula', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.formula-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.graphics', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.graphics-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.image', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.image-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.presentation', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.presentation-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.spreadsheet', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.spreadsheet-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.text', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.text-master', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.text-template', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'application/vnd.oasis.opendocument.text-web', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'text/csv', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'audio/mpeg', 0);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/x-dwg', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/x-dfx', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'drawing/x-dwf', 1);

INSERT INTO `odm_filetypes` VALUES(NULL, 'image/svg', 1);

Приложение Ж3. Информация о пользователях

<?php

//User_class.php - информация о пользователях

if( !defined('User_class') )

{

   define('User_class', 'true', false);

   class User extends databaseData

   {

       var $root_id;

       var $id;

       var $username;

       var $first_name;

       var $last_name;

       var $email;

       var $phone;

       var $department;

       var $pw_reset_code;

       var $can_add;

       var $can_checkin;

        * @param int $id

        * @param PDO $connection

     

       function User($id, PDO $connection)

       {

           $this->root_id = $GLOBALS['CONFIG']['root_id'];

           $this->field_name = 'username';

           $this->field_id = 'id';

           $this->tablename = $GLOBALS['CONFIG']['db_prefix'] . $this->TABLE_USER;

           $this->result_limit = 1; //there is only 1 user with a certain user_name or user_id

           databaseData::setTableName($this->TABLE_USER);

           databaseData::databaseData($id, $connection);

           $query = "

                   SELECT

                       id,

                       username,

                       department,

                       phone,

                       email,

                       last_name,

                       first_name,

                       pw_reset_code,

                       can_add,

                       can_checkin

                   FROM

                       {$GLOBALS['CONFIG']['db_prefix']}user

                   WHERE

                       id = :id";

           $stmt = $connection->prepare($query);

           $stmt->execute(array(':id' => $this->id));

           $result = $stmt->fetch();

           list(

                   $this->id,

                   $this->username,

                   $this->department,

                   $this->phone,

                   $this->email,

                   $this->last_name,

                   $this->first_name,

                   $this->pw_reset_code,

                   $this->can_add,

                   $this->can_checkin

           ) = $result;

       }

       /**

        * Return department name for current user

        * @return string

        */

       function getDeptName()

       {

           $query = "

             SELECT

               d.name

             FROM

               {$GLOBALS['CONFIG']['db_prefix']}department d,

               {$GLOBALS['CONFIG']['db_prefix']}user u

             WHERE

               u.id = :id

             AND

               u.department = d.id";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           $result = $stmt->fetchColumn();

           return $result;

       }

       /*

        * Return department ID for current user

        * @return string

       */

       function getDeptId()

       {

           return $this->department;

       }

       /*

        * Return an array of publishable documents

        * @return array

        * @param object $publishable

       */

       function getPublishedData($publishable)

       {

           $data_published = array();

           $index = 0;

           $query = "

             SELECT

               d.id

             FROM

               {$GLOBALS['CONFIG']['db_prefix']}data d,

               {$GLOBALS['CONFIG']['db_prefix']}user u

             WHERE

               d.owner = :id

             AND

               u.id = d.owner

             AND

               d.publishable = :publishable ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':publishable' => $publishable,

               ':id' => $this->id

           ));

           $result = $stmt->fetchAll();

           foreach($result as $row) {

               $data_published[$index] = $row;

               $index++;

           }

           return $data_published;

       }

       /**

        * Check whether user from object has Admin rights

        * @return Boolean

        */

       function isAdmin()

       {

           if ($this->isRoot())

           {

               return true;

           }

           $query = "

             SELECT

               admin

             FROM

               {$GLOBALS['CONFIG']['db_prefix']}admin

             WHERE

               id = :id

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           $result = $stmt->fetchColumn();

           if($stmt->rowCount() !=1 )

           {

               return false;

           }

           return $result;

       }

       /**

        * Check whether user from object is root

        * @return bool

        */

       function isRoot()

       {

           return ($this->root_id == $this->getId());

       }

       /**

       * @return boolean

       */

       function canAdd()

       {

           if($this->isAdmin()) {

               return true;

           }

           if($this->can_add) {

               return true;

           }

           return false;

       }

       

       /**

       * @return boolean

       */

       function canCheckIn()

       {

           if($this->isAdmin()) {

               return true;

           }

           if($this->can_checkin) {

               return true;

           }

           return false;

       }

       /**

        * @return string

        */

       function getPassword()

       {

           $query = "

             SELECT

               password

             FROM

               $this->tablename

             WHERE

               id = :id

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(':id' => $this->id));

           $result = $stmt->fetchColumn();

           if($stmt->rowCount() !=1 )

           {

               header('Location:' . $GLOBALS['CONFIG']['base_url'] . 'error.php?ec=14');

               exit;

           }

           return $result;

       }

       /**

        * @param string $non_encrypted_password

        * @return bool

        */

       function changePassword($non_encrypted_password)

       {

           $query = "

             UPDATE

               $this->tablename

             SET

               password = md5(:non_encrypted_password)

             WHERE

               id = :id

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':non_encrypted_password'=> $non_encrypted_password,

               ':id' => $this->id

           ));

           return true;

       }

       /**

        * @param string $non_encrypted_password

        * @return bool

        */

       function validatePassword($non_encrypted_password)

       {

           $query = "

             SELECT

               username

             FROM

               $this->tablename

             WHERE

               id = :id

             AND

               password = md5(:non_encrypted_password)

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':non_encrypted_password' => $non_encrypted_password,

               ':id' => $this->id

           ));

           if($stmt->rowCount() == 1) {

               return true;

           } else {

               // Check the old password() style user password

               $query = "

                 SELECT

                   username

                 FROM

                   $this->tablename

                 WHERE

                   id = :id

                 AND

                   password = password(:non_encrypted_password)

               ";

               $stmt = $this->connection->prepare($query);

               $stmt->execute(array(

                   ':non_encrypted_password'=> $non_encrypted_password,

                   ':id' => $this->id

               ));

               if($stmt->rowCount() == 1) {

                   return true;

               }

           }

           return false;

       }

       /**

        * @param string $new_name

        * @return bool

        */

       function changeName($new_name)

       {

           $query = "

             UPDATE

               $this->tablename

             SET

               username = :new_name

             WHERE

               id = :id

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':new_name' => $new_name,

               ':id' => $this->id

           ));

           return true;

       }

      /**

       *   Determine if the current user is a reviewer or not

       *   @return boolean

       */

       function isReviewer()

       {

           // If they are an admin, they can review

           if($this->isAdmin()) {

               return true;

           }

           

           // Lets see if this non-admin user has a department they can review for, if so, they are a reviewer

           $query = "

           SELECT

             dept_id

           FROM

             {$GLOBALS['CONFIG']['db_prefix']}dept_reviewer

           WHERE

             user_id = :id

           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           if($stmt->rowCount() > 0) {

               return true;

           } else {

               return false;

           }

       }

      /**

       * Determine if the current user is a reviewer for a specific ID

       * @param int $file_id

       * @return boolean

       */

       function isReviewerForFile($file_id)

       {

            $query = "SELECT

                           d.id

                     FROM

                           {$GLOBALS['CONFIG']['db_prefix']}data as d,

                           {$GLOBALS['CONFIG']['db_prefix']}dept_reviewer as dr

                     WHERE

                           

                           dr.dept_id = d.department AND

                           dr.user_id = :user_id AND

                           d.department = dr.dept_id AND

                           d.id = :file_id

                           ";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':user_id' => $this->id,

               ':file_id' => $file_id

           ));

           $num_rows = $stmt->rowCount();

           if($num_rows < 1)

           {

               return false;

           }

           return true;

       }

       /**

        * this functions assume that you are an admin thus allowing you to review all departments

        * @return array

        */

       function getAllRevieweeIds()

       {

           if($this->isAdmin())

           {

               $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}$this->TABLE_DATA WHERE publishable = 0";

               $stmt = $this->connection->prepare($query);

               $stmt->execute(array());

               $result = $stmt->fetchAll();

               $file_data = array();

               $index = 0;

               foreach($result as $row) {

                   $file_data[$index] = $row[0];

                   $index++;

               }

               return $file_data;

           }

       }

       

       /**

        * getRevieweeIds - Return an array of files that need reviewing under this person

        * @return array

        */

       function getRevieweeIds()

       {

           if($this->isReviewer())

           {

               // Which departments can this user review?

               $query = "SELECT dept_id FROM {$GLOBALS['CONFIG']['db_prefix']}$this->TABLE_DEPT_REVIEWER WHERE user_id = :id";

               $stmt = $this->connection->prepare($query);

               $stmt->execute(array(

                   ':id' => $this->id

               ));

               $result = $stmt->fetchAll();

               $num_depts = $stmt->rowCount();

               $index = 0;

               // Build the query

               $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}data WHERE (";

               foreach($result as $row) {

                   $dept = $row['dept_id'];

                   if($index != $num_depts -1)

                   {

                       $query = $query . " department = :dept OR ";

                   }

                   else

                   {

                       $query = $query . " department = :dept )";

                   }

                   $index++;

               }

               $query = $query . " AND publishable = 0";

               $stmt = $this->connection->prepare($query);

               $stmt->execute(array(':dept' => $dept));

               $result = $stmt->fetchAll();

               $file_data = array();

               $num_files = $stmt->rowCount();

               for($index = 0; $index< $num_files; $index++)

               {

                   $fid = $result[$index]['id'];

                   $file_data[$index] = $fid;

               }

               return $file_data;

           }

       }

       /**

        * @return array

        */

       function getAllRejectedFileIds()

       {

           $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}$this->TABLE_DATA WHERE publishable = '-1'";

           $stmt = $this->connection->prepare($query);

           $stmt->execute();

           $result = $stmt->fetchAll();

           $file_data = array();

           $num_files = $stmt->rowCount();

           for($index = 0; $index< $num_files; $index++)

           {

               list($fid) = $result[$index];

               $file_data[$index] = $fid;

           }

           return $file_data;

       }

       /**

        * @return array

        */

       function getRejectedFileIds()

       {

           $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}data WHERE publishable = '-1' and owner = :id";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           $result = $stmt->fetchAll();

           $file_data = array();

           $num_files = $stmt->rowCount();

           for($index = 0; $index< $num_files; $index++)

           {

               list($fid) = $result[$index];

               $file_data[$index] = $fid;

           }

           return $file_data;

       }

       /**

        * @return array

        */

       function getExpiredFileIds()

       {

           $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}data WHERE status = -1 AND owner = :id";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           $result = $stmt->fetchAll();

           $len = $stmt->rowCount();

           $file_data = array();

           for($index = 0; $index< $len; $index++)

           {

               list($fid) = $result[$index];

               $file_data[$index] = $fid;

           }

           return $file_data;

       }

       /**

        * @return int

        */

       function getNumExpiredFiles()

       {

           $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}data WHERE status =- 1 AND owner = :id";

           $stmt = $this->connection->prepare($query);

           $stmt->execute(array(

               ':id' => $this->id

           ));

           return $stmt->rowCount();

       }

       /**

        * @return mixed

        */

       function getEmailAddress()

       {

           return $this->email;

       }

       /**

        * @return mixed

        */

       function getPhoneNumber()

       {

           return $this->phone;

       }

       /**

        * /Return full name array where array[0]=firstname and array[1]=lastname

        * @return mixed

        */

       function getFullName()

       {

           $full_name[0] = $this->first_name;

           $full_name[1] = $this->last_name;

           return $full_name;

       }

       /**

        * Return username of current user

        * @return mixed

        */

       function getUserName()

       {

           return $this->username;

       }

       /**

        * Return list of checked out files to root

        * @return array

        */

       function getCheckedOutFiles()

       {

           if ($this->isRoot())

           {

               $query = "SELECT id FROM {$GLOBALS['CONFIG']['db_prefix']}data WHERE status > 0";

               $stmt = $this->connection->prepare($query);

               $stmt->execute();

               $result = $stmt->fetchAll();

               $len = $stmt->rowCount();

               $file_data = array();

               for ($index = 0; $index < $len; $index++)

               {

                   list($fid) = $result[$index];

                   $file_data[$index] = $fid;

               }

               return $file_data;

           }

       }

       /**

        * getAllUsers - Returns an array of all the active users

        * @param $pdo

        * @return array

        */

       public static function getAllUsers($pdo)

       {

           $query = "SELECT id, last_name, first_name FROM {$GLOBALS['CONFIG']['db_prefix']}user ORDER BY last_name";

           $stmt = $pdo->prepare($query);

           $stmt->execute();

           $result = $stmt->fetchAll();

           foreach($result as $row) {

               $userListArray[] = $row;

           }

           return $userListArray;

       }

   }

}


Изм.

Лист

№ докум.

Подп.

Дата

Лист

3

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Пров.

 

Н. Контр.

Утв.

в

д.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

4

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

6

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

8

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

тв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

14

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Локальная сеть

База данных

Сервер (с СУБД)

    Запрос данных

Возвращаемые результаты запроса

Клиент 3

Клиент 2

Клиент 1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

21

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

30

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

39

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

52

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

61

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

62

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Пояснительная записка

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

64

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

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

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

67

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Диаграмма деятельности

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

70

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

73

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Диаграмма развертывания

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

75

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

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

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

77

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Схема БД

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

№ докум.

Подп.

Дата

Лист

79

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Схема БД

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

81

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Схема БД

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

№ докум.

Подп.

Дата

Лист

90

ПГУ 1.09.03.01.13.001 ПЗ

Разраб.

Исляев Р.С.

Пров.

Заварзин С.Г.

 

Н. Контр.

Заварзин С.Г.

чин А.В.

Утв.

в

д.

Пащенко Д.В.

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

Схема БД

Литер

Листов

109

ФВТ

гр. 11ВВ1

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ

Изм.

Лист

 докум.

Подпись

Дата

Лист

ПГУ 1.09.03.01.13.001 ПЗ



 

Другие похожие работы, которые могут вас заинтересовать.
11340. Программное обеспечение автоматизированной системы управления документами предприятия 6.77 MB
  В связи с ростом развития технологий, предприятию все больше необходима автоматизация документооборота. Причин этому много. Во-первых, информацию необходимо обрабатывать как можно быстрее и качественнее, подчас информационные потоки не менее важны, чем материальные. Во-вторых, утеря информации или ее попадание в чужие руки может обойтись весьма дорого
11979. Математическое, алгоритмическое и программное обеспечение бесплатформенной инерциальной навигационной системы БИНС-05 513.35 KB
  Разработано математическое и алгоритмическое обеспечение бесплатформенной инерциальной навигационной системы БИНС предназначенное для высокоточного решения задач инерциальной ориентации и навигации объекта в географической системе координат в автономном и корректируемом режимах. БИНС имеет в своем составе три акселерометра пространственный измеритель абсолютной угловой скорости датчики высоты и вертикальной скорости и бортовой вычислитель БЦВМ. Разработанные алгоритмы ориентации БИНС имеют методические погрешности 108105 град час...
15279. Программное обеспечение информационной системы для расширения функциональности социальных сетей «Anonym» 439.66 KB
  Обоснование выбора языка программирования для реализации системы. Социальная сеть платформа онлайн-сервис или веб-сайт предназначенные для построения отражения и организации социальных взаимоотношений визуализацией которых являются социальные графы. сетей возможностей для дальнейшего развития и продвижения приложения очень много....
8333. История развития вычислительной техники. Классификация компьютеров. Состав вычислительной системы. Аппаратное и программное обеспечение. Классификация служебных и прикладных программных средств 25.49 KB
  Состав вычислительной системы. Состав вычислительной системы Рассматривают аппаратную и программную конфигурацию т. Интерфейсы любой вычислительной системы можно условно разделить на последовательные и параллельные. Системный уровень переходный обеспечивающий взаимодействие прочих программ компьютерной системы как с программами базового уровня так и непосредственно с аппаратным обеспечением в частности с центральным процессором.
7533. Программное обеспечение 71.79 KB
  Антивирусы Как ни странно но до сих пор нет точного определения что же такое вирус. либо присущи другим программам которые никоим образом вирусами не являются либо существуют вирусы которые не содержат указанных выше отличительных черт за исключением возможности распространения. макровирусы заражают файлы документов Word и Excel. Существует большое количество сочетаний например файловозагрузочные вирусы заражающие как файлы так и загрузочные сектора дисков.
9859. Лингвистическое и программное обеспечение систем 1.39 MB
  Для всех семантических сетей справедливо разделение по арности и количеству типов отношений. Неоднородные сети представляют больший интерес для практических целей но и большую сложность для исследования. По размеру: Для решения конкретных задач например тех которые решают системы искусственного интеллекта. Семантическая сеть отраслевого масштаба должна служить базой для создания конкретных систем не претендуя на всеобщее значение.
9147. Аппаратные средства и программное обеспечение 11.81 KB
  Аппаратные средства. Центральный процессор и его режимы работы. Мультипроцессорная обработка. Расслоение памяти. Регистр перемещения. Прерывания и опрос состояний. Буферизация. Защита памяти. Периферийные устройства и их режимы. Каналы ввода-вывода. Захват цикла памяти. Относительная адресация. Виртуальная память. Прямой доступ к памяти. Иерархия памяти.
9083. Программное обеспечение. Назначение и классификация 71.79 KB
  Антивирусы Как ни странно но до сих пор нет точного определения что же такое вирус. либо присущи другим программам которые никоим образом вирусами не являются либо существуют вирусы которые не содержат указанных выше отличительных черт за исключением возможности распространения. макровирусы заражают файлы документов Word и Excel. Существует большое количество сочетаний например файловозагрузочные вирусы заражающие как файлы так и загрузочные сектора дисков.
2727. Алгоритм и программное обеспечение декодирования свёрточных турбокодов 164.99 KB
  Рост популярности duo binry турбокодов отсутствие доступных средств их декодирования определяет высокую актуальность разработки декодера duo binry свёрточных турбокодов. В результате чего разработан алгоритм декодера обеспечивающий необходимую исправляющую способность и имеющий более низкую чем алгоритм на основе структурной схемы приведённой в
10480. Программное обеспечение компьютера. Виды прикладных программ 15.53 KB
  Меняя программы для компьютера можно превратить его в рабочее место бухгалтера или конструктора статистика или дизайнера редактировать на нем документы или играть в какуюнибудь игру. Классификация программ Программы работающие на компьютере можно разделить на три категории: прикладные программы непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов рисование картинок просмотр видео и т.; системные программы выполняющие различные вспомогательные функции например создание копий...
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.