МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОУ ВПО «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»


Расчётно-графическая работа

по дисциплине «Базы данных»

Выполнил: Мельников :

Группа: АМ-610

Факультет: АВТФ

Вариант: 32

Новосибирск 2009


Задание

Сформировать несколько таблиц "Машины", "Механик", "Ремонт" и др. Предусмотреть: меню, печать на экран, ввод данных, редактирование, просмотр данных. С введением и использованием нескольких таблиц реализовать следующие типы запросов:

■ Для каждого вида автомобиля указать сведения о нем (тип, год выпуска, срок эксплуатации, место изготовления, цена, скорость, вместительность и т. п.).

■ Для каждого вида автомобиля выдать список, отсортированный:

■ по году выпуска,

■ в алфавитном порядке все виды,

■ по цене,

■ по сроку эксплуатации,

■ по стоимости ремонтных работ,

■ по виду ремонта.

■ Найти долю «старых» машин (срок эксплуатации больше заданного, ввод с клавиатуры) от общего числа машин.

■ Найти самый дорогой автомобиль (по каждому типу), самый дешевый, среднюю стоимость найти автомобили с ценой свыше 50 т. р. (и любая другая сумма, т. е. предусмотреть ввод цены с клавиатуры).

■ Найти все автомобили, поступившие из заданной страны (ввод страны), чья скорость больше заданной (ввод скорости).

■ Найти количество автомобилей в гараже (по каждому типу и в целом) с заданным сроком эксплуатации (ввод срока).

НЕ нашли? Не то? Что вы ищете?

■ Найти все автомобили заданной вместительности (ввод) для заданного года выпуска.

■ Для каждого механика указать сведения о нем (ФИО, год рождения, стаж работы, вид ремонта и т. д.).

■ Найти самый дорогой вид ремонта, самый дешевый, среднюю стоимость ремонта для каждого механика и в целом, найти машины со стоимостью ремонтных работ в заданных пределах (предусмотреть ввод цены с клавиатуры) для каждого механика и в целом.

■ Количество отремонтированных машин за месяц, квартал; средняя стоимость ремонтных работ за этот же период.

■ Найти долю дешевых (по стоимости ремонтных работ) машин (меньше заданного, ввод ограничения) от общего числа машин (для каждого механика и в целом).

■ Найти всех механиков, чей стаж находится в заданных пределах (ввод интервала) для заданного вида ремонта (выбор).

Структура базы данных

Структура таблиц

Таблица «automobile»

Рисунок 1 – Структура таблицы «automobile»

Назначение: хранение общей информации об автомобилях, поступивших в сервис-центр.

Поля: государственный номер, название производителя, название модели, год выпуска, время эксплуатации, страна изготовитель, скорость, вместительность, стоимость, дата поступления, дата возврата.

Таблица «type_repair»

Рисунок 2 – Структура таблицы «type_repair»

Назначение: хранение наименований предоставляемых услуг.

Поля: уникальный идентификатор вида ремонта; наименование вида ремонта.

Таблица «country»

Рисунок 3 – Структура таблицы «country»

Назначение: хранение названий стран производителей автомобилей.

Поля: уникальный идентификатор страны; наименование страны.

Таблица «manufacturer_table»

Рисунок 4 – Структура таблицы «manufacturer_table»

Назначение: хранение наименований фирм производителей автомобилей.

Поля: уникальный идентификатор фирмы производителя; наименование фирмы.

Таблица «need_repair»

Рисунок 5 – Структура таблицы «need_repair»

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

Поля: уникальный идентификатор работы; идентификатор автомобиля; идентификатор требуемого вида ремонта; идентификатор механика осуществляющего ремонт; дата начала ремонта; дата окончания ремонта; стоимость ремонта.

Последние четыре поля могут быть пустыми, это свидетельствует о том, что на эту работу ещё никто не назначен, либо работа ещё не окончена.

Таблица «mechanics»

Рисунок 6 – Структура таблицы «mechanics»

Назначение: хранение информации о механиках, работающих в автосервисе.

Поля: уникальный идентификатор сотрудника; имя; фамилия; отчество; дата рождения.

Таблица «ability_mechanic»

Рисунок 7 – Структура таблицы «ability_mechanic»

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

