Информационно-справочная система "Музыкальная школа"

 

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

Белгородский государственный университет

Факультет компьютерных наук и телекоммуникаций

Кафедра информатики и программирования











Курсовая работа

по дисциплине: «Среды программирования баз данных»

на тему: «Информационно-справочная система «Музыкальная школа»»












Белгород 2006

Содержание


Введение

1.Краткое описание компонентов, используемых при создании информационно-справочной системы «Музыкальная школа»

2.Разработка базы данных в MS Access

3.Разработка информационно-справочной системы «Музыкальная школа» в C++Builder

3.1 Соединение базы данных

.2 Поля LookUp

.3 Создание отчётов

.4 Добавление записей в таблицу

.5 Создание запросов

Заключение

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

Приложение «Листинг программы»


Введение


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

Для упрощения работы база данных, разработанная в Microsoft Access, оформляется в приложение в Borland C++Builder. Сама база данных содержит четыре таблицы, данные, которых, в полной мере описывают работу музыкальной школы.

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

Именно поэтому я считаю введение данной информационно-справочной системы «Музыкальная школа» в музыкальных школах актуальным.

Данная курсовая содержит 12 иллюстраций, объем курсовой 27 страниц.


1. Краткое описание компонентов, используемых при создании информационно-справочной системы «Музыкальная школа»


При создании информационно-справочной системы использовались такие программные средства, как Microsoft Access и Borland C++Builder. В Microsoft Access создавалась база данных, состоящая из четырех таблиц. В Borland C++Builder данная база данных оформлялась в приложение.

Набор данных в C++ Builder является потомком абстрактного класса TDataSet. Например, классы TQuery, TTable и TStoredProc - наследники TDBDataSet, который, в свою очередь, является наследником TDataSet. TDataSet содержит абстракции, необходимые для непосредственного управления таблицами или запросами, обеспечивая средства для того, чтобы открыть таблицу или выполнить запрос и перемещаться по строкам.

При создании информационно-справочной системы «Музыкальная школа» использовалось множество компонентов, но рассказать важно о следующих:

§TTable;

§TDataSource;

§TField;

§TDBGrid;

§DBNavigator;

§Система отчетов QuickReport;

§TQuery.

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

§Active - указывает, открыта (true) или нет (false) данная таблица.

§DatabaseName - имя каталога, содержащего искомую таблицу, либо псевдоним (alias) удаленной БД.

§TableName - имя таблицы.

§Exclusive - если это свойство принимает значение true, то никакой другой пользователь не может открыть таблицу, если она открыта данным приложением.

§MasterFields - определяет имя поля для создания связи с другой таблицей.

§MasterSource - имя компонента TDataSource, с помощью которого TTable будет получать данные из связанной таблицы.

§ReadOnly - если это свойство равно true, таблица открыта в режиме "только для чтения".

§Fields - массив объектов TField. Используя это свойство, можно обращаться к полям по номеру.

Компонент DataSource действует как посредник между компонентами TDataSet и компонентами Data Controls - элементами управления, обеспечиваю-щими представление данных на форме. Компоненты TDataSet управляют связями с библиотекой BDE, а компонент DataSource управляет связями с данными в компонентах Data Controls. В типичных приложениях БД компонент DataSource, как правило, связан с одним компонентом TDataSet и с одним или более компонентами Data Controls. Связь этого компонента с компонентами TDataSet и DataControls осуществляется с использованием следующих свойств и событий:

§Свойство DataSet компонента DataSource идентифицирует имя компонента TDataSet.

§Свойство AutoEdit компонента DataSource контролирует, как инициируется редактирование в компонентах Data Controls.

§Событие OnDataChange компонента DataSource наступает, когда происходит изменение значения поля, записи, таблицы, запроса.

§Событие OnUpdateData компонента DataSource наступает, когда пользователь пытается изменить текущую запись в TDataSet.

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

Компонент TDBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery. Приложение может использовать TDBGrid для отображения, вставки, уничтожения, редактирования данных БД. В данном приложении DBGrid используется в сочетании с DBNavigator. Внешний вид таблицы можно изменить с помощью редактора свойств Columns Editor или с помощью статического набора компонентов TField.

Компонент TQuery, как и компонент TTable, обладает всеми свойствами компонента TDataSet.

Как и в случае с компонентом TTable, компонент TDataSource управляет взаимодействием между компонентами Data Controls и компонентом TQuery. Обычно приложение имеет один компонент DataSource для каждого компо-нента TQuery.

Наиболее часто используются следующие свойства компонента TQuery:

Active - указывает, открыт (true) или закрыт (false) данный запрос

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

DatabaseName - имя каталога либо псевдоним (alias) удаленной БД, к которой осуществляется запрос.

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

Fields - это свойство доступно только во время выполнения (run-time only) и используется для чтения или модификации поля, опреде-ляемого по порядковому номеру.

Params - содержит параметры для параметризованного запроса.

SQL - строковый массив, содержащий текст оператора запроса SQL.

Язык запросов SQL (Structured Query Language), традиционно применяемый при работе с серверными СУБД. SQL - язык непроцедурный. На нем можно написать, что нужно получить в результате запроса, но нельзя написать, как это сделать, то есть нельзя описать саму процедуру выполнения запроса. Дело в том, что реализация выполнения тех или иных операторов SQL серверами баз данных может быть различна, и в большинстве случаев неинтересна клиентскому приложению, создаваемому с помощью С++ Builder.

Компонент TQuery позволяет использовать операторы SQL для того, чтобы определять или создавать наборы данных, которые можно отобразить на экране, вставлять, удалять и редактировать строки.

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

2. Разработка базы данных в MS Access


Реляционная база данных - это, прежде всего, набор таблиц. Столбцы таблицы соответствуют тем или иным характеристикам объектов - полям. Каждое поле характеризуется тем или иным именем и типом хранящихся данных. Имя поля - это идентификатор, использующийся в различных программах для манипуляции данными. Он строится как и любой идентификатор, то есть пишется латинскими (английскими) буквами одним словом. Название полей таблицы, самой таблицы и базы данных тоже является идентификатором. Тип поля характеризует тип хранящихся в этом поле данных. Каждая строка таблицы соответствует одному из объектов и содержит значения всех полей, характеризующих данный объект. Также существует такое понятие, как связь таблиц. Одна таблица выступает как главная, а другие как вспомогательные. В данном случае есть две главные таблицы (Instr и Klass), у которых есть одна подчиненная таблица (Ucheniki). Главная и вспомогательная таблицы связываются друг с другом ключом.

База данных «Музыкальная школа» состоит из четырех таблиц. Первая таблица содержит информацию об инструментах. В таблице Instr пять полей: наименование инструмента (текстовый, размер поля 25), количество инструментов (числовое, длинное целое), количество учеников (числовое, длинное целое), дата поступления инструмента (дата/время) и артикул (текстовый, размер поля 25). Ключевое поле - название инструмента. Эти поля подробно отражают информацию о инструментах.

Во второй таблице Ucheniki представлена информация об учениках. В данной таблице присутствуют поля: ФИО ученика (текстовый, размер поля 25), наименование класса (текстовый, размер поля 25), наименование инструмента (текстовый, размер поля 25), дата рождения (дата/время), домашний адрес (текстовый, размер поля 25), домашний телефон (числовой, длинное целое) и дата поступления (дата/время). Ключевым полем является поле - ФИО ученика.

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


Рисунок 1. Создание связи между полями таблиц.


В третьей таблице Klass содержится информация о классах. В данной таблице присутствуют следующие поля: наименование класса (текстовый, размер поля 25), ФИО преподавателя (текстовый, размер поля 25), количество учеников (числовой, длинное целое), срок обучения (числовой, длинное целое) и аудитория (числовой, длинное целое). Ключевым полем является поле - наименование класса. Связь между таблицами Klass и Ucheniki осуществляется по полям наименование класса, имеет тип отношения «один-ко-многим» (рис. 2).


Рисунок 2. Создание связи между полями таблиц

Последняя таблица Prepod содержит поля: ФИО преподавателя (текстовое, размер поля 25), предмет (текстовое, размер поля 25), количество часов в неделю (числовое, длинное целое), дата найма (текстовое, размер поля 10), домашний адрес (текстовое, размер поля 10), домашний телефон (числовое, длинное целое), дата рождения (дата/время) и зарплата (числовое, длинное целое. Ключевое поле - ФИО преподавателя.


Рисунок 3. Схема данных базы данных аптека.


Таким образом, данные таблицы связываются с типом отношения «один-ко-многим».


3. Разработка информационно-справочной системы «Музыкальная школа» в C++Builder


3.1 Соединение базы данных


Разные СУБД организуют и хранят свои базы данных по-разному. Поскольку конкретные свойства баз данных очень разнообразны, пользователь было бы трудно работать, так как он должен был бы указать в своем приложении все каталоги, файлы, серверы и т.д., где хранится нужная база данных. Да и приложение пришлось бы постоянно переделывать, при смене, к примеру структуры каталогов или при переходе с одного компьютера на другой. Чтобы решить эту проблему используют псевдонимы баз данных. Псевдоним (alias) содержит всю информацию, необходимую для обеспечения доступа к базе данных. Эта информация сообщается только один раз при создании. А приложение для связи с базой данных использует псевдоним.


Рисунок 4. Создание DNS MSh.


Для создания псевдонима необходимо создать DNS базы данных. Для этого нужно зайти на компьютере в панель управления и на вкладке администрирование выбрать ярлык источники данных ODBC. Далее необходимо создать пользовательский DNS. В данном случае DNS MSh с драйвером Driver do Microsoft Access (рис. 4).

В C++Builder основой работы с базами данных являются компоненты BDE (Borland Database Engine). BDE служит посредником между приложением и базой данных. Он предоставляет пользователь единый интерфейс для работы, освобождающий пользователя от конкретной реализации базы данных. BDE по псевдониму находит нужный драйвер, если нужного драйвера нет, то используется ODBC. BDE поддерживает SQL стандартизованный язык запросов, позволяющий обмениваться данными с SQL-серверами.

Также при соединении с базами данных используются компоненты ADO, но так как возможности ADO в C++Builder в некоторых отношениях ниже, чем возможности BDE, данная база данных разрабатывалась с помощью компонентов BDE.

Каждое приложение, использующее базы данных, имеет по крайней мере по одному из трех типов компонентов:

·Компоненты - наборы данных: Table, Query и т.д.

·Компоненты - источник данных: DataSource.

·Компоненты визуализации и управления данными: DBGrid, DBEdit, DBText и многие др.

В данном приложении «информационно-справочная система «Музыкальная школа»» для связи таблицы с приложением в качестве набора данных используются компоненты Table и Query. Query используется для организации запроса. А компонент Table - в качестве набора данных.

После создания псевдонима, необходимо установить цепочку связи. Так как в данной базе данных четыре таблицы нужно поместить на форму компонент PageControl со вкладки Win32, создать еще три страницы. Каждая создаваемая страница является объектом типа TTabSheet. Это панель на которой можно размещать все управляющие компоненты, окна редактирования и т.д. В данном случае необходимо переименовать (свойство Caption) страницы в «инструмент», «классы», «преподаватели», «ученики».

На первую страницу PageControl нужно поместить компоненты Table, DataSource, DBNavigator и DBGrid. Связь между ними осуществлять необходимо в следующем порядке:

·В свойствах компонента Table найти свойство DatabaseName и в выпадающем списке выбрать нужный псевдоним. При соединении с базой данных Музыкальная школа - псевдоним MSh. В свойстве TableName выбрать нужную таблицу (в данном случае Instr).

·В главном свойстве компонента DataSource DataSet в выпадающем списке выбрать Table1.

·В свойстве DataSource компонента DBGrid выбрать DataSource1.

·В свойствах компонента Table найти свойство Active и поставить его значением true.

·Для удобства управления необходимо подсоединить DBNavigator. Для этого в его главном свойстве DataSource нужно выбрать DataSource1.


Рисунок 5. Связывание таблицы Instr с приложением.

В компоненте DBGrid появилась выбранная таблица.

На следующей странице PageControl подключаем таблицу Klass.


Рисунок 6. Связывание таблицы Klass с приложением.


Таким же образом на следующей странице PageControl подключаем таблицу Prepod. Аналогично подключаем таблицу Ucheniki.


3.2 Поля LookUp


Следующий шаг - создание полей просмотра в базе данных «Музыкальная школа».

Двойным щелчком по компоненту Table вызывается Fields Editor. В него нужно загрузить все поля. Для этого после щелчка мышью по пустому полю нужно выбрать Add all fields. Тоже самое нужно проделать и с другими компонентами Table. С помощью менеджера полей (Fields Editor) можно создавать новые поля, вычисляемые поля и поля просмотра (Lookup).

В данной базе данных будет создаваться навое поле Lookup. После выбора New field из всплывшего меню открывается окно создания нового поля. Необходимо указать имя и тип создаваемого поля. В группе радиокнопок Field type нужно выбрать Lookup. В выпадающем списке Key fields необходимо выбрать ключевое поле таблицы, в которой создаются поле просмотра, в списке DataSet таблицу, в которой есть нужное поле, далее в выпадающем списке Lookup Keys нужно выбрать поле просматриваемой таблицы. И, наконец, в выпадающем списке Result Field нужно выбрать просматриваемое поле.

В данном приложение поле просмотра на вкладке Классы - поле количество часов в неделю таблицы преподаватели. В приложении поле просмотра будут выглядеть так (рис. 7):


Рисунок 7. Поля просмотра


Кроме полей просмотра в самой таблице на форму можно поставить на форму два компонента DBLookupListBox. Они будут отражать информацию об аудиториях и ФИО преподавателей (рис. 8).


Рисунок 8. Поля просмотра


Для отображения в компоненте DBLookupListBox нужной информации надо внести его на форму и установить его свойство DataSource равным DataSource2, а свойство DataField равным FIOPrepod. Свяжем компонент DBLookupListBox1 с DataSource1, установив значение свойства ListSource компонента DBLookupListBox1 равным DataSource2, свойства KeytField равным FIOPrepod, а свойства ListField равным Audit. Можно скомпилировать и сохранить приложение, затем запустить и протестировать его.


3.3 Создание отчётов


После создания полей просмотра можно приступать к созданию отчета.

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

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

Отчет в приложении «информационно-справочная система «Музыкальная школа»» будет содержать сведения из таблицы Ucheniki. Для создания отчета на форме нужно разместить компонент. Данный компонент имеет ряд свойств, определяющих характеристику печати:

·Print Settings - задает число копий отчета и диапазон печатаемых страниц;

·Page - задает размер страницы, ее ориентацию и поля;

·Options - определяет надо ли печатать верхний колонтитул первой страницы и нижний последней;

·Units - задает единицу измерения размеров страницы;

·Zoom - масштаб печати в процентах.

В первой строке отчета будет печататься следующее: Отчет по количеству учеников на дату подготовки отчета. Для этого на компоненте QuickRep необходимо разместить компонент. В его свойстве в выпадающем списке нужно выбрать rbTitle, тогда это буде полоса заголовка, отражающаяся в отчете как заголовок один раз на первой странице. На первую полосу отчета нужно разместить QRLable и QRSysDatа. В свойстве компонента QRSysDatа Data необходимо выбрать qrsDate для отображения настоящей даты (рис. 9). Следующая полоса отчета будет служить заголовком данных из таблицы. Свойство QRBand Band Type надо поставить равным rbColumnHeader и внести на полосу компоненты QRLable (рис. 9). Следующая полоса отчета - компонент QRSubDetail. На нем в отчете будут отражаться данные из таблицы. Связав QRSubDetail с нужной таблицей, нужно внести на неё компоненты QRDBText, у которых в свойстве DataSet и DataField нужно выбрать необходимую таблицу и поле этой таблицы (рис. 9). Последняя полоса отчета - суммарная. На ней должен бать вывод за день по лекарствам, то есть сколько лекарств куплено и заказано. Данную информацию будет вводить пользователь. На отдельной форме нужно разместить компонент. В него пользователь и будет вводить информацию. Для отображения информации в отчете на последней полосе, свойство которой Band Type равно rbSummary нужно расположить компонент QRRichText. Его главным свойством является ParentRichEdit. В этом свойстве в ниспадающем списке нужно выбрать RichEdit1. Теперь вводимая в RichEdit информация будет отображаться в отчете. Последним штрихом отчета является отображение страницы. Это можно сделать с помощью компонента QRSysDatа, в свойстве Data необходимо выбрать qrsPageNumber. Форма отчета готова. Это вспомогательная форма и пользователь не должен ее видеть. Поэтому свойство Visible должно равняться true. На главной форме отчета должны располагаться следующие компоненты: MainMenu, FontDialog, RichEdit (в который пользователь будет вводить информацию). В меню можно ввести следующие разделы: шрифт, просмотр и печать. В обработчик команды просмотр вводится:

QuickRep1->Preview();

В обработчик команды печать: QuickRep1->Print();

В обработчик команды шрифт: FontDialog1->Execute();

RichEdit1->SelAttributes->Assign(FontDialog1->Font);

RichEdit1->SetFocus();

Эти операторы обеспечат минимальное форматирование в окне RichEdit.

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

Рисунок 9. Создание отчета


3.4 Добавление записей в таблицу

c++builder access таблица информационный

Осталось только осуществить добавление новой записи в таблицу. Для этого необходимо на форме, например, на вкладке классы разместить Edit (по одному на каждое поле - 5 штук), Label - 6 штук и Button, переименовав её в кнопку «добавить» (рис. 12).

К примеру нужно добавить запись в таблицу. В обработчик кнопки добавить нужно вписать следующий код:


{Table2->Filtered=false;->Insert();NaimKLas->AsString=Edit10->Text;FIOPrepod->AsString=Edit11->Text;KolUch->AsString=Edit12->Text;SrokObuch->AsString=Edit14->Text;Audit->AsString=Edit13->Text;2->Post() ;}


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


Рисунок 12. Пример добавления записи в таблицу


Остальная работа над информационно-справочной системой Музыкальная школа заключается в оформлении приложения и разработке понятного интерфейса. Для этого можно использовать компонента Label, Panel, Menu, PopupMenu и т.д.


3.5 Создание запросов


Фильтрация может осуществляться с помощью компонентов Table и Query. При разработке информационно-справочной системы «Музыкальная школа» фильтрация осуществлялась с помощью компонента Table в таблице Instr по полям: наименование инструмента, количество учеников, артикул инструмента. Фильтрация может задаваться свойствами Filtered, Filter и FilterOptions. Свойство Filtered включает или выключает использование фильтра. А сам фильтр записывается в свойство Filter в виде строки, содержащей определенные ограничения на значения полей.

На форму помещается компоненты Edit и Button, RadioGroup c компонентами RadioButton (в данном примере их 3). Свойство компонента Button Caption переименовывается в «найти». Свойство Text компонента Edit1 необходимо оставить пустым. Свойство компонента RadioButton1 Caption переименовывается в наименование инструмента, RadioButton2 переименовывают в количество учеников, RadioButton3 - в артикул инструмента. Пользователь вводит в Edit1 количество учеников - 2 и при нажатии на кнопку «найти» в таблице будут появляться запрашиваемые данные (рис. 10). Для этого в обработчик события OnClick кнопки «найти» необходимо вставить следующий код:


if(RadioButton1->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="NameIns='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;}(RadioButton2->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="KvUch='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;}(RadioButton3->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="Artik='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;}


Рисунок 10. Фильтрация


Как говорилось выше поиск может осуществляться с помощью параметрических запросов.

Для создания запроса используется компонент Query. Он имеет большинство свойств и методов, совпадающих с компонентом Table, также он может включаться вместо Table. Дополнительные преимущества Query - возможность формировать запросы на языке SQL. Основное свойство Query - это SQL, имеющее тип TStrings. Это список строк, содержащих запросы SQL. В процессе проектирования приложения необходимо сформировать некоторый предварительный запрос. Но далее во время выполнения приложения свойство SQL может формироваться программно. Свойства Table Name в Query нет, так как таблица, с которой ведется работа указывается в запросах SQL. Запрос, заносимый в начале проектирования в SQL имеет следующий вид: Select * from Prepod.

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


Select * from Prepod Where (FIOPrepod=:Fio)


Если бы такой запрос был введен в свойство SQL компонента Query, то в свойстве Params откроется диалоговое окно со списком указанных в звапросе параметров. В данном случае это будет параметр ВВ. При выделении параметров в инспекторе объектов можно устанавливать свойства параметров:

·DataType - тип параметра;

·Name - имя параметра;

·ParamType - тип параметра (используется при обращении к процедурам, хранимым на сервере);

·Value - значение параметра по умолчанию

·Type подсвойство Value - тип значения по умолчанию.

Программный доступ к параметрам во время выполнения приложения осуществляется аналогично доступу к полям набора данных. Свойство Params является указателем на массив параметров типа TParam, к элементам которого можно обратиться по индексу через его свойство Items. Кроме свойства Items у Params есть еще одно свойство - ParamValues. Он представляет собой массив значений параметров типа Variant. В качестве индекса в это свойство передается имя параметра или несколько имен, разделяемых точками с запятой. Другой способ обращения к параметрам, при котором не надо помнить их индексы - использование метода ParamByName компонента Query.

Для построения запроса в информационно-справочной системе «Аптека» использовались следующие компоненты: Query, DataSource. В свойствах компонента Query необходимо поставить свойство DataSource=DataSource1 (соединенным с Table1), DatabaseName равным apteka. Мы подсоединили базу данных apteka через Query. У компонента DataSource свойство DataSource установить равным Query1. Если предположить, что запрос буде осуществляться по полю форма выпуска, то в событии OnClick кнопки, при нажатии на которую будет осуществляться запрос, необходимо внести следующий программный код:


Query1->Close();->SQL->Clear();(RadioButton7->Checked==true)

{Query1->SQL->Add("Select * from Prepod Where (FIOPrepod=:Fio)");->Params->ParamValues["Fio"]=Edit3->Text;}->DataSource=DataSource6;->Open();


Менять текст параметра в Query можно только при неактивном компоненте. Далее следует очистить линии TStrings компонента Query. Потом можно добавлять новый запрос и задавать значение параметра. После выполнения запроса в DBGrid появится требуемые параметры (рис. 11).


Рисунок 11. Динамический запрос с параметрами.


Заключение


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

Для создания информационно-справочной системы используются Microsoft Access и. Сама база данных конструируется в Microsoft Access. Она состоит из четырех таблиц, в которых представлена информация о преподавателях, учениках, используемых инструментах и классах. Таблицы связаны между собой связью типа «один-ко-многим».

Само приложение создается в Borland C++Builder, состоит из двух форм: главная форма с добавлением записей и создание отчета. На главной форме имеются четыре вкладки, которые классифицируют таблицы. На каждой вкладке присутствует таблица с данными, по которой может выполняться поиск. Поиск выполняется с помощью запросов и с помощью фильтрации. Добавление данных в таблицу может осуществляться только при полном виде таблицы. Также информационно-справочная система позволяет создавать отчет по количеству учеников и их успеваемости, причем преподаватель будет вводить только данные об успеваемости. Приложение имеет удобный интерфейс.


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


1.Архангельский А.Я. Справочное пособие. Книга 2. Классы и компоненты. - М.: Бином-Пресс, 2004г. - 528 с.: ил.

2.Архангельский А.Я. Программирование в С++Builder 6. - М.: БИНОМ, 2002г. - 1152с.: ил.


Приложение «Листинг программы»


Unit1.cpp

//---------------------------------------------------------------------------


#include <vcl.h>

#pragma hdrstop


#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

__fastcall TForm1::Button1Click(TObject *Sender)

{ if(RadioButton1->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="NameIns='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;

}(RadioButton2->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="KvUch='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;

}(RadioButton3->Checked==true)

{Table1->Active=false;->Filtered=false;->Filter="Artik='"+Edit1->Text+"'" ;->Active=true;->Filtered=true;

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Button2Click(TObject *Sender)

{if(RadioButton4->Checked==true)

{Table2->Active=false;->Filtered=false;->Filter="NaimKLas='"+Edit2->Text+"'" ;->Active=true;->Filtered=true;

}(RadioButton5->Checked==true)

{Table2->Active=false;->Filtered=false;->Filter="FIOPrepod='"+Edit2->Text+"'" ;->Active=true;->Filtered=true;

}(RadioButton6->Checked==true)

{Table2->Active=false;->Filtered=false;->Filter="Audit='"+Edit2->Text+"'" ;->Active=true;->Filtered=true;

}

}

//---------------------------------------------------------------------------__fastcall TForm1::Button4Click(TObject *Sender)

{->QuickRep1->Preview();

}

//---------------------------------------------------------------------------__fastcall TForm1::Button3Click(TObject *Sender)

{->QuickRep1->Print();

}

//---------------------------------------------------------------------------__fastcall TForm1::Button5Click(TObject *Sender)

{ Query1->Close();->SQL->Clear();(RadioButton7->Checked==true)

{Query1->SQL->Add("Select * from Prepod Where (FIOPrepod=:Fio)");->Params->ParamValues["Fio"]=Edit3->Text;}(RadioButton8->Checked==true)

{Query1->SQL->Add("Select * from Prepod Where (KvCHasovNed=:Pr)");->Params->ParamValues["Pr"]=Edit3->Text;}(RadioButton9->Checked==true)

{Query1->SQL->Add("Select * from Prepod Where (Zarplata=:Zp)");->Params->ParamValues["Zp"]=Edit3->Text;}->DataSource=DataSource6;->Open();

}

//---------------------------------------------------------------------------__fastcall TForm1::Button6Click(TObject *Sender)

{ Query2->Close();->SQL->Clear();(RadioButton10->Checked==true)

{Query2->SQL->Add("Select * from Ucheniki Where (FIOUch=:Fio)");->Params->ParamValues["Fio"]=Edit4->Text;}(RadioButton11->Checked==true)

{Query2->SQL->Add("Select * from Ucheniki Where (NaimKlas=:Pr)");->Params->ParamValues["Pr"]=Edit4->Text;}(RadioButton12->Checked==true)

{Query2->SQL->Add("Select * from Ucheniki Where (NameInstr=:Zp)");->Params->ParamValues["Zp"]=Edit4->Text;}->DataSource=DataSource5;->Open();

}

//---------------------------------------------------------------------------__fastcall TForm1::Button7Click(TObject *Sender)

{Table1->Filtered=false;->Insert();NameIns->AsString=Edit5->Text;KolvoInstr->AsString=Edit6->Text;KvUch->AsString=Edit7->Text;DataPostInstr->AsString=Edit8->Text;Artik->AsString=Edit9->Text;->Post() ;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button8Click(TObject *Sender)

{Table2->Filtered=false;->Insert();NaimKLas->AsString=Edit10->Text;FIOPrepod->AsString=Edit11->Text;KolUch->AsString=Edit12->Text;SrokObuch->AsString=Edit14->Text;Audit->AsString=Edit13->Text;->Post() ;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button9Click(TObject *Sender)

{Query1->Close();->DataSource=DataSource3;->Active=true;->Insert();FIOPrepod->AsString=Edit15->Text;Predmet->AsString=Edit16->Text;KvCHasovNed->AsString=Edit17->Text;DataNaima->AsString=Edit18->Text;DomAdress->AsString=Edit19->Text;DomTel->AsString=Edit20->Text;DataRogd->AsString=Edit21->Text;Zarplata->AsString=Edit22->Text;->Post() ;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button10Click(TObject *Sender)

{Query2->Close();->DataSource=DataSource4;->Active=true;->Insert();FioUch->AsString=Edit23->Text;NaimKLas->AsString=Edit24->Text;NameInstr->AsString=Edit25->Text;DataRogd->AsString=Edit26->Text;DomAdress->AsString=Edit27->Text;DomTel->AsString=Edit29->Text;DataPost->AsString=Edit28->Text;->Post() ;

}

//---------------------------------------------------------------------------

.cpp

//---------------------------------------------------------------------------


#include <vcl.h>

#pragma hdrstop


#include "Unit2.h"

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//-------------------------------------------------------------------


Федеральное агентство по образованию Белгородский государственный университет Факультет компьютерных наук и телекоммуникаций Кафедра информатики и прог

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