Реализация функции выборки из БД




Постановка задачи

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

Метод решения

1) получить от пользователя имя физического файла с БД readln(namebd);

2) если физический файл с таким именем отсутствует, то сообщить об этом пользователю и прекратить выполнение программы

3) получить от пользователя имя физического файла (namev) для хранения результатов выборки;

4) если файл с таким именем существует, то сообщить об этом пользователю и прекратить выполнение программы

5) получить от пользователя граничный средний балл (gsb)

6) связать логический и физический файлы с БД assign(fbd,namebd);

7) открыть файл прямого доступа с БД в режиме работы с существующим reset(fbd);

8) связать логический и физический файлы для результатов выборки assign(fv,namev);

9) открыть файл прямого доступа для результатов выборки в режиме создания нового файла
rewrite(fv);

10) перебрать все компоненты файла с БД. Пока не достигли конца файла (not eof(fbd))

a) чтение очередного компонента БД read(fbd,r);

b) если r.sb gsb запись r в файл выборки write(fv,r);

11) закрыть файл с БД close(fbd);

12) закрыть файл с результатами выборки close(fv).

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

Информационная модель

Таблица. Информационная модель

Статус Назначение Имя Тип
Вход имя физического файла с БД namebd string
Вход имя физического файла с результатами выборки namev string
Вход граничный средний балл gsb real
Пром имя логического файла с БД fbd tfileinfstud
Пром имя логического файла с результатами выборки fv tfileinfstud
Пром информация об учащемся r tinfstud

Программная модель

{программа выборки из файла по среднему баллу (файл Z4.PAS)}

program z4;

{$I FILE0.PAS}

var namev:string;{имя физического файла с выборкой}

fv:tfileinfstud;{илф выборки}

gsb:real;

begin

writeln('Введите имя файла с информацией о студентах');

readln(namebd);

if not fs(namebd) then

begin

writeln('ОШИБКА!!! Файл с именем ',namebd,' не существует');

halt

end;

writeln('Введите имя файла для выборки');

readln(namev);

if fs(namev) then

begin

writeln('ОШИБКА!!! Файл с именем ',namev,' существует');

halt

end;

writeln('Граничный средний балл?');

readln(gsb);

assign(fbd,namebd);

reset(fbd);

assign(fv,namev);

rewrite(fv);

while not eof(fbd) do

begin

read(fbd,r);

if r.sb>=gsb then

write(fv,r);

end;

close(fbd);

close(fv)

end.

Текст файла с общими описаниями

{файл с общими описаниями FILE0.PAS}

function fs (name:string):boolean;

var f:file;

begin

assign(f,name);

{$I-}

reset(f);

{$I+}

if ioresult<>0 then

fs:=false

else

begin

fs:=true;

close(f)

end

end;

type tdata =record

d:1..31;

m:1..12;

g:word

end;

tinfstud =record

fam:string[20];

dr:tdata;

gp:word;

sb:real

end;

tfileinfstud =file of tinfstud;

var fbd:tfileinfstud;

namebd:string;

r:tinfstud;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: