ms_shnits

Работа с типизированными файлами

Jun 26th, 2020
1,146
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program q220742972;
  2.  
  3. {$I-}
  4.  
  5. type TBook = record
  6.     zar     : integer;
  7.     name    : string[15];
  8.     ceh     : string[15];
  9.     deleted : boolean;
  10. end;
  11.  
  12. var
  13.     temp : TBook;
  14.     ved  : file of TBook;
  15.     yn   : string;
  16.     i    : integer;
  17.  
  18. begin
  19.  
  20. assign(ved, 'lib.txt');
  21.  
  22. while True do begin
  23.  
  24.     writeln;
  25.     writeln('a - создать/очистить ведомость');
  26.     writeln('b - добавить работника');
  27.     writeln('c - распечатать ведомость');
  28.     writeln('d - удалить работника');
  29.     writeln('e - посчитать сумму выплат по цеху');
  30.     writeln('x - выход');
  31.  
  32.     writeln;
  33.     write('ваш выбор: ');
  34.     readln(yn);
  35.     yn := lowercase(yn);
  36.  
  37.     if yn = 'a' then begin
  38.         rewrite(ved);
  39.         if IOresult <> 0 then
  40.             writeln('!!! ошибка создания файла ведомости.')
  41.         else begin
  42.             close(ved);
  43.             writeln('ведомость создана/очищена.');
  44.             end;
  45.         end;
  46.  
  47.     if yn = 'b' then begin
  48.         temp.deleted := false;
  49.         writeln('Введите сведения о работнике:');
  50.         write  ('Фамилия: ');                  readln(temp.name);
  51.         write  ('Размер зарплаты за месяц: '); readln(temp.zar);
  52.         write  ('Цех: ');                      readln(temp.ceh);
  53.  
  54.         reset(ved);
  55.         if IOresult <> 0 then begin
  56.             writeln('!!! ошибка открытия файла ведомости. ведомость не создана?');
  57.             continue;
  58.             end;
  59.  
  60.         seek(ved, filesize(ved));
  61.         write(ved, temp);
  62.  
  63.         close(ved);
  64.         writeln;
  65.         end;
  66.  
  67.     if yn = 'c' then begin
  68.         reset(ved);
  69.         if IOresult <> 0 then begin
  70.             writeln('!!! ошибка открытия файла ведомости. ведомость не создана?');
  71.             continue;
  72.             end;
  73.  
  74.         writeln('Работники завода:');
  75.  
  76.         writeln('id':4, 'Фамилия':10, 'Размер зарплаты за месяц':25, 'Цех':10);
  77.         i := 0;
  78.         while not(eof(ved))do begin
  79.             read(ved,temp);
  80.             if not(temp.deleted) then
  81.                 writeln(i:4, temp.name:10, temp.zar:25, temp.ceh:10);
  82.             inc(i);
  83.             end;
  84.         writeln;
  85.  
  86.         close(ved);
  87.         end;
  88.  
  89.     if yn = 'd' then begin
  90.         reset(ved);
  91.         if IOresult <> 0 then begin
  92.             writeln('!!! ошибка открытия файла ведомости. ведомость не создана?');
  93.             continue;
  94.             end;
  95.  
  96.         write('введите id удаляемого работника:');
  97.         read(i);
  98.  
  99.         seek(ved, i);
  100.         read(ved, temp);
  101.         temp.deleted := true;
  102.         seek(ved, i);
  103.         write(ved, temp);
  104.  
  105.         close(ved);
  106.         end;
  107.  
  108.     if yn = 'x' then break;
  109.  
  110. end;
  111.  
  112. end.
RAW Paste Data