program base; {Алантьев группа 4941 1 курс}{Курсовая работа на языке Pascal}
Uses Crt;
Type
  tipmoto=record
    F:string[30];
    i:string[30];
    o:string[30];
    g:string[30];
    d:string[30];
    c:string[30];
    m:string[30];
    co:string[30];
    k:string[30];
    go:string[30];
  end;
var
  h:char;
  F0,f2: file of tipmoto;
  FF:tipmoto;
  nom:integer;
  mmm,mm:string;
  keysearch:string[30];
procedure poisk;
begin
nom:=0;
assign(f0,mm);
reset(f0);
clrscr;
gotoxy(30,2);writeln('Поиск по фамилии');
writeln;
gotoxy(30,4);writeln('Введите фамилию: ');
readln(keysearch);
while not eof(f0) do
begin
FF.F:='';
FF.i:='';
FF.o:='';
FF.g:='';
FF.d:='';
FF.c:='';
FF.m:='';
FF.co:='';
FF.k:='';
FF.go:='';
read(f0,FF);
if FF.f=keysearch then
begin
write('',FF.f);
write('',FF.i);
write('',FF.o);
write('',FF.g);
write('',FF.d);
write('',FF.c);
write('',FF.m);
write('',FF.co);
write('',FF.k);
write('',FF.go);
nom:=nom+1;
end;
end;
close(f0);
writeln;
writeln;
gotoxy(30,5);writeln('Поиск завершен, найдено записей',nom);
writeln;
{write('Нажмите любую клавишу');
readkey;}
clrscr;
End;

Procedure dobav;
Begin
  clrscr;
  reset(f0);
  Seek(F0,filesize(f0));textcolor(5);
  gotoxy(30,2);Writeln('номер машины=',filesize(f0)+1);
  textcolor(7);
   gotoxy(30,4);Write('1-     фамилия=');readln(Ff.f);
   gotoxy(30,5);Write('2-         имя=');readln(Ff.i);
   gotoxy(30,6);Write('3-    отчество=');readln(Ff.o);
   gotoxy(30,7);Write('4-год рождения=');readln(Ff.g);
   gotoxy(30,8);Write('5-        цена=');readln(Ff.c);
   gotoxy(30,9);Write('6-       марка=');readln(Ff.m);
  gotoxy(30,10);Write('7-        цвет=');readln(Ff.co);
  gotoxy(30,11);Write('8-       класс=');readln(Ff.k);
  gotoxy(30,12);Write('9-год  выпуска=');readln(Ff.go);

  Write(F0,ff);
  Close(F0);
  clrscr;
End;
Procedure redaktor;
Begin
  repeat
    clrscr;
    reset(f0);
    seek(f0,nom);
    read(f0,ff);
    textcolor(3);
    gotoxy(30,4);Write('1-    фамилия=');Writeln(Ff.f);
   gotoxy(30,5);Write('2-         имя=');Writeln(Ff.i);
   gotoxy(30,6);Write('3-    отчество=');Writeln(Ff.o);
   gotoxy(30,7);Write('4-год рождения=');Writeln(Ff.g);
   gotoxy(30,8);Write('5-        цена=');Writeln(Ff.c);
   gotoxy(30,9);Write('6-       марка=');Writeln(Ff.m);
  gotoxy(30,10);Write('7-        цвет=');Writeln(Ff.co);
  gotoxy(30,11);Write('8-       класс=');Writeln(Ff.k);
  gotoxy(30,12);Write('9-год  выпуска=');Writeln(Ff.go);

   textcolor(11);
    gotoxy(30,15);Write('ESC-выход');
    gotoxy(30,1);Write('Номер записи=',nom+1);

    gotoxy(20,14);write('Какое поле вы хотите изменить');
    h:=readkey;
    case h of
      '1':begin gotoxy(45,4);Write('1-      фамилия=');Readln(Ff.f);end;
      '2':begin gotoxy(45,5);Write('2-          имя=');Readln(Ff.i);end;
      '3':begin gotoxy(45,6);Write('3-     отчество=');Readln(Ff.o);end;
      '4':begin gotoxy(45,7);Write('4- год рождения=');Readln(Ff.g);end;
      '5':begin gotoxy(45,8);Write('5-         цена=');Readln(Ff.c);end;
      '6':begin gotoxy(45,9);Write('6-        марка=');Readln(Ff.m);end;
      '7':begin gotoxy(45,10);Write('7-        цвет=');Readln(Ff.co);end;
      '8':begin gotoxy(45,11);Write('8-       класс=');Readln(Ff.k);end;
      '9':begin gotoxy(45,12);Write('9- год выпуска=');Readln(Ff.go);end;
      #27:  exit;
    end;
    clrscr;
    seek(f0,nom);
    write(f0,ff);
  until h=#27;
  close(f0);
  clrscr;
End;
Procedure ydal;
Begin
  clrscr;
  assign(f2,mmm);
  Reset(F0);
  rewrite(f2);
  Seek(F0, 0);
  while not eof(f0) do
    begin
      read(f0,ff);
      if filepos(f0)<>nom+1 then write(f2,ff);
    end;
  Close(F0);
  Close(f2);
  erase(f0);
  rename(f2,mm);
End;

BEGIN
    mm:='c:\ydalitt';
    mmm:='c:\mashin';
    assign(f0,mm);
    repeat
      clrscr;
      {$I-} reset(f0);{$I+}
      if IOresult<>0 then rewrite(f0);
      close(f0);
      textcolor(13);
      writeln('Меню:');
      writeln('1-показать запись');
      writeln('2-удалить запись');
      writeln('3-вставить запись');
      writeln('4-Поиск записей');
      writeln('5-выход');
      write('Выберите: ');
      h:=readkey;
      case h of
        '1': begin
               writeln;
               write('какой номер записи=');
               read(nom); nom:=nom-1;
               redaktor;
        end;
        '3': begin dobav;end;
        '2': begin
               writeln;
               write('какой номер записи=');
               read(nom); nom:=nom-1;
               ydal;
        end;
        '4': begin poisk;end;
      end;
    until h='5';
END.