Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование delphi.doc
Скачиваний:
806
Добавлен:
09.02.2015
Размер:
2.97 Mб
Скачать

7.2. Создание программы «Список студентов»

Задача. Написать программу управления структурой БД «студенты», которая позволяет добавлять, редактировать и удалять записи, а также сортировать, фильтровать записи и осуществлять поиск записи студента по введенной фамилии.

Окно программы представлено на рис. 7.6.

Процесс создания программы происходит по следующему алгоритму:

  1. Настроить псевдоним базы данных:

  • создать в папке создаваемой программы папку для хранения баз данных. Назвать папку «Data»;

  • запустить BDE Administrator (из папки Delphi – «Пуск/Программы/Borland Delphi/BDE Administrator», иконка );

  • назвать псевдоним (Alias) именем по номеру группы (например, если номер группы 9599, то псевдоним назвать 9599);

  • с помощью мастера (для версий Delphi 3 – 6) или вручную (Delphi 2) указать папку, где будут находиться файлы базы данных (указать путь к созданной папке «Data»);

  • сохранить конфигурацию («Object/Apply») и выйти из BDE Administrator Object/Exit»).

  1. Создать базу данных:

  • запустить 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».

  1. Запустить Delphi.

  2. Создать новый проект и сохранить его в папке создаваемой программы («work7.dpr», «main.pas»).

  3. Настроить вид экрана:

  • для подключения файла баз данных необходимо:

  • поместить на форму таблицу (элемент 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);

  • форма готова!

  1. Запрограммировать кнопку выхода BQuit.

  2. Запрограммировать сортировку списка студентов. Сортировка осуществляется при анализе индекса (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}

  1. Запрограммировать фильтрацию списка студентов. Фильтрация осуществляется при анализе индекса (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}

  1. Запрограммировать поиск записи по введенной фамилии в поле ввода элемента EFind, используя событие onClick элемента кнопка BFind. Необходимо добавить следующие строки:

TStud.CancelRange; //Отменить фильтр (вдруг он установлен?)

RGSort.ItemIndex := 0; //Отобразить режим сортировки

RGFiltr.ItemIndex := 0; //Отобразить режим фильтра

TStud.IndexName := 'Index_Name'; //Индекс по искомому полю

TStud.FindNearest([EFind.Text]); //Поиск записи

DBGStud.SetFocus; //Сделать активным таблицу DBGStud

  1. Программа написана!

  2. Запустить программу – <F9>.

  3. После запуска программы ввести данные в базу данных и проверить работоспособность программы.