Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы по Delphi

.pdf
Скачиваний:
62
Добавлен:
05.06.2015
Размер:
768.49 Кб
Скачать

5.Вставьте запись при помощи клавиш Insert или через меню команды Record|Insert. Вставка записи производится после активизированной в данный момент записи.

6.Удалите любую запись. Для этого активизируйте ее и нажмите комбинацию клавиш Ctrl+Del или Record|Delete. Но для того чтобы произошло физическое удаление из файла таблицы БД всех отмеченных на удаление записей, необходимо активизировать выключатель Pack Table (Упаковка таблицы) при сохранении файла с таблицей. Для этого войдите в

Table|Restructure, откроется окно «Restructure Paradox 7.0 for Windows Table: People.db». Здесь и активизируйте этот выключатель и нажмите кнопку Save (Сохранить).

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

8.Для таблицы БД Tel.db проделайте то же самое.

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

Сортировка

Сортировка - это физическое упорядочивание файла. Это отличает сортировку от индексирования БД, которое при неизменности файла позволяет предъявлять записи и перемещаться по нему в желаемом порядке. Необходимость в сортировке может возникнуть, например, если требуется произвести упорядочивание по какому-то полю или нескольким полям. При сортировке всегда создается файл такого же размера, как и исходная таблица, в котором содержатся упорядоченные записи.

Пример 3. Сортировка содержимого таблицы People БД “Телефонная книжка”

1. Выберите команду Tools|Utilities|Sort.

2.В открывшемся диалоговом окне «Select Table» (Выбор таблицы) выберите файл, который будете сортировать, в данном случае это - People.db. Нажмите кнопку Open, в результате чего откроется окно «Sort Table:...People.db».

3.В данном окне в группе Sorted Table (Отсортированная таблица) активизирован переключатель New Table (Новая таблица). Сюда введем имя файла, в котором вы сохраните результат сортировки, People-s.

4.Активизируйте выключатель Display sorted table (Отобразить отсортированную таблицу) в этой же группе для того, чтобы после задания условий сортировки увидеть ее результат. А выключатель Sort just selected fields (Сортировка по выделенным полям) оставьте не активизированным, т.

к. сортировать мы будем всю таблицу в целом, т. е. по всем полям, определенным в списке Fields, а не по полям, находящимся в списке Sort Oder.

5.В окне также имеется два списка: левый - Fields - содержит названия всех полей, входящих в таблицу, правый - Sort Oder - названия полей, по которым производится сортировка. Выберите в левом списке полей поле Family и, нажав кнопку со стрелкой вправо рядом со списком, занесите его в правый список.

6.Мы будем сортировать таблицу по полю Family, причем по возрастанию, об этом свидетельствует значок плюса перед именем поля в списке Sort Oder. Но при необходимости вы можете изменить вид сортировки кнопкой Sort Direction (убыванию соответствует значок минуса перед именем поля в списке Sort Oder). Здесь также можно изменять порядок следования полей, по которым сортируется таблица, с помощью кнопок-стрелок Change oder.

7.По окончании выбора порядка сортировки нажмите кнопку ОК. В результате проведенных действий вы должны увидеть, что таблица будет отсортирована по фамилиям, упорядоченным по алфавиту.

Задание к лабораторной работе № 1

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

Вариант 1.

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

Вариант 2.

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

Вариант 3.

Сведения об успеваемости студентов. База данных должна содержать следующую информацию: фамилию, имя, отчество студента, номер группы, в которой обучается студент, название учебной дисциплины, номер задания, коэффициент сложности, оценку данного студента по данной дисциплине за данное задание от 0 до 1 (как доля сделанной работы).

Вариант 4.

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

Вариант 5.

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

Вариант 6.

Учет изделий категорий А, В, С, собранных рабочим цеха за месяц. База данных должна содержать следующую информацию: фамилию, имя, отчество рабочего, название цеха, количество изделий по категориям, количество рабочих в цехе и фамилию начальника цеха.

Вариант 7.

