Таблица СЕССИЯ содержит сведения о результатах сдачи
студентами четырех экзаменов: номер личного дела , оценка 1, оценка 2,
оценка 3, оценка 4, результат сдачи сессии. Последний может принимать
одно из следующих значений: "отл" (за все отличные оценки ), "хр1" (за одну
четверку и все остальные пятерки ), "хор" (за две четверки и более), "нхр " (за
удовлетворительные и неудовлетворительные оценки ).
Таблица СТИПЕНДИЯ содержит информацию об условиях
назначения студентов на стипендию: результат сдачи сессии и процент
стипендии.
Задание:
1. Создайте структуры таблиц СТУДЕНТ, СЕССИЯ и СТИПЕДИЯ,
установите ключевые поля .
2. Заполните созданные таблицы СТУДЕНТ, СЕССИЯ и
СТИПЕНДИЯ.
3. Постройте запрос ПРОЕКТ ПРИКАЗА , позволяющий выводить
фамилию, имя, отчество и номер группы студентов, которым
может быть назначена стипендия, а также размер назначаемой
стипендии в процентах от минимальной стипендии.
4. Постройте запрос СУММА, основанный на сформированном
ранее запросе ПРОЕКТ ПРИКАЗА , вычисляющий размер
стипендии при минимальной стипендии 200 р.
5. Постройте запрос ФОНД, основанный на сформированном ранее
запросе СУММА, подводящий итоговые суммы стипендии для
каждой группы .
Количество записей в таблицах определить самостоятельно. Учесть, что
в базе данных должны содержаться сведения о студентах, не получающих
стипендию, получающих 100%, 150% и 200% от минимальной стипендии.
Задача 2.
Фирма производит две модели А и В сборных книжных полок. Их
производство ограничено наличием сырья (высококачественных досок) и
временем машинной обработки . Для каждого изделия модели А требуется 3
м
2
досок, а для изделия В - 4 м
2
. Фирма может получить от своих
поставщиков до 1700 м
2
досок в неделю . Для каждого изделия модели А
minus := true;
end;
if (s1[1] in ['0'..'9']) then begin
{Если стоит цифра - интерпретируем ее}
def := true;
val(s1, m1, code);
if minus then m1 := -m1;
end else begin
{Если стоит идентификатор - вычисляем его}
def := FindVar(s1, stvar); l := 1;
if def then def := GetExpression(stvar, l, m1);
end;
end;
if def then begin
{Если получено значение - сохраняем его }
GetMnog := true;
x := m1;
end else GetMnog := false;
end;
{
Функция чтения терма в текущей строке st начиная с позиции k
При успешной интерпретации терма функция возвращает true
и в переменную x помещает значение терма
}
function GetTerm(var st : string; var k, x : integer) : boolean;
var
def : boolean;
m1, m2, k1 : integer;
op : string;
begin
def := GetMnog(st, k, m1); {Чтение первого множителя }
k1 := k;
op := GetWord(st, k);
if op = '*' then begin
{Если стоит умножение - то читаем второй множитель
31
50