База данных «приемная комиссия»

  • Вид работы:
    Тип работы
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,52 Mb
  • Опубликовано:
    2008-12-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

База данных «приемная комиссия»

Федеральное агентство по образованию

Государственное образовательное учреждение

среднего профессионального образования

«Курганский технологический колледж»

 

К защите допускается                                                                  Защищен с оценкой

Зав. отд. Шульгина Н.С.                                                            __________________

“____ “_________2007 г.                                                          “___”________2007 г.

 

Отделение Автоматизации и вычислительной техники

 

ДИПЛОМНЫЙ ПРОЕКТ

БАЗА ДАННЫХ «ПРИЕМНАЯ КОМИССИЯ»

КТК.230105.464.5234

Студент Качесов Андрей Андреевич

Руководитель преподаватель Колотовкина Елена Юрьевна

Консультант по экономической части методист

Метелица Виктория Викторовна

Нормоконтролер преподаватель Колотовкина Елена Юрьевна

Рецензент зам директора по УОР Сенькин Вадим Владимирович

 

 

Курган, 2007 г.
СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1   ОБЩАЯ ЧАСТЬ

1.1. Назначение и область применения

1.2. Технические характеристики

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

2.2.2   Описание алгоритма

2.2.3   Описание и обоснование выбора метода организации входных и выходных данных

2.2.4   Описание и обоснования выбора состава технических и программных средств

2   СПЕЦИАЛЬНАЯ ЧАСТЬ

2.1. Описание программы и её применение

2.2.2   Описание логики

2.2.3   Программа и методика испытания

2.1. Инструкция по эксплуатации и применению

3   ЭКОНОМИЧЕСКАЯ ЧАСТЬ

4   БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ

ЗАКЛЮЧЕНИЕ

ИСТОЧНИКИ, ИСПОЛЬЗОВАННЫЕ ПРИ РАЗРАБОТКЕ

ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

Компьютеры в 21 веке используются для решения различных задач, в том числе:

- вычислительных задач;

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

- автоматизации производства и т.д.

Системы управления базами данных (СУБД) – это программные средства, предназначенные для создания, наполнения, обновления и удаления баз данных.

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

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

 Из указанной цели вытекают следующие задачи:

- разработка пользовательского интерфейса;

- автоматизация составления договора;

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

- организация отчётов.

 

1 ОБЩАЯ ЧАСТЬ

1.1 Назначение и область применения

 

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

Задача данного программного продукта – автоматизация рабочего места сотрудника НОУ «МРЦПК» по приему новых слушателей.

Автоматизация включает в себя:

- ведение списка слушателей;

- ведение списка специальностей;

- создание отчетов по слушателям и специальностям;

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

- формирование списка посещаемости;

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

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

1.2 Технические характеристики

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

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

- разработать структуру базы данных;

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

- разработать интуитивно понятный пользовательский интерфейс.

 

  1.2.2 Описание алгоритма

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

- заполняет необходимые данные для формирования отчета, такие как ФИО заказчика и слушателя и т.д.

- выбирается специальность, на которую направляется слушатель.

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

- выбирается период в котором будет обучаться слушатель.

Для формирования списка группы слушателей выполняются следующие действия:

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

- выбирается период, за который следует отбирать слушателей

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

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

1.2.3 Описание и обоснование выбора метода организации входных и выходных данных

Разработанная база данных может обрабатывать входные и выходные данные.

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

 

1.2.4   Описание и обоснования выбора состава технических и программных средств

 

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

Интерфейс приложения был определен с помощью стандартных VCL компонентов, поставляемых в составе Borland Delphi 7 Enterprise и дополнительной библиотеки компонентов RX Library 2.75, в частности использовался компонент TAppEvents, в место стандартного TApplicationEvents.

Библиотека визуальных компонентов (Visual Component Library - VCL) Delphi широкий выбор предопределенных типов компонентов, из которых пользователь может строить свою прикладную программу.

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

Delphi является интегрированной средой разработки.

Интегрированная Среда Разработки (Integrated Development Environment - IDE) - это среда, в которой есть все необходимое для проектирования, запуска и тестирования приложений и где все нацелено на облегчение процесса создания программ. IDE интегрирует в себе редактор кодов, отладчик, инструментальные панели, редактор изображений, инструментарий баз данных — все, с чем приходится работать.

Наряду с традиционными инструментами доступа к данным Borland Database Engine и ODBC в приложениях Delphi можно применять технологию Microsoft ActiveX Data Objects (ADO), которая основана на возможностях СОМ, а именно интерфейсов OLE DB.

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

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

 Технология Microsoft ActiveX Data Objects обеспечивает универсальный доступ к источникам данных из приложений БД. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов (рис. 1.1). Например, приложение, использующее ADO, может применять одинаково сложные операции и к данным, хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным СУБД. Запрос SQL, направленный любому источнику данных через ADO, будет выполнен.

 

Рисунок 1.1 - Схема доступа к данным через ADO


2 СПЕЦИАЛЬНАЯ ЧАСТЬ

2.1.   Описание программы и её применение

2.2.2 Описание логики

Рисунок 2.1 - Схема данных

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

На рисунке 2.2 изображенном ниже можно увидеть логику построения договора, путем экспорта в Microsoft Word.

Схема 2.2 – Алгоритм формирования договора

Эквивалент данному алгоритму находится в Приложении В.

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

2.2.3 Программа и методика испытания

Для запуска программы запустите исполняемый файл с именем DataBase.exe из директорию, в которую вы установили программу, или запустите ярлык «БД – Приемная комиссия» с рабочего стола. После запуска программы появляется окно процесса загрузки программы, из данного окна (Рис. 2.3) можно видеть сколько осталось до конца загрузки.

Рисунок 2.3 – Загрузка программы

После достижения индикатора 100% произойдет запуск программы и появится главное окно программы (Рис. 2.4). Из данного окна можно осуществлять управление программой.

Рисунок 2.4 – Главное окно программы

 

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

 

2.1.   Инструкция по эксплуатации и применению

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

Рисунок 2.5 – Начало установки программы

После чего следует нажать на кнопку «Далее >» и вы перейдете к следующему шагу в установке. Если вы не хотите продолжать установку можете в любой момент  отменить её нажав на кнопку «Отмена». Далее следует прочитать и принять лицензионное соглашение (Рис. 2.6), предусмотренное для большинства современных FREEWARE программ.

Рисунок 2.6 – Лицензионное соглашение

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

Далее следует файл с README (Рис 2.7) из которого можно узнать возможности программы, системные требования и т.д.

 

Рисунок 2.7 – Важная информация из файла README

Далее появится следующее окно (Рис. 2.8), в котором можно выбрать путь для установки программы.

