Модель данных по стандарту IDEF1X диаграммы "сущность - связь"

Назначение и характеристики пакета Designer/2000. Анализ предметной области для разработки информационной системы, определение ее целей и задач. Построение моделей данных, разработка базы данных и клиентского приложения. Практические навыки разработки.

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

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

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

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

Содержание

  • Введение
  • 1. Теоретическая часть. CASE средство Designer/2000
  • 2. Проектная часть
  • 2.1 Постановка задачи
  • 2.2 Анализ предметной области
  • 2.3 Функциональная модель по стандарту IDEF0
  • 2.4 Модель данных по стандарту IDEF1X диаграммы "сущность-связь”
  • 2.5 Описание таблиц базы данных
  • 2.6 Дерево программных модулей
  • 2.7 Схема взаимосвязей модулей и массивов данных
  • 2.8 Алгоритм работы модуля dati
  • 2.9 Инструкция пользователя
  • 2.10 Способы и результаты тестирования программного продукта
  • 3. Проверка в работы программы в исключительных ситуациях
  • Заключение
  • Список использованных источников
  • Приложения

Введение

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

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

Данная курсовая работа посвящена теоретическому изучению CASE-средства Designer/2000 фирмы ORACLE и разработке информационной системы для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии.

Задачи, поставленные в курсовой работе:

изучение назначения и основных характеристик case средства Designer/2000;

анализ предметной области для разработки ИС;

определение целей и задач системы;

построение моделей данных;

разработка БД и клиентского приложения;

закрепление и развитие теоретических знаний по проектированию ИС;

приобретение практических навыков разработки ИС.

При разработке системы будет применяться структурно-функциональный подход. Для разработки клиентского приложения ИС был выбран язык программирования Borland Delphi 7.0 Enterprise, в связи с имеющимся опытом разработки ИС с помощью данного средства. С помощью Borland Delphi 7.0 Enterprise легко реализуется технология "файл-сервер”, путем прямого доступа к таблицам БД, так и с помощью языка запросов SQL. СУБД выбран MS Access.

1. Теоретическая часть. CASE средство Designer/2000

CASE-средство Designer/2000 2.0 фирмы ORACLE [23] является интегрированным CASE-средством, обеспечивающим в совокупности со средствами разработки приложений Developer/2000 поддержку полного ЖЦ ПО для систем, использующих СУБД ORACLE.

Структура и функции

Designer/2000 представляет собой семейство методологий и поддерживающих их программных продуктов. Базовая методология Designer/2000 (CASE*Method) - структурная методология проектирования систем, полностью охватывающая все этапы жизненного цикла ИС [8,9]. В соответствии с этой методологией на этапе планирования определяются цели создания системы, приоритеты и ограничения, разрабатывается системная архитектура и план разработки ИС. В процессе анализа строятся модель информационных потребностей (диаграмма "сущность-связь"), диаграмма функциональной иерархии (на основе функциональной декомпозиции ИС), матрица перекрестных ссылок и диаграмма потоков данных.

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

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

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

Repository Administrator - средства управления репозиторием (создание и удаление приложений, управление доступом к данным со стороны различных пользователей, экспорт и импорт данных);

Repository Object Navigator - средства доступа к репозиторию, обеспечивающие многооконный объектно-ориентированный интерфейс доступа ко всем элементам репозитория;

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

Systems Modeller - набор средств построения функциональных и информационных моделей проектируемой ИС, включающий средства для построения диаграмм "сущность-связь" (Entity-Relationship Diagrammer), диаграмм функциональных иерархий (Function Hierarchy Diagrammer), диаграмм потоков данных (Data Flow Diagrammer) и средство анализа и модификации связей объектов репозитория различных типов (Matrix Diagrammer);

Systems Designer - набор средств проектирования ИС, включающий средство построения структуры реляционной базы данных (Data Diagrammer), а также средства построения диаграмм, отображающих взаимодействие с данными, иерархию, структуру и логику приложений, реализуемую хранимыми процедурами на языке PL/SQL (Module Data Diagrammer, Module Structure Diagrammer и Module Logic Navigator);

Server Generator - генератор описаний объектов БД ORACLE (таблиц, индексов, ключей, последовательностей и т.д.). Помимо продуктов ORACLE, генерация и реинжиниринг БД может выполняться для СУБД Informix, DB/2, Microsoft SQL Server, Sybase, а также для стандарта ANSI SQL DDL и баз данных, доступ к которым реализуется посредством ODBC;

база приложение информационная система

Forms Generator - генератор приложений. Генерируемые приложения включают в себя различные экранные формы, средства контроля данных, проверки ограничений целостности и автоматические подсказки. Дальнейшая работа с приложением выполняется в среде Developer/2000;

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

Репозиторий Designer/2000 представляет собой хранилище всех проектных данных и может работать в многопользовательском режиме, обеспечивая параллельное обновление информации несколькими разработчиками. В процессе проектирования автоматически поддерживаются перекрестные ссылки между объектами словаря и могут генерироваться более 70 стандартных отчетов о моделируемой предметной области. Физическая среда хранения репозитория - база данных ORACLE.

Взаимодействие с другими средствами

Designer/2000 можно интегрировать с другими средствами, используя открытый интерфейс приложений API (Application Programming Interface). Кроме того, можно использовать средство ORACLE CASE Exchange для экспорта/импорта объектов репозитория с целью обмена информацией с другими CASE-средствами.

Developer/2000 обеспечивает разработку переносимых приложений, работающих в графической среде Windows, Macintosh или Motif. В среде Windows интеграция приложений Developer/2000 с другими средствами реализуется через механизм OLE и управляющие элементы VBX. Взаимодействие приложений с другими СУБД (DB/2, DB2/400, Rdb) реализуется с помощью средств ORACLE Client Adapter для ODBC, ORACLE Open Gateway и API.

Среда функционирования

Среда функционирования Designer/2000 и Developer/2000 - Windows 3. x, Windows 95, Windows NT.

2. Проектная часть

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

ИС должна содержать следующую информацию:

Сведения обо всем, жилищном фонде, обслуживаемом муниципальным жилищно-ремонтным эксплуатационным предприятием (МЖРЭП). Основные характеристики жилья (адрес, тип дома, тип и площадь крыши, наличие лифта и т.д.)

Сведения о жильцах проживающих в жилищном фонде (ответственный квартирообладатель и т.д.)

Сведения о видах ремонтных работ (с их стоимостью), которые может осуществлять МРЭП (вид работы, стоимость за единицу и т. д).

Сведения о выполненных ремонтах жилищного фонда (Даты проведения, объем работ, общая стоимость, где проводилась и т.д.).

Сведения о заявках на ремонт от квартирообладателей с предполагаемой датой их выполнения. (Дата заявки, предполагаемая дата выполнения, кто делал заявку и т.д.).

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

ИС должна обеспечивать:

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

Многопользовательский режим работы.

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

пользователя (только администратора).

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

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

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

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

Формирование списка объектов, которые необходимо отремонтировать в периоде, заданном пользователем. Организовать возможность вывода списка объектов в MSWord (или MSExcel).

Формирование отчета (с возможностью вывода на печать) всех своевременно не обеспеченных заявках на текущую дату с указанием причины.

2.2 Анализ предметной области

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

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

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

Пользователями разрабатываемой системы будут:

Администратор (доступны все возможности, предусмотренные в программе)

Работник (имеет доступ к работе с заявками, назначению работ по заявкам, а также имеет возможность просматривать отчетность)

Гость (Может подать заявку и просмотреть отчет о выполненных ремонтах жилых объектах)

Для выполнения требований, предъявляемых пользователями, ИС кроме хранения информации должна выполнять следующие функции:

1. Формирование требуемых отчетов, с возможностью вывода на печать.

2. Выводить информацию о том как изменялась цена на ремонтные работы за период.

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

4. Осуществлять быстрый поиск и сортировку по различным критериям.

Входными документами в разрабатываемой ИС будут являться:

Паспортные данные жильцов

Заявление на проведение ремонтных работ

Выходными документами для разрабатываемой ИС будут являться:

Отчет об отремонтированных жилых объектах

Отчет об изменении стоимости ремонтных работ за период

Отчет обо всех своевременно не обеспеченных заявках на текущую дату с указанием причины

2.3 Функциональная модель по стандарту IDEF0

Функциональная модель по стандарту IDEF0 и методологии SADT была разработана с помощью CASE - средства BPwin v.2.5 Модель разрабатываемой ИС по стандарту IDEF0 представлена в приложении А.

Нулевой уровень

К-т уровня

К-т Сбалансированности

К-т функциональности

Первый уровень

Второй уровень

Третий уровень

Четвертый уровень

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

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

Элементарными функциями моделируемой ИС являются:

1. Определение категории пользователя

2. Определение полномочий

3. Открытие доступа к БД системы

4. Блокировка записи

5. Добавление, удаление, редактирование записей справочника "Жилищный фонд"

6. Добавление, удаление, редактирование записей справочника "Жильцы"

7. Добавление, удаление, редактирование записей справочника "Ремонтные работы"

8. Разблокирование записи

9. Добавление заявки

10. Назначение работ по заявке

11. Выполнение заявки

12. Отклонение заявки

13. Обновление

14. Смена пароля

15. Резервная копия

16. Поиск по ФИО

17. Поиск по адресу

18. Поиск по заявке

19. Сортировка по адресу

20. Сортировка по ФИО

21. Сортировка по заявкам

22. Формирование отчета об изменении стоимости ремонтных работ за период

23. Формирование отчета "отремонтированные жилые объекты"

24. Формирование отчета "Невыполненные заявки"

23. Формирование отчета "Предполагаемый ремонт жилых объектов"

2.4 Модель данных по стандарту IDEF1X диаграммы "сущность-связь”

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

Рисунок 1 - ER-диаграмма

На рисунке 1 отображены связи, все они относятся к типу не идентифицирующей связи один-ко-многим, так как:

В одном доме могут проживать много человек, один человек проживает только в одном доме.

Жильцы могут оставлять много заявок, но одна заявка соответствует одному жильцу

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

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

Одной ремонтной работе может соответствовать несколько изменений цены. Физическая модель представлена в приложении Б.

2.5 Описание таблиц базы данных

База данных реализована в MS Access и состоит из семи таблиц. Таблица "Zil" содержит информацию о жилищном фонде, описание атрибутов приведено в таблице 2

Таблица 2

Таблица "Zil”

Наименование поля

Тип даных

Описание

id_z

Счетчик

Код дома, ключевое поле

adr_z

Текстовый

Адрес дома, не индексированное

tipdom_z

Текстовый

Тип дома

tipkr_z

Текстовый

Тип крыши

pl_z

Числовой

Площадь

lift_z

Текстовый

Лифт

Таблица Zilci содержит данные о жильцах.

Описание всех атрибутов отражено в таблице 3.

Таблица 3 - Таблица Zilci

Наименование поля

Тип даных

Описание

Id_zl

Счетчик

Код жильца, ключевое поле

Fio_zl

Текстовый

