Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Реализация функции просмотра БДСодержание книги Поиск на нашем сайте
Постановка задачи Просмотр на экране содержимого файла типа tfileinfstud. Имя физического файла для просмотра задает пользователь. Метод решения При выводе информации на экран будем использовать алгоритм вывода большого количества значений. 1) получить от пользователя имя физического файла, который будем просматривать readln(namebd); 2) если физический файл с таким именем отсутствует, то сообщить об этом пользователю и прекратить выполнение программы 3) связать логический и физический файлы assign(fbd,namebd); 4) открыть файл в режиме работы с существующим файлом (в данном методе будем только последовательно читать информацию из файла) reset(fbd); 5) очистить экран clrscr; 6) вывести шапку таблицы 7) в счетчик заполненных строк экрана занести 1 k:= 1; 8) пока не достигли признака конца в файле fbd повторять (not eof(fbd) ) a) чтение очередного компонента файла read(fbd,r); b) вывод на экран компонентов записи r с информацией об учащемся; c) увеличение счетчика выведенных строк на 1 k:=k+ 1; d) 9) закрыть файл для работы close(fbd). Предложенный метод решения позволяет выводить на экран содержимое любого файла типа tfileinfstud. Причем файл может быть прямого доступа, так и последовательным, потому что в методе решения не используются ни какие особенности файлов прямого доступа. Информационная модель Таблица 24.6. Информационная модель
Программная модель {программа просмотра файлов с компонентами типа tinfstud (файл z2.pas)} program z2; uses CRT; {$I FILE0.PAS} var k:integer; begin writeln('Введите имя просматриваемого файла '); readln(namebd); if not fs(namebd) then begin writeln('ОШИБКА!!! Файл с именем ',namebd,' не существует'); halt end; assign(fbd,namebd); reset(fbd); clrscr; writeln('ФАМИЛИЯ ':20,' ДАТА РОЖД.',' ГП ',' БАЛЛ'); k:=1; while not eof(fbd) do begin read(fbd,r); with r do begin fam:=copy(fam+' ',1,20); writeln(fam:20, dr.d:3,'.',dr.m:2,'.', dr.g:4, gp:5, sb:5:2) k:=k+1; if k=23 then begin writeln('Для продолжения нажмите Enter'); readln; clrscr; writeln('ФАМИЛИЯ ':20,' ДАТА РОЖД.', ' ГП ',' БАЛЛ'); k:=1; end end end; close(fbd); writeln('Информация исчерпана!!!') end. Реализация функции сортировки БД Постановка задачи Сортировка файла прямого доступа с информацией об учащихся. Фамилии упорядочиваются по алфавиту, если фамилии совпадают, то информация об однофамильцах упорядочивается по возрастанию дат рождения. Имя сортируемого физического файла определяет пользователь. Компоненты файла представляют собой записи типа tinfstud. Метод решения Так как файл прямого доступа в полной мере является аналогом массива, то для сортировки можно использовать любой метод сортировки массива. Выбираем метод сортировки выбором с перестановкой: 1) получить от пользователя имя физического файла, который будем сортировать readln(namebd); 2) если физический файл с таким именем отсутствует, то сообщить об этом пользователю и прекратить выполнение программы 3) связать логический и физический файлы assign(fbd,namebd); 4) формируем все компоненты файла с начального по предпоследний. В файлах прямого доступа начальный компонент имеет номер 0. Количество существующих компонентов файла прямого доступа определяется с помощью функции filesize(<илф>), так как нумерация с 0, то номер предпоследнего компонента файла на 2 меньше, чем количество компонентов 5) для каждого формируемого компонента i: a) выбираем экстремальный компонент, начиная с формируемого компонента по последний элемент файла и определяем его местоположение; b) осуществляем перестановку значений с формируемого места и места экстремального значения; 6) закрываем файл для работы close(fbd). a) Выбор экстремального компонента осуществляем следующим образом: 1) читаем из файла очередной компонент (он находится на формируемом месте i) и принимаем его значение за экстремальное read(fbd,extr); 2) фиксируем место экстремального значения nm:=i; 3) перебираем все остальные компоненты файла. Пока не достигли конца файла not eof(fbd) повторяем - чтение очередного компонента файла в переменную r read(fbd,r); - если (r.fam<extr.fam) (r.fam=extr.fam)&(r.dr<extr.dr) b) Перестановка значений Перед выполнением этой подзадачи сложилась ситуация показанная на рис.24.3 Рис. 24.3. – Результат выбора 1 шаг перестановки – на место экстремального значения помещается значение с формируемого места: - позиционирование на компонент i seek(fbd,i); -.чтение из файла в промежуточную переменную r read(fbd,r); - позиционирование на компонент nm seek(fbd,nm); - запись значения переменной r в файл write(fbd,r); 2 шаг перестановки – на формируемое место записывается экстремальное значение - позиционирование на компонент i seek(fbd,i); - запись значения переменной extr в файл write(fbd,extr); Обратите внимание, что после выполнения действий по перестановке, буфер связан с i+1 компонентом, то есть для выполнения п.5. буфер файла связан с необходимым компонентом. Информационная модель Таблица 24.7. Информационная модель
Программная модель {программа сортировки (файл Z3.PAS)} program z3; {$I FILE0.PAS} var i,nm:longint; extr:tinfstud; begin writeln('Введите имя файла с информацией о студентах'); readln(namebd); if not fs(namebd) then begin writeln('ОШИБКА!!! Файл с именем ',namebd,' не существует'); halt end; assign(fbd,namebd); reset(fbd); for i:=0 to filesize(fbd)-2 do begin read(fbd,extr); nm:=i; while not eof(fbd) do begin read(fbd,r); with r do if (fam<extr.fam)or (fam=extr.fam)and((dr.g<extr.dr.g)or (dr.g=extr.dr.g)and((dr.m<extr.dr.m)or (dr.m=extr.dr.m)and(dr.d<extr.dr.d))) then begin extr:=r; nm:=filepos(fbd)-1 end end; seek(fbd,i); read(fbd,r); seek(fbd,nm); write(fbd,r); seek(fbd,i); write(fbd,extr) end; close(fbd); end.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-06-26; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.128.171 (0.007 с.) |