Рисунок 2.8 – Окно для выбора директории установки программы

 

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

Рисунок 2.9 – Окно создания ярлыка в меню «Пуск»

 

Далее есть возможность выбрать создавать ли ярлык на рабочем столе (Рис. 2.10)

Рисунок 2.10 – Окно выбора создания ярлыка на Рабочем столе

 

В следующем окне (Рис. 2.11) появится сводная информация о параметрах установки и прочем. Для подтверждения нажмите кнопку «Установить».

Рисунок 2.11 – Подтверждение установки программы

Сразу после подтверждения начнется установка программы по заданным ранее параметрам. Ход выполнения установки отображается в виде прогресса и пояснения выполняемых действий (Рис. 2.12).

Рисунок 2.12 – Ход установки программы

 

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

Рисунок 2.13 – Завершение установки

 

Если после установки программы вы не стали запускать программу, то для запуска программы запустите исполняемый файл с именем DataBase.exe из директорию в которую вы установили программу, или запустите ярлык «БД – Приемная комиссия» с рабочего стола или же эквивалентный ему в меню «Пуск». После запуска программы появляется окно процесса загрузки программы, из данного окна (Рис. 2.3) можно видеть, сколько осталось до конца загрузки.

После достижения индикатора 100% произойдет запуск программы и появится главное окно программы (Рис. 2.4). Из данного окна можно осуществлять управление программой.

Данное окно содержит следующие элементы:

-   Главное меню, из которого доступно полное управление программой;

Рисунок 2.14 – Главное меню

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

Рисунок 2.15 – Панель быстрого доступа

 

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

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

Рисунок 2.16 – Строка состояния

Основная цель при создании программы – распечатка договора согласно заданного бланка договора. Для того чтобы начать оформление нового слушателя необходимо вызвать меню Файл/Создать/Договор. У вас появится следующее окно (Рис. 2.17):

Рисунок 2.17 – Окно свойств создания нового договора

 

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

1 – вводится номер договора, любое целое число.

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

3, 4, 5 – вводятся Фамилия, Имя и Отчество заказчика, соответственно.

6 – вводится дата рождения заказчика.

7, 8 – вводятся паспортные данные серия и номер, соответственно. Серия паспорта состоит из четырех цифр разделенных между собой пробелом, но в данном случае они вводятся подряд. Номер паспорта состоит из 6 шести цифр.

9 – вводятся данные о том кем выдан паспорт.

10 – дата выдачи паспорта. Выбор можно осуществлять аналогично, как и в любом другом поле с выбором даты.

11 – прописка заказчика, эти данные берутся из паспорта.

12 – ФИО слушателя, данной поле не обязательно должно совпадать с ФИО заказчика.

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

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

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

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

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

19 – в данное поле выводится информация о том какая выбрана специальность (её полное наименование), стоимость и продолжительность обучения.

20 – кнопка «Просмотр», позволяет экспортировать данные в Microsoft Word, для возможной печати. Процесс формировании договора можно наблюдать в строке состояния главного окна программы (Рис. 2.18)

Рисунок 2.18 - Процесс формировании договора

 

21 – кнопка «ОК» позволяет сохранить сделанные изменения либо в случае добавления новой записи – добавить её в базу данных.

22 – кнопка «Отмена» позволяет отменить сделанные изменения, в случаях редактирования записи. В случае добавления новой записи данная кнопка отменяет создание записи.

Для создание новой специальности нужно выполнить команду Файл/Создать/Специальность. Появится следующее окно (Рис. 2.19):

Рисунок 2.19 – Окно свойств новой специальности

 

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

1 - № п/п вводится для порядка формирования списка.

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

3 – полное наименование, эти данные вставляются при оформлении договора и формировании группы.

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

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

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

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

8 – продолжительность обучения, данное значение может измеряться в любой единицы измерения.

9 – общее количество часов.

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

11 – кнопка «С» очищает значение 10 поля.

12 – кнопка «Обзор» позволяет выбрать файл бланка договора с помощью стандартного диалога выбора файла (Рис. 2.20).

Рисунок 2.20 – Выбор файла бланка договора

 

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

14 – кнопка «Отмена» позволяет отменить все сделанные изменения в случае редактирования существующей записи или отменить создание записи в случае добавления новой записи.

Для просмотра списка заключенных договоров необходимо выполнить команду Списки/Договора, после чего должно появиться следующее окно (Рис. 2.21):

Рисунок 2.21 – Список слушателей

 

Из данного окна  возможны любые манипуляции с записями, такие как добавление, редактирование, удаление, поиск и сортировка, также все эти команды доступны в меню «Правка» главного окна. Для того чтобы добавить новую запись достаточно нажать клавишу Ins, нажать кнопку «Новый слушатель» (Рис. 2.22)

Рисунок 2.22 – Кнопка новый договор

также можно выбрать команду Правка/Новый договор…, во всех случаях произойдут одни и те же действия, вызовется окно создания договора (добавления нового слушателя). Для редактирования записи можно воспользоваться клавишей Enter, нажать на кнопку «Редактировать данные» (Рис. 2.23)

Рисунок 2.23 – Кнопка редактирования данных

 

также можно выбрать команду Правка/Редактирование договора…, во всех случаях произойдут одни и те же действия, вызовется окно редактирования договора. Для удаления записи можно воспользоваться клавишей Delete, или же нажать на кнопку «Удалить договор» (Рис. 2.24)

Рисунок 2.24 – Кнопка удалить договор

также можно выбрать команду Правка/Удалить договор, во всех случаях произойдут одни и те же действия, вызовется запрос на удаление записи. Также возможно формирование списка всех договоров, без фильтрации. Для этого нужно нажать клавишу F5 или кнопку «Экспорт списка в MS Word» (Рис 2.25)

Рисунок 2.25 – Кнопка экспорта списка в MS Word

также можно выбрать команду Правка/ Экспорт списка в MS Word, во всех случаях произойдут одни и те же действия, начнется формирование списка для экспорта. Процесс создания списка можно наблюдать в строке состояния (Рис. 2.26)

Рисунок 2.26 – Прогресс экспорта списка договоров в MS Word

В данном окне также возможен поиск данных, окно поиска представлено ниже (Рис 2.27)

Рисунок 2.27 – Окно поиска данных

 

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

- по номеру договора

- по дате оформления договора

- по фамилии заказчика

- по ФИО слушателя

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

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

Рисунок 2.28 – Список специальностей

 

Из данного окна  возможны любые манипуляции с записями, такие как добавление, редактирование, удаление, также все эти команды доступны в меню «Правка» главного окна. Для того чтобы добавить новую запись достаточно нажать клавишу Ins, нажать кнопку «Новая специальность» (Рис. 2.29)