Фамилия имя отчество жильца

Kv_zl

Числовой

Номер квартиры жильца

Id_z_zl

Числовой

Код дома, подстановка из таблицы "Zil”

Таблица remr содержит информацию о ремонтных работах и стоимости на них

Таблица 4 - Таблица remr

Наименование поля

Тип даных

Описание

Id_rr

Счетчик

Код работы, ключевое поле

Nazv_rr

Текстовый

Наименование работы

St_rr

Числовой

Стоимость за единицу

Edi_rr

Текстовый

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

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

Таблица 5 - Таблица Zayavka

Наименование поля

Тип даных

Описание

id_za

Счетчик

Код заявки

id_zl_za

Числовой

Адрес жильца делающего заявку, подстановка из таблицы Zilci

dataz_za

Дата/время

Дата заявки

datapv_za

Дата/время

Предполагаемая дата выполнения заявки

prich_za

Текстовый

Причина отказа

datav_za

Дата/время

Дата выполнения заявки

Таблица NaznR содержит информацию о назначенных работах на заявку.

Таблица 6 - Таблица NaznR

Наименование поля

Тип даных

Описание

id_nr

Счетчик

Код назначенной работы

id_rr_nr

Числовой

Код работы, подстановка из таблицы remr

st_rr_nr

Числовой

Стоимость работы

ob_nr

Числовой

Объем работ

st_nr

Числовой

Общая стоимость

id_za_nr

Числовой

Код заявки, подстановка из таблицы Zayavka

Таблица RCen содержит информацию об изменении цен на работы

Таблица 7 - Таблица RCen

Наименование поля

Тип даных

Описание

id_rc

Счетчик

Код изменения

id_rr_rc

Числовой

Код работы, подстановка из таблицы remr

data_rc

Дата/время

Дата изменения

cena_rc

Числовой

Измененная цена

На рисунке 2 представлена структура всех таблиц и связи между ними.

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

2.6 Дерево программных модулей

Разрабатываемая ИС состоит из 13 модулей, их описание представлено в таблице 8.

Таблица 8 - Программные модули ИС

Название модуля

Описание

DataM

Модуль подключения к БД

Main

Модуль главной формы

Zilci

Модуль формы редактирования и ввода жильцов

Zil

Модуль формы редактирования и ввода жилищного фонда

Zayavka

Модуль формы оформления заявки

Remr

Модуль формы для ввода ремонтных работ

naznr

Модуль формы назначения ремонтных работ по заявке

zotk

Модуль формы отказа выполнения заявки

vipz

Модуль формы выполненные заявки

Pass

Модуль формы входа в программу

dati

Модуль формы вывод отчета за определенные период

chpass

Модуль формы смены пароля

Дерево программных модулей изображено на рисунке 3.

Рисунок 3 - Дерево программных модулей

2.7 Схема взаимосвязей модулей и массивов данных

Схема взаимосвязей модулей и массивов данных представлена на рисунке 4

Рисунок 4 - Схема взаимосвязей модулей и массивов данных

2.8 Алгоритм работы модуля dati

Данный модуль реализует процедуру вывода отчета об отремонтированных объектах за период заданный пользователем.

2.9 Инструкция пользователя

Рекомендуемые системные требования: процессор 2000 МГц; оперативная память 1024 Мбайт; 100 Мбайт свободного места на жестком диске; мышь и клавиатура; операционная система Microsoft Windows XP/Vista /7; Microsoft Office 2003/2007.

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

Рисунок 6 - главная форма программы

В пункте меню Справочники доступны три справочника: Жилищный фонд, Жильцы и Ремонтные работы. В меню заявки доступны следующие пункты: Оформление заявки, Невыполненные заявки, Выполненные заявки.

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

Работа со справочником "Жилищный фонд" представлена на рисунке 7

Рисунок 7 - справочник "Жилищный фонд"

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

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

В пункте меню "Сервис" возможно изменение пароля и также резервное копирование базы данных.

В пункте меню "Отчеты" возможен просмотр предусмотренных программой отчетов.

2.10 Способы и результаты тестирования программного продукта

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

Проверка проводилась в трех различных режимах:

1. Проверка в нормальных условиях.

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

Рисунок 5 - тестирование программы в нормальном режиме

2. Проверка в экстремальных условиях.

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

Рисунок 6 - тестирование программы в экстремальных условиях

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

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

Рисунок 7 - тестирование программы при добавлении двух одинаковых записей

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

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

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

Заключение

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

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

Были успешно достигнуты поставленные цели, а именно:

закрепление и развитие теоретических знаний, полученных студентом в процессе изучения курса "Проектирование информационных систем";

развитие умения осуществлять выбор варианта технологии проектирования информационных систем (ИС);

приобретение студентами практических навыков разработки методических материалов проектировщика;

умение вырабатывать и реализовывать решения.

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

Список использованных источников

1. Вендров А.М. CASE-технологии: Современные методы и средства проектирования информационных систем. М: Финансы и статистика 1998;

2. Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник для студентов вузов - М.: Финансы и статистика, 2000;

3. Вендров А.М. Практикум по проектированию программного обеспечения экономических информационных систем: Учебное пособие для студентов вузов. - М: Финансы и статистика, 2002;

4. Базы данных. Учебник для вузов. /Под ред. Хоменко А.Д., - М.: 2000.

5. Карпова Т.С. Базы данных: Модели, разработка, реализация. - СПб: Питер, 2001.

6. Дарахвелидзе, П.Г. Программирование в Delphi 7/П.Г. Дарахвелидзе, Е.П. Марков. - Спб.: БХВ-Петербург, 2005. - 784 с

Приложения

Приложение А

Модель ИС по стандарту IDEF0 и методологии SADT

Рисунок Б.1 - Уровень A0 - автоматизация учета ремонта в МЖРЭП

Рисунок Б.2 - Уровень A1

Рисунок Б.3 - Уровень A2 - определение уровня доступа

Рисунок Б.4 - Уровень A2 - декомпозиция блока изменение БД

Рисунок Б.5 - Уровень A3 - декомпозиция блока работа с БД

Рисунок Б.6 - Уровень A3 - декомпозиция блока добавление, удаление, редактирование записей

Рисунок Б.6 - Уровень A4 - Оформление заявки

Рисунок Б.7 - Уровень A2 - выполнение запросов пользователей

Приложение Б - Физическая модель данных

Рисунок Б1 - Физическая модель денных

Приложение В - Программный код созданной ИС

procedure TFpass. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

if application. MessageBox ('Вы хотите выйти из программы? ','Выход из программы',mb_yesno+mb_iconquestion) =idyes then

begin

application. Terminate;

end

else canclose: =false;

end;

procedure TFpass. BitBtn1Click (Sender: TObject);

begin

closequery;

end;

procedure TFpass. SpeedButton1Click (Sender: TObject);

var inifile: tinifile;

dbp: string;

begin

dm. od. InitialDir: =ExtractFilePath (Application. ExeName);

if dm. od. Execute then

begin

e2. Text: =dm. od. FileName;

try

dm. ADO. Connected: =false;

dm. ADO. ConnectionString: ='Provider=Microsoft. Jet. OLEDB.4.0; Data Source='+dm. od. FileName+'; Persist Security Info=False';

dm. ADO. Connected: =true;

except

showmessage ('Произошла ошибка при подключении к базе');

exit;

end;

IniFile: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе

inifile. WriteString ('Options', 'DBPath', dm. od. FileName);

IniFile. Free;

dm. TEMP. Active: =false;

dm. TEMP.commandText: ='Select login fROM pass';

dm. TEMP. Active: =true;

cb. Clear;

While not dm. TEMP. Eof do

begin

cb. Items. Add (dm. TEMP. Fields [0]. AsString);

dm. TEMP. Next;

end;

end;

end;

procedure TFpass. FormShow (Sender: TObject);

var inifile: tinifile;

dbp: string;

begin

fpass. Caption: =application. Title;

IniFile: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе

DBP: = IniFile. ReadString ('Options', 'DBPath', ExtractFilePath (Application. ExeName) +'');

e2. Text: =dbp;

IniFile. Free;

if fileexists (dbp) =false then

begin

showmessage ('База данных по указанному пути не была найдена! ');

exit;

end;

try

dm. ADO. Connected: =false;

dm. ADO. ConnectionString: ='Provider=Microsoft. Jet. OLEDB.4.0; Data Source='+dbp+'; Persist Security Info=False';

dm. ADO. Connected: =true;

except

showmessage ('Произошла ошибка при подключении к базе');

exit;

end;

cb. Clear; e. Clear;

dm. TEMP. Active: =false;

dm. TEMP.commandText: ='Select login fROM pass';

dm. TEMP. Active: =true;

While not dm. TEMP. Eof do

begin

cb. Items. Add (dm. TEMP. Fields [0]. AsString);

dm. TEMP. Next;

end;

end;

procedure TFpass. BitBtn2Click (Sender: TObject);

begin

if cb. Text='' then showmessage ('Пользователь не выбран')

else if e. Text='' then showmessage ('Пароль не введен')

else

begin

dm. temp. Active: =false;

dm. temp.commandText: ='select login from pass where (login="'+cb. Text+'") and (pass="'+e. Text+'") ';

dm. temp. Active: =true;

if dm. temp. RecordCount>0 then

begin

if cb. text='Администратор' then

begin

fpass. Hide;

fmain. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);

fmain. showmodal;

end

else if cb. Text='Работник' then

begin

fpass. Hide;

fmain. n99. Visible: =false;

fmain. n5. Visible: =false;

fmain. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);

fmain. showmodal;

end

else if cb. Text='Гость' then

begin

// fmain. n10. Visible: =false;

fmain. n11. Visible: =false;

fmain. n12. Visible: =false;

fmain. n15. Visible: =false;

fmain. n16. Visible: =false;

fmain. n17. Visible: =false;

fmain. n99. Visible: =false;

fmain. n5. Visible: =false;

fzayavka. N2. Visible: =false;

fzayavka. N3. Visible: =false;

fzayavka. N4. Visible: =false;

fzayavka. N5. Visible: =false;

fzayavka. N6. Visible: =false;

fzayavka. N7. Visible: =false;

fzayavka. N8. Visible: =false;

fzayavka. N9. Visible: =false;

fzayavka. N10. Visible: =false;

fzayavka. N11. Visible: =false;

fzayavka. N12. Visible: =false;

fzayavka. N13. Visible: =false;

fzayavka. N14. Visible: =false;

fzayavka. N15. Visible: =false;

fpass. Hide;

fmain. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);

fmain. showmodal;

end;

end

else

begin

showmessage ('Проверьте правильность пароля');

exit;

end;

end;

end;

procedure TFpass. cbKeyPress (Sender: TObject; var Key: Char);

begin

key: =#0;

end;

end.

procedure TFChPAss. FormShow (Sender: TObject);

begin

cb. Clear;

dm. temp. Active: =false;

dm. temp.commandText: ='Select login from pass WHERE (login<>"Гость") order by login';

dm. temp. Active: =true;