Поля: уникальный идентификатор; идентификатор сотрудника; идентификатор вида оказываемой услуги; стаж (в днях); ориентировочная цена.

Графическое изображение связей таблиц базы данных

Рисунок 8 – Графическое изображение связей таблиц базы данных

Формы редактирования

Для каждой таблице имеется специальная форма, которая позволяет сделать редактирование таблиц более удобным, учитывая связи между таблицами.

Рассмотрим для примера форму редактирования таблицы «need_repair».

Рисунок 9 – Форма редактирования таблицы «need_repair»

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

Чтобы назначить автомобилю ремонт определенного вида, необходимо нажать на кнопку «Add» и заполнить лишь первые два поля:

Рисунок 10 – Назначение автомобилю определенного вида ремонта

Чтобы назначить механика на определенную работу, достаточно заполнить 2-е и 3-е поля:

Рисунок 11 – Назначение механика на работу

Чтобы работа считалась оконченной достаточно заполнить последние два поля:

Рисунок 12 – Работа выполнена

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

Содержание таблиц базы данных

Рисунок 13 – Содержимое таблицы «automobile»

Рисунок 14 – Содержимое таблицы «type_repair»

Рисунок 15 – Содержимое таблицы «country»

Рисунок 16 – Содержимое таблицы «need_repair»

Рисунок 17 – Содержимое таблицы «mechanics»

Рисунок 18 – Содержимое таблицы «manufacturer_table»

Рисунок 19 – Содержимое таблицы «ability_mechanic»

Запросы

■ Для каждого вида автомобиля выдать список, отсортированный:

■ по году выпуска,

■ в алфавитном порядке все виды,

■ по цене,

■ по сроку эксплуатации,

■ по стоимости ремонтных работ,

■ по виду ремонта.

PRIVATE selManufacturerId AS Integer

PRIVATE selManufacturerText AS Varchar

selManufacturerId = thisform. Manufacturer. IndexToItemId(thisform. Manufacturer. ListIndex)

selManufacturerText = thisform. Manufacturer. value

DO CASE

CASE thisform. SortBy. Value = 'году выпуска'

SELECT number, selManufacturerText as Manufacturer, model, release_year ;

FROM automobile WHERE manufacturer = selManufacturerId ;

ORDER BY release_year

CASE thisform. SortBy. Value = 'алфавиту все виды'

SELECT number, manufacturer_table. manufacturer, model ;

FROM automobile JOIN manufacturer_table ;

ON automobile. manufacturer = manufacturer_table. id ;

ORDER BY manufacturer_table. manufacturer, model

CASE thisform. SortBy. Value = 'цене'

SELECT number, selManufacturerText as Manufacturer, model, price ;

FROM automobile WHERE manufacturer = selManufacturerId ORDER BY price

CASE thisform. SortBy. Value = 'сроку экспуатации'

SELECT number, manufacturer_table. manufacturer, model, lifetime ;

FROM automobile WHERE manufacturer = selManufacturerId ;

ORDER BY lifetime

CASE thisform. SortBy. Value = 'стоимости ремонтных работ'

SELECT t1.number, selManufacturerText as Manufacturer, t1.model, ;

(SELECT SUM(price) FROM need_repair WHERE id_automobile = t1.id) ;

as price_repair FROM automobile as t1 ;

WHERE t1.manufacturer = selManufacturerId ORDER BY price_repair

CASE thisform. SortBy. Value = 'виду ремонта'

SELECT t1.number, selManufacturerText as Manufacturer, t1.model, ;

t3.type_repair as type_rep FROM automobile as t1, ;

need_repair as t2, type_repair as t3 ;

WHERE t2.id_automobile = t1.id AND t2.type_repair = t3.id ;

AND t1.manufacturer = selManufacturerId ORDER BY type_rep

ENDCASE

Рисунок 20 – Пример выполнения запроса, сортировка по году выпуска автомобилей фирмы Nissan

■ Найти долю «старых» машин (срок эксплуатации больше заданного, ввод с клавиатуры) от общего числа машин.

SELECT (SELECT COUNT(*) FROM automobile ;

WHERE lifetime >= Form2.Text1.Value)/COUNT(*) FROM automobile INTO ARRAY temp