Рисунок 2.29 – Кнопка новая специальность

также можно выбрать команду Правка/Новая специальность…, во всех случаях произойдут одни и те же действия, вызовется окно создания новой специальности. Для редактирования записи можно воспользоваться клавишей Enter, нажать на кнопку «Редактировать данные» (Рис. 2.30)

Рисунок 2.30 – Кнопка редактирования данных

также можно выбрать команду Правка/Редактирование специальности…, во всех случаях произойдут одни и те же действия, вызовется окно редактирования договора. Для удаления записи можно воспользоваться клавишей Delete, или же нажать на кнопку «Удалить специальность» (Рис. 2.31)

Рисунок 2.31 – Кнопка удалить специальность

 

также можно выбрать команду Правка/Удалить специальность, во всех случаях произойдут одни и те же действия, вызовется запрос на удаление записи. Также возможно формирование прайс-листа. Для этого нужно нажать клавишу F5 или кнопку «Экспорт списка в MS Word» (Рис 2.32)

Рисунок 2.32 – Кнопка экспорта списка в MS Word

также можно выбрать команду Правка/ Экспорт списка в MS Word, во всех случаях произойдут одни и те же действия, начнется формирование списка для экспорта. Процесс создания списка можно наблюдать в строке состояния (Рис. 2.33)

Рисунок 2.33 - Процесс создания прайс-листа

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

Рисунок 2.34 – Формирование списка группы

 

Для формирования договора, необходимо определить существенные реквизиты со стороны исполнителя договора, для того чтобы заполнить реквизиты предприятия, необходимо выполнить команду Сервис/Реквизиты. После чего появится следующее окно (Рис. 2.35):

Рисунок 2.35 – Окно реквизитов предприятия – исполнителя

 

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

Рисунок 2.36 – Окно параметров программы

Для выхода из программы предусмотрено команда Файл/Выход или же стандартный способ выхода из приложения. Перед выходом из программы программа проверяет каталог Doc в директории программы на наличие файлов с расширением *.doc, и если таковые имеются то запрашивается запрос на удаление данных файлов, если нет то просто происходит запрос на выход из программы.

3. ЭКОНОМИЧЕСКАЯ ЧАСТЬ

3.1 Технико-экономическое обоснование проекта

 

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

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

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

-   сокращение сроков составления сводок;

-   повышение качества планово-учетных и аналитических работ;

-   сокращение документооборота;

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

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

Таблица 3.1 – Основные показатели сравнительного анализа вариантов

Показатели

Единица измерения

Варианты

Результаты сравнения: Повышение (+)

Понижение (-)

Базовый

Проектируемый

Уровень материальных затрат до внедрения проектных мероприятий

Руб./год

2000

1200

800

Срок решения поставленной задачи (трудоемкость)

Час

2

0,5

1,5

Рисунок 3.2 - Календарный график работы над проектом

 

Стадии:

1 – подготовительный этап;

2 – техническое задание;

3 – основной этап;

4 – тестирование;

5 – документирование;

6 – сдача темы.

3.2. Затраты на создание программного продукта

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

С=Зкап + Зтек,                                                   (3.1)

3.2.1  Капитальные затраты

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

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

- Расходы на приобретение периферических устройств;

- Прочие расходы по оборудованию, и другие.

3.2.2  Текущие затраты

Текущие затраты на разработку программного продукта определим по формуле:

Зтектек общпр;                                               (3.2)

где Зтек – текущие затраты,

Зтек об – текущие затраты общие,

Зпр – прочие затраты.

Общие текущие затраты рассчитываются по формуле:

Зтек общзпаоэл;                                     (3.3)

где Ззп – зарплата на оплату труда,

Зао – амортизационные отчисления,

Зэл – затраты на электроэнергию,

Таким образом, общие текущие затраты на разработку проекта составили:

Ззпосндопотч;                                                (3.3)

где Зосн – основной фонд оплаты труда,

Здоп – дополнительный фонд оплаты труда,

Зотч – отчисления заработной платы.

 

Таблица 3.3 – Основная заработная плата разработчиков программного продукта.


№ п/п

Наименование этапа

Исполнители

Трудоемкость, чел./дн.1

Трудоемкость, чел./мес.2

Затраты по заработной плате, руб.

1

Подготовительный

программист

5

0,227

241,00

54,71

2

Техническое задание

программист

10

0,455

241,00

109,66

3

Основной

программист

60

2,727

241,00

657,21

4

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

программист

5

0,455

241,00

109,66

5

Документирование

программист

15

0,682

241,00

164,36

6

Сдача темы

программист

5

0,227

241,00

54,71

ИТОГО:

1150,31

Примечание:

1 – см рис. 1.

2 – из расчета 22 рабочих дня в месяц.

Зосн рук=10×54,72=547,20 р.

Зосн=1150,31+547,20=1697,51 р.

Принимаем дополнительный фонд оплаты труда равным 20% от основного фонда оплаты труда.

Здоп=1697,51×0,2=339,50 р.

1697,51+339,50=2037,01 р.

Отчисления на заработную плату:

ЕСН=26%

Зотч=2037,01×0,26=529,62 р.

Итого:

Ззп=2037,01+529,62=2566,63 р.

Амортизационные отчисления

Первоначальная стоимость ПК равна 18000 рублей. Норма амортизации 10% в год.

Аг=18000,00×0,1=1800,00 р.

Ад=1800,00/365=4,93 р.

Аобщ=4,93×55=271,15 р.

Затраты на электроэнергию

В соответствии с Санитарно эпидемиологическими правилами и нормами, программист должен работать за компьютером не более 6 часов за 1 рабочую смену, от сюда общее время работы оборудования:

Tобщ=80×6=480 ч.

Расход электропотребления одного компьютера

Рэл=480×150=72000=72 КВт.

Стоимость 1 КВт для юридических лиц 1,75 р.

Зэл=72×1,75=126 р.

На искусственное освещение израсходовано 40 Вт/ч.

Эи осв=480×40=19200=19,20 КВт.

Зосн=19,20×1,75=33,60 р.

Зэл=126+33,60=159,60 р.

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

Зтек общ=2566,63 +271,15+159,60 =2997,38 р.

Прочие затраты составляют 5% от Зтек общ:

2997,38×0,05=149,87 р.

Текущие затраты:

Зтек=2997,38+149,869=3147,25 р.

Затраты на создание программного продукта составляет:

З=0+3147,25=3147,25 р.

3.3  Оценка экономической эффективности применения программного продукта

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

Эзпра                                                          (3.5)

где, Зр – затраты на ручную обработку информации;

За – затраты на автоматизированную обработку информации.