while not dm. temp. Eof do

begin

cb. Items. Add (dm. temp. Fields [0]. AsString);

dm. temp. Next;

end;

end;

procedure TFChPAss. cbKeyPress (Sender: TObject; var Key: Char);

begin

key: =#0;

end;

procedure TFChPAss. BitBtn2Click (Sender: TObject);

begin

if cb. Text='' then showmessage ('Вы не выбрали имя пользователя')

else if e1. Text='' then showmessage ('Вы не ввели пароль')

else if e2. Text='' then showmessage ('Вы не ввели подтверждение пароля')

else if e2. Text<>e1. Text then showmessage ('Пароль и подтверждение пароля не совпадают')

else

begin

dm.com.commandtext: ='Update pass Set pass="'+e2. Text+'" where (login = "'+cb. Text+'") ';

dm.com. Execute;

showmessage ('Пароль изменен');

closequery;

end;

end;

procedure TFChPAss. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

cb. Clear;

e1. Text: =''; e2. Text: ='';

close;

end;

procedure TFChPAss. BitBtn1Click (Sender: TObject);

begin

closequery;

end;

end.

procedure TFdati. BitBtn1Click (Sender: TObject);

begin

closequery;

end;

procedure TFdati. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

dtp1. Date: =date;

dtp2. Date: =date;

close;

end;

procedure TFdati. FormShow (Sender: TObject);

begin

dtp1. Date: =date;

dtp2. Date: =date;

end;

procedure TFdati. BitBtn2Click (Sender: TObject);

var

Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith: OleVariant;

LinkToFile,SaveWithDocument,Range: OleVariant;

Table1: Table;

i: integer;

flag: boolean;

Reg: TRegistry;

summa: real;

begin

if dtp1. Date>dtp2. Date then

begin

showmessage ('Ошибка в последовательности дат');

exit;

end;

// Проверяем, инсталлирован ли Word

Reg: = TRegistry. Create;

Reg. RootKey: = HKEY_CLASSES_ROOT;

flag: =reg. KeyExists ('Word. Application');

reg. Free;

// flag: =true;

if flag=false then

begin

application. MessageBox ('Word не устанволен','Отчет',mb_ok+mb_iconstop);

exit;

end;

if tm=0 then

begin

WordApplication1. Visible: =false;

WordApplication1. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word

Template: =ExtractFilePath (Application. EXEName) +'\Dot\Ремонт. dot'; // путь к шаблону документа

WordApplication1. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона

WordDocument1. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов

Table1: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица

Replace: =true; // параметр, задающий режим замены

FindText: ='#1'; // что меняем

ReplaceWith: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

dm. temp. Active: =false;

dm. temp.commandText: ='Select adr_z,sum (st_nr) FROM zil,zilci,zayavka,naznR WHERE (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) GROUP BY adr_z';

dm. temp. Active: =true;

i: =2;

summa: =0;

While (not dm. temp. Eof) do

begin

Table1. Rows. Add (EmptyParam);

Table1. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;

Table1. Cell (i,

2). Range. Text: = dm. temp. Fields [1]. AsString;

summa: =summa+dm. temp. Fields [1]. asfloat;

inc (i); dm. temp. next;

end;

Replace: =true; // параметр, задающий режим замены

FindText: ='#2'; // что меняем

ReplaceWith: =floattostr (summa); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

Table1. Rows. Item (i). Delete;

WordApplication1. Visible: =true; // делаем приложение MS Word видимым

WordApplication1. Disconnect; // Разрываем связь с серверо

end

else if tm=1 then

begin

WordApplication1. Visible: =false;

WordApplication1. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word

Template: =ExtractFilePath (Application. EXEName) +'\Dot\Изменение. dot'; // путь к шаблону документа

WordApplication1. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона

WordDocument1. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов

Table1: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица

Replace: =true; // параметр, задающий режим замены

FindText: ='#1'; // что меняем

ReplaceWith: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

dm. temp. Active: =false;

dm. temp.commandText: ='Select nazv_rr,ocena_rc,cena_rc,data_rc from remr,rcen where (id_rr=id_rr_rc) and (data_rc BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) ORDER BY data_rc';

dm. temp. Active: =true;

i: =2;

While (not dm. temp. Eof) do

begin

Table1. Rows. Add (EmptyParam);

Table1. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;

Table1. Cell (i,

2). Range. Text: = dm. temp. Fields [1]. AsString;

Table1. Cell (i,

3). Range. Text: = dm. temp. Fields [2]. AsString;

Table1. Cell (i,

4). Range. Text: = dm. temp. Fields [3]. AsString;

inc (i); dm. temp. next;

end;

Replace: =true; // параметр, задающий режим замены

FindText: ='#2'; // что меняем

ReplaceWith: =floattostr (summa); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

Table1. Rows. Item (i). Delete;

WordApplication1. Visible: =true; // делаем приложение MS Word видимым

WordApplication1. Disconnect; // Разрываем связь с серверо

end

else if tm=2 then

begin

WordApplication1. Visible: =false;

WordApplication1. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word

Template: =ExtractFilePath (Application. EXEName) +'\Dot\План. dot'; // путь к шаблону документа

WordApplication1. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона

WordDocument1. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов

Table1: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица

Replace: =true; // параметр, задающий режим замены

FindText: ='#1'; // что меняем

ReplaceWith: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

dm. temp. Active: =false;

dm. temp.commandText: ='Select adr_z,datapv_za from zil,zilci,zayavka where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is Null) and (dataot_za is Null) and (datapv_za BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) ';

dm. temp. Active: =true;

i: =2;