Form2.Text2.Value = temp[1]

Рисунок 21 – Пример выполнения запроса

■ Найти самый дорогой автомобиль (по каждому типу), самый дешевый, среднюю стоимость найти автомобили с ценой свыше 50 т. р. (и любая другая сумма, т. е. предусмотреть ввод цены с клавиатуры).

PRIVATE selManufacturerId AS Integer

PRIVATE selManufacturerText AS Varchar

selManufacturerId = thisform. Manufacturer. IndexToItemId(thisform. Manufacturer. ListIndex)

selManufacturerText = thisform. Manufacturer. value

-- Найти самый дорогой автомобиль

IF thisform. ignoreManufacturer. Value = 0 THEN

SELECT t1.number, selManufacturerText, t1.model, t1.release_year, ;

t1.price FROM automobile as t1, (SELECT MAX(price) as maxPrice ;

FROM automobile WHERE manufacturer = selManufacturerId) as t2 ;

WHERE manufacturer = selManufacturerId AND price = t2.maxPrice

ELSE

SELECT t1.number, t3.manufacturer, t1.model, t1.release_year, t1.price ;

FROM automobile as t1, manufacturer_table as t3, ;

(SELECT MAX(price) as maxPrice FROM automobile) as t2 ;

WHERE t1.manufacturer = t3.id AND price = t2.maxPrice

ENDIF

-- Найти самый дешевый автомобиль

IF thisform. ignoreManufacturer. Value = 0 THEN

SELECT t1.number, selManufacturerText, t1.model, t1.release_year, ;

t1.price FROM automobile as t1, (SELECT MIN(price) as minPrice ;

FROM automobile WHERE manufacturer = selManufacturerId) as t2 ;

WHERE manufacturer = selManufacturerId AND price = t2.minPrice

ELSE

SELECT t1.number, t3.manufacturer, t1.model, t1.release_year, t1.price ;

FROM automobile as t1, manufacturer_table as t3, ;

(SELECT MIN(price) as maxPrice FROM automobile) as t2 ;

WHERE t1.manufacturer = t3.id AND price = t2.maxPrice

ENDIF

-- Найти среднюю стоимость

IF thisform. ignoreManufacturer. Value = 0 THEN

SELECT AVG(price) FROM automobile WHERE manufacturer = selManufacturerId

ELSE

SELECT AVG(price) FROM automobile

ENDIF

-- Найти автомобили с ценой свыше

PRIVATE selPrice AS Integer

selPrice = thisform. Text1.value

IF thisform. ignoreManufacturer. Value = 0 THEN

SELECT number, selManufacturerText, model, release_year, price ;

FROM automobile WHERE manufacturer = selManufacturerId ;

AND price > selPrice

ELSE

SELECT t1.number, t3.manufacturer, t1.model, t1.release_year, t1.price ;

FROM automobile as t1, manufacturer_table as t3 ;

WHERE t1.manufacturer = t3.id AND price > selPrice

ENDIF

Рисунок 22 – Пример выполнения запроса, найти самый дорогой автомобиль

■ Найти все автомобили, поступившие из заданной страны (ввод страны), чья скорость больше заданной (ввод скорости).

RIVATE selCountryId AS Integer

PRIVATE selCountryText AS Varchar

PRIVATE selSpeed AS Integer

selCountryId = thisform. Country. IndexToItemId(thisform. Country. ListIndex)

selCountryText = thisform. Country. value

selSpeed = thisform. Text1.value

SELECT t1.number, t2.manufacturer, t1.model, selCountryText as place_making,;

t1.speed FROM automobile as t1, manufacturer_table as t2 ;

WHERE t1.manufacturer = t2.id AND t1.place_making = selCountryId ;

AND t1.speed >= selSpeed

Рисунок 23 – Пример выполнения запроса: найти все автомобили, прибывшие из Германии, чья скорость выше 200 км/ч

■ Найти количество автомобилей в гараже (по каждому типу и в целом) с заданным сроком эксплуатации (ввод срока).

PRIVATE selManufacturerId AS Integer

PRIVATE selManufacturerText AS Varchar

PRIVATE selLifetime AS Integer

selManufacturerId = thisform. Manufacturer. IndexToItemId(thisform. Manufacturer. ListIndex)