Затраты на ручную обработку информации определяются по формуле:

Зр=(Ои×Ц×Гд)/Нв                                              (3.6)

где, Ои – объем информации обрабатываемой в ручную, Мб;

Ц – стоимость одного часа работы, р./ч.;

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

Нв – норма выработки, Мб./ч.

В данном случае:

Он = 2 Мб. (общий размер обрабатываемых данных, вводимых для регистрации за год с последующим подсчетом статистики);

Ц = 6000/22/8=34,10 р./ч.;

Гд = 2,5 (установлен экспериментально);

Нв = 0,005 Мб./ч.

Следовательно затраты на ручную обработку информации будут равны:

Зр=(2×34,10×2,5)/0,005=34100 р./год.

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

За=tа×Цм×tо×(Цмо)                                          (3.7)

где, tа – время автоматической обработки;

Цм – стоимость одного часа машинного времени;

tо – время работы оператора;

Цо – стоимость одного часа работы оператора.

Для данного программного продукта tа=325 часа.

Для автоматической обработки введенных данных, если  в год будет приходить 1000 слушателей курсов (время оформления одного слушателя и составление договора 30 минут), понадобится  19500 минут = 325 час в год.

Цм=4 р.

Для ввода данных оператором в систему, понадобится 1000 случаев за год × 30 минут оформления одного договора. tо =500 часов.

Цо=6000/22/8=34,10 р./ч.

Затраты на автоматизированную обработку:

За=325*4+500*(4+34,10)= 20350 руб.

Таким образом, годовая экономия от замены ручной обработки информации на автоматизированную составит:

Эз=34100–20350=13750 р./год.

Срок окупаемости вложений

                                    Со=С/Эз                                                          (3.8)

где, Со – срок окупаемости;

С – себестоимость программного продукта;

Эз – экономия от замены ручного труда на автоматизированную обработку

Со=3147,25/13750=0,22 года ≈ 80 дня.

Расчетный коэффициент эффективности:

                                       Ер=1/Со                                                         (3.9)

Ер=1/0,22=4,5

Экономический эффект от использования программного продукта за год определяется по формуле:

                                  Эгз–С*Ен                                                  (3.10)

где,  Эг – годовой экономический эффект;

Эз – экономия от замены ручной обработки на автоматизированную;

С – себестоимость программного продукта;

Ен – нормативный коэффициент эффективности.

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

Эг=13750–3147,25*0,2=13120,55 руб.

3.4  Заключение

Окупаемость программного продукта составит – 80 дней. Расчетный коэффициент вложений больше нормативного коэффициента вложений (4,5>0,2).

Годовой экономический эффект = 13120,5 руб.

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

4. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ

     4.1 Требования к охране труда и организации рабочего места пользователя разрабатываемой АС

 

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

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

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

   Работа программиста на ПК связана с выполнением работы сидя и на клавиатуре, в связи с этим организация труда приобретает первостепенное значение. 

Пользователи ПК в течение рабочего дня воспринимают большой объём информации, что способствует утомлению и снижению работоспособности.

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

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

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

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

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

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

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

Режимы труда и отдыха при профессиональной работе ПЭВМ должны организовываться в зависимости от вида и категории трудовой деятельности.     

Трудовая деятельность пользователей по напряженности работ подразделяется на три категории:

- группы А – по суммарному числу считываемых знаков за рабочую смену;

- группа Б – по суммарному числу считываемых  или  вводимых знаков за рабочую смену;

- группа В – по суммарному времени непосредственной работы с ПК  за рабочую смену.

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

   4.2 Анализ потенциально опасных и вредных производственных  факторов

 

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

Травмирующий фактор – негативное воздействие на человека, которое приводит к травме или летальному исходу.

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

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

- Длительное пребывание в одном и том же положении и повторении одних и тех же действий;

- Нерациональная организация рабочего места;

- Умственное перенапряжение, обусловленное характером решаемых задач;

- Большой объём перерабатываемой информации;

- Монотонность труда;

- Нервно-психические нагрузки;

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

- Повышенная пульсация светового потока (мерцание изображения);

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

- Повышенный уровень ионизирующего излучения (мягкое рентгеновское, гамма-излучения);

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

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

- Несоответствие параметров микроклимата норме;

- Повышенный уровень шума на рабочем месте;

- Опасность возникновения пожара.

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

  Эргономика

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

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

Интерес к системам «человек – машина» возник в середине XX века. Он обусловлен тем, что в качестве объектов технического проектирования и конструирования стали всё чаще выступать различного рода сложные системы управления производством, транспортом, связью, космическими полётами и т.п. Эффективность функционирования этих систем,  во многом определяется деятельность, включаемого в них в качестве ведущего звена – человека. Сочетание способностей человека и возможностей машины существенно повышает эффективность управления. Несмотря на совместное выполнение функций управления человеком и машиной, каждая из двух составляющих этой сложной системы подчиняется в работе собственным, свойственным только ей закономерностям.

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

ИСТОЧНИКИ, ИСПОЛЬЗОВАННЫЕ ПРИ РАЗРАБОТКЕ

1. Озеров В. Delphi. Советы программистов. – СПб.: Символ – Плюс. 2002. – 912 с.: ил.;

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

3. Вирт Н. Алгоритмы и структуры данных / Пер. с англ. — М.: Мир, 1999. - 360 с., ил.;

4. Гринзоу Лу. Философия программирования для Windows XP / Пер. с англ. — СПб.: Символ-Плюс, 2002. — 640 с., ил.;

5. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения / Пер. с англ. — М.: Мир, 2003. — 386 с., ил.;

6. Практическое руководство по программированию / Пер. с англ. Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. — М.: Радио и связь, 2004. — 168 с., ил.;

7. Новиков Ю., Новиков Д., Черепанов А., Чернов В.  Компьютеры, сети, Интернет. Энциклопедия. Спб.: Питер, 2002 г. – 928 с.: ил.

8. Фокс Дж. Программное обеспечение и его разработка / Пер. с англ. — М.: Мир, 2000. - 368 с., ил.;

9. Язык компьютера. Пер. с англ, под ред. и с предисл. В. М. Курочкина. — М.: Мир, 2001. - 240 с., ил.;

10. И.Г.Гетия Безопасность при работе на ПЭВМ Москва НПЦ «Профессионал - Ф» 2005 год, 127 страниц.

11. Гофман В.Э., Хомоненко А. Д. Работа с базами данных В Delphi. 2-е изд. – спб.: БХВ – Петербург, 2002. 624 с.:ил

12. Безопасность жизнедеятельности: Учебник / По ред. Проф. Э. А. Арустамова – 6-е изд., перераб. И доп – М.: Издательско – торговая корпорация «Дашков и К», 2003, -496 с.

