Программирование в среде Visual Fox Pro. База данных «Факультет», страница 2

§  факультет – сам факультет.

Таблица form_obuch  состоит из следующих полей:

§  id_ – идентификатор формы обучения;

§  обучение_ - форма обучения.

Таблицы predmet_1, predmet_2, predmet_3  состоят из следующих полей:

§  id_predmet – идентификатор производителя;

§  дисциплина – перечень предметов

3. Содержание таблиц БД

Для демонстрации работы базы данных, в неё были внесены следующие данные

(рис. 2-5):

Рис.2. Содержимое таблицы “Students_2007_Semestr1”.

Рис.3. Содержимое таблицы “Fakult”.

Рис.4. Содержимое таблицы “Form_obuch”.

Рис.5. Содержимое таблицы “Predmet_1”.

4. Интерфейс пользователя

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

Рис.6. Основная форма базы данных. Вкладка «Просмотр и изменение БД»

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

5. Формы и запросы

В данном разделе рассматриваются используемые формы и программные коды, реализующие соответствующие функции и запросы:

5.1. Формы для редактирования данных

Добавление/удаление студентов:

Рис.7. Форма добавления и удаления студентов.

Добавление предмета:

Рис.8. Форма добавления и удаления производителя.

Программа, закрепленная за кнопкой «Добавить» (вызывается при нажатии на неё):

public tmp(2)

if reccount("Predmet_1") > 0

              SELECT MAX(id_predmet) FROM Predmet_1 INTO ARRAY tmp

              tmp[1] = tmp[1] + 1

else

              tmp[1] = -1

endif

INSERT INTO Predmet_1 VALUES ( tmp[1], thisform.text1.value)

INSERT INTO Predmet_2 VALUES ( tmp[1], thisform.text1.value)

INSERT INTO Predmet_3 VALUES ( tmp[1], thisform.text1.value)

thisform.text1.value=""

Добавление/удаление факультета:

Рис 9. Форма добавления и удаления вида.

5.2. Запрос к базе данных для просмотра информации

Просмотр всех записей базы данных:

SELECT Students_2007_semestr1.фамилия, Students_2007_semestr1.имя, Students_2007_semestr1.отчество, Students_2007_semestr1.дата_рождения, Students_2007_semestr1.курс ,;

Students_2007_semestr1.семестр,fakult.факультет, Students_2007_semestr1.группа, Predmet_1.дисциплина, Students_2007_semestr1.оценка_1,;

Students_2007_semestr1.дата_сдачи_1, Students_2007_semestr1.число_пересдач_1,;

Predmet_2.дисциплина, Students_2007_semestr1.оценка_2,;

Students_2007_semestr1.дата_сдачи_2, Students_2007_semestr1.число_пересдач_2,;

Predmet_3.дисциплина, Students_2007_semestr1.оценка_3,;

Students_2007_semestr1.дата_сдачи_3, Students_2007_semestr1.число_пересдач_3,;

Students_2007_semestr1.стипендия, form_obuch.обучение_ , Students_2007_semestr1.сдача_сессии_в_срок,;

Students_2007_semestr1.продление_сессии, Students_2007_semestr1.в_академ_отпуске, Students_2007_semestr1.откуда,;

Students_2007_semestr1.место_жительства, Students_2007_semestr1.есть_семья;

FROM fakultet!Students_2007_Semestr1 ;

INNER JOIN fakultet!predmet_1;

                            ON  Students_2007_semestr1.предмет_1 = Predmet_1.id_predmet;

INNER JOIN fakultet!predmet_2;

                            ON  Students_2007_semestr1.предмет_2 = Predmet_2.id_predmet;

INNER JOIN fakultet!predmet_3;

                            ON  Students_2007_semestr1.предмет_3 = Predmet_3.id_predmet;

INNER JOIN fakultet!fakult;

                            ON  fakult.id_fakult = Students_2007_semestr1.id_fakult ;

INNER JOIN fakultet!form_obuch;

                            ON  form_obuch.id_ = Students_2007_semestr1.обучение ;

5.3. Запросы к базе данных.

Для заданного факультета выдать список студентов, отсортированный (рис.10-11):

• по году рождения,

• в алфавитном порядке студентов заданного курса,

• стипендии

Рис.10. Форма для вывода отсортированного списка.