While (not dm. temp. Eof) do

begin

Table1. Rows. Add (EmptyParam);

Table1. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;

Table1. Cell (i,

2). Range. Text: = dm. temp. Fields [1]. AsString;

inc (i); dm. temp. next;

end;

Replace: =true; // параметр, задающий режим замены

FindText: ='#2'; // что меняем

ReplaceWith: =floattostr (summa); // на что меняем

WordDocument1. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

Table1. Rows. Item (i). Delete;

WordApplication1. Visible: =true; // делаем приложение MS Word видимым

WordApplication1. Disconnect; // Разрываем связь с серверо

end;

end;

end.

rocedure TFmain. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

if application. MessageBox ('Вы хотите выйти из программы? ','Выход из программы',mb_yesno+mb_iconquestion) =idyes then

begin

application. Terminate;

end

else canclose: =false;

end;

procedure TFmain. N2Click (Sender: TObject);

begin

closequery;

end;

procedure TFmain. FormShow (Sender: TObject);

begin

if fileexists ('photo. jpg') then

begin

image1. Picture. LoadFromFile ('photo. jpg');

end;

end;

function TFmain. data (data: tdatetime): string;

var g,m,d: word;

begin

decodedate (data,g,m,d);

result: =''+currtostr (m) +'/'+currtostr (d) +'/'+currtostr (g) +'';

end;

function TFmain. Update (rs,tab: string): boolean;

begin

dm. temp. Active: =false;

dm. temp.commandText: ='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+tmp+') ';

dm. temp. Active: =true;

if dm. temp. Fields [0]. AsBoolean=true then

begin

result: =false;

end

else

begin

dm.com.commandText: ='Update '+tab+' set log_'+rs+'=TRUE where id_'+rs+'='+tmp+'';

dm.com. Execute;

result: =true;

end;

end;

function TFmain. Delete (rs,tab,temp: string): boolean;

begin

dm. temp. Active: =false;

dm. temp.commandText: ='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+tmp+') ';

dm. temp. Active: =true;

if dm. temp. Fields [0]. AsBoolean=true then

begin

result: =false;

end

else if application. MessageBox ('Вы хотите удалить запись? ','Удаление',mb_yesno+mb_iconquestion) =idyes then

begin

dm.com.commandText: ='Delete * from '+tab+' where (id_'+rs+'='+tmp+') ';

dm.com. Execute;

result: =true;

showmessage ('Удаление прошло успешно');

end;

end;

procedure TFmain. N4Click (Sender: TObject);

var inifile: tinifile;

dbp: string;

begin

IniFile: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе

DBP: = IniFile. ReadString ('options', 'dbpath', '');

IniFile. Free;

// showmessage (dbp);

copyfile (pchar (DBP),pchar (ExtractFilePath (Application. ExeName) +'Архив\base_'+datetostr (date) +'_'+stringreplace (timetostr (time),': ','. ', [rfReplaceAll, rfIgnoreCase]) +'. mdb'),true);

if fileexists (ExtractFilePath (Application. ExeName) +'Архив\base_'+datetostr (date) +'_'+stringreplace (timetostr (time),': ','. ', [rfReplaceAll, rfIgnoreCase]) +'. mdb') =true then showmessage ('Резервная копия создана успешно')

else showmessage ('Ошибка при создании резервной копии');

end;

procedure TFmain. N3Click (Sender: TObject);

begin

fchpass. Caption: =n3. Caption;

fchpass. ShowModal;

end;

procedure TFmain. N6Click (Sender: TObject);

begin

fzil. Caption: =n6. Caption;

fzil. DBGrid1. PopupMenu: =fzil. PopupMenu1;

fzil. DBGrid1. DataSource: =dm. zs;

dm. z. Active: =false;

dm. z.commandText: ='select id_z, adr_z, tdom_z, tkr_z, pl_z, lift_z from Zil';

dm. z. Active: =true;

fzil. ShowModal;

end;

procedure TFmain. N7Click (Sender: TObject);

begin

fzilci. Caption: =n7. Caption;

fzilci. DBGrid1. PopupMenu: =fzilci. PopupMenu1;

fzilci. DBGrid1. DataSource: =dm. zls;

dm. zl. Active: =false;

dm. zl.commandText: ='Select id_zl,fio_zl,adr_z,kv_zl from zil,zilci where (id_z=id_z_zl) ';

dm. zl. Active: =true;

fzilci. ShowModal;

end;

procedure TFmain. N8Click (Sender: TObject);

begin

fremr. Caption: =n8. Caption;

fremr. DBGrid1. PopupMenu: =fremr. PopupMenu1;

fremr. DBGrid1. DataSource: =dm. rrs;

dm. rr. Active: =false;

dm. rr.commandText: ='Select id_rr,nazv_rr,st_rr,edi_rr from RemR';

dm. rr. Active: =true;

fremr. ShowModal;

end;

procedure TFmain. N10Click (Sender: TObject);

begin

fzayavka. Caption: =n10. Caption;

fzayavka. DBGrid1. PopupMenu: =fzayavka. PopupMenu1;

dm. za. Active: =false;

dm. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is null) and (dataot_za is null) ';

dm. za. Active: =true;

fzayavka. ShowModal;

end;

procedure TFmain. N11Click (Sender: TObject);

begin

fVipZ. Caption: =n11. Caption;

fVipZ. DBGrid1. PopupMenu: =fVipZ. PopupMenu1;

dm. vz. Active: =false;

dm. vz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,datav_za, sum (st_nr) as summa from zayavka,zil,zilci,naznR '+

'where (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za is not NULL) GROUP BY id_za, ([adr_z] &", кв. "& [kv_zl]),soder_za,datav_za';

dm. vz. Active: =true;

fVipZ. ShowModal;

end;

procedure TFmain. N12Click (Sender: TObject);

begin

fZotk. Caption: =n12. Caption;

fZotk. DBGrid1. PopupMenu: =fZotk. PopupMenu1;

dm. otz. Active: =false;

dm. otz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,prich_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) ';

dm. otz. Active: =true;

fZotk. ShowModal;

end;

procedure TFmain. N14Click (Sender: TObject);

begin

tm: =0;

fdati. Caption: =n14. Caption;

fdati. ShowModal;

end;

procedure TFmain. N15Click (Sender: TObject);

begin

tm: =1;

fdati. Caption: =n15. Caption;

fdati. ShowModal;

end;

procedure TFmain. N16Click (Sender: TObject);

begin

tm: =2;

fdati. Caption: =n16. Caption;

fdati. ShowModal;

end;

procedure TFmain. N17Click (Sender: TObject);

var

Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith: OleVariant;

LinkToFile,SaveWithDocument,Range: OleVariant;

Table1: Table;

i: integer;

flag: boolean;

Reg: TRegistry;

summa: real;

begin

// Проверяем, инсталлирован ли Word

Reg: = TRegistry. Create;

Reg. RootKey: = HKEY_CLASSES_ROOT;

flag: =reg. KeyExists ('Word. Application');

reg. Free;

// flag: =true;

if flag=false then

begin

application. MessageBox ('Word не устанволен','Отчет',mb_ok+mb_iconstop);

exit;

end;

WordApplication1. Visible: =false;

WordApplication1. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word

Template: =ExtractFilePath (Application. EXEName) +'\Dot\Отказ. dot'; // путь к шаблону документа

WordApplication1. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона

WordDocument1. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов

Table1: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица

dm. temp. Active: =false;

dm. temp.commandText: ='Select adr_z,prich_za FROM zil,zilci,zayavka WHERE (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) ';

dm. temp. Active: =true;

i: =2;

While (not dm. temp. Eof) do

begin

Table1. Rows. Add (EmptyParam);

Table1. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;

Table1. Cell (i,

2). Range. Text: = dm. temp. Fields [1]. AsString;

inc (i); dm. temp. next;

end;

Table1. Rows. Item (i). Delete;

WordApplication1. Visible: =true; // делаем приложение MS Word видимым

WordApplication1. Disconnect; // Разрываем связь с серверо

end;

end.

procedure TFNaznR. BitBtn2Click (Sender: TObject);

begin

e1. Clear; e3. Clear; cb1. Clear;

if tm=1 then

begin

dm.com.commandText: ='Update naznr set log_nr=FALSE WHERE (id_nr='+tmp2+') ';

dm.com. Execute;

end;

if id_rr<>'' then

begin

dm.com.commandText: ='Update RemR Set log_rr=FALSE WHERE (id_rr='+id_rr+') ';

dm.com. Execute;

id_rr: ='';

end;

panel1. Visible: =false;

end;

procedure TFNaznR. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

if panel1. Visible=true then

begin

BitBtn2Click (Sender);

end;

end;

procedure TFNaznR. N1Click (Sender: TObject);

begin

panel1. Visible: =true;

tm: =0;

e1. Clear; e3. Clear; cb1. Clear;

dm. temp. Active: =false;

dm. temp.commandText: ='Select nazv_rr from RemR';

dm. temp. Active: =true;

While not dm. temp. Eof do

begin

cb1. Items. Add (dm. temp. Fields [0]. AsString);

dm. temp. Next;

end;

end;

procedure TFNaznR. N2Click (Sender: TObject);

begin

if dm. nr. Fields [0]. AsString='' then

begin

showmessage ('Запись для редактирования отсутствует');

exit;

end;

tmp2: =dm. nr. Fields [0]. AsString; tm: =1;

// ******************************

if fmain. Update ('nr','naznR') =false then

begin

showmessage ('Данная запись используется другим пользователем');

exit;

end;

// ******************************

cb1. Clear;

dm. temp. Active: =false;

dm. temp.commandText: ='Select nazv_rr from RemR';

dm. temp. Active: =true;

While not dm. temp. Eof do

begin

cb1. Items. Add (dm. temp. Fields [0]. AsString);

dm. temp. Next;

end;

e1. Text: =dm. nr. fieldbyname ('ob_nr'). AsString;

cb1. Text: =dm. nr. fieldbyname ('nazv_rr'). AsString;

// e2. Text: =dm. nr. fieldbyname ('st_nr'). AsString;

e3. text: =dm. nr. fieldbyname ('st_rr_nr'). AsString;

cb1Change (Sender);

panel1. Visible: =true;

end;

procedure TFNaznR. N4Click (Sender: TObject);

begin

if dm. nr. Fields [0]. AsString='' then

begin

showmessage ('Запись для редактирования отсутствует');

exit;

end;

tmp2: =dm. nr. Fields [0]. AsString; tm: =1;

if fmain. Delete ('nr','naznR',tmp) =false then

begin

showmessage ('Данная запись используется другим пользователем');

exit;

end

else dm. nr. Requery ();

end;

procedure TFNaznR. cb1Change (Sender: TObject);

begin

if id_rr<>'' then

begin

dm.com.commandText: ='Update RemR Set log_rr=FALSE WHERE (id_rr='+id_rr+') ';

dm.com. Execute;

id_rr: ='';

end;

dm. temp. Active: =false;