13. В.П. Зинченко, В.М. Мухинов. Основы эргономики. М., изд-во Моск. ун-та, 2002 г, 344 с.

14. Русак О.Н., Малаян К.Р., Занько Н.Г. Безопасность жизнедеятельности: Учебное пособие. 4-е изд., стер./ Под ред. О.Н.Русака. – Спб.: Издательство «Лань», 2001 г., 448 с., ил. – (Учебники для вузов, специальная литература).

15. #"1.files/image084.gif">  

 

Приложение А

//Загрузка программы

program DataBase;

uses

  Forms,

  UMain in 'UMain.pas' {MainForm},

  UListSlush in 'UListSlush.pas' {ListSlushForm},

  USlush in 'USlush.pas' {EditSlushForm},

  UDataMod in 'UDataMod.pas' {DataModule1: TDataModule},

  URecvizit in 'URecvizit.pas' {SetingForm},

  USplash in 'USplash.pas' {SplashForm},

  UAbout in 'UAbout.pas' {AboutForm},

  USpecials in 'USpecials.pas' {ListSpecialsForm},

  UEditSpecials in 'UEditSpecials.pas' {EditSpecialForm},

  UFind in 'UFind.pas' {FindForm},

  ULogin in 'ULogin.pas' {LoginForm},

  UAboutKMRCPK in 'UAboutKMRCPK.pas' {AboutKMRCPKForm},

  UCreateGroup in 'UCreateGroup.pas' {ListGroupForm};

{$R *.res}

{$R Bitmap.RES}

{$R xp_manifest.RES}

begin

  Application.Initialize;

  with TSplashForm.Create(nil) do

  try

    LoadingProgressBar.Max:=130;

    Show;

    Update;

    Application.Title := 'ASF: Приемная комиссия';

    Application.CreateForm(TMainForm, MainForm);

    LoadingProgressBar.Position:=10;

    InfoLabel.Caption:='Создание MainForm. Загрузка... 10%';

    MainForm.Delay(50);

    Application.CreateForm(TEditSpecialForm, EditSpecialForm);

    LoadingProgressBar.Position:=20;

    InfoLabel.Caption:='Создание EditSpecialForm. Загрузка... 20%';

    MainForm.Delay(50);

    Application.CreateForm(TAboutForm, AboutForm);

    LoadingProgressBar.Position:=30;

    InfoLabel.Caption:='Создание AboutForm. Загрузка... 30%';

    MainForm.Delay(50);

    Application.CreateForm(TEditSlushForm, EditSlushForm);

    LoadingProgressBar.Position:=40;

    InfoLabel.Caption:='Создание EditSlushForm. Загрузка... 40%';

    MainForm.Delay(50);

    Application.CreateForm(TDataModule1, DataModule1);

    LoadingProgressBar.Position:=50;

    InfoLabel.Caption:='Создание DataModule1. Загрузка... 50%';

    MainForm.Delay(50);

    Application.CreateForm(TSetingForm, SetingForm);

    LoadingProgressBar.Position:=60;

    InfoLabel.Caption:='Создание формы RekvizitForm. Загрузка... 60%';

    MainForm.Delay(50);

    Application.CreateForm(TFindForm, FindForm);

    LoadingProgressBar.Position:=70;

    InfoLabel.Caption:='Создание FindForm. Загрузка... 70%';

    MainForm.Delay(50);

    Application.CreateForm(TAboutKMRCPKForm, AboutKMRCPKForm);

    LoadingProgressBar.Position:=50;

    InfoLabel.Caption:='Создание ListGroupForm. Загрузка... 80%';

    MainForm.Delay(50);

    Application.CreateForm(TListGroupForm, ListGroupForm);

    InfoLabel.Caption:='Создание AboutKMRCPKForm. Загрузка... 90%';

    MainForm.Delay(50);

    MainForm.ErrorBase;

    LoadingProgressBar.Position:=90;

    InfoLabel.Caption:='Проверка базы данных. Загрузка... 95%';

    MainForm.Delay(50);

    MainForm.WindowState:=wsMaximized;

    LoadingProgressBar.Position:=100;

    InfoLabel.Caption:='Расположение окна, загрузка настроек. Загрузка... 100%';

    MainForm.Delay(50);

  finally

    Free;

  end;

    Application.Run;

end.
Приложение Б

//Перевод числа в строку (прописью)

function TMainForm.CurrencyToStr(Value: double): string;

const Hundreds: array [0..9] of string=('',' сто',' двести',' триста',' четыреста',' пятьсот',' шестьсот',' семьсот',' восемьсот',' девятьсот');

      Tens: array [0..9] of string=('','',' двадцать',' тридцать',' сорок',' пятьдесят',' шестьдесят',' семьдесят',' восемьдесят',' девяносто');

      Ones: array [0..19] of string=('','','',' три',' четыре',' пять',' шесть',' семь',' восемь',' девять',' десять',' одиннадцать',' двенадцать',' тринадцать',' четырнадцать',' пятнадцать',' шестнадцать',' семнадцать',' восемнадцать',' девятнадцать');

      Razryad: array [0..6] of string=('',' тысяч',' миллион',' миллиард',' триллион',' квадриллион',' квинтиллион');

var s: string; i: integer; val: int64;

  function shortNum(s: string; raz: integer): string;

  begin

  Result:=hundreds[StrToInt(s[1])]; if StrToInt(s)=0 then Exit;

  if s[2]<>'1' then

    begin

    Result:=Result+tens[StrToInt(s[2])];

    case StrToInt(s[3]) of

      1: if raz=1 then Result:=Result+' одна' else Result:=Result+' один';

      2: if raz=1 then Result:=Result+' две' else Result:=Result+' два';

      else Result:=Result+ones[StrToInt(s[3])];

    end;

  Result:=Result+razryad[raz];

  case StrToInt(s[3]) of

    0,5,6,7,8,9: if raz>1 then Result:=Result+'ов';

    1: if raz=1 then Result:=Result+'а';

    2,3,4: if raz=1 then Result:=Result+'и' else if raz>1 then Result:=Result+'а';

    end; end else

    begin

    Result:=Result+ones[StrToInt(Copy(s,2,2))];

    Result:=Result+razryad[raz];

    if raz>1 then Result:=Result+'ов';

    end;

  end;

begin

val:=Trunc(value);

if val=0 then

  begin

  Result:='ноль';

  Exit;

  end;

s:=IntToStr(val);

Result:='';

i:=0;

while Length(s)>0 do

  begin

  Result:=shortNum(Copy('00'+s,Length('00'+s)-2,3),i)+Result;

  if Length(s)>3 then s:=Copy(s,1,Length(s)-3) else s:='';

  inc(i);

  end;

