Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
В ходе выполнения курсовой работы необходимо спроектировать базу данных и реализовать ее физически с использованием одного из доступных СУБД. Кроме того, необходимо разработать приложение для обслуживания базы данных. Желательно иметь несколько типов пользователей, тогда каждый из пользователей может идентифицироваться своим именем и паролем.
Последовательность действий по шагам:
Выбрать предметную область, на описание которой будет направлен проект. Она должна быть достаточно богата (но не чрезмерно, от 5 до 15 наборов сущностей).Описать ее на содержательном уровне, перечислить основные вопросы, на которые должно отвечать программное приложение, которое будет разработано.
Разработать для этой предметной области модель “сущность-связь” (инфологическую модель). Обосновать мощность и обязательность или необязательность связей, выбор ключей. Представить и обсудить модель на лабораторных занятиях.Срок окончания первой фазы разработки (п. 1,2) – 10-15 марта.
Превратить эту модель в даталогическую. Обосновать при этом выбор того или иного способа реализации схем отношений и связей между ними, выбор типов для атрибутов отношений. Реализовать модель в виде физической базы данных.Позаботится об отсутствии в базе данных избыточности и аномалий изменения и удаления. Для этого обосновать уровень нормализации соответствующих отношений. Обеспечить ссылочную целостность и целостность на уровне таблицы, записи, атрибута (первичные и внешние ключи, другие ограничения).
Указать последовательность команд SQL для создания базы данных со всеми необходимыми объектами (см. пример скрипта в приложении).В качестве СУБД можно использовать Microsoft Access, Microsoft SQL Server 2000 или др. по согласованию с преподавателем.
Наполнить базу данных осмысленным содержанием (это можно отложить до выполнения п. 5).
Срок окончания второй фазы разработки (п. 3,4) – 15-20 марта. (Параллельно с этим следует заниматься и следующей фазой).
5. Разработать приложение (например, на Delphi) для ввода и редактирования данных и построения отчетов, основываясь на проекте базы данных, разработанной в ходе выполнения п. п. 1.-4.
Желательно, чтобы приложение имело стандартную архитектуру (главная форма, модуль данных, универсальная форма просмотра нормативно-справочной информации с возможностью формирования твердой копии справочников, формы ввода данных и формы построения отчетов).
При необходимости, реализовать форму просмотра-редактирования справочника иерархической структуры. В качестве интерфейса доступа к данным следует (если возможно) использовать Microsoft ADO. Человеко-машинный интерфейс может быть любым.
6. Отчет должен содержать:
· название проекта, имя (имена) исполнителей, группу.
· оглавление с номерами страниц.
· описание вклада каждого члена проектной команды.
· функциональные требования к системе (может включать меню, экраны, описания на русском языке и (или) UML-диаграммы, например диаграммы USE CASE содержащие описание способов взаимодействия с системой).
· ER-диаграмму с обсуждением особенностей и обоснованием конкретных решений
· даталогическую модель данных с описанием степени нормализации
· скрипт на языке SQL для создания базы данных “с нуля”
· описание структуры приложения (можно с использованием UML диаграммы компонентов)
· краткая инструкция по работе с приложением (если необходимо).
При желании можно подготовить небольшую презентацию, изготовленную с помощью PowerPoint, объясняющую цели разработки, требования к функциональности, модель интерфейса с пользователем.
Срок окончания разработки – середина апреля.
Защита курсового проекта должна осуществляться всеми членами проектной команды (если она есть). Оценка зависит от качества проекта базы данных и разработанного приложения, отчета, наличия подготовленной презентации (последнее в меньшей степени), ответа на дополнительные вопросы.
Выбор предметной области
Предметной областью может быть любая на Ваш выбор: регистрация и лечение пациентов в стоматологической клинике; система заказа – резервирования билетов; интернет – магазин и т. д.
Примеры словесного описания предметных областей:
Спортивный комплекс предоставляет несколько видов услуг. Пользователи могут оплачивать один сеанс (100 руб.) или приобретать абонемент на 8 сеансов (640 руб.) на определенное время и день недели. Каждый сеанс длится 1 час.…
Надо ответить на вопросы типа:
1.1. Сколько денег заплатил пользователь за период?
1.2. Какие пользователи имеют абонемент в тренажерный зал за указанный период?
1.3. Есть ли свободное место на теннисном корте (клиент заранее не позаботился о приобретении абонемента) на определенное время и дату?
1.4. Сколько свободных мест в плавательном бассейне на определенное время и дату?
1.5. Сколько денег поступило в кассу за период?
и т. д.
Медицинское учреждение состоит из стационара и поликлиники. На каждого пациента ведется “карточка”, куда заносятся паспортные данные. В поликлинике на каждый курс лечения пациента ведется амбулаторная карта, куда заносятся диагнозы, объективные данные, жалобы, факт каждого посещения, лечебные назначения. В стационаре на каждый курс лечения пациента формируется “карта больного”, куда заносятся диагнозы, лечебные назначения, объективные данные. При выписке в карту добавляется исход болезни.…
Надо иметь возможность отвечать на вопросы типа:
2.1. Какие диагнозы (и классы диагнозов) наиболее часто встречаются среди всех пациентов?
2.2. Как лечили пациента …?
2.3. Пациенты, пролеченные в стационаре за период … .
2.4. Какие пациенты имеют диагноз …?
2.5. Пациенты, лечившиеся за период … в поликлинике и стационаре.
и т. д.
Далее представлены образцы схем баз данных типовых проектов.
Внимание: это не инфологические модели, а даталогические!

