Эмуляция системы электронного документооборота

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

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

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

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

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

Содержание

  • Введение
  • 1. Постановка задачи
  • 2. Описание и анализ предметной области
  • 2.1 Описание предметной области
  • 2.2 Анализ существующего информационного обеспечения
  • 2.3 Формирование и анализ требований
  • 3. Построение концептуальной модели
  • 4. Проектирование логической структуры БД
  • 5. Программная реализация
  • 5.1 Выбор программного средства
  • 5.2 Организация редактирования данных
  • 5.3 Разграничение прав пользователей
  • 6. Тестирование и отладка программного средства
  • Заключение
  • Список литературы
  • Приложения

Введение

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

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

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

Однако их можно условно классифицировать по форме хранения: на электронные документы и бумажные. Существует мнение, что в настоящее время только около 30% всей корпоративной информации хранится в электронном виде (как в структурированном в базах данных, так и в неструктурированном). Вся остальная информация (около 70%) хранится на бумаге, создавая немалые трудности при ее поиске. Тем не менее, это соотношение постепенно меняется в пользу электронной формы хранения (в частности, через развитие электронных архивов). Вряд ли, конечно, когда-нибудь все документы станут только электронными, однако, несомненно, что электронная форма хранения документов будет преобладать. При этом под термином электронный документ в рассматриваемом контексте обычно понимается текстовый файл, документ MS Word, электронная таблица MS Excel, графический файл, несколько взаимосвязанных файлов разных форматов (так называемый составной документ) и др.

1. Постановка задачи

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

1. Удобный, понятный, компактный интерфейс.

2. Наличие форм для ввода, вывода данных.

3. Возможность инсталляции приложения.

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

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

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

ь средств групповой;

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

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

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

2.2 Анализ существующего информационного обеспечения

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

1С: Документооборот 8

Интерфейс программы представлен на рис. 1.

Программа 1С: Документооборот 8 позволяет реализовывать:

· работу с системой через веб-браузер;

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

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

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

Рис.1 Интерфейс 1С: Документооборот 8

IBMLotusNotes

Интерфейс программы представлен на рис.2.

Основные функции, входящие в базовую поставку LotusNotes/DominoStandard версии 8.5:

· среда исполнения приложений автоматизации групповой деятельности

· криптозащита (шифрование и электронная подпись)

· персональный и групповой календари, планировщик задач

электронный документооборот программное база

· набор офисных приложений IBM LotusSymphony (текстовый редактор, электронные таблицы, подготовка презентаций)

· клиент среды обмена мгновенными сообщениями (Instantmessenger) LotusSametime (сервер Sametime является самостоятельным продуктом)

· веб-браузер

· веб-сервер

· сервер каталогов LDAP

· сервер приложений

· службы интеграции данных DECS (Domino Enterprise connection services)

Рис. 2. Интерфейс программы IBMLotusNotes

МОТИВ

Интерфейс программы представлен на рис.3.

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

Некоторые возможности, которые дает МОТИВ

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

§ коллективная работа над проектами и документами

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

§ возможность коллективной работы над документами

§ улучшение контроля над исполнением документов

§ повышение безопасности документов

§ повышение сохранности документов

Рис.3. Интерфейс программы МОТИВ

DocsVision

Интерфейс программы представлен на рис.4.

Система DocsVision - платформа для автоматизации управления документами и бизнес-процессами предприятий российской разработки, активно внедряемая на предприятиях бывшего СССР с 2005 года

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

· создание электронных архивов

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

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

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

Рис.4. Интерфейс программы DocsVision

2.3 Формирование и анализ требований

Проанализируем поставленную задачу с учётом всех требований, предъявляемых к работе:

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

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

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

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

а) Разграничение прав групп пользователей

б) Отправка документов на утверждение.

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

г) Должны быть часы

д) Экспорт и импорт данных

3. Построение концептуальной модели

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

ER-диаграмма разрабатываемой информационной системы приведена на рис.5.

Рис.5. ER-диаграмма информационной системы

"Эмуляция СЭД"

4. Проектирование логической структуры БД

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

Рассмотрим подробно каждую из сущностей спроектированной базы дан-ных и опишем их.

