Разработка системы автоматизации архива "Айрон Маунтен"

Разработка информационной системы для автоматизации логистики в управлении архивом документов компании "Айрон Маунтен". Обзор рынка аналогов программных продуктов. Тестирование разработанной программной системы. Даталогическая и физическая модели данных.

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

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

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

Рисунок 3.30 - Главная форма программы (Предоставление документации)

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

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

Печать акта передачи документации осуществляется нажатием на кнопку «Печать» навигатора актов передачи документации (см. рис. 3.31).

Рисунок 3.31 - Акт передачи документации

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

Закладка «Уничтожение документации» главной формы программы служит для отображения, добавления, и редактирования информации об актах уничтожения документации клиентов, хранящейся в архиве Айрон Маунтен, по истечению сроков хранения (см. рис. 3.32).

Рисунок 3.32 - Главная форма программы (Уничтожение документации)

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

Печать акта уничтожения документации осуществляется нажатием на кнопку «Печать» навигатора актов уничтожения документации (см. рис. 3.33).

Рисунок 3.33 - Акт уничтожения документации

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

3.4 Интерфейс справочников

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

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

справочник «Менеджеры»;

справочник «Группы документов».

Справочник «Клиенты» служит для отображения, добавления, поиска и редактирования информации о клиентах компании Айрон Маунтен (см. рис. 3.34).

Рисунок 3.34 - Справочник «Клиенты»

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

Справочник «Менеджеры» служит для отображения, добавления, поиска и редактирования информации о менеджерах операционного отдела компании Айрон Маунтен (см. рис. 3.35).

Рисунок 3.35 - Справочник «Менеджеры»

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

Справочник «Группы» служит для отображения, добавления, поиска и редактирования информации о группах документации, принимаемой на хранение в архив компании Айрон Маунтен (см. рис. 3.36).

Рисунок 3.36 - Справочник «Группы»

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

3.5 Интерфейс отчетов

Для формирования результатной отчетности за определенный период времени разработана форма «Отчеты». Закладка «Принятые документы» служит для формирования отчета о принятой на хранение в архив Айрон Маунтен документации за определенный период времени (см. рис. 3.37).

Рисунок 3.37 - Отчет о принятой документации

Закладка «Переданные документы» служит для формирования отчета о предоставленной клиентам документации из архива Айрон Маунтен за определенный период времени (см. рис. 3.38).

Рисунок 3.38 - Отчет о предоставленной документации

Закладка «Уничтоженные документы» служит для формирования отчета об уничтоженной документации архива Айрон Маунтен по истечению сроков хранения (см. рис. 3.39).

Рисунок 3.39 - Отчет об уничтоженной документации

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

Заключение

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

прием документации на хранение;

формирование и печать акта о приеме документации в архив;

адресное хранение архивных коробов;

формирование и печать инвентаризационной описи документов;

ведение архива электронных копий документов;

контроль сроков хранения документации;

уничтожение документации с истекшим сроком хранения;

формирование и печать акта об уничтожении документов;

оперативный поиск документации;

доставка документации по требованию клиента;

формирование и печать акта о передаче документации клиенту;

формирование отчета о принятой на хранение в архив документации (по клиенту/периоду);

формирование отчета о предоставленной клиентам документации из архива (по клиенту/периоду);

формирование отчета об уничтоженной документации (по клиенту/периоду);

анализ работы архива.

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

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

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

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

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

Список использованной литературы

История развития компании «Айрон Маунтен»: http://ironmountain.ru/aboutus/history.asp

Информация о компании «Айрон Маунтен»: http://www.ironmountain.ru/aboutus/

Система управления складом «Penta WMS»: http://www.pentawms.ru/

Система управления складом «WMS Qguar Pro»: http://www.quantum-software.pl/ru/index.php/qguar-wms-pro

Система управления складом «Solvo.WMS»: http://www.solvo.ru/products/systems/wms/index.php

Основы проектирования реляционных баз данных. Лекция 2: Предметная область базы данных и ее модели: http://www.intuit.ru/studies/courses/1095/191/lecture/2623

