program kursovaya;
uses crt;
 type
  train=record
        naz:string[20];
        nom:string;
        tim:string;
        end;
  var
  i:byte;
  trains:file of train;
  rab:train;
  flag:boolean;
  reis:string[30];
  key:0..4;
  punn:string;
 procedure vvod;
  begin
   clrscr;
    with rab do
       begin
        write('Название пункта:');
         readln(naz);
         if  nazv='9999' then exit;
        write('Номер рейса:');
         readln(nom);
        write('Время отправки');
         readln(tim);
                end;
   end;
 procedure vivod;
  begin
   with rab do
    begin
     reis:=naz+' '+nom+' '+tim;
     writeln (naz:10,nom:15,tim:16);
    end;
  end;
 procedure form;    
  begin
   rewrite(trains);
   i:=1;
   vvod;
     while rab.nazv<>'9999' do
      begin
       write (trains,rab);
       i:=i+1;
       vvod
      end;
 close(trains)
   end;
 procedure print;    {Вывод}
  begin
   reset(trains);
   writeln('-');
   writeln('I  Пункт   I     Номер    I   Время  I');
   writeln('-');
   while not eof (trains) do
    begin
     read(trains,rab);
     vivod;
    end;
   writeln('-');
      close(trains);
  end;
   procedure poisk; {поиск}
var count: integer;
  begin
  write('Введите время ');readln(punn);
  reset(trains);
  count := 0;
  while not eof(trains) do begin
    read(trains, rab);
    writeln('-');
    writeln(' Пункт    I      Номер     I    Время   ');
    writeln('-');
    if punn=rab.time then begin
      inc(count);
      writeln('      ',rab.naz, '       ',rab.nom,'           ', punn )
    end
  end;
  if count = 0 then writeln ('Таких поездов нет');
    writeln('-');
    close(trains)
  end;
       begin
     flag:=false;
     assign(trains,'Поезд');
    repeat
     clrscr;
      writeln('Выберите пункт меню:');
      writeln;
      writeln('1: сформировать массив');
      writeln('2: вывод массива');
      writeln('3: поиск записи');
      writeln('0: выход');
       readln (key);
        case key of
          1:form;
          2:print;
          3:poisk;
          0:flag:=true;
    end;
  until flag;
 end.