Users - зарегистрированные пользователи

DocUsers - документы пользователей

Documents - документы

Task - поручения секретарю

5. Программная реализация

5.1 Выбор программного средства

Создание базы данных будет осуществляться в среде MSAccess 2010. Такой выбор был сделан ввиду большой распространённости пакета MSOffice, с которым поставляется Access, простоты проектирования баз данных при сохранении широты возможностей.

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

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

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

5.2 Организация редактирования данных

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

Рис. 6. Отправка документа на утверждение

При нажатии на кнопку Создать заполняются соответствующие поля в БД

В таблице Documents создаётся запись информации о документе, а в таблице DocUsers заполняется информация о том кому этот документ отсылается на утверждение.

Код выполняющийся при нажатии на кнопку "Создать":

s: =ExtractFilePath (paramstr (0));

w: =CreateOleObject ('Word. Application');

w. visible: =true;

w. Documents. add;

w. ActiveDocument. SaveAs (s+'\'+edit1. Text+'. doc');

MainFormSek. ADOQuery3. Insert;

MainFormSek. ADOQuery3 ['Name_Doc']: =edit1. Text;

MainFormSek. ADOQuery3 ['Type_Doc']: =ComboBox1. Text;

MainFormSek. ADOQuery3 ['Primechanie']: =Memo1. Text;

MainFormSek. ADOQuery3 ['Date_Create']: =strtoDateTime (Edit2. Text);

MainFormSek. ADOQuery3 ['Srok']: =strtoDate (MaskEdit1. Text);

MainFormSek. ADOQuery3 ['Path']: =s+'\'+edit1. Text+'. doc';

MainFormSek. ADOQuery3 ['Stat']: ='Неутверждён';

MainFormSek. ADOQuery3 ['ID_Sek']: =AuthForm. KeyUser;

MainFormSek. ADOQuery3. Post;

for i: = 0 to (CheckListBox1. Items. Count - 1) do

if (CheckListBox1. Checked [i]) then

begin

ADOTable2. Insert;

if ADOTable3. Locate ('Login',CheckListBox1. Items. Strings [i], []) then

begin

ADOTable2 ['id_user']: = ADOTable3 ['id_user'];

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Append ('SELECT Top 1 Key ' +

'FROM Documents ' +

'Order by Key Desc');

ADOQuery1. Open;

ADOQuery1. Open;

ADOTable2 ['id_document']: = inttostr (ADOQuery1 ['Key']);

ADOTable2 ['Status']: = '1';

ADOTable2. Post;

end;

end;

MainFormSek. ADOQuery3. Active: =false;

MainFormSek. ADOQuery3. Active: =true;

MainFormSek. ADOQuery3. Fields [0]. Visible: =false;

MainFormSek. ADOQuery3. Fields [6]. Visible: =false;

MainFormSek. ADOQuery3. Fields [7]. Visible: =false;

MainFormSek. ADOQuery3. Fields [1]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [2]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [3]. visible: =false;

MainFormSek. ADOQuery3. Fields [4]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [5]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [8]. DisplayWidth: =20;

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

Рис.7. Главное окно руководителя 1

Делаем двойной щелчок на "Принятые”:

Рис. 8. Главное окно руководителя 2

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

§ Открыть документ для просмотра

§ Утвердить

§ Отклонить с указанием комментарием к доработке

Рис. 9. Информация о документе

Код, выполняющийся по нажатии на кнопку Утвердить

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. Name: ='p';

ADOQuery1. Parameters [0]. Value: =MainFormRuk. ADOQuery3 ['Key'];

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [1]. Name: ='p2';

ADOQuery1. Parameters [1]. Value: =AuthForm. KeyUser;

ADOQuery1. SQL. Add ('Select * From DocUsers Where (id_document=: p) and (id_user=: p2) ');

ADOQuery1. Open;

ADOQuery1. Edit;

ADOQuery1 ['Status']: ='0';

ADOQuery1. Post;

MainFormRuk. ListBoxLoad;

При нажатии на кнопке Отклонить открывается следующее окно:

Рис.10. Причина отклонения

Код, выполняющийся при нажатии кнопки ОК:

Form1. ADOQuery1. Close;

Form1. ADOQuery1. SQL. Clear;

Form1. ADOQuery1. Parameters. Add;

Form1. ADOQuery1. Parameters [0]. Name: ='p';

Form1. ADOQuery1. Parameters [0]. Value: =MainFormRuk. ADOQuery3 ['Key'];

Form1. ADOQuery1. Parameters. Add;

Form1. ADOQuery1. Parameters [1]. Name: ='p2';

Form1. ADOQuery1. Parameters [1]. Value: =AuthForm. KeyUser;

Form1. ADOQuery1. SQL. Add ('Select * From DocUsers Where (id_document=: p) and (id_user=: p2) ');

Form1. ADOQuery1. Open;

Form1. ADOQuery1. Edit;

Form1. ADOQuery1 ['Status']: ='2';

Form1. ADOQuery1 ['PrichOtkl']: =Memo1. Text;

Form1. ADOQuery1. Post;

MainFormRuk. ListBoxLoad;

Close;

5.3 Разграничение прав пользователей

В данной программе реализовано разграничение прав на два типа пользователей:

§ Руководитель

§ Секретарь

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

Рис.11. Главное окно руководителя

Рис.12. Главное окно секретаря

6. Тестирование и отладка программного средства

Отладка и верификация программы представляют собой очень важную часть процесса разработки программы. Отладка заключается в устранении ошибок программирования, ошибок перевода алгоритма на язык программирования. Отладка - это деятельность, направленная на обнаружение и исправление ошибок в программе с использованием процессов выполнения его программ. Тестирование программы - это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной ошибки. Другими словами: Отладка = Тестирование + Поиск ошибок + Редактирование. Верификация - это доказательство того, что программа работает "правильно", дает правильный результат. Для этого разрабатывается система тестов, которые могут представлять собой специально подобранные наборы параметров, для которых задача может быть решена точно. Это могут быть, например, какие-нибудь предельные случаи. Если результат, полученный с помощью программы, с ожидаемым, есть основание полагать, что программа работает корректно.

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

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

Заключение

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

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

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

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

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

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

2. Увеличение объема документооборота.

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

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

1. Бекаревич Ю.Б. MSAccess 2000 за 30 занятий: практ. Пособие. - СПб.: БХВ - Петербург, 2000. - 492 с.

2. Флёнов М.Е. Библия Delphi. - СПб.: БХВ - Петербург, 2004. - 880с.

3. Хомоненко А.Д. и др. Delphi 7. - СПб.: БХВ - Петербург, 2008. - 1216 с.: ил.

4. Корняков В.Н. Программирование документов и приложений MSOffice в Delphi. - СПб.: БХВ - Петербург, 2005. - 496с.: ил.

5. ГрибачевК.Г. Delphi и Model Driven Architecture. Разработака приложений БД. - СПб.: Питер, 2004. - 348с.: ил.

Приложения

Приложение 1

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

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

Далее, в зависимости от вашей должности, открывается окно программы:

либо

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

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

Приложение 2

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

unit Authorization;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, ADODB, XPMan;

type

TAuthForm = class (TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

StatCmB: TComboBox;

LogCmB: TComboBox;

PassEdit: TEdit;

SavePasChBox: TCheckBox;

Button1: TButton;

Button2: TButton;

ADOConnection1: TADOConnection;

ADOQuery1: TADOQuery;

XPManifest1: TXPManifest;

procedureSavePasChBoxClick (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedureFormCreate (Sender: TObject);

procedureStatCmBChange (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedureLogCmBChange (Sender: TObject);

private

{ Private declarations }

public

KeyUser: integer;

{ Public declarations }

end;

var

AuthForm: TAuthForm;

implementation

usesMainRuk, MainSek, ChangePassword;

{$R *. dfm}

procedureTAuthForm. SavePasChBoxClick (Sender: TObject);

begin

if (SavePasChBox. Checked = True) then

PassEdit. PasswordChar: = #0

else

PassEdit. PasswordChar: = '*';

end;

procedure TAuthForm. Button1Click (Sender: TObject);

var

SavePassword, Password: string;

begin

aDOQuery1. Close;

AdoQuery1. SQL. Clear;

AdoQuery1. Parameters. Add;

AdoQuery1. Parameters [0]. Name: ='p';

AdoQuery1. Parameters [0]. Value: =KeyUser;

AdoQuery1. SQL. Add ('Select * From Users Where id_user=: p');

AdoQuery1. Open;

Password: =AdoQuery1 ['Password'];

if (PassEdit. Text = Password) then

begin

if statCmb. Text='Руководитель' then

begin

Application. CreateForm (TMainFormRuk, MainFormRuk);

MainFormRuk. StartMes. Caption: =AdoQuery1 ['Login'];

MainFormRuk. Show;

AuthForm. Hide;

end

else

begin

Application. CreateForm (TMainFormSek, MainFormSek);

MainFormSek. StartMes. Caption: =AdoQuery1 ['Login'];

MainFormSek. Show;

AuthForm. Hide;

end;

end

else

Showmessage ('Неверныйпароль');

end;

{begin

If (StatCmB. Text = '') then

ShowMessage ('Введите исходные данные! ')

else

AuthForm. Visible: = False;

If (StatCmB. Text = 'Руководитель') then

begin

MainFormRuk. Visible: = True;

MainFormRuk. StartMes. Caption: = 'Пользователь: ';

If (AuthForm. LogCmB. Text = 'ЗиминН.В. ') then

MainFormRuk. StartMes. Caption: = MainFormRuk. StartMes. Caption + 'ЗиминНиколайВладимирович';

If (AuthForm. LogCmB. Text = 'ЛожкинА.М. ') then

MainFormRuk. StartMes. Caption: = MainFormRuk. StartMes. Caption + 'ЛожкинАлександрМихайлович';

If (AuthForm. LogCmB. Text = 'СидоровД.Ю. ') then

MainFormRuk. StartMes. Caption: = MainFormRuk. StartMes. Caption + 'СидоровДенисЮрьевич';

end;

If (StatCmB. Text = 'Секретарь') then

begin

MainFormSek. Visible: = True;

MainFormSek. StartMes. Caption: = 'Пользователь: ';

If (AuthForm. LogCmB. Text = 'ИвановаЛ.И. ') then

MainFormSek. StartMes. Caption: = MainFormSek. StartMes. Caption + 'ИвановаЛарисаИвановна';

If (AuthForm. LogCmB. Text = 'ПетроваМ.Н. ') then

MainFormSek. StartMes. Caption: = MainFormSek. StartMes. Caption + 'ПетроваМаринаНиколаевна';

end;

end; }

procedureTAuthForm. FormCreate (Sender: TObject);

var s: string;

begin

StatCmB. Items. Add ('Руководитель');

StatCmB. Items. Add ('Секретарь');

{AuthForm. ADOConnection1. Close;

s: =ExtractFilePath (paramstr (0));

AuthForm. ADOConnection1. ConnectionString: ='Provider=Microsoft. Jet. OLEDB.4.0; '+

'User ID=Adminata Source='+

s+'\Users. mdb'+

'; Mode=Share Deny None; Extended'+

' Properties=""; Jet OLEDB: System' +

' database=""; Jet OLEDB: Registry '+

'Path=""; JetOLEDB: Database '+

'Password=""; JetOLEDB: Engine '+

'Type=5; JetOLEDB: Database Locking '+

'Mode=1; JetOLEDB: Global Partial Bulk '+

'Ops=2; JetOLEDB: Global Bulk Transactions=1; '+

'Jet OLEDB: New Database Password=""; Jet OLEDB: Create '+

'System Database=False; JetOLEDB: Encrypt Database=False; '+

'Jet OLEDB: Don''t Copy Locale on Compact=False; Jet OLEDB: '+

'Compact Without Replica Repair=False; Jet OLEDB: SFP=False';

AuthForm. ADOConnection1. Open; }

end;

procedureTAuthForm. StatCmBChange (Sender: TObject);

begin

LogCmB. Clear;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. name: = 'p';

ADOQuery1. parameters [0]. value: = StatCmB. text;

AdoQuery1. sql. add ('Select Login From Users Where Status =: p');

Adoquery1. Open;

while not AdoQuery1. Eof do

begin

LogCmB. Items. Add (AdoQuery1 ['Login']);

AdoQuery1. next;

end;

LogCmB. ItemIndex: = 0;

end;

procedure TAuthForm. Button2Click (Sender: TObject);

begin

if (LogCmB. Text = '') then

ShowMessage ('Выберитепользователя! ')

else

ChPassForm. Visible: = True

end;

procedureTAuthForm. LogCmBChange (Sender: TObject);

begin

KeyUser: = 0;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. Name: ='p';

ADOQuery1. Parameters [0]. Value: =Logcmb. Text;

ADOQuery1. SQL. Add ('Select id_user From Users Where login=: p');

ADOQuery1. Open;

KeyUser: =AdoQuery1 ['id_user'];

end;

end.

--------------------------------------------------------------------

--------------------------------------------------------------------

unitMainRuk;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Menus, StdCtrls, XPMan, DB, ADODB, Grids, DBGrids;

type

TMainFormRuk = class (TForm)

TimePan: TPanel;

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

F21: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

F11: TMenuItem;

N4: TMenuItem;

StartMes: TLabel;

ListBox1: TListBox;

DBGrid1: TDBGrid;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

Button1: TButton;

XPManifest1: TXPManifest;

ADOQuery2: TADOQuery;

ADOQuery3: TADOQuery;

procedure Timer1Timer (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure F21Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure ListBox1DblClick (Sender: TObject);

procedure DBGrid1DblClick (Sender: TObject);

Procedure ListBoxLoad;

procedureFormCreate (Sender: TObject);

procedure F11Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainFormRuk: TMainFormRuk;

implementation

uses Authorization, About, NewTask, Unit1, Help;

{$R *. dfm}

Procedure TMainFormRuk. ListBoxLoad;

varstr, str2: string;

begin

ListBox1. Clear;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Prepared;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. Name: = 'p1';

ADOQuery1. Parameters [0]. Value: = AuthForm. KeyUser;

ADOQuery1. SQL. Add ('Select (count (*)) as ct ' +

'From DocUsers ' +

'Where id_user=: p1 and Status="0"');

ADOQuery1. Open;

str: = ADOQuery1 ['ct'];

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Prepared;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. Name: ='p1';

ADOQuery1. Parameters [0]. Value: =AuthForm. KeyUser;

ADOQuery1. SQL. Add ('Select (count (*)) as ct ' +

'From DocUsers ' +

'Where id_user=: p1 and Status ="1" ');

ADOQuery1. Open;

str2: =ADOQuery1 ['ct'];

ListBox1. Items. Add ('Принятые ('+str2+') ');

ListBox1. Items. Add ('Утвержденные ('+str+') ');

end;

procedure TMainFormRuk. Timer1Timer (Sender: TObject);

begin

Timepan. Caption: = TimeToStr (Time);

end;

procedure TMainFormRuk. N2Click (Sender: TObject);

begin

Application. Terminate

end;

procedure TMainFormRuk. F21Click (Sender: TObject);

begin

MainFormRuk. Visible: = False;

AuthForm. Visible: = True;

end;

procedure TMainFormRuk. N4Click (Sender: TObject);

begin

AbForm. Visible: = True;

end;

procedure TMainFormRuk. Button1Click (Sender: TObject);

begin

NewTaskForm. ADOQuery1. Close;

NewTaskForm. ADOQuery1. SQL. Clear;

NewTaskForm. ADOQuery1. SQL. Add ('Select * From Users Where Status="Секретарь"');

NewTaskForm. ADOQuery1. Open;

while not (NewTaskForm. ADOQuery1. Eof) do

begin

NewTaskForm. KomuCmB. Items. Add (NewTaskForm. ADOQuery1 ['Login']);

NewTaskForm. ADOQuery1. Next;

end;

NewTaskForm. KomuCmB. ItemIndex: =0;

NewTaskForm. Visible: = True;

end;

procedure TMainFormRuk. ListBox1DblClick (Sender: TObject);

begin

if ListBox1. Selected [0] then

begin

Form1. Button1. enabled: =true;

Form1. Button3. enabled: =true;

ADOQuery3. Close;

ADOQuery3. SQL. Clear;

ADOQuery3. Parameters. Add;

ADOQuery3. Parameters [0]. Name: ='p';

ADOQuery3. Parameters [0]. Value: =AuthForm. KeyUser;

ADOQuery3. SQL. Add ('Select * From Documents Where Key in (Select id_document ' +

'From DocUsers ' +

'Where id_User=: p and Status="1") ');

ADOQuery3. open;

ADOQuery3. Fields [0]. Visible: =false;

ADOQuery3. Fields [1]. DisplayWidth: =20;

ADOQuery3. Fields [2]. DisplayWidth: =20;

ADOQuery3. Fields [3]. visible: =false;

ADOQuery3. Fields [4]. DisplayWidth: =20;

ADOQuery3. Fields [5]. DisplayWidth: =20;

ADOQuery3. Fields [6]. Visible: =false;

end;

if ListBox1. Selected [1] then

begin

Form1. Button1. enabled: =false;

Form1. Button3. enabled: =false;

ADOQuery3. Close;

ADOQuery3. SQL. Clear;

ADOQuery3. Parameters. Add;

ADOQuery3. Parameters [0]. Name: ='p';

ADOQuery3. Parameters [0]. Value: =AuthForm. KeyUser;

ADOQuery3. SQL. Add ('Select * From Documents Where Key in (Select id_document ' +

'From DocUsers ' +

'Where id_User=: p and Status="0") ');

ADOQuery3. open;

ADOQuery3. Fields [0]. Visible: =false;

ADOQuery3. Fields [1]. DisplayWidth: =20;

ADOQuery3. Fields [2]. DisplayWidth: =20;

ADOQuery3. Fields [3]. visible: =false;

ADOQuery3. Fields [4]. DisplayWidth: =20;

ADOQuery3. Fields [5]. DisplayWidth: =20;

ADOQuery3. Fields [6]. Visible: =false;

end;

end;

procedure TMainFormRuk. DBGrid1DblClick (Sender: TObject);

begin

Form1. Edit1. text: =MainFormRuk. ADOQuery3 ['Name_Doc'];

Form1. Edit2. text: =MainFormRuk. ADOQuery3 ['Type_Doc'];

Form1. Edit3. text: =MainFormRuk. ADOQuery3 ['Date_Create'];

Form1. Edit4. text: =MainFormRuk. ADOQuery3 ['Srok'];

Form1. memo1. text: =MainFormRuk. ADOQuery3 ['Primechanie'];

Form1. ShowModal;

end;

procedureTMainFormRuk. FormCreate (Sender: TObject);

begin

ListBoxLoad;

end;

procedure TMainFormRuk. F11Click (Sender: TObject);

begin

HelpForm. Visible: = True;

end;

end.

-----------------------------------------------------------

-----------------------------------------------------------

unitMainSek;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Menus, StdCtrls, DB, ADODB, Grids, DBGrids, ShellApi,

XPMan, ComCtrls;

type

TMainFormSek = class (TForm)

TimePan: TPanel;

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

F21: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

F11: TMenuItem;

N4: TMenuItem;

StartMes: TLabel;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

Button1: TButton;

XPManifest1: TXPManifest;

ADOQuery2: TADOQuery;

ADOQuery3: TADOQuery;

ADOTable1: TADOTable;

DBGrid1: TDBGrid;

PopupMenu1: TPopupMenu;

N5: TMenuItem;

procedure F21Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedureFormCreate (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure F11Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainFormSek: TMainFormSek;

implementation

uses Authorization, About,NewDoc, Unit3, Help;

{$R *. dfm}

procedure TMainFormSek. F21Click (Sender: TObject);

begin

MainFormSek. Visible: = False;

AuthForm. Visible: = True;

end;

procedure TMainFormSek. N2Click (Sender: TObject);

begin

Application. Terminate;

end;

procedure TMainFormSek. N4Click (Sender: TObject);

begin

AbForm. Visible: = True;

end;

procedure TMainFormSek. Button1Click (Sender: TObject);

begin

frmNewDoc. Edit2. Text: =DateTimeToStr (Now);

frmNewDoc. ADOQuery1. Close;

frmNewDoc. ADOQuery1. SQL. Clear;

frmNewDoc. ADOQuery1. SQL. Add ('Select * From Users Where Status="Руководитель"');

frmNewDoc. ADOQuery1. Open;

while not (frmNewDoc. ADOQuery1. Eof) do

begin

frmNewDoc. CheckListBox1. Items. Add (frmNewDoc. ADOQuery1 ['Login']);

frmNewDoc. ADOQuery1. Next;

end;

frmNewDoc. showmodal;

end;

procedure TMainFormSek. Timer1Timer (Sender: TObject);

begin

TimePan. Caption: = TimeToStr (Time);

end;

procedureTMainFormSek. FormCreate (Sender: TObject);

varm,n,k: integer;

begin

ADOQuery3. Close;

ADOQuery3. SQL. Clear;

ADOQuery3. Prepared;

ADOQuery3. Parameters. Add;

ADOQuery3. Parameters [0]. Name: = 'p1';

ADOQuery3. Parameters [0]. Value: = AuthForm. KeyUser;

ADOQuery3. SQL. Add ('Select *' +

'From Documents ' +

'Where ID_Sek=: p1');

ADOQuery3. Open;

n: =0; k: =0; m: =0;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. Prepared;

ADOQuery1. Parameters. Add;

ADOQuery1. Parameters [0]. Name: = 'p1';

ADOQuery1. Parameters [0]. Value: = AuthForm. KeyUser;

ADOQuery1. SQL. Add ('Select *' +

'From Documents ' +

'Where ID_Sek=: p1');

ADOQuery1. Open;

while not ADOQuery1. Eof do

begin

ADOQuery2. Close;

ADOQuery2. SQL. Clear;

ADOQuery2. Parameters. Add;

ADOQuery2. Parameters [0]. Name: ='p';

ADOQuery2. Parameters [0]. Value: =ADOQuery1 ['Key'];

ADOQuery2. SQL. Add ('Select * From DocUsers Where id_document=: p');

ADOQuery2. Open;

while not ADOQuery2. Eof do

begin

if ADOQuery2 ['Status'] ='0' then

inc (m);

if ADOQuery2 ['Status'] ='1' then

inc (n);

if ADOQuery2 ['Status'] ='2' then

inc (k);

ADOQuery2. Next;

end;

ADOQuery1. Edit;

if (n+k) =0 then

ADOQuery1 ['Stat']: ='Утверждено'

else

ADOQuery1 ['Stat']: ='Неутверждено';

ADOQuery1. Post;

ADOQuery1. Next;

end;

ADOQuery3. Active: =false;

ADOQuery3. Active: =true;

ADOQuery3. Fields [0]. Visible: =false;

ADOQuery3. Fields [6]. Visible: =false;

ADOQuery3. Fields [7]. Visible: =false;

ADOQuery3. Fields [1]. DisplayWidth: =20;

ADOQuery3. Fields [2]. DisplayWidth: =20;

ADOQuery3. Fields [3]. visible: =false;

ADOQuery3. Fields [4]. DisplayWidth: =20;

ADOQuery3. Fields [5]. DisplayWidth: =20;

ADOQuery3. Fields [8]. DisplayWidth: =20;

end;

procedure TMainFormSek. N5Click (Sender: TObject);

begin

Form3. Memo1. Clear;

Form3. Memo1. Lines. Add ('Заметкиоставленныеруководителями');

Form3. ADOQuery1. Close;

Form3. ADOQuery1. SQL. Clear;

Form3. ADOQuery1. Prepared;

Form3. ADOQuery1. Parameters. Add;

Form3. ADOQuery1. Parameters [0]. Name: = 'p1';

Form3. ADOQuery1. Parameters [0]. Value: = AuthForm. KeyUser;

Form3. ADOQuery1. SQL. Add ('Select *' +

'From Documents ' +

'Where ID_Sek=: p1');

Form3. ADOQuery1. Open;

while not Form3. ADOQuery1. Eof do

begin

Form3. ADOQuery2. Close;

Form3. ADOQuery2. SQL. Clear;

Form3. ADOQuery2. Parameters. Add;

Form3. ADOQuery2. Parameters [0]. Name: ='p';

Form3. ADOQuery2. Parameters [0]. Value: =Form3. ADOQuery1 ['Key'];

Form3. ADOQuery2. SQL. Add ('Select * From DocUsers Where id_document=: p');

Form3. ADOQuery2. Open;

while not Form3. ADOQuery2. Eof do

begin

Form3. Memo1. Lines. Add (Form3. ADOQuery2 ['PrichOtkl']);

Form3. ADOQuery2. Next;

end;

Form3. ADOQuery1. Edit;

Form3. ADOQuery1. Next;

end;

Form3. ShowModal;

end;

procedure TMainFormSek. F11Click (Sender: TObject);

begin

HelpForm. Visible: = True;

end;

end.

-----------------------------------------------------------

-----------------------------------------------------------

unitNewDoc;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, CheckLst, Mask, DB, ADODB, Buttons,ComObj;

type

TfrmNewDoc = class (TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

ComboBox1: TComboBox;

MaskEdit1: TMaskEdit;

Label5: TLabel;

Memo1: TMemo;

CheckListBox1: TCheckListBox;

Label6: TLabel;

ADOQuery1: TADOQuery;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

ADOTable1: TADOTable;

ADOTable2: TADOTable;

ADOTable3: TADOTable;

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmNewDoc: TfrmNewDoc;

implementation

Uses Authorization, MainSek;

{$R *. dfm}

procedure TfrmNewDoc. BitBtn1Click (Sender: TObject);

var w: variant;

i: integer;

s: string;

begin

s: =ExtractFilePath (paramstr (0));

w: =CreateOleObject ('Word. Application');

w. visible: =true;

w. Documents. add;

w. ActiveDocument. SaveAs (s+'\'+edit1. Text+'. doc');

MainFormSek. ADOQuery3. Insert;

MainFormSek. ADOQuery3 ['Name_Doc']: =edit1. Text;

MainFormSek. ADOQuery3 ['Type_Doc']: =ComboBox1. Text;

MainFormSek. ADOQuery3 ['Primechanie']: =Memo1. Text;

MainFormSek. ADOQuery3 ['Date_Create']: =strtoDateTime (Edit2. Text);

MainFormSek. ADOQuery3 ['Srok']: =strtoDate (MaskEdit1. Text);

MainFormSek. ADOQuery3 ['Path']: =s+'\'+edit1. Text+'. doc';

MainFormSek. ADOQuery3 ['Stat']: ='Неутверждён';

MainFormSek. ADOQuery3 ['ID_Sek']: =AuthForm. KeyUser;

MainFormSek. ADOQuery3. Post;

for i: = 0 to (CheckListBox1. Items. Count - 1) do

if (CheckListBox1. Checked [i]) then

begin

ADOTable2. Insert;

if ADOTable3. Locate ('Login',CheckListBox1. Items. Strings [i], []) then

begin

ADOTable2 ['id_user']: = ADOTable3 ['id_user'];

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Append ('SELECT Top 1 Key ' +

'FROM Documents ' +

'Order by Key Desc');

ADOQuery1. Open;

ADOQuery1. Open;

ADOTable2 ['id_document']: = inttostr (ADOQuery1 ['Key']);

ADOTable2 ['Status']: = '1';

ADOTable2. Post;

end;

end;

MainFormSek. ADOQuery3. Active: =false;

MainFormSek. ADOQuery3. Active: =true;

MainFormSek. ADOQuery3. Fields [0]. Visible: =false;

MainFormSek. ADOQuery3. Fields [6]. Visible: =false;

MainFormSek. ADOQuery3. Fields [7]. Visible: =false;

MainFormSek. ADOQuery3. Fields [1]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [2]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [3]. visible: =false;

MainFormSek. ADOQuery3. Fields [4]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [5]. DisplayWidth: =20;

MainFormSek. ADOQuery3. Fields [8]. DisplayWidth: =20;

end;

procedure TfrmNewDoc. BitBtn2Click (Sender: TObject);

begin

close;

end;

end.

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


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

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