Сведения об абонентах АТС. База данных должна содержать следующую информацию: фамилию, имя, отчество владельца телефона, год установки телефона, номер телефона, тип установки телефона (спаренный или нет), льготу (процентную скидку при оплате).

Вариант 8.

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

Вариант 9.

Результаты сессии на первом курсе кафедры ВТ. База данных должна содержать следующую информацию: индекс группы, фамилию, имя, отчество студента, пол студента, семейное положение и оценки по пяти экзаменам.

Вариант 10.

Учет рейтинга теннисистов за 5 лет. Каждая запись содержит поля: фамилия, имя, отчество спортсмена, пол, год рождения, фамилия, имя, отчество тренера, названия стран и пять полей с рейтингом.

Вариант 11.

Сведения о рейсах Аэрофлота. База данных должна содержать следующую информацию: номер рейса, пункт назначения, время вылета, время прибытия, количество свободных мест, тип самолета и его вместимость.

Вариант 12.

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

Вариант 13.

Сведения о нападающих команд “Спартак” и “Динамо”. База данных должна содержать следующую информацию: фамилию, имя, отчество, название команды, дату приема в команду, число заброшенных шайб, количество голевых передач, штрафное время и количество сыгранных матчей.

Вариант 14.

Сведения о выборе дисциплины студентом. База данных должна содержать следующую информацию: фамилию, имя, отчество студента, номер зачетной книжки и сведения о том, живет ли студент в общежитии, индекс группы, а также пять дисциплин (1 – желает изучать, 0 – не желает).

Вариант 15.

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

Вариант 16.

Учет оптовых продаж. База данных должна содержать следующую информацию: наименование товара, цену единицы товара и дату его поступления, номер партии, размер партии, названии фирмы-покупателя, размер проданной партии, цену единицы товара и дату продажи.

Вариант 17.

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

Вариант 18.

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

Вариант 19.

Учет рождаемости в роддоме. База данных должна содержать следующую информацию: фамилию, имя, отчество матери, пол ребенка, его вес, рост и дату рождения ребенка, а также ФИО лечащего врача и номер палаты, в которой находится мать ребенка.

Вариант 20.

Сведения об обучающихся на курсах повышения квалификации. База данных должна содержать следующую информацию: фамилию, имя, отчество слушателя, его пол и адрес, тип организации (коммерческая, государственная и т.д.), наименование организации, должность слушателя и оценки по прослушанным дисциплинам (маркетинг, финансы и кредит) для каждого слушателя.

Вариант 21.

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

преподавателя, читаемую дисциплину, дату экзамена и оценку, полученную студентом.

Вариант 22.

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

Вариант 23.

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

Вариант 24.

Учет золотых изделий в ювелирном магазине. База данных должна содержать следующую информацию: вид изделия, его вес, пробу, дату поступления и стоимость, а также фамилию, имя, отчество мастера-изготовителя, стаж его работы и разряд (1,2,3).

2.Отредактируете несколько записей в базе данных.

3.Отсортируйте данные в базе данных по какому-либо признаку или полю, записав результаты сортировки.

4.Составьте вторичный индекс из одного, двух или более полей.

Лабораторная работа № 2 Проектирование приложений для работы с БД

Одной из самых существенных возможностей пакета Delphi является разработка приложений для работы с БД. Здесь под приложением мы будем понимать экранную форму, созданную для удобной работы с информацией, хранящейся в таблицах БД.

Виды форм БД и их создание

Формы БД различаются по способу представления информации. Существуют следующие виды форм:

Список-форма. Она похожа на таблицу, где записи расположены одна под другой. Следует отметить, что для создания такой формы используется компонента DBGrid. Как правило, все поля записи в этой форме размещаются в одну строку. С этой формой очень удобно работать, когда записи короткие.

Бланк-форма. Эта форма похожа на анкету, где все поля одной записи расположены на одном листе. Такая форма используется при отображении больших записей из БД, например анкетной информации о человеке, и позволяет создать очень информативное представление данных за счет дополнительных элементов.

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