selManufacturerText = thisform. Manufacturer. value

selLifetime = thisform. Text1.value

IF thisform. ignoreManufacturer. Value = 0 THEN

SELECT number, selManufacturerText as manafacturer, model, lifetime ;

FROM automobile WHERE manufacturer = selManufacturerId ;

AND lifetime = selLifetime AND issue_date is null

ELSE

SELECT number, selManufacturerText as manafacturer, model, lifetime ;

FROM automobile WHERE lifetime = selLifetime ;

AND issue_date is null

ENDIF

Рисунок 24 – Пример выполнения запроса: найти все автомобили в гараже марки Nissan, чей срок эксплуатации равен двум годам

■ Найти все автомобили заданной вместительности (ввод) для заданного года выпуска.

PRIVATE selReleaseYear AS Varchar

PRIVATE selCapac AS Integer

selReleaseYear = thisform. Text1.value

selCapac = thisform. Text2.value

SELECT t1.number, t2.manufacturer, t1.model, t1.release_year, ;

t1.capaciousness FROM automobile as t1 ;

JOIN manufacturer_table as t2 ON t1.manufacturer = t2.id ;

JOIN country as t3 ON t1.place_making = t3.id ;

WHERE t1.release_year = selReleaseYear AND t1.capaciousness = selCapac

Рисунок 25 – Пример выполнения запроса

■ Найти самый дорогой вид ремонта, самый дешевый, среднюю стоимость ремонта для каждого механика и в целом, найти машины со стоимостью ремонтных работ в заданных пределах (предусмотреть ввод цены с клавиатуры) для каждого механика и в целом.

Рисунок 26 – Форма для первых трех запросов

PRIVATE selMechanicId AS Integer

PRIVATE selMechanicText AS Varchar

selMechanicId = thisform. Mechanics. IndexToItemId(thisform. Mechanics. ListIndex)

selMechanicText = thisform. Mechanics. value

-- Найти самый дорогой вид ремонта

IF thisform. ignoreMechanic. Value = 0 THEN

SELECT selMechanicText as Mechanic, t1.number, t2.manufacturer, ;

t1.model, t4.type_repair, t3.price FROM automobile as t1, ;

manufacturer_table as t2, need_repair as t3, type_repair as t4, ;

(SELECT MAX(price) as maxPrice FROM need_repair ;

WHERE id_mechanic = selMechanicId) as t5 ;

WHERE t1.manufacturer = t2.id AND t1.id = t3.id_automobile AND ;

t3.id_mechanic = selMechanicId AND t3.type_repair = t4.id ;

AND t3.price = t5.maxPrice

ELSE

SELECT TRIM(t6.family)+' '+TRIM(t6.name)+' '+TRIM(t6.patronymic) ;

as mechanic, t1.number, t2.manufacturer, t1.model, ;

t4.type_repair, ;t3.price FROM automobile as t1, ;

manufacturer_table as t2, need_repair as t3, type_repair as t4, ;

(SELECT MAX(price) as maxPrice FROM need_repair) as t5, ;

mechanics as t6 WHERE t1.manufacturer = t2.id ;

AND t1.id = t3.id_automobile AND t3.type_repair = t4.id ;

AND t3.id_mechanic = t6.id AND t3.price = t5.maxPrice

ENDIF

Рисунок 27 – Пример выполнения запроса

-- Найти самый дешевый вид ремонта

PRIVATE selMechanicId AS Integer

PRIVATE selMechanicText AS Varchar

selMechanicId = thisform. Mechanics. IndexToItemId(thisform. Mechanics. ListIndex)

selMechanicText = thisform. Mechanics. value

IF thisform. ignoreMechanic. Value = 0 THEN

SELECT selMechanicText as Mechanic, t1.number, t2.manufacturer, ;

t1.model, t4.type_repair, t3.price FROM automobile as t1, ;

manufacturer_table as t2, need_repair as t3, type_repair as t4, ;

(SELECT MIN(price) as tPrice FROM need_repair ;

WHERE id_mechanic = selMechanicId) as t5 ;

WHERE t1.manufacturer = t2.id AND t1.id = t3.id_automobile ;

AND t3.id_mechanic = selMechanicId AND t3.type_repair = t4.id ;