s:=IntToStr(Trunc((value-val)*100+0.5));

if s='0' then s:='00';

Result:=Result+' руб '+s+' коп';

if Copy(Result,0,1)='  ' then Delete(Result,0,2);

if Copy(Result,0,1)=' ' then Delete(Result,0,1);

if Copy(Result,Length(Result)-1,1)=' ' then Delete(Result,Length(Result)-1,1);

end;

Приложение В

procedure TEditSlushForm.CreateReport;

var FileName, S1, S2, S3: OLEVariant;

    i, n: LongInt;

    Whatr: OLEVariant;

    Which: OLEVariant;

    Count: OLEVariant;

    Temp: Variant;

begin

FileDogovor:=DataModule1.SpecialsTable.Fields.Fields[9].Text;

if (FileDogovor='') or (FileExists(FileDogovor)) then FileDogovor:=Path+'\Data\GeneralBlank.dot';

//Путь до файла с бланком

FileName:=FileDogovor;

if FileExists(FileName)=false then Application.MessageBox('Файл с бланком договора не найден. Возможно файл был переименован либо удален.'#13'Обратитесь к администратору для устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else

  begin

  MainForm.Label1.Caption:='0%  ';

  MainForm.ProgressBar1.Visible:=true;

  MainForm.ProgressBar1.Max:=100;

  MainForm.ProgressBar1.Position:=0;

  try

    WA.Connect;

    WA.WindowState:=wdWindowStateMaximize;

    WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;

    Whatr:=wdGoToBookmark;

    Which:=unAssigned;

    Count:=unAssigned;

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  try

    NameBookmakers:='Num';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DogovorDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Date';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DateDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Zakazchik';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(FamDBEdit.Text+' '+NameDBEdit.Text+' '+SurNameDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='License';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[9].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Director';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[11].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Slushatel';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(FioDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Programm';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[2].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Hour';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[8].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Month';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[7].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  if SaleDBCheckBox.Checked=false then

    begin

    try

      NameBookmakers:='Summ';

      WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      Temp:=DataModule1.SpecialsTable.Fields.Fields[4].Text;

      WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[4].Text+' ('+MainForm.CurrencyToStr(Temp)+')');

      MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

      MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

    except

    end;

    try

      NameBookmakers:='Plata';

      WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      Temp:=DataModule1.SpecialsTable.Fields.Fields[3].Text;

      WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[3].Text+' ('+MainForm.CurrencyToStr(Temp)+')');

      MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

      MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

    except

    end;

    end else

    begin

    try

      NameBookmakers:='Summ';

      WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      Temp:=DataModule1.SpecialsTable.Fields.Fields[6].Text;

      WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[6].Text+' ('+MainForm.CurrencyToStr(Temp)+')');

      MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

      MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

    except

    end;

    try

      NameBookmakers:='Plata';

      WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      Temp:=DataModule1.SpecialsTable.Fields.Fields[5].Text;

      WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[5].Text+' ('+MainForm.CurrencyToStr(Temp)+')');

      MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

      MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

    except

    end;

    end;

  try

    NameBookmakers:='DateVuplatu';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DateVuplatuDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='NameFirm';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[1].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Inn';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[2].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Adress';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[3].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Tel';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[4].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Bank';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[5].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='RSChet';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[6].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='KSChet';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[7].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Bik';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[8].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='License2';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[9].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Doljnost';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[12].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='FIODir';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[10].Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='FIOZakazchik';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(FamDBEdit.Text+' '+NameDBEdit.Text+' '+SurNameDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='DateRojd';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(DateRDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='Pasport';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(SeriaDBEdit.Text+' № '+NumDBEdit.Text+' выдан '+VudanDBEdit.Text+' от '+DateVudachDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='AdressZakazchik';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(PropiskaDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='TelZakazchik';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(TelDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='FIOZakazchikNiz';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    WA.Selection.TypeText(Copy(NameDBEdit.Text,0,1)+'. '+Copy(SurNameDBEdit.Text,0,1)+'. '+FamDBEdit.Text);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  try

    NameBookmakers:='START';

    WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

  end;

  //Сохранение документа во временной папки

  S1:=Path+'\Doc\Договор №'+DogovorDBEdit.Text+'.doc';

  try

    WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;

    MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

    Application.MessageBox('Не удалось сохранить документ во временную папку! Все документы MS Word будут закрыты. Попытаться снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);

    WA.Disconnect;

    WA.Quit(EmptyParam,EmptyParam,EmptyParam);

  end;

  WA.Visible:=true;

  WA.Activate;

  WA.Disconnect;

  MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+6;

  MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

  except

    Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте все документы MS Word и попробуйте снова.','Критическая ошибка',mb_ok+mb_IconError);

  end;

  end;

MainForm.ProgressBar1.Position:=100;

MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%  ';

MainForm.ProgressBar1.Visible:=false;

end;

Приложение Г

//Процедура поиска слушателей по заданным критериям для формирования списка группы

procedure TListGroupForm.RunButtonClick(Sender: TObject);

var SelectIndex, i: integer;

    OneD, TwoD: string;

begin

with DataModule1.GroupQuery do

  begin

  DateSeparator:='/';

  ShortDateFormat:='mm/dd/yyyy';

  OneD:=DateToStr(StartDateDTP.Date);

  TwoD:=DateToStr(FinishDateDTP.Date);

  try

    if SpecialsLB.Items.Strings[SpecialsLB.ItemIndex]<>'' then

      begin

      DataModule1.SpecialsTable.Active:=true;

      DataModule1.SpecialsTable.Locate('ПолноеНаименование',SpecialsLB.Items.Strings[SpecialsLB.ItemIndex],[loCaseInsensitive, loPartialKey]);

      end;

    SelectIndex:=DataModule1.SpecialsTable.Fields.Fields[0].AsInteger;

  except

  end;

  SpecialsEdit.Text:=SpecialsLB.Items.Strings[SpecialsLB.ItemIndex];

  Active:=false;

  SQL.Clear;

  SQL.Add('SELECT ФИО, ДатаНачалаОбучения, ДатаОкончанияОбучения');

  SQL.Add('FROM Слушатели');

  SQL.Add('WHERE (Специальность='+IntToStr(SelectIndex)+') AND (ДатаНачалаОбучения>=#'+OneD+'#) AND (ДатаОкончанияОбучения<=#'+TwoD+'#)');

  try

    Active:=true;

  except

    Application.MessageBox('Невозможно сформировать список. Задайте другие параметры!','Информация',mb_Ok+mb_IconInformation);

  end;

  DateSeparator:='.';

  ShortDateFormat:='mm/dd/yyyy';

  if DataModule1.GroupQuery.RecordCount>0 then

    begin

    ListCLB.Clear;

    DataModule1.GroupQuery.First;

    while not DataModule1.GroupQuery.Eof do

      begin

      DataModule1.GroupQuery.Next;

      end;

    for i:=0 to ListCLB.Count do

      try

        ListCLB.State[i]:=cbChecked;

      except

      end;

    Report1Button.Enabled:=true;

    Report2Button.Enabled:=true;

    end else

    begin

    ListCLB.Clear;

    Report1Button.Enabled:=false;

    Report2Button.Enabled:=true;

    Application.MessageBox('Невозможно сформировать список. По заданным критериям слушатели не найдены!','Информация',mb_Ok+mb_IconInformation);

    end;

  end;

end;

Приложение Д

//Формирование простого списка группы

procedure TListGroupForm.CreateSimpleReport;

var FileName, S1, S2, S3: OLEVariant;

    i, n, g, j: LongInt;

    Whatr: OLEVariant;

    Which: OLEVariant;

    Count: OLEVariant;

    NameBookmakers: OLEVariant;

    k: real;

begin

//Путь до файла с бланком

FileName:=Path+'\Data\ListGroup.dot';

if FileExists(FileName)=false then Application.MessageBox('Файл "\Data\ListGroup.dot" не найден. Возможно файл был переименован либо удален.'#13'Обратитесь к администратору для устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else

  begin

  try

    //Настройка соединения с Word

    MainForm.WA.Connect;

    //Настройка параметров документа

    MainForm.WA.WindowState:=wdWindowStateMaximize;

    MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;

    Whatr:=wdGoToBookmark;

    Which:=unAssigned;

    Count:=unAssigned;

    try

      NameBookmakers:='Group';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(NumEdit.Text);

    except

    end;

    try

      NameBookmakers:='Programm';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(SpecialsEdit.Text);

    except

    end;

    try

      NameBookmakers:='START';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      n:=ListCLB.Items.Count;

      k:=0;

      S2:=wdCell;

      S3:=1;

      j:=0;

      for i:=0 to n-1 do

        begin

        if ListCLB.State[i]=cbChecked then

          begin

          //№ п/п

          j:=j+1;

          MainForm.WA.Selection.TypeText(IntToStr(j));

          MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

          //ФИО

          MainForm.WA.Selection.TypeText(ListCLB.Items.Strings[i]);

          MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

          end;

        end;

        //Удаление последней строки

        //если таблица заканчивается

        MainForm.WA.Selection.Rows.Delete;

    except

      Application.MessageBox('Не найдена закладка для СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Информация',mb_ok+mb_IconInformation);

    end;

  try

    NameBookmakers:='START';

    MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

  except

  end;

  //Сохранение документа во временной папки

  S1:=Path+'\Doc\Список группы №'+NumEdit.Text+'.doc';

  try

    MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

  except

    Application.MessageBox('Не удалось сохранить документ во временную папку! Все документы MS Word будут закрыты. Попытаться снова создать документ?','Информация',mb_Ok+mb_IconInformation);

    MainForm.WA.Disconnect;

    MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);

  end;

  //Видимость документа

  MainForm.WA.Visible:=true;

  //Активизация соединения

  MainForm.WA.Activate;

  //Разрыв соединения с MS Word(Quit, Preview, Print)

  MainForm.WA.Disconnect;

  except

    Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте все документы MS Word и попробуйте снова.','Информация',mb_ok+mb_IconInformation);

  end;

  end;

end;

Приложение Е

//Формирование списка группы для ведомости посещаемости

procedure TListGroupForm.CreateUspReport;

var FileName, S1, S2, S3: OLEVariant;

    i, n, g, j: LongInt;

    Whatr: OLEVariant;

    Which: OLEVariant;

    Count: OLEVariant;

    NameBookmakers: OLEVariant;

    k: real;

begin

//Путь до файла с бланком

FileName:=Path+'\Data\Vedom.dot';

if FileExists(FileName)=false then Application.MessageBox('Файл "Data\Vedom.dot" не найден. Возможно файл был переименован либо удален.'#13'Обратитесь к администратору для устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else

  begin

  try

    //Настройка соединения с Word

    MainForm.WA.Connect;

    //Настройка параметров документа

    MainForm.WA.WindowState:=wdWindowStateMaximize;

    MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;

    Whatr:=wdGoToBookmark;

    Which:=unAssigned;

    Count:=unAssigned;

    try

      NameBookmakers:='Group';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(NumEdit.Text);

    except

    end;

    try

      NameBookmakers:='Date1';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(DateToStr(StartDateDTP.Date));

    except

    end;

    try

      NameBookmakers:='Date2';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(DateToStr(FinishDateDTP.Date));

    except

    end;

    try

      NameBookmakers:='Programm';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(SpecialsEdit.Text);

    except

    end;

    try

      NameBookmakers:='Prepod';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      if PrepodEdit.Text<>'' then MainForm.WA.Selection.TypeText(PrepodEdit.Text)

        else MainForm.WA.Selection.TypeText('_____________________________________________________________');

    except

    end;

    try

      NameBookmakers:='START';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      n:=ListCLB.Items.Count;

      k:=0;

      S2:=wdCell;

      S3:=1;

      j:=0;

      for i:=0 to n-1 do

        begin

        if ListCLB.State[i]=cbChecked then

          begin

          //№ п/п

          j:=j+1;

          MainForm.WA.Selection.TypeText(IntToStr(j));

          MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

          //ФИО

          MainForm.WA.Selection.TypeText(ListCLB.Items.Strings[i]);

          for g:=0 to 31 do

            MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

          end;

        end;

        //Удаление последней строки

        //если таблица заканчивается

        MainForm.WA.Selection.Rows.Delete;

    except

      Application.MessageBox('Не найдена закладка для СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Информация',mb_ok+mb_IconInformation);

    end;

  try

    NameBookmakers:='START';

    MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

  except

  end;

  //Сохранение документа во временной папки

  S1:=Path+'\Doc\Ведомость для группы №'+NumEdit.Text+'.doc';

  try

    MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

  except

    Application.MessageBox('Не удалось сохранить документ во временную папку! Все документы MS Word будут закрыты. Попытаться снова создать документ?','Информация',mb_Ok+mb_IconInformation);

    MainForm.WA.Disconnect;

    MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);

  end;

  //Видимость документа

  MainForm.WA.Visible:=true;

  //Активизация соединения

  MainForm.WA.Activate;

  //Разрыв соединения с MS Word(Quit, Preview, Print)

  MainForm.WA.Disconnect;

  except

    Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте все документы MS Word и попробуйте снова.','Информация',mb_ok+mb_IconInformation);

  end;

  end;

end;

Приложение Ж

//Формирования отчета по списку слушателей

procedure TListSlushForm.CreateReport;

var FileName, S1, S2, S3: OLEVariant;

    i, n: LongInt;

    Whatr: OLEVariant;

    Which: OLEVariant;

    Count: OLEVariant;

    NameBookmakers: OLEVariant;

    k: real;

begin

DataModule1.DogovorsTable.DisableControls;

//Путь до файла с бланком

FileName:=Path+'\Data\List.dot';

if FileExists(FileName)=false then Application.MessageBox('Файл "\Data\List.dot" не найден. Возможно файл был переименован либо удален.'#13'Обратитесь к администратору для устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else

  begin

  try

    //Настройка соединения с Word

    MainForm.WA.Connect;

    //Настройка параметров документа

    MainForm.WA.WindowState:=wdWindowStateMaximize;

    MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;

    Whatr:=wdGoToBookmark;

    Which:=unAssigned;

    Count:=unAssigned;

    try

      NameBookmakers:='DATE';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(DateToStr(Now));

    except

    end;

    try

      NameBookmakers:='START';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      n:=DataModule1.DogovorsTable.RecordCount;

      MainForm.ProgressBar1.Visible:=true;

      MainForm.ProgressBar1.Max:=n;

      MainForm.ProgressBar1.Position:=0;

      k:=0;

      MainForm.Label1.Caption:=FloatToStr(k)+'%  ';

      DataModule1.DogovorsTable.First;

      S2:=wdCell;

      S3:=1;

      while not DataModule1.DogovorsTable.Eof do

      for i:=0 to n-1 do

        begin

        //№ договора

        MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[0].Text);

        MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

        //ФИО заказчика

        MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[3].Text+' '+DataModule1.DogovorsTable.Fields.Fields[4].Text+' '+DataModule1.DogovorsTable.Fields.Fields[5].Text);

        MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

        //Курс

        MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[16].Text);

        MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

        //Переход к следующей записи

        MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;

        k:=k+(100/n);

        MainForm.Label1.Caption:=FloatToStrF(k,ffFixed,0,0)+'%  ';

        DataModule1.DogovorsTable.Next;

        //Удаление последней строки

        //если таблица заканчивается

        if DataModule1.DogovorsTable.Eof then MainForm.WA.Selection.Rows.Delete;

        end;

        MainForm.Label1.Caption:='100%  ';

    except

      Application.MessageBox('Не найдена закладка для СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Критическая ошибка',mb_ok+mb_IconError);

    end;

  try

    NameBookmakers:='START';

    MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

  except

  end;

  //Сохранение документа во временной папки

  S1:=Path+'\Doc\Список.doc';

  try

    MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

  except

    Application.MessageBox('Не удалось сохранить документ во временную папку! Все документы MS Word будут закрыты. Попытаться снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);

    MainForm.WA.Disconnect;

    MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);

  end;

  //Видимость документа

  MainForm.WA.Visible:=true;

  //Активизация соединения

  MainForm.WA.Activate;

  //Разрыв соединения с MS Word(Quit, Preview, Print)

  MainForm.WA.Disconnect;

  except

    Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте все документы MS Word и попробуйте снова.','Критическая ошибка',mb_ok+mb_IconError);

  end;

  end;

MainForm.ProgressBar1.Visible:=false;

DataModule1.DogovorsTable.EnableControls;

end;
Приложение З

//Формирование Прайс-листа

procedure TListSpecialsForm.CreateReport;

var FileName, S1, S2, S3: OLEVariant;

    i, n: LongInt;

    NotError: boolean;//Проверка на ошибки перед созданием отчета

    Whatr: OLEVariant;

    Which: OLEVariant;

    Count: OLEVariant;

    NameBookmakers: OLEVariant;

    k: real;

begin

DataModule1.SpecialsTable.DisableControls;

//Путь до файла с бланком

FileName:=Path+'\Data\PriceList.dot';

if FileExists(FileName)=false then Application.MessageBox('Файл "Data\PriceList.dot" не найден. Возможно файл был переименован либо удален.'#13'Обратитесь к администратору для устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else

  begin

  try

    //Настройка соединения с Word

    MainForm.WA.Connect;

    //Настройка параметров документа

    MainForm.WA.WindowState:=wdWindowStateMaximize;

    MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;

    Whatr:=wdGoToBookmark;

    Which:=unAssigned;

    Count:=unAssigned;

    NameBookmakers:='DATE';

    try

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      MainForm.WA.Selection.TypeText(DateToStr(Now));

    except

    end;

    NameBookmakers:='START';

    try

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

    except

    end;

    n:=DataModule1.SpecialsTable.RecordCount;

    MainForm.ProgressBar1.Max:=n;

    MainForm.ProgressBar1.Position:=0;

    k:=0;

    MainForm.Label1.Caption:=FloatToStr(k)+'%  ';

    DataModule1.SpecialsTable.First;

    S2:=wdCell;

    S3:=1;

    while not DataModule1.SpecialsTable.Eof do

      for i:=0 to n-1 do

      begin

      //№ п/п

      MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[0].Text);

      MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

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

      MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[2].Text);

      MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

      //Срок обучения

      MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[7].Text);

      MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

      //Цена за месяц

      MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[3].Text);

      MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);

      //Переход к следующей записи

      MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;

      k:=k+(100/n);

      MainForm.Label1.Caption:=FloatToStrF(k,ffFixed,0,0)+'%  ';

      DataModule1.SpecialsTable.Next;

      //Удаление последней строки

      //если таблица заканчивается

      if DataModule1.SpecialsTable.Eof then MainForm.WA.Selection.Rows.Delete;

      end;

      MainForm.Label1.Caption:='100%  ';

      NameBookmakers:='START';

      MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);

      //Сохранение документа во временной папки

      S1:=Path+'\Doc\Прайс-лист на '+DateToStr(Now)+'.doc';

      try

        MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

      except

        Application.MessageBox('Не удалось сохранить документ во временную папку! Все документы MS Word будут закрыты. Попытаться снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);

        MainForm.WA.Disconnect;

        MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);

      end;

      //Видимость документа

      MainForm.WA.Visible:=true;

      //Активизация соединения

      MainForm.WA.Activate;

      //Разрыв соединения с MS Word(Quit, Preview, Print)

      MainForm.WA.Disconnect;

  except

    Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте все документы MS Word и попробуйте снова.','Критическая ошибка',mb_ok+mb_IconError);

  end;

  end;

MainForm.ProgressBar1.Visible:=false;

DataModule1.SpecialsTable.EnableControls;

end;

Похожие работы на - База данных «приемная комиссия»

 

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