Создавать форму БД при разработке приложения для работы с БД можно вручную, помещая необходимые компоненты на форму. С другой стороны, можно также воспользоваться помощью эксперта-построителя форм БД, а затем, в случае необходимости изменить расположение отображаемых компонент. Заметим, что эксперт помещает на форму не только отображаемые компоненты, но и компоненты, которые определяют связь с БД.

Одной из важных задач при создании приложения для работы с БД является создание качественных форм БД. Простое, понятное расположение компонент не только повышает эффективность работы, но и позволяет минимизировать ошибки ввода.

Пример 1. Создание формы БД с подформой для работы с информацией из БД «Телефонная книжка»

1. Откроем новый проект с помощью команды главного меню File|New Application. Изменим свойство Caption (Заголовок) формы Form1 на «Информация о людях». Фактически этот заголовок формы будет являться названием БД.

2.Сразу же сохраним форму Form1 в файле MyExunitDB.pas, а сам проект - в файле MyExampleDB.dpr. Для этого выполним команду главного меню File|Save Project As. При этом также появится окно выбора имени файла, в котором выберем для модуля папку, зададим модулю имя MyExUnitDB, после этого зададим проекту имя MyExampleDB.

3.Поместим на форму Form1 компоненты для связи с таблицей БД, находящейся в файле People.db.

3.1.В палитре компонент откроем страницу DataAccess (Доступ к данным) и перенесем с помощью мыши на форму Form1 компоненту Table (Таблица). Затем выберем свойство TableName и для него зададим значение People.db, устанавливая связь приложения с таблицей БД People.db. Для того чтобы отображаемые компоненты могли выводить на экран данные из этой таблицы, зададим свойству Active компоненты Table1 значение True.

3.2.С этой же страницы палитры компонент с помощью мыши перенесем на форму Form1 компоненту DataSource (Источник данных). Она обеспечивает связь отображаемых компонент с набором данных.

Зададим для свойства DataSet компоненты DataSource1 значение Table1. После этого отображаемые компоненты, размещение которых в проекте будет описано ниже, получат доступ к данным из таблицы БД People.db. Расположение компонент в модуле не существенно.

4.Поместим на форму Form1 компоненты для связи с таблицей БД, находящейся в файле Tel.db, для чего выполним операции, аналогичные операциям в предыдущем пункте, только компоненты Table2 и DataSource2

будут связаны с таблицей Tel.db через свойство DatabaseName и DataSet соответственно.

5. Установим взаимосвязь между наборами данных для создания формы с подформой, отображающей данные из двух таблиц БД.

Для этого выделим компоненту Table2 на форме Form1. Установим для ее свойства MasterSource значение DataSource1.

Активизируем мышью значение свойства MasterFields этой же компоненты. В комбинированной строке ввода Available Index (Используемые индексы) выберем значение IDPeopleIndex, т.к. взаимосвязь таблиц устанавливается с помощью индексированных полей. Затем в левом списке выберем значение IDPeople (поле в подчиненной таблице Tel, в данном примере оно единственное) и в правом списке выберем значение IDPeople (поле в главной таблице People). Нажмем кнопку Add - установленное соединение отображается в нижней части окна. Если установлена ошибочная связь, ее следует выделить в нижнем окне и нажать кнопку Delete, находящуюся справа от окна. Завершается настройка взаимосвязи таблиц нажатием кнопки ОК. В результате свойство IndexName включает название вторичного индекса

- IDPeopleIndex, а MsterFields содержит имя поля в главной таблице, участвующего во взаимосвязи, - IDPeople.

6. Поместим в форму Form1 компоненты, предназначенные для отображения данных из БД. Для этого выполним следующие действия:

6.1. Со страницы Standart палитры компонент поместим в левый верхний угол формы Form1 метку Label (Метка). Изменим с помощью инспектора объектов ее свойство Caption на «Фамилия, имя, отчество».

6.2.Используя страницу DataControls палитры компонент, поместим в форму Form1 3 компоненты DBEdit (Строка ввода значений в БД) под меткой Label1 в один ряд. Для всех компонент зададим свойству DataSource значение DataSource1, а в свойстве DataField для каждой из этих строк ввода выберем соответственно из списка значения Family, Name и SecName.

