Записи и типизированные файлы. Описание структуры с именем Price - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Описать структуру с именем PRICE, содержащую следующие поля: - название товара; - название магазина, в котором продается товар; - стоимость товара в грн. Написать программу, выполняющую следующие действия с помощью процедур или функций: - ввод с клавиатуры данных в файл, состоящий из элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям товаров; - чтение данных из этого файла; - вывод на экран информации о товаре, название которого введено с кла- виатуры; - если таких товаров нет, выдать на дисплей соответствующее сообщение

Решение задачи: «Записи и типизированные файлы. Описание структуры с именем Price»

textual
Листинг программы
uses crt;
type price=record
         name:string[20];
         shop:string[20];
         cost:real;
end;
var
  f:file of price;
  t,t1,t2:price;
  i,j,k:integer;
  ok:boolean;
procedure waitspace;
begin
  writeln('Press Space to see the next screen...');
  repeat until readkey=#32;
end;
begin
  assign(f,'goods.dat');
  {$i-}
  reset(f);
  {$i+}
  if IoResult<>0 then rewrite(f);
  repeat
    clrscr;
    writeln('1. Add data');
    writeln('2. Read data');
    writeln('3. Search goods for name');
    writeln('0. Exit');
    k:=ord(ReadKey)-48;
    case k of
     1:begin
         clrscr;
         write('Caption:');readln(t.name);
         write('Shop:');readln(t.shop);
         write('Cost:');readln(t.cost);
         seek(f,filesize(f));
         write(f,t);close(f);reset(f);
         seek(f,0);
         for i:=0 to filesize(f)-2 do begin
           seek(f,i);
           read(f,t);
           for j:=i to filesize(f)-1 do begin
             seek(f,j);
             read(f,t1);
             if t1.name>t.name then begin t2:=t1;t1:=t;t:=t2;end;
             seek(f,j);
             write(f,t1);
             seek(f,i);
             write(f,t);
           end;
         end;
      end;
     2:begin
         clrscr;
           i:=1; seek(f,0);
         while not eof(f) do begin
           read(f,t);
           writeln(t.name,'  ',t.shop,'  ',t.cost:0:2);
           i:=i+1;
           if i=20 then begin
             waitspace;
             clrscr;
             i:=1;
           end;
         end;
         waitspace;
       end;
      3:begin
          clrscr;
          write('Enter goods caption:');readln(t1.name);
          seek(f,0);ok:=false;
          while not eof (f) do begin
            read(f,t);
            if t.name=t1.name then begin
               writeln(t.name,'  ',t.shop,'  ',t.cost:0:2);
               ok:=true;
            end;
          end;
            if not ok then writeln('Nothing find');
          waitspace;
        end;
    end;
  until k=0;
end.

Объяснение кода листинга программы

  1. В начале программы объявляются переменные и создается файл для записи и чтения данных о товарах.
  2. Затем идет цикл, в котором пользователю предлагается ввести данные о товаре (название, магазин, стоимость), которые затем записываются в файл.
  3. После этого происходит поиск товара в файле. Если товар найден, то его данные выводятся на экран, а затем происходит повторный поиск. Если товар не найден, выводится сообщение Nothing find.
  4. После завершения поиска выводится сообщение Exit, после чего происходит выход из программы.
  5. В конце программы выводится сообщение Press Space to see the next screen..., после чего начинается цикл ожидания нажатия пробела.

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы