7.2. Создание программы «Список студентов» Задача. Написать программу управления структурой БД «студенты», которая позволяет добавлять, редактировать и удалять записи, а также сортировать, фильтровать записи и осуществлять поиск записи студента по введенной фамилии.
Окно программы представлено на рис. 7.6.
П роцесс создания программы происходит по следующему алгоритму:
Настроить псевдоним базы данных:
создать в папке создаваемой программы папку для хранения баз данных. Назвать папку «Data»;
запустить BDE Administrator (из папки Delphi – «Пуск/Программы/Borland Delphi/BDE Administrator», иконка );
назвать псевдоним (Alias) именем по номеру группы (например, если номер группы 9599, то псевдоним назвать 9599);
с помощью мастера (для версий Delphi 3 – 6) или вручную (Delphi 2) указать папку, где будут находиться файлы базы данных (указать путь к созданной папке «Data»);
сохранить конфигурацию («Object/Apply») и выйти из BDE Administrator («Object/Exit»).
Создать базу данных:
запустить Database Desktop («Пуск/Программы/Borland Delphi/Database Desktop», иконка );
создать новую таблицу («File/New/Table»). Выбрать драйвер базы данных Paradox;
создать поля таблицы «Студенты». Структура БД: идентификационный (уникальный) номер студента (поле ID) – тип поля автоинкремент, поле первичного индекса; фамилия студента (поле Name) – тип данных символьное поле; пол студента (поле Sex) – тип данных символьное поле; группа студента (поле Group) – тип данных числовой. Заполненная таблица полей выглядит так:
№
| Field Name
| Type
| Size
| Key
| 1
| ID
| +
|
| *
| 2
| Name
| A
| 20
|
| 3
| Sex
| A
| 7
|
| 4
| Group
| N
|
|
| создать 3 вторичных индекса: по полям Name; Sex, Name (в индекс включены 2 поля – первое Sex, второе Name); Group, Name (выбрать среди свойств таблицы (Table Properties) свойство Secondary indexes). Назвать индексы: Index_Name, Index_Sex_Name, Index_Group_Name соответственно;
сохранить таблицу (кнопка «Save as») в папке «Data», созданной в п. 1 для БД, дав имя таблице «Student.db»;
выйти из Database desktop – команда «File/Exit».
Запустить Delphi.
Создать новый проект и сохранить его в папке создаваемой программы («work7.dpr», «main.pas»).
Настроить вид экрана:
для подключения файла баз данных необходимо:
поместить на форму таблицу (элемент Table, вкладка DataAccess, значок );
настроить элемент Table:
дать имя таблице TStud ( Name);
в свойстве DatabaseName указать имя псевдонима (в нашем примере 9599);
настроить имя таблицы – выбрать из списка имя файла «Student.db» ( TableName);
настроить индексный файл – выбрать из списка имя индекса Index_Name (сортировка по фамилии студента) ( IndexName);
сделать таблицу активной (показать содержимое базы данных) – установить свойство Active в значение true;
поместить элемент-связку (DataSource, DataAccess,):
дать имя объекту DSStud (Name);
настроить связку на элемент TStud, выбрать из списка ( DataSet);
поместить на форму элемент отображения данных БД и работы с ним – элемент таблица отображения базы данных (DBGrid, DataControl, ). Настроить его свойства:
дать имя объекту DBGStud (Name);
указать элемент-связку DSStud (DataSource);
настроить поля, которые будут отображены в таблице (Columns), запустив мастера настройки - :
удалить поле «ID», нажав клавишу <Del>;
изменить заголовки таблицы для каждого поля («Фамилия», «Пол», «Группа»): выбрать в списке поле и изменить его свойство Title.Caption;
для поля «Пол» ввести список значений, позволяющий при вводе записи выбирать значение из списка – свойство PickList – добавить две строки «мужской», «женский»;
закрыть настройщик свойств полей;
для сортировки данных поместить элемент зависимых кнопок ниже элемента DBGStud слева (на рис. 7.6 элемент не виден):
поместить элемент RadioGroup (Standard, ) и настроить свойства:
имя объекта изменить на RGSort (Name);
изменить заголовок на «Сортировка» (Caption);
добавить список сортировки («Имя», «Пол», «Группа»), введя эти значения при редактировании свойства Items;
установить по умолчанию сортировку по имени (свойство ItemIndex установить в 0);
для фильтрации добавить еще один элемент зависимых кнопок (разместить справа от элемента RGSort):
поместить элемент RadioGroup (Standard, ) и настроить свойства:
изменить имя на RGFiltr (Name);
изменить заголовок на «Фильтрация» (Caption);
добавить список фильтрации («Весь список», «Юноши», «Девушки») (Items);
установить по умолчанию отображение всего списка (ItemIndex);
для осуществления поиска студента по фамилии добавить элементы ниже элементов RGSort и RGFiltr:
элемент ввода фамилии – строка ввода (Edit,Standard,), элемент назвать EFind (Name);
подсказку к строке ввода – элемент метка (Label, Standard,), изменить заголовок на «Поиск фамилии:» (Caption);
кнопку начала поиска – элемент кнопка (Button, Standard,), изменить имя на BFind (Name) и заголовок на «Поиск» (Caption);
добавить кнопку выхода из программы (расположить справа от таблицы) – элемент кнопка (Button, Standard,), изменить имя на BQuit (Name) и заголовок на «Выход» (Caption);
Запрограммировать кнопку выхода BQuit.
Запрограммировать сортировку списка студентов. Сортировка осуществляется при анализе индекса (ItemIndex) объекта RGSort. Необходимо добавить следующие строки на событие этого элемента onClick:
Case RGSort.ItemIndex of
0 : TStud.IndexName := 'Index_Name'; //Индекспоимени
1 : TStud.IndexName := 'Index_Sex_Name'; //Индекспополу
2 : TStud.IndexName := 'Index_Group_Name'; //Индекспогруппе
end;
DBGStud.SetFocus;
{Сделать активным таблицу DBGStud}
Запрограммировать фильтрацию списка студентов. Фильтрация осуществляется при анализе индекса (ItemIndex) объекта RGFiltr. Необходимо добавить следующие строки на событие onClick этого элемента:
Case RGFiltr.ItemIndex of
0 : TStud.CancelRange; //Отменить фильтр
1 : begin
TStud.CancelRange; //Отменить фильтр
TStud.IndexName := 'Index_Sex_Name'; //Индекспополу
TStud.SetRange(['мужской'],['мужской']); //Установить фильтр
{Показать только мужчин}
end;
2 : begin
TStud.CancelRange; //Отменить фильтр
TStud.IndexName := 'Index_Sex_Name'; //Индекспополу
TStud.SetRange(['женский'],['женский']); //Установить фильтр
{Показать только женщин}
end;
end;
DBGStud.SetFocus;
{Сделать активным элементом таблицу DBGStud}
Запрограммировать поиск записи по введенной фамилии в поле ввода элемента EFind, используя событие onClick элемента кнопка BFind. Необходимо добавить следующие строки:
TStud.CancelRange; //Отменить фильтр (вдруг он установлен?)
RGSort.ItemIndex := 0; //Отобразить режим сортировки
RGFiltr.ItemIndex := 0; //Отобразить режим фильтра
TStud.IndexName := 'Index_Name'; //Индекс по искомому полю
TStud.FindNearest([EFind.Text]); //Поискзаписи
DBGStud.SetFocus; //СделатьактивнымтаблицуDBGStud
Программа написана!
Запустить программу – <F9>.
После запуска программы ввести данные в базу данных и проверить работоспособность программы.
Индивидуальное задание Модифицировать созданную программу для обработки данных БД «Студенты». Варианты заданий следующие:
Вывести список студентов определенного года рождения, вводимого в поле ввода.
Вывести список студентов, определенной группы, вводимой в поле ввода.
Вывести список студентов, у которых средний балл аттестата больше 4.
Вывести список студентов, у которых нет троек по результатам сессии (средний балл сессии больше 4).
Вывести список иногородних студенток.
Вывести список иногородних студентов-мужчин.
Вывести список студентов-отличников определенной группы, вводимой в поле ввода.
Вывести список студентов определенной группы и определенного пола, задаваемых в полях ввода.
Вывести список студентов, получающих стипендию больше введенного числа.
Вывести список студентов, не получающих стипендию.
Вывести список студентов определенного года рождения и пола.
Вывести список студентов, имеющих средний балл аттестата и по результатам сданной сессии больше 4.
Осуществить поиск студентов по номеру группы и фамилии, вводимых в поля ввода.
Осуществить поиск студентов по году рождения и фамилии, вводимых в поля ввода.
Осуществить поиск студентов по полу и фамилии, вводимых в поля ввода.
Вывести список студентов-хорошистов, получающих стипендию.
Вывести список студентов с фамилией на введенную букву и получающих стипендию.
Вывести список студентов-юношей, получающих стипендию и имеющих среднюю оценку по результатам сессии больше 4.
Вывести список студентов-девушек, получающих стипендию и имеющих среднюю оценку по результатам сессии меньше 4.
Вывести список девушек, окончивших школу на «отлично».
Итоги В седьмой теме были изучены: способы построения БД с помощью комбинированного типа запись; способы построения БД с использованием аппарата Delphi по поддержке баз данных; стандартные утилиты создания БД (BDE Administrator и Database desktop); некоторые стандартные операции при работе с БД.
При построении демонстрационной программы были получены навыки работы с визуальными компонентами: невидимым элементом настройки БД – Table; невидимым элементом связки файла БД с видимыми элементами – DataSource; элементом отображения, набора и редактирования данных БД – DBGrid.
|