6.3.Со страницы Standart палитры компонент поместим в форму еще одну метку Label. Разместим ее под компонентой DBEdit1. Изменим ее свойство Caption на «День рождения».

6.4.Правее этой метки со страницы DataControls палитры компонент поместим строку ввода DBEdit. Зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Birthday.

6.5.Правее этой строки ввода со страницы DataControls палитры компонент поместим компоненту DBCheckBox (Выключатель значения в БД). Изменим свойство Alignment (Расположение) у компоненты

DBCheckBox1 На LeftJustify, а Caption - на «Пол». Затем зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Sex.

6.6.Ниже метки Label2 поместим со страницы Standart палитры компонент еще одну метку Label. Изменим ее свойство Caption на «Комментарий».

6.7.Под этой меткой поместим со страницы DataСontrols палитры компонент компоненту DBMemo (Редактор в БД). Увеличим ее по

горизонтали на всю величину формы, а вертикальный размер несколько уменьшим. Зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Notes. 6.8. В правую верхнюю часть формы Form1 поместим со станицы DataControls компоненту DBNavigator (Навигатор по записям БД). Записью в таблице БД является строка. Зададим свойству DataSource

значение DataSopurce1.

7. Поместим в форму Form1 со страницы DataControls компоненту DBGrid (Таблица отображения БД). Поместим ее ниже всех компонент, уже размещенных в форме, и несколько уменьшим по вертикали. Здадим ее свойству DataSource значение DataSource2. Если все указанные выше действия были выполнены верно, в компоненте DBGrid1 сразу будет выведено содержимое таблицы Tel.db.

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

8.1. Активизируем мышью свойство Columns, тем самым вызвав редактор списка полей таблицы Editing DBGrid1.Columns.

8.2.В этом редакторе нажмем кнопку Add. Выделим появившееся название «0-TColumn». С помощью инспектора объектов дадим свойству FieldName значение Number. Для сложного свойства Titel дадим его параметру Caption значение Номер.

8.3.В окне редактора списка поле нажмем кнопку Add. Выделим появившееся название «1-TColumn». С помощью инспектора объектов дадим свойству FieldName значение Type. Активизируем свойство PickList и в появившемся текстовом редакторе введем две строки:

дом. раб.

После этих операций нажмем кнопку ОК. Таким образом мы задали список, из значений которого можно определять тип телефона. Затем для сложного свойства Titel дадим его параметру Caption значение Тип. Можно заметить, что отображаемые столбцы появляются в компоненте DBGrid1 по мере их определения.

8.4. Чтобы завершить работу с редактором столбцов таблицы, достаточно его закрыть, воспользовавшись стандартной кнопкой на границе окна.

9. Со страницы Standart палитры компонент поместим в форму Form1 метку Label. Разместим ее над компонентой DBGrid1 в левой части. Изменим свойство Caption на Телефоны.

10. Перенесем со страницы DataControls в форму Form1 еще один навигатор DBNavigator. Разместим его над компонентой DBGrid1 в правой части. Зададим свойству DataSource этого навигатора значение DataSource2.

11. Запустим программу с помощью главного меню Run|Run.

12. При вводе информации в форму с подформой имеются определенные особенности. Чтобы отметить их, введем информацию в форму. Для этого выполним следующие действия:

12.1. Нажмем кнопку «Плюс» на панели верхнего навигатора по записям БД. После этого создается новая запись в таблице People, куда внесем информацию о новом человеке.

Втри строки ввода под меткой «Фамилия, имя, отчество» последовательно введем значения «Хромов», «Олег», «Львович».

Встроку ввода рядом с меткой «День рождения» введем 14.01.79. Выключатель с надписью «Пол» должен быть включен.

Нажмем кнопку «Галочка» на верхней панели навигатора по записям. Созданная запись о человеке сохраняется в таблице People. Сохранить данные о человеке необходимо до начала ввода его телефонов, иначе они не будут соответствовать этому человеку, а в БД окажется столько лишних записей, сколько в этом случае введено телефонов.