Маклаков С.В. BPwin и ERwin. CASE-средства разработки информационных систем. -- М.: Диалог-МИФИ, 2000. -- 256 с.

ГОСТ 34.601-90 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Стадии
создания АС.

ГОСТ 34.602-89 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. ТЗ на
создание АС.

Информационные системы в экономике: учебник для студентов вузов / Под ред. Г. А. Титоренко. - 2-е изд., перераб. и доп. - М.: ЮНИТИ-ДАНА, 2008. - 463 с.

Попов Ф.А., Ануфриева Н.Ю. Интеллектуализация пользовательских интерфейсов информационных систем // Вестник Томского государственного университета. - 2007.- №300(1).- с.130-133.

Программирование в Delphi 5: 2-е изд., переработанное и дополненное / А.Я. Архангельский. - М.: ЗАО «Издательство БИНОМ», 2000.-1072с.: ил.

Новиков Ф.А. Microsoft Office 2003 в целом. - СПб.: БХВ - Санкт-Петербург, 2005. - 728 с.:ил

Томас Коннолли, Каролин Бегг, Анна Страчан. Базы данных. Проектирование, реализация и сопровождение. Теория и практика, Вильямс, М, 2001 г.

Фаронов В. В. Программирование баз данных в Delphi 7. Учебный курс. - СПб.: Питер, 2006. - 459 с.: ил

Черемных С.В., Семенов И.О., Ручкин В.С. Структурный анализ систем: IDEF-технологии:практикум. М.: Финансы и статистика, 2003. - 192 с.

Щербаков А. Ю. Современная компьютерная безопасность. Теоретические основы. Практические аспекты. М.: Книжный мир, 2009. - 352 с.

Элисон Балтер. Профессиональное программирование в Microsoft Office Access 2003 (+CD-ROM), Вильямс, М, 2006 г.

ГОСТ Р 51141-98. «Делопроизводство и архивное дело. Термины и определения»

Приложение А

Модуль главной формы программы (Main.pas)

unit Main;

uses Data, Clients, Manager, Group, Sklad, Copy, Report, Password;

{$R *.dfm}

procedure TFormMain.Button10Click(Sender: TObject);

var

S: string;

temp: OleVariant;

Excel: Variant;

t: integer;

begin

Excel := CreateOleObject('Excel.Application');

S:=ExtractFilePath(Application.ExeName);

temp:=S+'\Образец\Акт2.xls';

Try

Excel.Workbooks.Open[temp];

Excel.Visible := True;

temp:=S+'Документ\Акт передачи № '+IntToStr(DModule.TransferНомер.Value)+'.xls';

Excel.Range['e5']:=IntToStr(DModule.TransferНомер.Value);

Excel.Range['f5']:=DateToStr(DModule.TransferДата.Value);

Excel.Range['b7']:=DModule.TransferКлиент.Value;

Excel.Range['b8']:=DModule.TransferМенеджер.Value;

t:=11;

With DModule.DocTrans do

begin

First;

while not EOF do

begin

S:='a'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocTransНомер.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='b'+IntToStr(t);

Excel.Range[S]:=DModule.DocTransГруппа.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='c'+IntToStr(t);

Excel.Range[S]:=DModule.DocTransНаименование.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='d'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocTransНомерКороба.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='e'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocTransКолЛистов.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='f'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocTransСрокХранения.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(t);

Next;

end;

end;

S:='e'+IntToStr(t+1);

Excel.Range[S]:='Подпись клиента';

S:='f'+IntToStr(t+1);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

S:='e'+IntToStr(t+2);

Excel.Range[S]:='Подпись менеджера';

S:='f'+IntToStr(t+2);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

Excel.ActiveWorkbook.SaveAs[temp];

Except

begin

ShowMessage('Шаблон документа "Акт передачи" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFormMain.Button11Click(Sender: TObject);

begin

DModule.DocAdd.Close;

DModule.DocAdd.Filter := 'Номер = ' +

IntToStr(DModule.QDocKlientДокументНомер.Value);

DModule.DocAdd.Filtered := True;

DModule.DocAdd.Open;

DModule.DocAdd.Edit;

DModule.DocAddНомерПередачи.Value := DModule.TransferНомер.Value;

DModule.DocAdd.Post;

DModule.DocTrans.Close;

DModule.DocTrans.Open;

DModule.QDocKlient.Close;

DModule.QDocKlient.Open;

end;

procedure TFormMain.Button12Click(Sender: TObject);

begin

DModule.DocAdd.Close;

DModule.DocAdd.Filter := 'Номер = ' +

IntToStr(DModule.DocTransНомер.Value);

DModule.DocAdd.Filtered := True;

DModule.DocAdd.Open;

DModule.DocAdd.Edit;

DModule.DocAdd.FieldByName('НомерПередачи').AsString := '';

DModule.DocAdd.Post;

DModule.DocTrans.Close;

DModule.DocTrans.Open;

DModule.QDocKlient.Close;

DModule.QDocKlient.Open;

end;

procedure TFormMain.Button13Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Дата', F) then

Begin

DModule.Destruction.Filter := 'Дата = ' + F ;

DModule.Destruction.Filtered := True;

End;

end;

procedure TFormMain.Button14Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Номер', F) then

Begin

DModule.Destruction.Filter := 'Номер = ' + F;

DModule.Destruction.Filtered := True;

End;

end;

procedure TFormMain.Button16Click(Sender: TObject);

begin

DModule.Destruction.Filter := 'КодМенеджера = ' +

IntToStr(DModule.DestructionКодМенеджера.Value);

DModule.Destruction.Filtered := True;

end;

procedure TFormMain.Button17Click(Sender: TObject);

var

S: string;

temp: OleVariant;

Excel: Variant;

t: integer;

begin

Excel := CreateOleObject('Excel.Application');

S:=ExtractFilePath(Application.ExeName);

temp:=S+'\Образец\Акт3.xls';

Try

Excel.Workbooks.Open[temp];

Excel.Visible := True;

temp:=S+'Документ\Акт уничтожения № '+IntToStr(DModule.DestructionНомер.Value)+'.xls';

Excel.Range['e5']:=IntToStr(DModule.DestructionНомер.Value);

Excel.Range['f5']:=DateToStr(DModule.DestructionДата.Value);

Excel.Range['b7']:=DModule.DestructionМенеджер.Value;

t:=10;

With DModule.DocDestr do

begin

First;

while not EOF do

begin

S:='a'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocDestrНомер.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='b'+IntToStr(t);

Excel.Range[S]:=DModule.DocDestrГруппа.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='c'+IntToStr(t);

Excel.Range[S]:=DModule.DocDestrНаименование.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='d'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocDestrНомерКороба.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='e'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocDestrКолЛистов.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='f'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocDestrСрокХранения.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(t);

Next;

end;

end;

S:='e'+IntToStr(t+1);

Excel.Range[S]:='Подпись менеджера';

S:='f'+IntToStr(t+1);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

Excel.ActiveWorkbook.SaveAs[temp];

Except

begin

ShowMessage('Шаблон документа "Акт уничтожения" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFormMain.Button18Click(Sender: TObject);

begin

DModule.DocAdd.Close;

DModule.DocAdd.Filter := 'Номер = ' +

IntToStr(DModule.DocDestrНомер.Value);

DModule.DocAdd.Filtered := True;

DModule.DocAdd.Open;

DModule.DocAdd.Edit;

DModule.DocAdd.FieldByName('НомерУничтожения').AsString := '';

DModule.DocAdd.Post;

DModule.DocDestr.Close;

DModule.DocDestr.Open;

DModule.QDocDestr.Close;

DModule.QDocDestr.Open;

end;

procedure TFormMain.Button19Click(Sender: TObject);

begin

DModule.DocAdd.Close;

DModule.DocAdd.Filter := 'Номер = ' +

IntToStr(DModule.QDocDestrНомер.Value);

DModule.DocAdd.Filtered := True;

DModule.DocAdd.Open;

DModule.DocAdd.Edit;

DModule.DocAddНомерУничтожения.Value := DModule.DestructionНомер.Value;

DModule.DocAdd.Post;

DModule.DocDestr.Close;

DModule.DocDestr.Open;

DModule.QDocDestr.Close;

DModule.QDocDestr.Open;

end;

procedure TFormMain.Button1Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Дата', F) then

Begin

DModule.Reception.Filter := 'Дата = ' + F ;

DModule.Reception.Filtered := True;

End;

end;

procedure TFormMain.Button20Click(Sender: TObject);

var

S: string;

temp: OleVariant;

Excel: Variant;

t: integer;

begin

Excel := CreateOleObject('Excel.Application');

S:=ExtractFilePath(Application.ExeName);

temp:=S+'\Образец\Опись.xls';

Try

Excel.Workbooks.Open[temp];

Excel.Visible := True;

temp:=S+'Документ\Опись документов короба № '+IntToStr(DModule.BoxНомер.Value)+'.xls';

Excel.Range['d5']:=IntToStr(DModule.BoxНомер.Value);

Excel.Range['e5']:=DateToStr(DModule.ReceptionДата.Value);

Excel.Range['b7']:=DModule.ReceptionКлиент.Value;

Excel.Range['b8']:=DModule.ReceptionМенеджер.Value;

t:=11;

With DModule.Doc do

begin

First;

while not EOF do

begin

S:='a'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocНомер.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='b'+IntToStr(t);

Excel.Range[S]:=DModule.DocГруппа.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='c'+IntToStr(t);

Excel.Range[S]:=DModule.DocНаименование.Value;

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='d'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocКолЛистов.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='e'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.DocСрокХранения.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(t);

Next;

end;

end;

S:='d'+IntToStr(t+1);

Excel.Range[S]:='Подпись клиента';

S:='e'+IntToStr(t+1);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

S:='d'+IntToStr(t+2);

Excel.Range[S]:='Подпись менеджера';

S:='e'+IntToStr(t+2);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

Excel.ActiveWorkbook.SaveAs[temp];

Except

begin

ShowMessage('Шаблон документа "Опись короба" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFormMain.Button2Click(Sender: TObject);

begin

DModule.Reception.Filter := 'КодКлиента = ' +

IntToStr(DModule.ReceptionКодКлиента.Value);

DModule.Reception.Filtered := True;

end;

procedure TFormMain.Button3Click(Sender: TObject);

begin

DModule.Reception.Filter := 'КодМенеджера = ' +

IntToStr(DModule.ReceptionКодМенеджера.Value);

DModule.Reception.Filtered := True;

end;

procedure TFormMain.Button4Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Номер', F) then

Begin

DModule.Reception.Filter := 'Номер = ' + F;

DModule.Reception.Filtered := True;

End;

end;

procedure TFormMain.Button5Click(Sender: TObject);

var

S: string;

temp: OleVariant;

Excel: Variant;

t: integer;

begin

Excel := CreateOleObject('Excel.Application');

S:=ExtractFilePath(Application.ExeName);

temp:=S+'\Образец\Акт1.xls';

Try

Excel.Workbooks.Open[temp];

Excel.Visible := True;

temp:=S+'Документ\Акт приема № '+IntToStr(DModule.ReceptionНомер.Value)+'.xls';

Excel.Range['d5']:=IntToStr(DModule.ReceptionНомер.Value);

Excel.Range['e5']:=DateToStr(DModule.ReceptionДата.Value);

Excel.Range['b7']:=DModule.ReceptionКлиент.Value;

Excel.Range['b8']:=DModule.ReceptionМенеджер.Value;

t:=11;

With DModule.Box do

begin

First;

while not EOF do

begin

S:='a'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.BoxНомер.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='b'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.BoxНомерЯчейки.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='c'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.BoxСтеллаж.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='d'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.BoxЯрус.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

S:='e'+IntToStr(t);

Excel.Range[S]:=IntToStr(DModule.BoxЯчейка.Value);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(t);

Next;

end;

end;

S:='d'+IntToStr(t+1);

Excel.Range[S]:='Подпись клиента';

S:='e'+IntToStr(t+1);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

S:='d'+IntToStr(t+2);

Excel.Range[S]:='Подпись менеджера';

S:='e'+IntToStr(t+2);

Excel.Range[S].Select;

Excel.Selection.Borders.LineStyle:=2;

Excel.ActiveWorkbook.SaveAs[temp];

Except

begin

ShowMessage('Шаблон документа "Акт приема документации" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFormMain.Button6Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Дата', F) then

Begin

DModule.Transfer.Filter := 'Дата = ' + F ;

DModule.Transfer.Filtered := True;

End;

end;

procedure TFormMain.Button7Click(Sender: TObject);

var

F: string;

begin

F := '';

If InputQuery('Поиск', 'Номер', F) then

Begin

DModule.Transfer.Filter := 'Номер = ' + F;

DModule.Transfer.Filtered := True;

End;

end;

procedure TFormMain.Button8Click(Sender: TObject);

begin

DModule.Transfer.Filter := 'КодКлиента = ' +

IntToStr(DModule.TransferКодКлиента.Value);

DModule.Transfer.Filtered := True;

end;

procedure TFormMain.Button9Click(Sender: TObject);

begin

DModule.Transfer.Filter := 'КодМенеджера = ' +

IntToStr(DModule.TransferКодМенеджера.Value);

DModule.Transfer.Filtered := True;

end;

procedure TFormMain.DBGrid1DblClick(Sender: TObject);

var

S: string;

begin

Try

begin

S:=ExtractFilePath(Application.ExeName)+'Архив\'+

IntToStr(DModule.DocНомер.Value)+'.bmp';

FormCopy.Image.Picture.LoadFromFile(S);

FormCopy.Image.Stretch := True;

end;

Except

begin

S:=ExtractFilePath(Application.ExeName)+'Архив\document_line_chart_01.ico';

FormCopy.Image.Picture.LoadFromFile(S);

FormCopy.Image.Stretch := False;

end;

End;

FormCopy.Caption := 'Сканкопия № ' + IntToStr(DModule.DocНомер.Value);

FormCopy.ShowModal;

end;

procedure TFormMain.FormActivate(Sender: TObject);

begin

FormPas.Caption := 'Вход в архив [авторизация]';

FormPas.ShowModal;

end;

procedure TFormMain.N2Click(Sender: TObject);

begin

FormSklad.Caption := 'Схема архива документов';

FormSklad.ShowModal;

end;

procedure TFormMain.N3Click(Sender: TObject);

begin

FormMain.Close;

end;

procedure TFormMain.N5Click(Sender: TObject);

begin

FormReport.ShowModal;

end;

procedure TFormMain.N6Click(Sender: TObject);

begin

FormClients.ShowModal;

end;

procedure TFormMain.N7Click(Sender: TObject);

begin

FormManager.ShowModal;

end;

procedure TFormMain.N8Click(Sender: TObject);

begin

FormGroup.ShowModal;

end;

end.

Модуль данных (Data.pas)

unit Data;

uses Main, Clients, Manager, Group, Sklad;

{$R *.dfm}

procedure TDModule.BoxAfterDelete(DataSet: TDataSet);

begin

Cell.Close;

Cell.Filter := 'Код = ' + IntToStr(DelBox);

Cell.Filtered := True;

Cell.Open;

Cell.Edit;

CellСтатус.Value := False;

Cell.Post;

Stellag.Close;

Stellag.Open;

end;

procedure TDModule.BoxAfterInsert(DataSet: TDataSet);

begin

BoxНомерАкта.Value := ReceptionНомер.Value;

FormSklad.Caption := 'Схема архива документов [выбор ячейки]';

FormSklad.ShowModal;

end;

procedure TDModule.BoxBeforeDelete(DataSet: TDataSet);

begin

DelBox := BoxНомерЯчейки.Value;

end;

procedure TDModule.DBoxDataChange(Sender: TObject; Field: TField);

begin

Doc.Filter := 'НомерКороба = ' + IntToStr(BoxНомер.Value);

Doc.Filtered := True;

end;

procedure TDModule.DDestructionDataChange(Sender: TObject; Field: TField);

begin

DocDestr.Filter := 'НомерУничтожения = ' + IntToStr(DestructionНомер.Value);

DocDestr.Filtered := True;

end;

procedure TDModule.DestructionAfterInsert(DataSet: TDataSet);

begin

DestructionДата.Value := Date();

DestructionКодМенеджера.Value := UserКод.Value;

end;

procedure TDModule.DestructionAfterRefresh(DataSet: TDataSet);

begin

Destruction.Filtered := False;

end;

procedure TDModule.DGroupDataChange(Sender: TObject; Field: TField);

begin

FormGroup.StatusBar.Panels.Items[1].Text := IntToStr(Group.RecordCount);

end;

procedure TDModule.DKlientDataChange(Sender: TObject; Field: TField);

begin

FormClients.StatusBar.Panels.Items[1].Text := IntToStr(Klient.RecordCount);

end;

procedure TDModule.DMenedgerDataChange(Sender: TObject; Field: TField);

begin

FormManager.StatusBar.Panels.Items[1].Text := IntToStr(Menedger.RecordCount);

end;

procedure TDModule.DocAfterInsert(DataSet: TDataSet);

begin

DocНомерКороба.Value := BoxНомер.Value;

end;

procedure TDModule.DReceptionDataChange(Sender: TObject; Field: TField);

begin

Box.Filter := 'НомерАкта = ' + IntToStr(ReceptionНомер.Value);

Box.Filtered := True;

QDocDestr.Close;

QDocDestr.Open;

end;

procedure TDModule.DStellagDataChange(Sender: TObject; Field: TField);

var

I, J, S, F, C: integer;

begin

Floor.Close;

Floor.Filter := 'НомерСтеллажа = ' + IntToStr(StellagНомер.Value);

Floor.Filtered := True;

Floor.Open;

FormSklad.StringGrid1.RowCount := DModule.StellagКолЯрусов.Value + 1;

FormSklad.StringGrid1.ColCount := DModule.StellagКолЯчеек.Value + 1;

F := DModule.StellagКолЯрусов.Value;

for I := 1 to DModule.StellagКолЯрусов.Value + 1 do

begin

FormSklad.StringGrid1.Rows[I].Text := IntToStr(F);

dec(F);

for J := 1 to DModule.StellagКолЯчеек.Value + 1 do

begin

FormSklad.StringGrid1.Cols[J].Text := IntToStr(J);

end;

end;

S := StellagНомер.Value;

F := DModule.StellagКолЯрусов.Value;

for I := 1 to DModule.StellagКолЯрусов.Value + 1 do

begin

for J := 1 to DModule.StellagКолЯчеек.Value + 1 do

begin

QFreeCell.Close;

QFreeCell.Parameters.ParamValues['S'] := S;

QFreeCell.Parameters.ParamValues['F'] := F;

QFreeCell.Parameters.ParamValues['C'] := J;

QFreeCell.Open;

if QFreeCellСтатус.Value = False then

FormSklad.StringGrid1.Cells[J, I] := IntToStr(QFreeCellКод.Value);

end;

dec(F);

end;

end;

procedure TDModule.DTransferDataChange(Sender: TObject; Field: TField);

begin

DocTrans.Filter := 'НомерПередачи = ' + IntToStr(TransferНомер.Value);

DocTrans.Filtered := True;

QDocKlient.Close;

QDocKlient.Filter := 'Код = ' + IntToStr(TransferНомер.Value);

QDocKlient.Filtered := True;

QDocKlient.Open;

end;

procedure TDModule.GroupAfterRefresh(DataSet: TDataSet);

begin

Group.Filtered := False;

end;

procedure TDModule.KlientAfterRefresh(DataSet: TDataSet);

begin

Klient.Filtered := False;

end;

procedure TDModule.MenedgerAfterRefresh(DataSet: TDataSet);

begin

Menedger.Filtered := False;

end;

procedure TDModule.ReceptionAfterInsert(DataSet: TDataSet);

begin

ReceptionДата.Value := Date();

ReceptionКодМенеджера.Value := UserКод.Value;

end;

procedure TDModule.ReceptionAfterRefresh(DataSet: TDataSet);

begin

Reception.Filtered := False;

end;

procedure TDModule.TransferAfterInsert(DataSet: TDataSet);

begin

TransferДата.Value := Date();

TransferКодМенеджера.Value := UserКод.Value;

end;

procedure TDModule.TransferAfterPost(DataSet: TDataSet);

begin

DocTrans.Filter := 'НомерПередачи = ' + IntToStr(TransferНомер.Value);

DocTrans.Filtered := True;

QDocKlient.Close;

QDocKlient.Filter := 'Код = ' + IntToStr(TransferНомер.Value);

QDocKlient.Filtered := True;

QDocKlient.Open;

end;

procedure TDModule.TransferAfterRefresh(DataSet: TDataSet);

begin

Transfer.Filtered := False;

end;

end.

Модуль справочника «Клиенты» (Clients.pas)

unit Clients;

uses Data;

{$R *.dfm}

procedure TFormClients.Button1Click(Sender: TObject);

begin

Find(GroupBox1.Caption);

end;

procedure TFormClients.Button2Click(Sender: TObject);

begin

Find(GroupBox2.Caption);

end;

procedure TFormClients.Button3Click(Sender: TObject);

begin

Find(GroupBox3.Caption);

end;

procedure TFormClients.Find(const Field: string);

var

F: string;

begin

F := '';

If InputQuery('Поиск', Field, F) then

Begin

DModule.Klient.Filter := Field + ' Like ' + Chr(39) + F + '*' + Chr(39);

DModule.Klient.Filtered := True;

End;

end;

end.

Модуль справочника «Менеджеры» (Manager.pas)

unit Manager;

uses Data;

{$R *.dfm}

procedure TFormManager.Button1Click(Sender: TObject);

begin

Find(GroupBox1.Caption);

end;

procedure TFormManager.Button2Click(Sender: TObject);

begin

Find(GroupBox2.Caption);

end;

procedure TFormManager.Find(const Field: string);

var

F: string;

begin

F := '';

If InputQuery('Поиск', Field, F) then

Begin

DModule.Menedger.Filter := Field + ' Like ' + Chr(39) + F + '*' + Chr(39);

DModule.Menedger.Filtered := True;

End;

end;

end.

Модуль справочника «Группы» (Group.pas)

unit Group;

uses Data;

{$R *.dfm}

procedure TFormGroup.Button1Click(Sender: TObject);

begin

Find(GroupBox1.Caption);

end;

procedure TFormGroup.Find(const Field: string);

var

F: string;

begin

F := '';

If InputQuery('Поиск', Field, F) then

Begin

DModule.Group.Filter := Field + ' Like ' + Chr(39) + F + '*' + Chr(39);

DModule.Group.Filtered := True;

End;

end;

end.

Модуль формы «Схема архива» (Sklad.pas)

unit Sklad;

uses Data;

{$R *.dfm}

procedure TFormSklad.Button1Click(Sender: TObject);

var

F: string;

I, J: integer;

begin

DModule.Stellag.Insert;

F := '0';

If InputQuery('Добавить стеллаж', 'Кол-во ярусов', F) then

DModule.StellagКолЯрусов.Value := StrToInt(F)

else

begin

DModule.Stellag.Cancel;

Exit;

end;

F := '0';

If InputQuery('Добавить стеллаж', 'Кол-во ячеек', F) then

DModule.StellagКолЯчеек.Value := StrToInt(F)

else

begin

DModule.Stellag.Cancel;

Exit;

end;

DModule.Stellag.Post;

for I := 1 to DModule.StellagКолЯрусов.Value do

begin

DModule.Floor.Insert;

DModule.FloorНомерСтеллажа.Value := DModule.StellagНомер.Value;

DModule.FloorНомерЯруса.Value := I;

DModule.Floor.Post;

for J := 1 to DModule.StellagКолЯчеек.Value do

begin

DModule.Cell.Insert;

DModule.CellНомерЯруса.Value := DModule.FloorКод.Value;

DModule.CellНомерЯчейки.Value := J;

DModule.Cell.Post;

end;

end;

end;

procedure TFormSklad.CreateTab(const N, M: integer);

begin

Grid := TStringGrid.Create(Application);

Grid.RowCount := M;

Grid.ColCount := N;

Grid.Visible := True;

end;

procedure TFormSklad.Find(const Field: string);

var

F: string;

begin

F := '';

If InputQuery('Поиск', Field, F) then

Begin

DModule.Group.Filter := Field + ' Like ' + Chr(39) + F + '*' + Chr(39);

DModule.Group.Filtered := True;

End;

end;

procedure TFormSklad.StringGrid1DblClick(Sender: TObject);

begin

if FormSklad.Caption = 'Схема архива документов [выбор ячейки]' then

begin

if StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] = '' then

begin

ShowMessage('Данная ячейка уже занята!');

exit;

end;

DModule.BoxНомерЯчейки.Value :=

StrToInt(StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]);

DModule.Box.Post;

DModule.Cell.Close;

DModule.Cell.Filter := 'Код = ' +

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];

DModule.Cell.Filtered := True;

DModule.Cell.Open;

DModule.Cell.Edit;

DModule.CellСтатус.Value := True;

DModule.Cell.Post;

DModule.Stellag.Close;

DModule.Stellag.Open;

FormSklad.Close;

end;

end;

procedure TFormSklad.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

begin

with StringGrid1 do

if (ACol <> 0) AND (ARow <> 0) AND (Cells[ACol, ARow] = '') then

StringGrid1.Canvas.StretchDraw(Rect, Image1.Picture.Graphic);

end;

end.

Модуль формы «Сканкопия документа» (Copy.pas)

unit Copy;

uses Data;

{$R *.dfm}

procedure TFormCopy.N1Click(Sender: TObject);

var

S: string;

begin

SavePictureDialog.InitialDir:=ExtractFilePath(Application.ExeName);

if SavePictureDialog.Execute then

begin

S:=ExtractFilePath(Application.ExeName)+'Архив\'+

IntToStr(DModule.DocНомер.Value)+'.bmp';

CopyFile(Pchar(SavePictureDialog.FileName), Pchar(S), true);

Image.Picture.LoadFromFile(S);

Image.Stretch := True;

end;

end;

end.

Модуль формы «Отчеты» (Report.pas)

unit Report;

uses Data;

{$R *.dfm}

procedure TFormReport.Button1Click(Sender: TObject);

begin

DModule.QRepRec.Close;

DModule.QRepRec.Parameters.ParamValues['N'] := DateToStr(DateTimePicker1.Date);

DModule.QRepRec.Parameters.ParamValues['K'] := DateToStr(DateTimePicker2.Date);

DModule.QRepRec.Open;

end;

procedure TFormReport.Button2Click(Sender: TObject);

begin

DModule.QRepTrans.Close;

DModule.QRepTrans.Parameters.ParamValues['N'] := DateToStr(DateTimePicker3.Date);

DModule.QRepTrans.Parameters.ParamValues['K'] := DateToStr(DateTimePicker4.Date);

DModule.QRepTrans.Open;

end;

procedure TFormReport.Button3Click(Sender: TObject);

begin

DModule.QRepDestr.Close;

DModule.QRepDestr.Parameters.ParamValues['N'] := DateToStr(DateTimePicker5.Date);

DModule.QRepDestr.Parameters.ParamValues['K'] := DateToStr(DateTimePicker6.Date);

DModule.QRepDestr.Open;

end;

end.

Модуль формы «Вход в систему» (Password.pas)

unit Password;

uses Data, Main;

{$R *.dfm}

procedure TFormPas.Button1Click(Sender: TObject);

begin

if Pas.Text = DModule.UserПароль.Value then

begin

FormPas.Caption := 'Вход в архив';

FormMain.AlphaBlend := False;

FormPas.Close;

end

else

begin

ShowMessage('Введенный пароль неверный!');

Pas.SetFocus;

end;

end;

procedure TFormPas.FormActivate(Sender: TObject);

begin

Pas.SetFocus;

end;

procedure TFormPas.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if FormPas.Caption = 'Вход в архив [авторизация]' then

FormMain.Close;

end;

end.

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


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

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