AND t3.price = t5.tPrice

ELSE

SELECT TRIM(t6.family)+' '+TRIM(t6.name)+' '+TRIM(t6.patronymic) ;

as mechanic, t1.number, t2.manufacturer, t1.model, ;

t4.type_repair, t3.price FROM automobile as t1, ;

manufacturer_table as t2, need_repair as t3, type_repair as t4, ;

(SELECT MIN(price) as tPrice FROM need_repair) as t5, ;

mechanics as t6 WHERE t1.manufacturer = t2.id ;

AND t1.id = t3.id_automobile AND t3.type_repair = t4.id ;

AND t3.id_mechanic = t6.id AND t3.price = t5.tPrice

ENDIF

Рисунок 28 – Пример выполнения запроса

-- Найти среднюю стоимость ремонта

PRIVATE selMechanicId AS Integer

PRIVATE selMechanicText AS Varchar

selMechanicId = thisform. Mechanics. IndexToItemId(thisform. Mechanics. ListIndex)

selMechanicText = thisform. Mechanics. value

IF thisform. ignoreMechanic. Value = 0 THEN

SELECT selMechanicText as mechanic, AVG(price) as avgprice ;

FROM need_repair WHERE id_mechanic = selMechanicId

ELSE

SELECT AVG(price) as avgprice FROM need_repair

ENDIF

Рисунок 29 – Пример выполнения запроса

-- Найти машины со стоимостью ремонтных работ в заданных пределах (предусмотреть ввод цены с клавиатуры) для каждого механика и в целом

PRIVATE selMechanicsId AS Integer

PRIVATE selMechanicsText AS Varchar

PRIVATE min AS Integer

PRIVATE max AS Integer

selMechanicsId = thisform. Mechanics. IndexToItemId(thisform. Mechanics. ListIndex)

selMechanicsText = thisform. Mechanics. value

min = thisform. Text1.value

max = thisform. Text2.value

IF thisform. ignoreMech. Value = 0 THEN

SELECT selMechanicsText as mechanic, t1.number, t3.manufacturer, ;

t1.model, t2.price_repair FROM automobile as t1, ;

(SELECT id_automobile, SUM(price) as price_repair ;

FROM need_repair WHERE id_mechanic = selMechanicsId ;

GROUP BY id_automobile) as t2, manufacturer_table as t3 ;

WHERE t1.id = t2.id_automobile AND t1.manufacturer = t3.id ;

AND t2.price_repair BETWEEN min AND max

ELSE

SELECT t1.number, t3.manufacturer, t1.model, t2.price_repair ;

FROM automobile as t1, (SELECT id_automobile, ;

SUM(price) as price_repair FROM need_repair ;

GROUP BY id_automobile) as t2, manufacturer_table as t3 ;

WHERE t1.id = t2.id_automobile AND t1.manufacturer = t3.id ;

AND t2.price_repair BETWEEN min AND max

ENDIF

Рисунок 30 – Пример выполнения запроса

■ Количество отремонтированных машин за месяц, квартал; средняя стоимость ремонтных работ за этот же период.

SELECT COUNT(*) FROM automobile WHERE id NOT in ;

(SELECT DISTINCT id_automobile FROM need_repair ;

WHERE NOT BETWEEN(date_end, DATE(YEAR(DATE()), MONTH(DATE()), 1), DATE()) ;

OR price is NULL)

Рисунок 31 – Количество отремонтированных машин за месяц

SELECT AVG(t2.price_repair) FROM automobile as t1, (SELECT id_automobile, ;

SUM(price) as price_repair FROM need_repair GROUP BY id_automobile) as t2 ;

WHERE t1.id = t2.id_automobile AND t1.id NOT in (SELECT DISTINCT ;

id_automobile FROM need_repair ;

WHERE NOT BETWEEN(date_end, DATE(YEAR(DATE()), MONTH(DATE()), 1), DATE()) ;

OR price is NULL)

Рисунок 32 – Средняя стоимость ремонтных работ за месяц

STORE MONTH(DATE( )) TO gcMonth

DO CASE

CASE gcMonth <= 3

STORE DATE(YEAR(DATE()), 1, 1) TO gdDate

CASE gcMonth <= 6