Рисунок 1. Примерный вид схемы базы данных курсового проекта (СУБД Access).

Рисунок 2. Еще один пример схемы базы данных курсового проекта (СУБД MS SQL 2000).
Ниже представлен фрагмента скрипта для создания таблиц и связей между ними, для базы данных, схема которой (даталогическая модель) изображенна на рис. 2. Скрипт может быть получен автоматически или написан вручную. Наличие скрипта желательно, т. к. он дает детальное описание базы данных (по сути, является воплощением физической модели):
CREATE TABLE [dbo].[PROG] (
[PARENT] [int] NULL,
[PATH] [char] (15) COLLATE Cyrillic_General_CI_AS NOT NULL,
[NAME] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL,
[SON] [int] NULL,
[UNIT] [varchar] (25) COLLATE Cyrillic_General_CI_AS NULL,
[PRICEN] [float] NULL,
[PRICE] [float] NULL,
[QUANT] [float] NULL,
[ART] [int] NULL,
[UNIT1] [varchar] (25) COLLATE Cyrillic_General_CI_AS NULL,
[UNIT2] [varchar] (25) COLLATE Cyrillic_General_CI_AS NULL,
[INTRV] [int] NULL,
[HIDE] [smallint] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[DOC0] (
[DOC] [int] NOT NULL,
[OPERAKLASS] [char] (15) COLLATE Cyrillic_General_CI_AS NOT NULL,
[DATD] [datetime] NULL,
[DATF] [datetime] NULL,
[OPERA] [int] NULL,
[NUM] [varchar] (25) COLLATE Cyrillic_General_CI_AS NOT NULL,
[SUMMC] [money] NULL,
[SUMMA] [money] NULL,
[SUMMB] [money] NULL,
[OBJ0] [char] (15) COLLATE Cyrillic_General_CI_AS NULL,
[OBJ1] [char] (15) COLLATE Cyrillic_General_CI_AS NULL,
[OBJ2] [char] (15) COLLATE Cyrillic_General_CI_AS NULL,
[OBJ3] [char] (15) COLLATE Cyrillic_General_CI_AS NULL,
[OBJ4] [char] (15) COLLATE Cyrillic_General_CI_AS NULL,
[SYS] [smallint] NULL,
[SUMMT] [money] NULL,
[SUMMO] [money] NULL,
[SUMML] [money] NULL,
[DATS] [datetime] NULL,
[TREATY] [int] NULL,
[DATA] [datetime] NULL
) ON [PRIMARY]
………………………
ALTER TABLE [dbo].[PROG] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[PATH]
) ON [PRIMARY]
ALTER TABLE [dbo].[DOC0] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[OPERAKLASS],
[DOC]
) ON [PRIMARY]
ALTER TABLE [dbo].[PATIENT] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[PATH]
) ON [PRIMARY]
………………………….
CREATE INDEX [PROG] ON [dbo].[PROG]([PARENT], [PATH]) ON [PRIMARY]
CREATE INDEX [PNAME] ON [dbo].[PROG]([PARENT], [NAME]) ON [PRIMARY]
CREATE INDEX [PART] ON [dbo].[PROG]([PARENT], [ART]) ON [PRIMARY]
CREATE INDEX [SON] ON [dbo].[PROG]([SON]) ON [PRIMARY]
CREATE INDEX [DKLASS0] ON [dbo].[DOC0]([OPERAKLASS], [DATF], [DOC]) ON [PRIMARY]
CREATE INDEX [DNUM0] ON [dbo].[DOC0]([NUM], [DOC]) ON [PRIMARY]
CREATE UNIQUE INDEX [COURSEDOC0] ON [dbo].[COURSE0]([OPERAKLASS], [DOC], [ID]) ON [PRIMARY]
CREATE INDEX [KORRIO0] ON [dbo].[KORR0]([OPERAKLASS], [DOC]) ON [PRIMARY]
………………………………
CREATE INDEX [CASHC0] ON [dbo].[CASH0]([OPERAKLASS], [DOC], [IDCOURSE]) ON [PRIMARY]
CREATE INDEX [CINDIO0] ON [dbo].[CONDI0]([OPERAKLASS], [DOC], [IDCOURSE]) ON [PRIMARY]
CREATE INDEX [OPERAD0] ON [dbo].[OPERA0]([OPERAKLASS], [DOC]) ON [PRIMARY]
ALTER TABLE [dbo].[DOC0] ADD
CONSTRAINT [FK_DOC0_PROG] FOREIGN KEY
(
[OPERAKLASS]
) REFERENCES [dbo].[PROG] (
[PATH]
)
ALTER TABLE [dbo].[PATIENT] ADD
CONSTRAINT [FK_PATIENT_PROG] FOREIGN KEY
(
[PATH]
) REFERENCES [dbo].[PROG] (
[PATH]
)
………………………
5.2.3. Методические указания к проведению практических занятий
Приведенный ниже практикум может быть использован для проведения лабораторных и практических занятий при изучении курсов “Базы данных”. Основной теоретический материал, необходимый для успешного выполнения практикума изложен в курсе лекций “Базы данных, SQL и все такое”, на который в соответствующих местах есть ссылки, обычно с точностью до главы. Такие ссылки помечены значком &. Кроме того, здесь приведены необходимые технические знания, требуемые для выполнения лабораторных работ студентами.
Большинство разделов практикума имеют следующую структуру:
- приводится материал, являющийся предпосылкой для выполнения заданий лабораторной работы со ссылками на теоретический курс приводятся задания на лабораторную работу (они помечены значком @).
Таким образом, практикум предназначен для использования студентами в ходе выполнения лабораторных работ в компьютерном классе под руководством преподавателя. Однако он может быть использован студентами и в ходе самостоятельных занятий.
Работа №1. Знакомство с принципами программирования доступа к базам данных в Delphi
Для доступа к данным при разработке программ в системе Delphi воспользуемся интерфейсом ADO. ADO (Active Data Objects) - это высокоуровневые компоненты доступа к данным, разработанные Microsoft. (инсталляционный файл – MDAC. EXE (Microsoft Data Access Components)). Другие способы доступа:
· ODBC – открытый интерфейс доступа к базам данных, довольно старый, надежный, но уступающий своим новым конкурентам
· Borland BDE – закрытый, “фирменный” интерфейс доступа к базам данных
· низкоуровневый интерфейс OLE DB, надстройкой над которым и является ADO
ADO позволяет обратиться как к “настольным” (desktop) базам данных (таким как Access, Paradox, FoxPro) так и к “настоящим”, серверным базам данных (Microsoft SQL, Oracle, Interbase). Кроме того, через этот интерфейс возможен доступ к нереляционным источникам данных, таким как XML-файлы, данные почтовой службы и др.
ADO - более новая, по сравнению с ODBC и BDE технология, работает через интерфейс OLE DB. Впрочем, можно использовать ADO и при подключении к источникам ODBC-данных. Однако OLE DB превосходит ODBC по скорости, хотя, будучи относительно молодой, не может пока покрыть весь спектр источников данных, для которых написаны драйверы ODBC.
Что касается операционной системы Windows, то MDAC входит в нее, начиная с Windows 98. Поэтому, в отличие от интерфейса Borland BDE, обычно не требуется установка компонентов ADO на компьютере (по крайней мере в той части, которая касается доступа к СУБД Access и Microsoft SQL Server).
Начиная с версии 5 компоненты для работы с ADO (вкладка ADO на палитре компонентов) включены в инструментальную палитру Delphi. Это VCL-компоненты, разработанные Borland. Они примерно соответствуют старым компонентам доступа к данным, использующим BDE, которые ранее осуществляли основной доступ к данным в Delphi. Вот названия типов новых компонентов: TADOConnection, TADOCommand, TADODataSet, TADOTable, TADOQuery, TADOStoredProc и TRDSConnection.
TADOConnection - это класс, объекты которого инкапсулируют всю функциональность, необходимую для установления связи с конкретным источником данных. Один объект этого класса может использоваться многими объектами классов TADOCommand, TADODataSet, TADOTable, TADOQuery, TADOStoredProc для доступа к данным. Он позволяет управлять параметрами доступа к данным путем задания значений его свойств (схема блокировки (пессимистическая или оптимистическая), тип курсора и его расположение (на сервере или клиенте), уровень изоляции транзакций, тайм-аут и др.). Кроме того, этот класс содержит методы для управления транзакциями и извлечения метаданных о базе данных, с которой установлена связь.
Главное его свойство - ConnectionString (строка подключения) - это несколько подстрок вида «имя параметра = значение», которые описывают, где находятся данные и как к ним подключаться. Значения, которые всегда должны быть в строке подключения - это имя поставщика данных (Data Provider) и имя базы данных.
Пример: фрагмент строки подключения к базе данных Access:
Provider = Microsoft. Jet. OLE DB.4.0;Data Source = C:\db1.mdb
Здесь Microsoft. Jet. OLEDB.4.0 - это “OLE DB поставщик” или “провайдер” данных для баз данных Microsoft Access. Существует множество других провайдеров, например SQL OLE DB.1 - провайдер для СУБД Microsoft SQL. Кроме имени поставщика данных строка подключения может хранить другие параметры (например, имя пользователя и пароль, величину тайм-аута, права доступа и т. п.). Перечень этих свойств зависит от конкретного поставщика данных.
В поставку Windows входит специальный редактор строк подключения. Довольно гибким является решение хранить строку подключения в отдельном файле (а не в тексте программы на Delphi) - это позволит, при необходимости, изменить параметры подключения (например, путь к базе данных или даже тип СУБД) без внесения изменений в программное приложение. Для хранения строк подключения предназначены файлы с расширением UDL (universal data link). Создать UDL-файл просто – в контекстном меню Проводника (Explorer) Windows имеется пункт меню NEW -> Microsoft Data Link File. Если такой пункт отсутствует, можно поступить еще проще - создать пустой текстовый файл с расширением ”UDL”. При попытке открыть такой файл автоматически запускается редактор строк подключения.

Рисунок 1.1. Редактор строк подключений ADO
Выберите провайдер (для баз Access - провайдер называется Microsoft JET 4.0 OLE DB Provider, для MS SQL - OLE DB Provider for SQL server). Нажмите кнопку Далее. На рисунке внешний вид редактора для баз данных Access - введите путь к базе данных, имя пользователя и пароль (если нужно) и нажмите кнопку «Проверить подключение», чтобы убедиться, что все сделано правильно.

Рисунок 1.2. Назначение базы данных в редакторе строк подключений.
После того как UDL-файл готов, можно использовать его в Delphi - создайте новый проект, поместите на форму (или на Data Module) компонент ADOConnection, щелкните по свойству ConnectionString и укажите путь к UDL-файлу, откуда эту строку соединения нужно взять:

Рисунок 1.3. Редактор строк подключений для компонента TADOConnection.
Все остальные компоненты ADO также имеют свойство ConnectionString. Поэтому в принципе можно вообще обойтись без компонента ADOConnection - просто в каждом из используемых компонентов ADOQuery, ADOCommand и т. д. указать путь к этому UDL-файлу. Однако компонент ADOConnection содержит и другие полезные свойств и методы, да и кроме того весьма удобно сосредоточить описание всех особенностей подключения приложения к базе данных в одном месте!
Работа №2. Разработка первого приложения баз данных
Базовый объект ADO – ADOCommand. Он содержит функциональность для передачи команды на сервер (команда может заставить сервер читать или изменить данные). ADO всегда работает в режиме клиент-сервер, даже с локальными (или “настольными”) СУБД. После выполнения команды база данных может вернуть записи (если это была команда на чтение данных) или ничего не вернуть (если это, скажем, была команда на удаление данных). Очевидно, что команды - это строки, написанные на языке SQL.
Компоненты TADOTable и TADOQuery предназначены для того, чтобы программистам, привыкшим работать с BDE и компонентами TTable и TQuery, было бы легче перейти на ADO. Они имеют сходные с TTable и TQuery методы - но не совпадают с ними полностью - поэтому автоматически преобразовать проект, использующий BDE в ADO как правило не получается.
Компонент TADODataset - это компонент, который имеет возможности TADOTable и TADOQuery одновременно - т. е. может быть использован как для выполнения SQL - запроса так и для “прямого” (точнее упрощенного) обращения к какой-либо таблице. Компонент TADOStoredProc - компонент для работы с хранимыми процедурами.
@ Задание:
Первое приложение баз данных должно позволить просматривать и редактировать любую таблицу из имеющихся в базе данных. Шаги по созданию первого приложения баз данных:
Создать новый проект. Он состоит из модуля проекта, главной формы и модуля главной формы. Добавить к проекту модуль DataModule. К проекту должны добавиться форма модуля данных и собственно модуль данных. Изменить имя модуля данных на DM. Добавить на DM компонент TADOConnection. Изменитьего имя на DBC. Сформировать с помощью редактора строк подключения к базе данных (для его вызова следует дважды щелкнуть на компонент DBC, размещенный на DM) строку соединения. Добавить на DM компонент TADOTable. Изменить его имя на DBT. Подсоединить DBT к существующему соединению с базой данных путем установки его свойства Connection равным ссылке на уже существующий компонент DBC. Указать имя таблицы, которую будет представлять DBT, путем задания свойства TableName. Перейти к главной форме приложения. Разместить на ней компонент TDBGrid. Изменить его имя на DBG. Разместить на ней же компонент TDataSource. Изменить его имя на DBS. Свойство DBG. DataSource должно указывать на компонент DBS. Свойство DBS. DataSet должно указывать на компонент DM. DBT. В обработчик события OnShow главной формы приложения вставить код:DM. DBT. Open;
DM. DBT. Close;
14. Скомпилировать проект и вызвать его на выполнение.
@
В общем виде, модель взаимодействия объектов доступа к базе данных, в рамках приложения на Delphi, можно изобразить в виде диаграммы:

Рисунок 2.1. Модель взаимодействия объектов доступа к базе данных.
@ Задание: воспользуйтесь методом GetTableNames объекта DBC чтобы получить список всех таблиц, имеющихся в Вашей базе данных. Разработайте интерфейсную форму, позволяющую выбирать любую таблицу из имеющихся. Можно воспользоваться готовым приложением для того, чтобы просматривать и редактировать любые таблицы.
@
Работа №3. Разработка утилиты для выполнения SQL-запросов
Кроме компонента TDBGrid в палитре Delphi имеются и другие визуальные компоненты, чувствительные к данным (data aware components). Таким является компонентом TDBNavigator. Его достаточно подключить к источнику данных, указав значение свойства DataSource. Этот компонент позволяет c помощью соответствующих кнопок перемещаться по записям таблицы (первая, последняя, предыдущая, следующая), переходить в режим редактирования, сохранять результаты или отменять редактирование без сохранения. Каждую кнопку можно выключить, или включить, для чего просто поменять значение свойства VisibleButtons.
Еще один визуальный компонент - TDBImage. Этот компонент отображает графический образ, которая может хранится в базе данных. Установив свойства DataSource и DataField этого компонента (DataField следует задать равным имени поля таблицы, в котором хранятся графические изображения), получим возможность отражения картинок на форме.
Упомянем и компонент TDBMemo. Этот компонент очень похож на обычный компонент TMemo. Как обычно, следует установить свойства DataSource и DataField (DataField надо установить равным имени поля таблицы, в котором хранятся текстовые данные переменной длины).
@ Задание: воспользуйтесь компонентом TADOQuery чтобы получить доступ к данным, извлекаемым SQL-запросом. Такой запрос должен возвращать результирующий набор. Для этого разработайте утилиту, позволяющую ввести текст SQL-запроса (например, в компонент TMemo) и выполнить его с визуализацией результата (например, с помощью TDBGrid). Поэкспериментируйте с различными запросами на чтение.
@
& Более подробно принципы построения компонентов доступа к базе данных описаны в главе 12 Курса лекций. В частности, интерфейс ADO описан в п. 12.5.
Работа №4. Построение инфологической модели базы данных
& Принципы и техника инфологического моделирования изложены в главе 4 курса лекций.
@ Задание:
Разработать диаграмму “сущность-связь” для моделирования следующей предметной области:
В университете имеются факультеты, на факультетах – группы, в группах – студенты.Надо ответить на вопросы типа (составить соответствующие SQL-запросы):
Какие студенты учатся на факультете …?
На каком факультете учится студент …?
Какие группы на факультете …?
@
@ Задание:
Разработать диаграмму “сущность-связь” для моделирования следующей предметной области:
Предприятие работает над выполнением нескольких проектов. Для выполнения проекта формируется проектная группа, куда входит несколько сотрудников. Один сотрудник может входить в несколько проектных групп. Надо ответить на вопросы типа:Какие сотрудники входят в проектную группу …?
В какие группы входит сотрудник …?
@
@ Задание:
Разработать диаграмму “сущность-связь” для моделирования следующей предметной области:
На предприятии установлена сменная работа. Одновременно в смену работает до 10 человек.Надо ответить на вопросы типа:
Какие сотрудники работают в 1 смену 3 числа?
Сколько сотрудников работает во 2 смену 10 числа?
Когда работает сотрудник …?
@
Работа №5. Выбор сквозного задания
При выборе сквозного задания следует предложить несколько более богатую проблемную область (по количеству сущностей и связей между ними), чем те, которые рассматривались в предыдущей работе. Можно при оценке “достаточного богатства” ориентироваться на такие примеры:
Спортивный комплекс предоставляет несколько видов услуг. Пользователи могут оплачивать один сеанс (100 руб.) или приобретать абонемент на 8 сеансов (640 руб.) на определенное время и день недели. Каждый сеанс длится 1 час.Надо ответить на вопросы типа:
1.1. Сколько денег заплатил пользователь за период?
1.2. Какие пользователи имеют абонемент в тренажерный зал за указанный период?
1.3. Есть ли свободное место на теннисном корте (нет абонемента) на определенное время и дату?
1.4. Сколько свободных мест в плавательном бассейне на определенное время и дату?
1.5. Сколько денег поступило в кассу за период?
Медицинское учреждение состоит из стационара и поликлиники. На каждого пациента ведется “карточка”, куда заносятся паспортные данные. В поликлинике на каждый курс лечения пациента ведется амбулаторная карта, куда заносятся диагнозы, объективные данные, жалобы, факт каждого посещения, лечебные назначения. В стационаре на каждый курс лечения пациента формируется “карта больного”, куда заносятся диагнозы, лечебные назначения, объективные данные. При выписке в карту добавляется исход болезни.Надо иметь возможность отвечать на вопросы типа:
2.1. Какие диагнозы (и классы диагнозов) наиболее часто встречаются среди всех пациентов?
2.2. Как лечили пациента …?
2.3. Пациенты, пролеченные в стационаре за период.
2.4. Какие пациенты имеют диагноз …?
2.5. Пациенты, лечившиеся за период в поликлинике и стационаре.
@ Задание:
Разработать проект базы данных для сквозного задания. При разработке проекта базы данных необходимо сначала реализовать инфологическую, а затем и физическую модели базы данных. В явной следует форме выделить таблицы фактов и справочников, обосновать выбор того или иного способа реализации отношений между таблицами (1:1, 1:N, M:N, рекурсивная иерархия) и выбор естественных или искусственных ключей. Обосновать уровни нормализации таблиц: они должны быть не ниже 3НФ.
Далее на основе выбора предметной области и соответствующих инфологической и физической модели базы данных потребуется разработать приложение на Delphi для ввода и редактирования данных и построения отчетов, основываясь на предложенном проекте базы данных.
@
& Принципы нормализации изложены в главе 5 курса лекций.
Работа №6. Проектирование структуры приложения сквозного задания
Разработайте главную форму приложения и модуль данных. В главной форме реализуйте главное меню приложения иерархической структуры, примерный вид которого:
Данные Окна Отчеты
Справочники Отчет 1
Справочник 1 Отчет 2
Справочник 2 …
…
Данные
…
Рисунок 6.1. Примерная структура главного меню приложения.
@ Задание:
В модуле данных по имени DM (который необходимо добавить в проект) описать соединение с базой данных с помощью компонента DBC (класса TADOConnection) и все таблицы базы данных (TADOTable). В таблицах описать поля базы данных (TField), задать необходимые свойства этих полей.
@
& Более подробно принципы построения и свойства компонентов доступа к базе данных описаны в главе 12 Курса лекций. В частности, интерфейс ADO описан в п. 12.5.
Работа №7. Работа со справочниками
@ Задание:
Разработать универсальный класс (TCatalog) для редактирования справочников, и на его основе реализовать окна просмотра и редактирования справочников. Этот класс должен быть основан на модальной форме. Основной интерфейсный элемент в этой форме – компонент класса TDBGrid (назовем его Grid). Форма должна создаваться динамически по мере запроса на вывод окна просмотра-редактирования справочника. В компоненте Grid должны присутствовать необходимые для просмотра поля справочника (искусственные коды, уникально идентифицирующие запись в справочнике, не должны быть видны по умолчанию, однако следует создать элемент управления, позволяющий сделать их видимыми).
Другой компонент, необходимый на форме – DS класса TDataSource. Необходимо установить свойство Grid. DataSource равным DS.
@
Для вызова формы, позволяющей просматривать и редактировать справочники необходимо определить обработчик выбора пункта меню, соответствующего показу справочника, в виде:
procedure TMain. N11Click(Sender: TObject);
var f:TCatalog;
begin
f := TCatalog. Create(Self);
f. DS. DateSet := DM. Spr1;
DM. Spr1.Open;
// Обеспечить правильное отражение полей-счетчиков и других полей, генерируемых на стороне СУБД
DM. Spr1.Properties['Update Resync'].Value:=adResyncAll;
f. Caption := <Наименование справочника>;
f. ShowModal;
DM. Spr1.Close;
end;
Необходимо обеспечить возможность показа (или скрытия) искусственных ключей (если они есть) справочника. По умолчанию, поля, соответствующие искусственным ключам, должны быть невидимы, т. к. они не нужны рядовому пользователю. Однако разработчику и администратору базы данных зачастую бывает необходимо их увидеть. Для этого следует дополнить форму показа и редактирования справочников новым элементом управления – кнопкой (например, класса TButton). Далее следует написать программу - обработчик события нажатия на эту кнопку, который должен изменять свойство видимости соответствующего поля таблицы - справочника. Здесь имеется несколько возможностей.
Если бы мы писали специальные программы отдельно для каждого справочника, то в таком обработчике можно было бы ограничиться кодом вида
procedure TCatalog. Button1Click( Sender: TObject );
begin
DM. Spr1.FieldByName(‘ID’).Visible := not DM. Spr1.FieldByName(‘ID’).Visible;
end;
Однако в универсальной программе придется поступить иначе (в предположении, что все поля-ключи во всех справочниках называются одинаково):
procedure TCatalog. Button1Click( Sender: TObject );
begin
DS. DataSet. FieldByName(‘ID’).Visible := not DS. DataSet. FieldByName(‘ID’).Visible;
end;
Если поля-ключи в разных справочниках называются по разному, но все они определены первыми по порядку в наборе полей таблицы, можно воспользоваться другой формой:
procedure TCatalog. Button1Click( Sender: TObject );
begin
DS. DataSet. Fields[0].Visible := not DS. DataSet. Fields[0].Visible;
end;
@ Задание:
Добавьте в программу просмотра и редактирования справочников возможность скрытия и показа искусственных ключей (или других атрибутов по смыслу Вашего приложения). Теперь, основываясь на только что разработанной форме показа и редактирования справочников, внести данные в справочники системы.
@
Работа №8. Формирование твердой копии справочника.
Разработать подпрограмму формирования твердой копии справочника как метод универсального класса просмотра и редактирования справочников. Добавить элемент управления на форме для вызова этого метода. Подпрограмма формирования твердой копии должна реализовать одну из следующих возможностей:
сформировать текстовый файл, содержащий все данные таблицы-справочника;
сформировать в текстовом файле html-код для последующей демонстрации его в браузере Интернета;
выдать содержимое таблицы-справочника в таблицу Excel.
Пример.
Результатом работы такой подпрограммы может быть следующая таблица, содержащая данные таблицы-справочника о пользователях некоторой информационной системы:
Пользователи системы | |
Полное имя пользователя | Роль |
Администратор | ADM |
ПЛАНОВИК | |
ТЕХНОЛОГ | |
… | … |
ТЕХНОЛОГ | |
ТЕХНОЛОГ | |
Сидоренко-Нормы | НОРМИРОВЩИК |
Рисунок 8.1. Пример печатной формы справочника.
Для создания такого представления можно сгенерировать примерно следующий html-код, находящийся в текстовом файле с расширением. htm:
<html><head><title>Пользователи системы</title>
<meta name=GENERATOR content=ATH>
</head>
<body topmargin=0 leftmargin=0 bgproperties=fixed link=#669966 alink=#669966 vlink=#669966>
<TABLE WIDTH=100% CELLSPACING=0 BORDER=0><TR><TH>Пользователи системы</TH></TR></TABLE><BR>
<TABLE WIDTH=100% CELLSPACING=0 BORDER=1 style='border-collapse:collapse'>
<TR>
<TH bgcolor=White WIDTH=50%><font size=1 color=Black>Полное имя пользователя</TH>
<TH bgcolor=White WIDTH=50%><font size=1 color=Black>Роль</TH>
</TR>
<TR>
<TD>Администратор</TD>
<TD>ADM</TD>
</TR>
<TR>
<TD></TD>
<TD>ПЛАНОВИК</TD>
</TR>
…
<TR>
<TD></TD>
<TD>ТЕХНОЛОГ</TD>
</TR>
<TR>
<TD>Сидоренко-Нормы</TD>
<TD>НОРМИРОВЩИК</TD>
</TR>
<TR>
</TR>
</TABLE>
</body> </html>
@ Задание:
Разработайте универсальную процедуру для формирования твердой копии содержимого таблицы базы данных в виде html-кода в текстовом файле. Добавьте возможность вызова этой процедуры в Вашу программу просмотра и редактирования справочников
@
Другая возможность – выдать содержимое справочника в электронную таблицу Microsoft Excel. Примерный код требуемой универсальной процедуры следующий:
procedure TCatalog. Print;
var ExcelApp, Sheet, c: Variant;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |


