- •Введение
- •1. Знакомство со средой программирования BorlandDelphi
- •Некоторые команды редактора. При написании программы можно использовать следующие комбинации клавиш для упрощения набора текста:
- •1.2. Создание программы «Моя первая программа»
- •2. Условные операторы
- •2.1. Теоретические сведения
- •Условные операторы. Условный оператор позволяет выбирать одно из двух действий, причем выбор осуществляется во время выполнения программы. Существует 2 вида условных операторов:
- •2.2. Создание программы «Попадание точки в фигуру»
- •Индивидуальное задание
- •3. Операторы цикла
- •3.1. Теоретические сведения Стандартные функции. Для выполнения часто встречающихся вычислений и преобразования данных в Object Pascal существуют стандартные функции.
- •Отладка программы. При построении сложных программ могут возникать ошибки. Их принято делить на 3 группы:
- •3.2. Создание программы «Степенные ряды»
- •Индивидуальное задание
- •4. Тип данных массив
- •4.1. Теоретические сведения
- •Типичные действия с массивом. Вывод массива; ввод массива; поиск максимального или минимального элемента массива; поиск в массиве заданного элемента; сортировка массива.
- •4.2. Создание программы «Работа с массивом»
- •Индивидуальное задание
- •5. Графические примитивы
- •5.2. Создание программы «Графические примитивы»
- •Индивидуальное задание
- •Стандартные диалоговые окна. Для вывода различных сообщений можно использовать стандартные диалоговые окна Delphi. Диалоговые окна запускаются командой:
- •6.2. Создание программы «Редактор текста»
- •Индивидуальное задание
- •7. Работа с базами данных
- •7.1. Теоретические сведения
- •7.2. Создание программы «Список студентов»
- •Индивидуальное задание
- •8. Выполнение курсового проекта
- •8.1. Варианты курсовых работ
- •Заключение
- •Список рекомендуемой литературы
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>.
После запуска программы ввести данные в базу данных и проверить работоспособность программы.