STORE DATE(YEAR(DATE()), 4, 1) TO gdDate

CASE gcMonth <= 9

STORE DATE(YEAR(DATE()), 7, 1) TO gdDate

CASE gcMonth <= 12

STORE DATE(YEAR(DATE()), 10, 1) TO gdDate

ENDCASE

SELECT COUNT(*) FROM automobile ;

WHERE id NOT in (SELECT DISTINCT id_automobile FROM need_repair ;

WHERE NOT BETWEEN(date_end, gdDate, DATE()) OR price is NULL)

Рисунок 33 – Количество отремонтированных машин за квартал

SELECT AVG(t2.price_repair) FROM automobile as t1, (SELECT id_automobile, ;

SUM(price) as price_repair FROM need_repair GROUP BY id_automobile) as t2 ;

WHERE t1.id = t2.id_automobile AND t1.id NOT in (SELECT DISTINCT ;

id_automobile FROM need_repair ;

WHERE NOT BETWEEN(date_end, gdDate, DATE()) OR price is NULL)

Рисунок 34 – Средняя стоимость ремонтных работ за квартал

■ Найти долю дешевых (по стоимости ремонтных работ) машин (меньше заданного, ввод ограничения) от общего числа машин (для каждого механика и в целом).

PRIVATE selMechanicsId AS Integer

PRIVATE selMechanicsText AS Varchar

PRIVATE constrain AS Integer

selMechanicsId = thisform. Mechanics. IndexToItemId(

thisform. Mechanics. ListIndex)

selMechanicsText = thisform. Mechanics. value

constrain = thisform. Text3.value

IF thisform. ignoreMech. Value = 0 THEN

SELECT t2.price_repair FROM automobile as t1, ;

(SELECT id_automobile, SUM(price) as price_repair ;

FROM need_repair WHERE id_mechanic = selMechanicsId ;

GROUP BY id_automobile) as t2 WHERE t1.id = t2.id_automobile ;

INTO CURSOR temp

ELSE

SELECT t2.price_repair FROM automobile as t1, (SELECT id_automobile, ;

SUM(price) as price_repair FROM need_repair ;

GROUP BY id_automobile) as t2 WHERE t1.id = t2.id_automobile ;

INTO CURSOR temp

ENDIF

SELECT (SELECT COUNT(*) FROM temp WHERE price_repair < constrain)/COUNT(*) ;

FROM temp INTO ARRAY proz

thisform. Text2.Value = proz[1]

Рисунок 35 – Пример выполнения запроса

■ Найти всех механиков, чей стаж находится в заданных пределах (ввод интервала) для заданного вида ремонта (выбор).

PRIVATE selTypeId AS Integer

PRIVATE selTypeText AS Varchar

PRIVATE min AS Integer

PRIVATE max AS Integer

selTypeId = thisform. TYPE_REPAIR_COMBO. IndexToItemId(thisform. TYPE_REPAIR_COMBO. ListIndex)

selTypeText = thisform. TYPE_REPAIR_COMBO. value

min = thisform. Text1.value

max = thisform. Text2.value

SELECT selTypeText as type_repair, t1.length_service, ;

TRIM(t2.family)+' '+TRIM(t2.name)+' '+TRIM(t2.patronymic) as mechanic ;

FROM ability_mechanics as t1 JOIN mechanics as t2 ON t1.id_mechanic = t2.id;

WHERE t1.type_repair = selTypeId AND BETWEEN(t1.length_service, min, max)

Рисунок 36 – Пример выполнения запроса

Меню

Рисунок 37 – Меню

Меню состоит из двух разделов и пункта «выход».

Первый раздел – «Редактирование». Содержит пункты позволяющие получить доступ к формам редактирования таблиц баз данных.

Второй раздел – «Запросы». Содержит пункты позволяющие осуществить запросы в соответствии с заданием на расчетно-графическую работу.

Пункт «Выход» позволяет перейти к стандартному меню FoxPro.

Выводы

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

В ходе работы были обобщены и закреплены навыки работы со средой разработки visual FoxPro, полученные в ходе лабораторных работ. И также получены новые знания, связанные с языком программирования среды FoxPro и построением пользовательских форм.

Список литературы

1.  Документация по Microsoft Visual FoxPro 9.0