dm. temp.commandText: ='Select id_rr,st_rr from RemR WHERE (nazv_rr="'+cb1. Text+'") and (log_rr=false) ';

dm. temp. Active: =true;

if dm. temp. RecordCount=0 then

begin

showmessage ('Текущая запись занята');

cb1. Text: ='';

end

else

begin

id_rr: =dm. temp. fields [0]. asstring;

e3. Text: =dm. temp. fields [1]. asstring;

dm.com.commandText: ='Update RemR Set log_rr=TRUE WHERE (id_rr='+id_rr+') ';

dm.com. Execute;

end;

end;

procedure TFNaznR. BitBtn1Click (Sender: TObject);

var

summa: real;

begin

if (cb1. Text='') OR (e1. Text='') then showmessage ('Вы не заполнили одно или несколько полей')

else

begin

try

e1. Text: =floattostr (roundto (strtofloat (e1. Text),-2));

summa: =roundto (strtofloat (e1. Text) *strtofloat (e3. Text),-2);

except

showmessage ('Ошибка при вводе числовых значений');

end;

if tm=0 then

begin

dm. temp. Active: =false;

dm. temp.commandText: ='Select id_nr from naznR where (id_rr_nr='+id_rr+') and (id_za_nr='+tmp+') ';

dm. temp. Active: =true;

if dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует')

else

begin

dm.com.commandText: ='Insert into naznr (id_rr_nr,st_rr_nr,ob_nr,st_nr, id_za_nr) values ('+id_rr+',"'+e3. Text+'","'+e1. Text+'","'+floattostr (summa) +'",'+tmp+') ';

dm.com. Execute;

showmessage ('Запись успешно добавлена');

dm. nr. Requery ();

BitBtn2Click (Sender);

end;

end

else

begin

dm. temp. Active: =false;

dm. temp.commandText: ='Select id_nr from naznR where (id_rr_nr='+id_rr+') and (id_za_nr='+tmp+') ';

dm. temp. Active: =true;

// if (dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует')

// else

begin

dm.com.commandText: ='Update naznr SET id_rr_nr="'+id_rr+'",st_rr_nr="'+e3. Text+'",ob_nr="'+e1. Text+'",st_nr="'+floattostr (summa) +'", id_za_nr="'+tmp+'" WHERE (id_nr='+tmp2+') ';

dm.com. Execute;

showmessage ('Запись успешно изменена');

dm. nr. Requery ();

BitBtn2Click (Sender);

end;

end;

end;

end;

procedure TFNaznR. N7Click (Sender: TObject);

begin

dm. nr. Active: =false;

dm. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ';

dm. nr. Active: =true;

end;

procedure TFNaznR. N9Click (Sender: TObject);

begin

dm. nr. Active: =false;

dm. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ORDER BY st_nr';

dm. nr. Active: =true;

end;

procedure TFNaznR. N6Click (Sender: TObject);

begin

tmpc: ='';

while trim (tmpc) ='' do

begin

tmpc: =inputbox (n6. Caption,'Задайте фильтр','');

if trim (tmpc) ='' then showmessage ('Задайте фильтр')

else

begin

dm. nr. Active: =false;

dm. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') and (nazv_rr like "%'+tmpc+'%") ';

dm. nr. Active: =true;

end;

end;

end;

end.

procedure TFremR. BitBtn2Click (Sender: TObject);

begin

e1. Clear; e2. Clear; e3. Clear;

if tm=1 then

begin

dm.com.commandText: ='Update remr set log_rr=FALSE WHERE (id_rr='+tmp+') ';

dm.com. Execute;

end;

panel1. Visible: =false;

end;

procedure TFremR. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

begin

if panel1. Visible=true then

begin

BitBtn2Click (Sender);

end;

end;

procedure TFremR. BitBtn1Click (Sender: TObject);

begin


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

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

    курсовая работа [624,5 K], добавлен 30.05.2019

  • Системный анализ и анализ требований к базе данных. Концептуальная и инфологическая модель предметной области. Типы атрибутов в логической модели базы. Физическая модель проектируемой базы данных в методологии IDEF1X. Требования к пользователям системы.

    курсовая работа [2,3 M], добавлен 21.11.2013

  • Системный анализ и оценка требований к базе данных. Концептуальная (инфологическая) модель предметной области. Построение ERD-диаграммы и физической модели в методологии IDEF1X. Составление форм, запросов и отчетов в среде СУБД Visual FoxPro 8.0.

    курсовая работа [1,3 M], добавлен 24.06.2013

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

    курсовая работа [953,3 K], добавлен 01.09.2016

  • Оценка предметной области: концептуальные требования; выявление информационных объектов и связей между ними; построение базы данных. Описание входных и выходных данных информационной системы "Магазин компьютерной техники". Анализ диаграммы прецедентов.

    курсовая работа [294,8 K], добавлен 13.04.2014

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

    курсовая работа [2,1 M], добавлен 14.02.2011

  • Модели данных в управлении базами данных. Концептуальные модели данных. Роль баз данных в информационных системах. Реляционная модель данных. Определение предметной области. Построение модели базы данных для информационной системы "Домашние животные".

    курсовая работа [1,9 M], добавлен 19.04.2011

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

    курсовая работа [700,0 K], добавлен 14.01.2015

  • Информационно-логическая модель предметной области по нотациям Ричарда Баркера. Даталогическая модель реляционной базы данных в виде диаграммы схемы отношений. Приложение интерфейса для базы данных на языке программирования С# в среде Visual Studio.

    курсовая работа [3,6 M], добавлен 23.12.2014

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

    курсовая работа [1,3 M], добавлен 08.08.2012

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