«Разработкаавтоматизированной системы учета договоров для отеля „
Содержание
Введение1. Описание процесса учетадоговоров на предприятии
2. Постановка задачи
2.1 Назначение комплекса задач
2.2 Выходные данные
2.3 Входные данные3. Проектирование информационного обеспечения
3.1 Описание задачи
3.2 Проектирование Базы данныхметодом “Сущность — связь»
3.2.2 Построение диаграммы ER типа
3.2.3 Генерация наборапредварительных отношений
3.2.4 Проверка отношений на НФБК
3.2.5 Исследование окончательногонабора отношений на избыточность3.3 Проектирование структуры БД припомощи CASE-средства Erwin
3.3.1 Проектирование логической ифизической схемы БД
3.3.2 Исследование информационной модели
4. Программное обеспечение
4.1 Определение функций выполняемыхприложением
4.2 Разработка эскиза меню
4.3 Описание компонентов
4.4 Назначение модулей программы
5. Руководство пользователя
5.1 Введение
5.2 Назначение и условие применения
5.2.1 Функции автоматизируемыепрограммно
5.2.2 Технические и программныетребования
5.3 Подготовка к работе
5.4 Описание операций
5.4.1 Работа c основным приложением «Таблица основных договоров»
5.4.2 Работа c основным приложением «Таблица дополнительных договоров»
5.5 Рекомендации по освоению
Заключение
Список использованных источников
Приложение A.Описание модулей программы
Приложение В.Отчеты
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>
Введение
В нашей стране с каждымднем все больше и больше предприятий. Каждое из них занимается различнойдеятельностью. Трудно представить работу любой фирмы без заключения каких-либодоговоров. Примеров можно привести бесчисленное множество-ведь передфактическим проведением любого вида работ нужно заключить договор(или множестводоговоров). В наше время договор имеет огромную ценность так, как если его незаключить-то велика вероятность быть обманутым(заплатят половину суммы, иливообще ничего не заплатят).
В недалеком прошлом нанекоторых предприятиях не было даже компьютеров для обработки информации одоговорах, приходилось записывать все данные в ведомости и трудно былоопределить, когда у отедльно взятого договора заканчивалось время егодействия(т.е. он являлся просроченным), количество дополнительных договоров идр. информацию относящуюся к договорам. С появлением компьютеров напредприятиях ситуация немного улучшилась, однако программы с которыми работалисотрудники предприятия при учете договоров оставляли желать лучшего.
1. Описание процесса учета договоров
В соответствии с пунктом2 статьи ГК-граждане и юридические лица, осуществляют свои осуществляют своигражданские права, т.е. заключают договоры в соответствии с нормами,установленными законом (статья 432 ГК). Договор считается заключенным, еслимежду сторонами в требуемой в подлежащих случаях форме, достигнуто соглашениепо всем существующим условиям договора. Договор содержит следующие разделы:
1) Предмет договора.
2) Стоимость работ(суммадоговора);
3) Порядок и условиярасчетов;
4) Срок действиядоговора(дата договора, срок окончания);
5) Права и обязанностисторон;
6) Порядок сдачи иприемки работ;
7) Приложения.
Договоры бывают:
1)Исходящие отпредприятия (оказание работ, услуг; поставки товаров, гражданско-правовогохарактера).
2)Входящие от другихпредприятий(оказание работ, услуг; поставки товаров и т.д.).
Такие договоразаключаются с физическими и юридическими лицами.
Типы договоров:
1) C поставщиками и подрядчиками;
2)За оказанные работы иуслуги;
3)Поставка товара.
Для того, что бы иметьполную информацию обо всех заключенных с предприятиями или физическими лицамидоговорах необходимо вести учет договоров, где отражается информация:
1) В основныхдоговорах:
— Регистрационный номер.
— Юридический номер;
— Дата регистрации договора;
— Контрагент;
— Предмет договора;
— Сумма договора.
2) В дополнительных-тоже самое, что и в основных.
Если контрагент заключаетне один а несколько договоров, то остальные договоры (все, кроме одного первого) заносятся в базу дополнительных договоров. Если контрагент заключает новыйдоговор и при этом не вышел срок действия старого, то он заносится в базудополнительных договоров, иначе старый договор удаляется и новый добавляется вбазу основных договоров. Один контрагент может заключать множество договоров,но не наоборот. Контрагентом может являться физическое лицо(один человек), либоюридическое лицо(предприятие). Исполнителем так же может быть физ. лицо, либоюрид. лицо. Контрагент не может заключить дополнительный договор, если он незаключил основного. Информация об исполнителе не может существовать безосновного договора. Информация о контрагенте не может существовать безосновного договора.
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>2. Постановка задачи
2.1 Назначение комплекса задач
В помощь сотрудникампредприятия, занимающимся учетом договоров, разрабатывается автоматизированнаясистема, которая будет выполнять следующие задачи:
1)Регистрация/изменение/удалениеосновного договора;
2)Регистрация/изменение/удалениедополнительного договора;
3)Добавление/изменение/удалениеинформации о физическом лице (контрагенте);
4)Добавление/изменение/удалениеинформации о юридическом лице (контрагенте);
5)Добавление/изменение/удалениепланируемой даты;
6)Вывод просроченныхдоговоров;
7)Сортировки основныхдоговоров;
8)Поиска договора;
9)Фильтрации договоров;
10)Вывода диаграмм;
11)Формирования отчетности(поосновным, дополнительным договорам);
12)Подсчет количествасделок(договоров) при формировании основных и дополнительных договоров;
13)Экспорт из БД в MsWord.
2.2 Выходныеданные
Выходной информациейбудут отчеты, формулируемые сотрудниками предприятия. Выходная информация дляразрабатываемого ПО представлена в таблице 2.1.
Таблица 2.1 — Выходнаяинформация для разрабатываемого ПОИдентификатор отчет об основных договорах. Форма представления данных Приложение Б Периодичность выдачи По требованию Получатель Юрист Список реквизитов Рег.номер, юрид.номер, контрагент, дата договора, срок окончания, предмет договора, сумма договора, исполнитель Идентификатор отчет о дополнительных договорах Форма представления данных Приложение Б Периодичность выдачи По требованию Получатель Юрист Список реквизитов Рег.номер, юрид.номер, контрагент, дата договора, предмет договора, сумма договора, дата регистрации Идентификатор отчет об основных и дополнительных договорах Форма представления данных Приложение Б Периодичность выдачи По требованию Получатель Начальник Список реквизитов Дата регистрации, дата договора, контрагент, предмет договора, сумма договора. Идентификатор просроченные договора Форма представоения данных Экранная форма Периодичность выдачи По требованию Получатель Пользователь Список реквизитов Регистрационный номер, юридический номер, дата регистрации, дата договора, контрагент, предмет договора, сумма договора
2.3 Входные данные
Входными данными будутдокументы, приходящие с внешних структур. Входная информация дляразрабатываемого ПО представлена в таблице 2.2
Таблица 2.2 – Входнаяинформация для разрабатываемого ПОИдентификатор таблица основных договоров Форма представления данных Экранная форма Периодичность поступления По заключению договора Источник Предприятие Список реквизитов Рег.номер, юрид.номер, контрагент, дата договора, срок окончания, предмет договора, сумма договора, исполнитель Идентификатор таблица дополнительных договоров Форма представления данных Экранная форма Периодичность поступления По заключению основного договора Источник Предприятие Список реквизитов Рег.номер, юрид.номер, контрагент, дата договора, предмет договора, сумма договора, дата регистрации Идентификатор данные о физическом лице Форма представления данных Экранная форма Периодичность поступления По заключению основного договора Источник Предприятие Список реквизитов ФИО, адрес, домашний телефон, e-mail Идентификатор данные о юридическом лице Форма представления данных Экранная форма Периодичность поступления По заключению основного договора Источник Предприятие Список реквизитов Адрес фирмы, контактный телефон, е-mail, количество сделок. Идентификатор Данные о планируемой дате Форма представления данных Справочник Периодичность поступления По требованию начальников Источник Предприятие Список реквизитов дата
3. Проектирование информационногообеспечения
3.1 Описание задачи
Необходимо разработать автоматизированнуюсистему для учета договоров. Нужно хранить информацию: Об основных договорах (регистрационныйномер, юридический номер, контрагент, дата договора, дата договора, срококончания, исполнитель, предмет договора, сумма договора);
О дополнительныхдоговорах(регистрационный номер, юридический номер, контрагент, дата договора,дата регистрации, срок окончания, предмет договора, сумма договора);
О контрагенте (физическоелицо)(фио, адрес, домашний телефон, e-mail);
О контрагенте(юридическое лицо)(адрес фирмы, контактный телефон, e-mail).
Дополнительного договоранет без основного. Информация о контрагенте не может существовать безосновного договора.
Вывести отчетыоб: основных договоров, дополнительных договоров, просроченных договоров,основных и дополнительных договоров./>/>/>/>/>/>/>3.2 Проектированиеструктуры базы данных методом/>«Сущность — связь»/>/>/>/>/>/>/> 3.2.1 Построениедиаграммы ER-типа
1) Определение типов сущностей
Стержневые сущности:Основные договоры, дополнительные договоры.
Характеристическиесущности: Юридическое лицо, физическое лицо, информация о исполнителе.
2) Определение типов и характеристик связей
Сущности «Основные договоры» и «Дополнительные договоры»имеют степень отношения 1:n, класс принадлежностинеобязательный и обязательный соответственно. Следовательно, генерируем 2 отношенияпо одному на сущность.
Сущности «Планируемая дата» и «Основные договоры»имеют степень отношения 1:n, класс принадлежности необязательный и обязательный соответственно. Следовательно, генерируем 2отношения по одному на сущность.
Сущности «Основные договоры» и «Юридическое лицо»имеют степень отношения 1:n, класс принадлежности обязательныйи обязательный соответственно. Следовательно, генерируем 2 отношения по одномуна сущность. Сущности «Физическое лицо» и" имеют степеньотношения 1:1, класс принадлежности обязательный и обязательный соответственно.Следовательно, генерируем 2 отношения, по одному на сущность.
Сущности «Основные» и «Информация о исполнителе»имеют степень отношения 1:n, класс принадлежностиобязательный и обязательный соответственно. Следовательно генерируем 2отношения, по одному отношению на сущность.
По выделенным отношениям построимдиаграмму ER-типа:
/>
Рис 3.1 — Диаграмма ER-типа
/>/>/>/>/>/>/>3.2.2 Генерациянабора предварительных отношений
Построим предварительныйнабор отношений, и определим их атрибуты:
Основные договоры (N_Agr#, Регистрационный_номер, Юридический_номер,Дата_договора, Дата_регистрации, Срок_окончания, Контрагент, Объект_договора,Сумма_договора, Планируемая_дата# );
Дополнительные договоры (N_Sup_Agr#,Регистрационный_номер, Юридический_номер, Дата_регистрации,Дата_договора, Предмет_договора, Сумма_договора, Срок_окончания, Контрагент#);
Юридическое лицо (N_Contr1#, Контактный_телефон, Количество_сделок, e-mail, Контрагент#);
Информация о исполнителе (N_P#, Адрес, Сотовый_телефон, Количество_выполненых_сделок,Заработная_плата);
Физическое лицо(N_Contr2#, Адрес, Телефон, Контрагент#, e-mail).
3.2.3 Проверка отношенийна НФБК
Отношение Основныедоговора:
Список функциональныхзависимостей:
N_Agr#àРегистрационный номер
N_Agr#àЮридический номер
N_Agr#àДата договора
N_Agr#àДата регистрации
N_Agr#àСрок окончания
N_Agr#àКонтрагент
N_Agr#àСумма договора
N_Agr#àПредмет договора
N_Agr#àдата#
Детерминанты: N_Agr#
Возможные ключи: N_Agr#
Отношение Основныедоговор находится в НФБК
Отношение Дополнительныедоговора:
Список функциональныхзависимостей:
N_Sup_Agr#àДоп_Регистрационный номер
N_Sup_Agr#àДоп_Юридический номер
N_Sup_Agr#àДоп_Дата регистрации
N_Sup_Agr#àДоп_Дата договора
N_Sup_Agr#àДоп_Предмет договора
N_Sup_Agr#àДоп_Сумма договора
N_Sup_Agr#àДоп_Срок окончания
N_Sup_Agr#àДоп_Контрагент#
Детерминанты: N_Sup_Agr#
Возможные ключи: N_Sup_Agr#
Отношение Дополнительныедоговора находится в НФБК
Отношение Юридическое лицо:
Список функциональныхзависимостей:
N_Contr1#à Контактный телефон
N_Contr1#à Количество сделок
N_Contr1#à e-mail
N_Contr1#à Контрагент#
Детерминанты: N_Contr1#
Возможные ключи: N_Contr1#
Отношение Юридическоелицо находится в НФБК
Отношение Физическоелицо:
Список функциональныхзависимостей:
N_Contr2#à Адрес
N_Contr2#à Телефон
N_Contr2#à e-mail
N_Contr2#àКонтрагент#
Детерминанты: N_Contr2#
Возможные ключи: N_Contr2#
Отношение Физическое лицонаходится в НФБК
Отношение Планируемаядата:
Список функциональныхзависимостей:
N_D#àДата
Детерминанты: N_D#
Возможные ключи: N_D#
Отношение Спец.Одежданаходится в НФБК
/>/>/>/>/>/>
3.2.4 Исследованиеокончательного набора отношений на избыточность
Исследовав построенныйпредварительный набор отношений на избыточность, и проверив его на НФБК, получимследующие отношения:
Основные договоры (N_Agr#, Регистрационный_номер, Юридический_номер,Дата_договора, Дата_регистрации, Срок_окончания, Контрагент, Объект_договора,Сумма_договора, Планируемая_дата# );
Дополнительные договоры (N_Sup_Agr#,Регистрационный_номер, Юридический_номер, Дата_регистрации,Дата_договора, Предмет_договора, Сумма_договора, Срок_окончания, Контрагент#);
Юридическое лицо (N_Contr1#, Контактный_телефон, Количество_сделок, e-mail, Контрагент#);
Физическое лицо (N_Contr2#, Адрес, Телефон, Контрагент#, e-mail);
Просроченные договоры (N_FD#, Рег_номер, Юрид_номер, Дата_регистрации, Дата_договора, Исполнитель, Сумма_договора,Объект_договора, Контрагент#);
В полученном набореотношений нет ни одного, атрибуты которого можно было бы найти в другомотношении или отношении, полученном из отношений набора серией JOIN операций./>/>/>/>/>/>/>3.3 Проектированиеструктуры БД при помощи CASE-средства Erwin
/>/>/>/>/>/>
3.3.1Проектирование логической и физической схемы БД
Используя построенную диаграмму ER-типа представленную выше,спроектируем базу данных при помощи CASE-средства Erwin. Все связи из диаграммы ER-типапри переносе в нотацию IDEF1X CASE-средства Erwin имеют характеристики:
Таблица 1 – Характеристики связейСвязь Тип связи Количество элементов Основной договор-дополнительный договор Идентифицирующая 1 или много Основной договор-Юридическое лицо Идентифицирующая 1 или много Основной договор-Физическое лицо Идентифицирующая 1 Дополнительный договор-информация о исполнителе Не Идентифицирующая Много ко многим
/>
Рис 3.2 — «Логическая модель. Нотация IDEF0»
/>
Рис 3.3 – Физическаямодель данных
/>/>/>/>/>/>3.3.2 Исследование информационной модели
На основе физическоймодели ERwin был сгенерирован SQL – скрипт (Приложение A), в котором представлены:
· 5 таблиц;
· 10 триггеров;
· 4 генераторов суррогатных ключей;
В результате проверки SQL-скрипта в CASE-средстве Erwin Examiner 4.0,получен отчет Рисунок 3.4.
/>
Рисунок 3.4 – Результат проверки SQL-скрипта
Errors: в качестве ошибок, в отчете были названы сущности безальтернативных ключей. Для исправления ошибок были добавлены соответствующиеальтернативные ключи.
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>4. Программноеобеспечение4.1 Описаниефункций, выполняемых приложением
Функции, выполняемыепрограммой:
1)Добавление, удаление иредактирование данных (основных договоров,
дополнительных, словарядат, а так же информации о контрагентах );
2)Просмотр просроченныхдоговоров;
3)Сортировка (упорядочение)записей (строк) по возрастанию;
4)Поиска конкретнойзаписи в БД;
5)Фильтрации данных(отбора записей);
6)Выводит графики;
7)Выполняет экспорт из БДв MsWord;
8)Формирование отчетностидля основных и дополнительных договоров.
/>/>/>/>/>/>4.2 Проектирование ПО с помощью CASE— пакета "EnterpriseArchitect4.0"
4.2.1 Диаграммавариантов использования
Представление вариантовиспользования включает в себя всех действующих лиц, все прецеденты и ихдиаграммы для автоматизируемой системы.
Диаграмма вариантовиспользования разрабатываемой системы представлена на рисунке 4.1.
/>/>/>/>/>/>/>/>
По каждому вариантуиспользования могут выполняться следующие сценарии:
· Учет основныхдоговоров:
1) добавить основной договор;
2) удалить основной договор;
3) изменить основной договор;
4) сортировка осн. Договоров;
5) поиск осн. Договоров;
6) фильтрация осн. Договоров;
7) выводдиаграмм(информации) об осн. Договоров;
8) экспорт информации обосн. Договоров;
9) вывод отчета (тип1);
10) просмотр просроченныхдоговоров.
· Учет дополнительныхдоговоров
1) добавитьдополнительный договор;
2) удалитьдополнительный договор;
3) изменить доп.Договор;
4) вывести отчет.
· Учет информации оконтрагентах
1) Добавитьинформацию о контрагенте;
2) Удалитьинформацию о контрагенте;
3) Изменить инф. о контрагенте;
4) Вывести отчет.
4.5.3 Диаграммыпоследовательности и классов
Данная модель описываетвзаимодействие между объектами системы и содержит диаграммы классов и диаграммыпоследовательности.
Диаграммыпоследовательности разрабатываемой системы представлены и диаграмма классов представленыв приложении Б.
4.2.4 Диаграммакомпонентов
Представление компонентовсодержит информацию о библиотеках кода, исполняемых файлов, динамическихбиблиотеках и других компонентах модели.
Диаграмма компонентовразрабатываемой системы представлена на рисунке 4.5
/>
Рисунок 4.5 – диаграммакомпонентов
4.3 Описание компонентов
Таблица 4.1 — ОписаниекомпонентовDataSourse Предназначен для контроля над результатами запроса Query Предназначен для выполнения SQL запроса к БД DBGrids Предназначен для вывода результата запроса или целой таблицы БД на экран(работает через TDataSource) TTable Предназначен для установки связи с БД DecisionCube Реализует многомерный куб данных DecisionGraph Отображает графики, соответствующие выбору, сделанному пользователем в многомерном кубе DecisionQuery Отображает набор данных, используемый для построения куба. DecisionSource Источник данных, аналогичный DataSource, но приспособленный для задач DecisionCube DecisionGrid Отображает в табличном виде данные, соответствующие выбору, сделанному пользователем в многомерном кубе WordApplication Осуществляет соединение с сервером COM WordDocument Управляет работой сервера COM WordFont Управляет шрифтом сервера COM WordParagraphFormat Устанавливает формат абзаца сервера COM
4.4 Назначение модулейпрограммы
Таблица 4.2 — Назначениемодулей программыНазвание модуля Назначение Модули, связанные с данным модулем DataModule Модуль отвечает за связывание программы и базы данных, а так же за корректность выполнения запросов к БД ALL MODULES Saw21 Модуль программы, отвечающий за сортировку базы данных. DataModule MainUnit
Главный модуль, отвечающий за все операции над БД .
Можно добавлять, удалять, редактировать, сортировать, искать, распечатывать, фильтровать основные договоры, а так же
добавлять, удалять, изменять, печатать дополнительные договоры. Все операции кроме удаления происходят с помощью подключения других модулей. Удаление основных и дополнительных договоров происходит из данной формы. DataModule,Saw21,Unit3,Unit15,Unit16,Unit17,Unit18,Unit20,Unit21,Unit22,Unit25,Unit26,Unit2, ContractorDiagram Unit3 Редактировать запись-этот модуль отвечает за редактирование основных договоров . DataModule Unit2 Модуль программы, отвечающий за добавление основных договоров. DataModule Unit15 Модуль программы, отвечающий за добавление дополнительных договоров. DataModule Unit16 Модуль программы, отвечающий за добавление и редактирование дополнительных договоров. DataModule Unit17 Модуль программы, отвечающий за вывод информации (зависимость контрагента от суммы) в виде диаграммы. Относится к основным договорам. Вызывается из контекстного меню главного модуля . DataModule Unit18
Модуль программы, отвечающий за вывод информации (зависимость контрагента от суммы) в виде диаграммы. Относится к дополнительным договорам.
Вызывается из контекстного меню главного модуля . DataModule Unit20
Модуль программы, отвечающий за экспорт данных из БД в MsWord.
Вызывается из контекстного меню главного модуля . DataModule Unit21 Модуль программы, отвечающий за отображение просроченных договоров. DataModule Unit22 Словарь дат- модуль программы, отвечающий за учет планируемых дат (добавление, сохранение, удаление и просмотр). DataModule, Unit21 Unit25 Поиск- модуль программы, отвечающий за поиск в БД. DataModule Unit26 Модуль программы, отвечающий за фильтрацию данных в БД. DataModule ContractorDiagram Модуль программы, отвечающий за вывод информации(зависимость суммы договоров от даты) в виде диаграммы. Относится к основным договорам. Вызывается из контекстного меню главного модуля. DataModule DateAgreemDiagram Модуль программы, отвечающий за вывод информации(зависимость количества контрагентов от даты договоров) в виде диаграммы.Относится к дополнительным договорам. DataModule ObjectAgreemDiagramm
Модуль программы, отвечающий за вывод информации(зависимость предмета договора от суммы договора) в виде диаграммы.
Относится к основным договорам. DataModule JuridicalFaceData Модуль программы, отвечающий за добавление, редактирование и удаление информации о юридическом лице(контрагенте). DataModule
PhisikalFace
Data Модуль программы отвечающий за добалвение радактирование и удаление информации о физическом лице(контрагенте). DataModule
Общая конфигурация системы и маршруты передачи информации междуаппаратными устройствами, задействованными в реализации системы изображена нарисунке 4.15
/>
Рисунок 4.15 — диаграммаразмещения
4.5 Потоки данных
Для формальногопредставления автоматизируемого процесса была использована методология DFD, и позволяющий с ней работатьпрограммный продукт BPWin компаний ComputerAssociatesInternational и WintertreeSoftware. Методология DFD при помощи CASE-технологии позволяет рассмотретьавтоматизируемый процесс и провести ее анализ, выделив функциональныекомпоненты (процессы) (Смотри Приложение В Рисунки В.1 и В.2).
/>/>/>/>5.Руководствопользователя/>/>/>/> 5.1 Введение
Приложение «Law» предназначено для небольшихпредприятий, занимающихся ведением отчетности (учетом договоров). Приложениепредназначено для работы юристов, или каких-либо других работников даннойсферы. Для крупных предприятий данное приложение не подходит, так как неудовлетворяет всем требованиям./>/>/>/> 5.2 Назначение иусловие применения/>/>/>/> 5.2.1 Функции,автоматизируемые програмно
Функции, выполняемыепрограммой:
1) Добавление, удаление иредактирование данных (основных договоров,
дополнительных, словарядат, а так же дополнительной информации);
2) Просмотр просроченныхдоговоров;
3) Сортировка(упорядочение) записей (строк) по возрастанию;
3) Поиска конкретнойзаписи в БД;
4) Фильтрации данных (отборазаписей);
5) Выводит графики;
6) Выполняет экспорт в MsWord l;
7) Формированиеотчетности для основных и дополнительных договоров.
/>/>/>/> 5.2.2 Технические и программныетребования
Требования к аппаратномуобеспечению:
- x86 – процессор, производительностьюне менее Pentium II 500MГц;
- ОЗУ – не менее 32Mb;
- Манипулятор типа «мышь»или любое другое устройство, совместимое с ним;
- Разрешение экрана– не менее 640 на 480, количество цветов – не менее 16;
- Дисковоепространство ~ 40Mb (вместе с БД).
Требования к програмномуобеспечению:
- ОС – Windows98/ME/2000/XP/2003 Server;
- Установленнаяпрограмма BDE Administrator, нужная для связи СУБД с БД припомощи псевдонима (в данном случае псевдоним-BCDEMOS)./>/>/>/>5.3 Подготовка к работе
Дистрибутив программысодержит следующие файлы:
Таблица 1 – Файлы базы данныхИмя файла Описание Evgen.DB Файл Paradox (Основные договора). Может находиться в любой директории. Supagreement.DB Файл Paradox7(Дополнительные договора).Находится в той же дериктории, что и основные и дополнительные договора. Law.exe Исполняемый модуль программы. DBFirmData.DB Файл Paradox (Данные о юридическом лице).Находится в той же директории, что и основные и дополнительные договора. DBPhisikalFace.DB Файл Paradox (Данные о физическом лице).Находится в той же директории, что и основные и дополнительные договора. Perfomance Файл Paradox( Данные о исполнителе-физическом лице) Perfomance2 Файл Paradox(Данные о исполнителе-юридическом лице)
Общий объем описанныхфайлов (без файла БД) ~ 40Mb.
Запуск программыосуществляется запуском исполняемого файла(в том случае, если на компьютереустановлена программа BDE Administrator).
Для инсталляции BDE следует:
1)Запустить команднуюстроку ОС Windows(Пуск->Выполнить->cmd)
2)Обработать файл bdeinst.dll(находящийся в одной папке вместе с программой)утилитой regsvr32.exe, следующим образом:
regsvr32.exe\bdeinst.dll
Например:
regsvr32.exe C:\EvgenLaw3\bdeinst.dll
3)Далее следует запуститьBDE и открыть конфигурационный файл подназванием IDAPI32.CFG, находящийся в одной директории вместе с программой.
Установка завершена.
Далее следует запуститьисполняемый файл Law.exe любыми методами, допускаемыми Windows.
Проверкаработоспособности осуществляется простым запуском программы, в случаевозникновения ошибки (отсутствие необходимых библиотек, невозможностьустановить соединение с базой данных и т.д.) программа выдаст соответствующеесообщение об ошибке. Если программа не выдала ошибки, и подсоединение к базепрошло успешно, то программа работоспособна. При возникновении ошибки, а такжедля добавления пользователя следует обратиться к системному администратору.
/>/>/>/>
5.4Описание операций
5.4.1 Работа сосновным приложением(таблица основных договоров).
/>
Рисунок 5.1 – Таблицаосновных и дополнительных договоров
Редактирование таблицыосновных договоров осуществляется через диалоговые окна, возникающие принажатии на соответствующий пункт меню на панели инструментов или при нажатииправой кнопки манипулятора мыши .
Для этой таблицы характереннабор пунктов меню:
- «Добавить»для добавления записи;
- «Удалить»для удаления записи;
- «Редактировать»позволяет изменить данные о договоре;
- «Показатьвсе» возвращает базу в исходное состояние-если с ней были произведеныкакие-либо изменения(сортировка, поиск, фильтрация и т. д.);
- «Сортировка»производит упорядочение данных ;
- «Поиск»позволяет найти нужную запись;
- «Печать»выводит данные из БД на печать;
- «Фильтр»позволяет просмотреть данные из БД в заданном диапазоне;
- «Статистика»включает:
- Формированиедиаграмм на основе данных из БД;
- Просмотрпросроченных договоров;
- «Экспорт»включает:
- Перенос данных изБД в Ms Word;
- Перенос данных изБД в Ms Excel.
При изменении основногодоговора открывается новое окно, где пользователь изменяет данные(Регистрационный номер, юридический номер, дату регистрации, дату договора, срококончания, контрагента, предмета договора, сумму договора и исполнителя) одоговоре.
При добавлении основногодоговора открывается новое окно, где пользователь вносит данные(Регистрационный номер, юридический номер, дату регистрации, дату договора,срок окончания, контрагента, предмета договора, сумму договора и исполнителя) одоговоре, а так же выбрав опцию
«Дополнительныесведения» в зависимости от того, кем является контрагент(т.e. фирма, либо физическоелицо)-появляется таблица, в которую пользователь может внести дополнительныесведения. Если контрагентом является физическое лицо, то пользователь можетвнести следующие данные(Фамилия, имя, отчество, адрес, телефон и e-mail(если таковой есть)), или внести информацию оконтрагенте как о юридическом лице(фирме)(Адрес, контактный телефон, e-mail, количество сделок).
/>
Рисунок 5.2 Добавлениеосновного договора
После того как все данныезаполнены, нажимаем кнопку «добавить», и запись об основном договорепоявляется в главной таблице. Если же пользователь передумал заносить новыйдоговор в таблицу, то следует нажать кнопку «отмена» после чего онвернется к главной таблице со старыми данными. При изменении данных о обосновном договоре выдается то же окно, что и при добавлении осн. договора. При удалении выдается подтверждениена удаление и в зависимости от нажатой кнопки происходит либо удаление, либоотмена.
/>
Рисунок 5.3 Запрос наподтверждение удаления основного договора
При нажатии правой кнопкиграфического манипулятора мыши и удалении записи-договор удаляется без запросана подтверждение.
«Сортировка» производитсяпо следующим полям: регистрационный номер, юридический номер, контрагент.
Отдельно имеетсявозможность произвести сортировку по всем полям-кроме исполнителя(т к оно неимеет индеска)
/>
Рисунок 5.4 Сортировка БДосновных договоров
«Поиск» осуществляетсяпо: регистрационному номеру, юридическому номеру, дате регистрации, датедоговора, предмету договора, контрагенту.
Для поиска нужно выбратьполе, ввести данные в окно редактироваия и нажатать кнопку «Найти», илиотменить нажатием кнопки «Отмена»
/>
Рисунок 5.5 Поиск в БДосновных договоров
Если запись не найдена, товыдается сообщение вида:
/>
«Печать»осуществляется 2 способами:
1)Способом быстройпечати(т е нажатием на соответствующей кнопке меню);
2)Способом обычнойпечати(т.е. печать производится после предварительного просмотрасформированного документа).
/>
Рисунок 5.6 Выходнойдокумент основных договоров
Для того, что быпроизвести фильтрацию необходимо выбрать поле, по которому будет производитьсяфильтрация(дата регистрации, дата договора, срок окончания, сумма договора) изатем нажать кнопку «Фильтровать», или отменить нажатием кнопки«Отмена». При этом нужно ввести диапазон допустимых значений, которыепринимает фильтруемое поле.
/>
Рисунок 5.7 Фильтрация БДосн. Договоров
«Статистика»включает:
1)Две диаграммы (одна дляосновных, а другая для дополнительных договоров), отображающие зависимостьконтрагента (юридическое лицо???) от количества заключенных договоров. По оси X откладывается контрагент; по Y количество заключенных им договоров.
Из приведенной вышедиаграммы видно, что:
-Максимальное количестводоговоров (3 договора) заключило два контрагента (выделены зеленым и синимцветами);
-Минимальное количестводоговоров (один договор) заключил один контрагент (выделен красным цветом).
2)Просмотр просроченныхдоговоров, т.е. договоров, у которых срок окончания меньше планируемой даты.
/>
Рисунок 5.8 Диаграммаависимости контрагента от суммы доп. Договора
Договоры, у которых срококончания равен планируемой дате, считаются действительными (сравниваются срокис точностью до дня, а часы и минуты не берутся в счет).
Для просмотра просроченныхдоговоров необходимо:
-В контекстном меню нажавна кнопку «Просроченные договора» загрузить словарь дат
«Экспорт»включает:
1) Перенос данных из БД вMsWord;
При работе с «Экспортомданных из БД в Word»нажатием на соответствующей кнопке меню можно осуществлять следующие действия:
-«Соединиться»- проверить на наличие открытый документ;
-«Открыть нов»- открыть новый документ;
-«Добавить» — перенести в документ одну запись;
-«Сохранить» — сохранение изменений в документе;
-«Печать» — печать документа;
-Дополнительные опции;
При выборе дополнительныхопций (если до запуска программы не был открыт документ) открываются следующиевозможности:
-Кроме основных полей(регистрационный номер, юридический номер, дата регистрации, дата договора,контрагент, предмет договора, сумма договора) добавляются еще срок окончания иисполнитель при нажатии на кнопках «Срок окончания» и «Исполнитель».
-Добавляется возможностьпереноса всей таблици в MsWord.
Кнопка «Соединиться»осуществляет открытие и соединение с word, если пользователь случайно закрыл его.
Открыть новый документможно нажатием на кнопке «Открыть нов».
/>
Рисунок 5.11 — Экспортданных из БД в MsWord
5.4.2 Работа сосновным приложением (таблица дополнительных договоров)
/>
Рисунок 5.12 – Таблицаосновных и дополнительных договоров
Редактирование таблицыдополнительных договоров осуществляется через диалоговые окна, возникающие принажатии на соответствующую кнопку или при нажатии правой кнопки манипуляторамыши.
Для этой таблици характереннабор пунктов меню:
- «Добавить»для добавления записи.
- «Удалить»для удаления записи.
- «Редактировать»позволяет изменить данные о договоре.
- «Просмотр»позволяет просмотреть данные перед печатью и потом распечатать.
- «Печать»выводит данные таблици дополнительных договоров на печать.
Все остальные операции(сортировка, поиск, фильтрация и т.д.) бессмысленны, т.к. таблица является детализируемой(а не основной), что ведет за собой нарушение ссылочной целостности данных.
При изменениидополнительного договора открывается новое окно, где пользователь изменяетданные (Регистрационный номер, юридический номер, дату регистрации, датудоговора, срок окончанияпредмета договора, сумму договора и исполнителя) одоговоре.
/>
Рисунок 5.13 –Редактирование доп. Договоров
При добавлениидополнительного договора открывается новое окно, где пользователь вносит данные(Регистрационный номер, юридический номер, дату регистрации, дату договора, срококончания, предмета договора, сумму договора и исполнителя) о договоре.Контрагента нельзя вносить в таблицу дополнительных договоров, т.к. она связанас таблицей основных договоров по этому полю. При внесении новой записи втаблицу дополнительных договоров данные о контрагенте автоматически добавляютсяиз таблици основных договоров.Окно «Добавить запись доп. договора»выглядит так же как и редактирование.
При нажатии на кнопки «Просмотр»и «Печать» программа выполняет те же действия что и в таблице основныхдоговоров. См. стр. 7
/>
Рисунок 5.14 -Выходнойдокумент дополнительных договоров/>/>/>/> 5.5 Рекомендации поосвоению
Для освоения описываемогоприложения пользователю достаточно опыта работы в самых обычных Windows –приложениях, поскольку интерфейс программы прост, и все его элементы снабженывсплывающими подсказками. Для закрепления навыков пользователю предоставляетсявозможность произвести базовые операции работы с б.д… А также администраторможет предоставить пользователю фиктивную БД, с которой можно отработать основныеоперации, реализуемые программой, после чего приступать к работе с реальной БД.
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>Заключение
Приложение «Law» достаточно эффективно решаетпоставленную задачу, простой и понятный интерфейс программы доступен любомупользователю, имеется весь необходимый набор операций для выполненияпоставленных задач.
К достоинствам программыследует причислить отсутствие требования знаний СУБД к пользователю,возможность экспорта данных в средства Ms Office, а так же различные виды печати и богатый наборфункций и инструментов для работы с данными.
Недостатками программыявляются отсутствие справки .
Список использованныхисточников
1. Томас К., Каролин Б., Анна С. Базы данных. Проектирование,реализация и сопровождение. Теория и практика, Второе издание исправленное идополненное, Вильяис, М. – 2000г./>/>/>/>/>/>/>/>/>/>/>/>/>2. Джен Харрингтон Проектирование объектно-реляционных базданных, ДМК издательство, М. – 2000г.
3. Глушаков С.В., Ломотько Д.В. Базы Данных.Учебный курс,издательство АСТ, М. – 2002г.
4. Вендров А.М. Проектирование программного обеспеченияэкономических информационных систем: учебник, финансы и статистика, М. – 2003г.
5. Малыхина M. П. Базыданных: основы, проектирование, использование, СПб., БВХ-Петербург, 2004г.
6.Кириллов В.В. Структуризованный язык запросов (SQL). СПб.:ИТМО, 1994г.
Приложение А(обязательное)
Описание модулейпрограммы
Основной модуль программы-MainUnit
//---------------------------------------------------------------------------
#include
#pragmahdrstop
#include«DataModule.h»
#include«MainUnit.h»
#include«Saw21.h»
#include«Unit2.h»
#include«Unit3.h»
#include«Unit13.h»
#include«Unit14.h»
#include«Unit15.h»
#include«Unit16.h»
#include«Unit17.h»
#include«Unit18.h»
#include«Unit19.h»
#include«Unit20.h»
#include«Unit21.h»
#include«Unit22.h»
#include«Unit25.h»
#include«Unit26.h»
#include«ContractorDiagram.h»
#include«DateAgreemDiagram.h»
#include«ObjectAgreemDiagramm.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragma link«CSPIN»
#pragma link«FR_Class»
#pragma link«FR_Chart»
#pragma link«FR_ChBox»
#pragma link«FR_DCtrl»
#pragmaresource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcallTForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void__fastcall TForm1::FormCreate(TObject *Sender)
{
RadioButton3->Checked=false;/*Установка видимости компонентов при создании формы */
Edit1->Text=«byEvgen Corp. version1.0(Demo)»;
ToolButton9->Enabled=false;
EditObjAgreem->Visible=false;
//DataModule2->Table1->Active=true;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N15Click(TObject *Sender)
{
DataModule2->Table1->IndexFieldNames=«Register_number»;/*Сортировкапо регистрационному номеру */
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N16Click(TObject *Sender)
{
DataModule2->Table1->IndexFieldNames=«Juridical_number»;/*Сортировка по юридическому номеру*/
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N17Click(TObject *Sender)
{
DataModule2->Table1->IndexFieldNames=«Contractor»;/*Сортировка по контрагенту */
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N18Click(TObject *Sender)
{
FormBySort->ShowModal();/Вызов формы сортировки
}
//---------------------------------------------------------------------------
void__fastcall TForm1::Button1Click(TObject *Sender)
{
if(RadioButton3->Checked==true)/*При выборе включаем фльтр*/
DataModule2->Table1->Filtered=false;
else
{
if(RadioButton1->Checked==true)
DataModule2->Table1->Filter=«Contractor='»+CBContract->Text+"'";/*Фильтр по контрагенту*/
elseif(RadioButton2->Checked==true)
{
DataModule2->Table1->Filter=«Object_agreement='»+EditObjAgreem->Text+"'";/*Фильтр по предмету договора*/
}
elseDataModule2->Table1->Filter="(Contractor='"+CBContract->Text+"') and(Object_agreement="+(DataModule2->Table1->FieldByName(«Object_agreement»)->AsString+EditObjAgreem->Text)+")";/*Фильтр по контрагенту и предмету договора*/
}
DataModule2->Table1->Filtered=false;/*Выключаем фильтр*/
DataModule2->Table1->Refresh();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N9Click(TObject *Sender)
{
Form2->ShowModal();//Вызов формы «Добавитьдоговор»
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N10Click(TObject *Sender)
{
Form3->ShowModal();//Вызов формы «Редактироватьдоговор»
Form3->Position=poOwnerFormCenter;/*Установка свойств формы(позиция истиль)*/
Form3->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N11Click(TObject *Sender)
{
if(Application->MessageBox(«Вы действительно хотитеудалить запись?»,«Подтвердите удаление записи!»,MB_YESNO+MB_ICONEXCLAMATION)==IDYES)
DataModule2->Table1->Delete();
DataModule2->Table1->Refresh();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::ToolButton13Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::ToolButton5Click(TObject *Sender)
{
if(DataModule2->Table1->Modified==true)//Сохраняем изменения в базе
DataModule2->Table1->Post();
ShowMessage(«Высохранили изменнения в таблице!!»);
}
//---------------------------------------------------------------------------
void__fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
Form3->ShowModal();//Вызов формы «Редактироватьдоговор»
Form3->Position=poOwnerFormCenter;
Form3->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::ToolButton11Click(TObject *Sender)
{
DataModule2->Table1->Next();//Переходимна след. запись
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N6Click(TObject *Sender)
{
if(DataModule2->Table1->Modified==true)//Сохраняем изменения в таблице
DataModule2->Table1->Post();
ShowMessage(«Вы сохранилиизменнения в таблице!!»);
}
//---------------------------------------------------------------------------
void__fastcall TForm1::ToolButton3Click(TObject *Sender)
{
Form2->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::ToolButton7Click(TObject *Sender)
{
ReportAgreem->QuickRep1->Print();//Печать
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N27Click(TObject *Sender)
{
ReportAgreem->QuickRep1->Preview();//Предварительный просмотр перед //печатью
}
//---------------------------------------------------------------------------
void__fastcall TForm1::QuickReport1Click(TObject *Sender)
{
ReportAgreem->QuickRep1->Print();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::Button2Click(TObject *Sender)
{
Form14->QuickRep1->Preview();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::Button3Click(TObject *Sender)
{
Form14->QuickRep1->Print();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::Button4Click(TObject *Sender)
{
Form15->ShowModal();
Form15->Position=poOwnerFormCenter;
Form15->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::Button6Click(TObject *Sender)
{
if(Application->MessageBox(«Вы действительно хотитеудалить запись?»,«Подтвердите удаление записи!»,MB_YESNO+MB_ICONEXCLAMATION)==IDYES)
DataModule2->Table2->Delete();
DataModule2->Table2->Refresh();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::Button5Click(TObject *Sender)
{
Form16->ShowModal();
Form16->Position=poOwnerFormCenter;
Form16->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::DBGrid2DblClick(TObject *Sender)
{
Form16->ShowModal();
Form15->Position=poOwnerFormCenter;
Form15->BorderStyle=bsToolWindow;
}
void__fastcall TForm1::N29Click(TObject *Sender)
{
Form17->ShowModal();
Form15->Position=poOwnerFormCenter;
Form15->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N8Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N110Click(TObject *Sender)
{
Form18->ShowModal();
Form15->Position=poOwnerFormCenter;
Form15->BorderStyle=bsToolWindow;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N30Click(TObject *Sender)
{
Form19->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N35Click(TObject *Sender)
{
Form22->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::MsWord1Click(TObject *Sender)
{
Form20->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N7Click(TObject *Sender)
{
DBGrid1->Visible=true;
DBGrid2->Visible=true;
EditObjAgreem->Visible=true;
Edit1->Visible=false;
Memo1->Visible=false;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N13Click(TObject *Sender)
{
DataModule2->Table1->Filtered=false;
DataModule2->Table1->Active=false;
DataModule2->Table1->Active=true;
RadioButton1->Checked=false;
RadioButton2->Checked=false;
RadioButton3->Checked=false;
RadioButton4->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::MsWord21Click(TObject *Sender)
{
Form23->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N37Click(TObject *Sender)
{
DataModule2->Table3->Active=false;
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N38Click(TObject *Sender)
{
DataModule2->Table3->Active=true;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::N39Click(TObject *Sender)
{
Form25->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N40Click(TObject *Sender)
{
Form26->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N41Click(TObject *Sender)
{
Form2->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N42Click(TObject *Sender)
{
Form3->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N43Click(TObject *Sender)
{
if(Application->MessageBox(«Вы действительно хотитеудалить запись?»,«Подтвердите удаление записи!»,MB_YESNO+MB_ICONEXCLAMATION)==IDYES)
DataModule2->Table1->Delete();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N44Click(TObject *Sender)
{
DataModule2->Table1->Filtered=false;
DataModule2->Table1->Active=false;
DataModule2->Table1->Active=true;
RadioButton1->Checked=false;
RadioButton2->Checked=false;
RadioButton3->Checked=false;
RadioButton4->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::N45Click(TObject *Sender)
{
Form25->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N46Click(TObject *Sender)
{
Form26->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N47Click(TObject *Sender)
{
ReportAgreem->QuickRep1->Preview();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::N48Click(TObject *Sender)
{
Form20->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N49Click(TObject *Sender)
{
Form15->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N50Click(TObject *Sender)
{
Form16->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N51Click(TObject *Sender)
{
DataModule2->Table2->Delete();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N52Click(TObject *Sender)
{
Form14->QuickRep1->Preview();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N12Click(TObject *Sender)
{
Form1->frReport1->ShowReport();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N19Click(TObject *Sender)
{
FormRep->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N55Click(TObject *Sender)
{
FormRepAgreem->ShowModal();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::N57Click(TObject *Sender)
{
Form4->ShowModal();
}
//---------------------------------------------------------------------------
Unit20
//---------------------------------------------------------------------------
#include
#pragmahdrstop
#include«Saw12.h»
#include«Unit20.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragma link«Word_2K_SRVR»
#pragmaresource "*.dfm"
TForm20*Form20;
//---------------------------------------------------------------------------
__fastcallTForm20::TForm20(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton2Click(TObject *Sender)
{
//Прверка наличияоткрытого документа
if(WordApplication1->Documents->Count==0)
{
Application->MessageBoxA(PChar(«ВWord нет открытогодокумента»),«Varning»,MB_OK+MB_ICONEXCLAMATION);
Abort();
}
WordDocument1->ConnectTo(WordApplication1->ActiveDocument);
}
//---------------------------------------------------------------------------
void__fastcall TForm20::FormCreate(TObject *Sender)
{
DataModule2->Table1->Open();
//Выключение провероксинтаксиса и грамматики что бы не замедлять работу Winword
WordApplication1->Options->CheckSpellingAsYouType=false;
WordApplication1->Options->CheckGrammarAsYouType=false;
if(WordApplication1->Documents->Count==0)
{
ToolButton3->Enabled=false;
ToolButton4->Enabled=false;
ToolButton6->Enabled=false;
}
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton5Click(TObject *Sender)
{
//Открытиенового документа
WordApplication1->Documents->Add(EmptyParam,EmptyParam);
ToolButton3->Enabled=true;
ToolButton4->Enabled=true;
ToolButton5->Enabled=true;
ToolButton6->Enabled=true;
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton6Click(TObject *Sender)
{
//Перенос в документ всехзаписей
TBookmark SavePlace;
//Закладка натекущей записи
SavePlace=DataModule2->Table1->GetBookmark();
DataModule2->Table1->First();
StatusBar1->SimpleText=«Идет формированиедокумента»;
//Настройкадиаграммы
ProgressBar1->Max=DataModule2->Table1->RecordCount;
ProgressBar1->Position=0;
ProgressBar1->Visible=true;
//Цикл позаписям
while(!DataModule2->Table1->Eof)
{
ARecordExecuteClick(Sender);
ProgressBar1->Position=ProgressBar1->Position+1;
DataModule2->Table1->Next();
}
//Возвращение на текущуюзапись
DataModule2->Table1->GotoBookmark(SavePlace);
//Очистка закладки, полосысостояния и диаграммы
StatusBar1->SimpleText="";
ProgressBar1->Visible=false;
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ARecordExecuteClick(TObject *Sender)
{
TVariant snew="\n";
//Перенос в документодной записи
//DocumentSearch();
WordApplication1->Selection->InsertAfter(snew);
WordApplication1->Selection->InsertAfter(
TVariant(DataModule2->Table1Register_number->AsString+ ' ' +
DataModule2->Table1Juridical_number->AsString+ ' ' +
DataModule2->Table1Date_register->AsDateTime+ ' ' +
DataModule2->Table1Date_agreement->AsDateTime+ ' ' +
DataModule2->Table1Contractor->AsString+ ' ' +
DataModule2->Table1Object_agreement->AsString+ ' ' +
DataModule2->Table1Sum_agreement->AsInteger+'\n'));
WordApplication1->Selection->InsertAfter(snew);
if(ToolButton7->Enabled==true)
{
WordApplication1->Selection->InsertAfter(
TVariant(DataModule2->Table1Date_completion->AsString + «Срок окончания\n»));
WordApplication1->Selection->InsertAfter(snew);
}
if(ToolButton8->Enabled==true)
{
WordApplication1->Selection->InsertAfter(
TVariant(DataModule2->Table1Perfomance->AsString + «Исполнитель\n»));
}
WordFont1->ConnectTo(WordApplication1->Selection->Font);
WordParagraphFormat1->ConnectTo(WordApplication1->Selection->ParagraphFormat);
TVariantDirection = wdCollapseEnd;
WordApplication1->Selection->Collapse(&Direction);
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton3Click(TObject *Sender)
{
//DocumentSearch();
WordApplication1->Dialogs->Item(wdDialogFileSaveAs)->Show(EmptyParam);
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton1Click(TObject *Sender)
{
//Открытие и соединение сword, если пользователь случайно закрылего
WordApplication1->Connect();
//Включениевидимости сервера
WordApplication1->Visible;
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ApplicationEvents1Hint(TObject *Sender)
{
//Отображениеподсказок в строке состояния
StatusBar1->SimpleText=Application->Hint;
}
//---------------------------------------------------------------------------
void__fastcall TForm20::FormDestroy(TObject *Sender)
{
//Разрываем соединение сбазой
DataModule2->Table1->Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton4Click(TObject *Sender)
{
//Предварительныйпросмотр документа
//DocumentSearch();
WordDocument1->PrintPreview();
WordApplication1->Visible;
}
//---------------------------------------------------------------------------
void__fastcall TForm20::BitBtn1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm20::ToolButton15Click(TObject *Sender)
{
//Открытиефайла
WordApplication1->Visible;
if(WordApplication1->Dialogs->Item(wdDialogFileOpen)->Show(EmptyParam)==-1)
{
ToolButton3->Enabled=false;
ToolButton4->Enabled=false;
ToolButton5->Enabled=false;
}
}
//---------------------------------------------------------------------------
void__fastcall TForm20::CheckBox1Click(TObject *Sender)
{
if(CheckBox1->Checked==true){
ToolButton6->Enabled=true;
ToolButton7->Enabled=true;
ToolButton8->Enabled=true;}
else {
ToolButton6->Enabled=false;
ToolButton7->Enabled=false;
ToolButton8->Enabled=false;}
}
//---------------------------------------------------------------------------
void__fastcall TForm20::FormShow(TObject *Sender)
{
CheckBox1->Checked=false;
}
//---------------------------------------------------------------------------
//Поиск в БД
#include
#pragmahdrstop
#include«Unit25.h»
#include«Saw12.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmaresource "*.dfm"
TForm25*Form25;
//---------------------------------------------------------------------------
__fastcallTForm25::TForm25(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void__fastcall TForm25::ComboBox1Change(TObject *Sender)
{
if(ComboBox1->ItemIndex==0){ //Установка видимостикомпонентов, //связанных с данными
EditReg->Visible=true;
EditJur->Visible=false;
EditDateReg->Visible=false;
EditDateAgreem->Visible=false;
EditObjAgreem->Visible=false;
EditContractor->Visible=false;}
elseif(ComboBox1->ItemIndex==1){
EditJur->Visible=true;
EditReg->Visible=false;
EditDateReg->Visible=false;
EditDateAgreem->Visible=false;
EditObjAgreem->Visible=false;
EditContractor->Visible=false;}
else{if(ComboBox1->ItemIndex==2){
EditDateReg->Visible=true;
EditJur->Visible=false;
EditReg->Visible=false;
EditDateAgreem->Visible=false;
EditObjAgreem->Visible=false;
EditContractor->Visible=false;
}
else{if(ComboBox1->ItemIndex==3){
EditDateAgreem->Visible=true;
EditDateReg->Visible=false;
EditJur->Visible=false;
EditReg->Visible=false;
EditObjAgreem->Visible=false;
EditContractor->Visible=false;
}
else{if(ComboBox1->ItemIndex==4){
EditObjAgreem->Visible=true;
EditDateReg->Visible=false;
EditJur->Visible=false;
EditReg->Visible=false;
EditDateAgreem->Visible=false;
EditContractor->Visible=false;
}
else{if(ComboBox1->ItemIndex==5){
EditContractor->Visible=true;
EditDateReg->Visible=false;
EditJur->Visible=false;
EditReg->Visible=false;
EditDateAgreem->Visible=false;
EditObjAgreem->Visible=false;
}
}
}
}
}
}
//---------------------------------------------------------------------------
void__fastcall TForm25::BitBtn2Click(TObject *Sender)
{
Form25->Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm25::BitBtn1Click(TObject *Sender)
{
if(ComboBox1->ItemIndex==0){ //Поиск в записи в базе данных
DataModule2->Table1->IndexFieldNames=«Register_number»;
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Register_number»)->AsString=EditReg->Text;
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Записьне найдена!»);}
else{if(ComboBox1->ItemIndex==1){
DataModule2->Table1->IndexFieldNames=«Juridical_number»;//
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Juridical_number»)->AsInteger=StrToInt(EditJur->Text);
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Записьне найдена!!»);}
else{if(ComboBox1->ItemIndex==2){
DataModule2->Table1->IndexFieldNames=«Date_register»;
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Date_register»)->AsDateTime=StrToDate(EditDateReg->Text);//
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Записьне найдена»);}
else{if(ComboBox1->ItemIndex==3){
DataModule2->Table1->IndexFieldNames=«Date_agreement»;//
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Date_agreement»)->AsDateTime=StrToDate(EditDateAgreem->Text);
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Записьне найдена»);}
else {if(ComboBox1->ItemIndex==4){
DataModule2->Table1->IndexFieldNames=«Object_agreement»;//
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Object_agreement»)->AsString=EditObjAgreem->Text;
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Записьне найдена»);}
else{if(ComboBox1->ItemIndex==5){
DataModule2->Table1->IndexFieldNames=«Contractor»;
DataModule2->Table1->SetKey();
DataModule2->Table1->FieldByName(«Contractor»)->AsString=EditContractor->Text;
Form25->Close();
if(!DataModule2->Table1->GotoKey())
ShowMessage(«Запись не найдена»);}
}
}
}
}
}
}
//---------------------------------------------------------------------------
Модуль фильтрации БД
//---------------------------------------------------------------------------
#include
#pragmahdrstop
#include«Unit26.h»
#include«Saw12.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmaresource "*.dfm"
TForm26*Form26;
//---------------------------------------------------------------------------
__fastcallTForm26::TForm26(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void__fastcall TForm26::BitBtn2Click(TObject *Sender)
{
Form26->Close();
}
//---------------------------------------------------------------------------
void__fastcall TForm26::ComboBox1Change(TObject *Sender)
{
if(ComboBox1->ItemIndex==0){
Label2->Visible=true;
Label3->Visible=true;
EditDateRegMin->Visible=true;
EditDateRegMax->Visible=true;
EditSumAgrMin->Visible=false;
EditSumAgrMax->Visible=false;
EditDateCompMin->Visible=false;
EditDateCompMax->Visible=false;
EditDateAgreemMin->Visible=false;
EditDateAgreemMax->Visible=false;}
else {if(ComboBox1->ItemIndex==1){
Label2->Visible=true;
Label3->Visible=true;
EditDateAgreemMin->Visible=true;
EditDateAgreemMax->Visible=true;
EditDateRegMin->Visible=false;
EditDateRegMax->Visible=false;
EditSumAgrMin->Visible=false;
EditSumAgrMax->Visible=false;
EditDateCompMin->Visible=false;
EditDateCompMax->Visible=false;}
else{if(ComboBox1->ItemIndex==2){
Label2->Visible=true;
Label3->Visible=true;
EditDateCompMin->Visible=true;
EditDateCompMax->Visible=true;
EditDateAgreemMin->Visible=false;
EditDateAgreemMax->Visible=false;
EditDateRegMin->Visible=false;
EditDateRegMax->Visible=false;
EditSumAgrMin->Visible=false;
EditSumAgrMax->Visible=false;}
else{if(ComboBox1->ItemIndex==3){
Label2->Visible=true;
Label3->Visible=true;
EditSumAgrMin->Visible=true;
EditSumAgrMax->Visible=true;
EditDateCompMin->Visible=false;
EditDateCompMax->Visible=false;
EditDateAgreemMin->Visible=false;
EditDateAgreemMax->Visible=false;
EditDateRegMin->Visible=false;
EditDateRegMax->Visible=false;
}
}
}
}
}
//---------------------------------------------------------------------------
void__fastcall TForm26::FormShow(TObject *Sender)
{
Label2->Visible=false;
Label3->Visible=false;
}
//---------------------------------------------------------------------------
void__fastcall TForm26::BitBtn1Click(TObject *Sender)
{
if(ComboBox1->ItemIndex==0){
DataModule2->Table1->IndexFieldNames=«Date_register»;
DataModule2->Table1->SetRangeStart();
DataModule2->Table1->FieldByName(«Date_register»)->AsDateTime=StrToDate(EditDateRegMin->Text);
DataModule2->Table1->SetRangeEnd();
DataModule2->Table1->FieldByName(«Date_register»)->AsDateTime=StrToDate(EditDateRegMax->Text);
DataModule2->Table1->ApplyRange();
DataModule2->Table1->Refresh();
Form26->Close();}
else{if(ComboBox1->ItemIndex==1){
DataModule2->Table1->IndexFieldNames=«Date_agreement»;
DataModule2->Table1->SetRangeStart();
DataModule2->Table1->FieldByName(«Date_agreement»)->AsDateTime=StrToDate(EditDateAgreemMin->Text);
DataModule2->Table1->SetRangeEnd();
DataModule2->Table1->FieldByName(«Date_agreement»)->AsDateTime=StrToDate(EditDateAgreemMax->Text);
DataModule2->Table1->ApplyRange();
DataModule2->Table1->Refresh();
Form26->Close();}
else{if(ComboBox1->ItemIndex==2){
DataModule2->Table1->IndexFieldNames=«Date_completion»;
DataModule2->Table1->SetRangeStart();
DataModule2->Table1->FieldByName(«Date_completion»)->AsDateTime=StrToDate(EditDateCompMin->Text);
DataModule2->Table1->SetRangeEnd();
DataModule2->Table1->FieldByName(«Date_completion»)->AsDateTime=StrToDate(EditDateCompMax->Text);
DataModule2->Table1->ApplyRange();
DataModule2->Table1->Refresh();
Form26->Close();}
else{if(ComboBox1->ItemIndex==3){
DataModule2->Table1->IndexFieldNames=«Sum_agreement»;
DataModule2->Table1->SetRangeStart();
DataModule2->Table1->FieldByName(«Sum_agreement»)->AsString=EditSumAgrMin->Text;
DataModule2->Table1->SetRangeEnd();
DataModule2->Table1->FieldByName(«Sum_agreement»)->AsString=EditSumAgrMax->Text;
DataModule2->Table1->ApplyRange();
DataModule2->Table1->Refresh();//
Form26->Close();}
}
}
}
}
//---------------------------------------------------------------------------
Приложение Б(обязательное)
Отчеты
/>
Рисунок А.1 — Отчет поосновным договорам
/>
Рисунок A.1 — Отчет по дополнительнымдоговорам