Advertisement
AIwinter

🦴🦴 теория систем 1 лаба

Nov 24th, 2022
685
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.85 KB | None | 0 0
  1. Uses Crt;
  2.  
  3. type
  4.   Actors = Record
  5.     ID_A: word;
  6.     Name_A: string[18];
  7.     Fam_A: string[18];
  8.     DofB: string[8];
  9.     Roles: byte; {1 - главная, 2 - второстепенная, 3 - массовка}
  10.     Gender: boolean;
  11.   end;
  12.  
  13.   Films = Record
  14.     ID_F: word;
  15.     ID_A: word;
  16.     Name_F: string[20];
  17.     Duration: string[6];
  18.     Date: string[8];
  19.   end;
  20.  
  21. var
  22.   FV1: file of Actors;
  23.   ActorsBP: Actors;
  24.  
  25.   FV2: file of Films;
  26.   FilmsBP: Films;
  27.  
  28.   temp: longword;
  29. const
  30.   ActorsName = 'Actors.uwu';
  31.   FilmsName = 'Films.uwu';
  32.   Yes = 'YyУу';
  33.   No = 'NnНн';
  34.  
  35. procedure Open;
  36. begin
  37.   Assign(FV1, ActorsName);
  38.   Assign(FV2, FilmsName);
  39.  
  40.   if not FileExists(ActorsName) then ReWrite(FV1)
  41.   else ReSet(FV1);
  42.  
  43.   if not FileExists(FilmsName) then ReWrite(FV2)
  44.   else ReSet(FV2);
  45. end;
  46.  
  47. procedure Close;
  48. begin
  49.   Close(FV1);
  50.   Close(FV2);
  51. end;
  52.  
  53. procedure Add;
  54. begin
  55.   var
  56.   input: string;
  57.   var role: integer;
  58. begin
  59.   if (FileSize(FV1) > 0) then
  60.  
  61.   begin
  62.     Seek(FV1, FileSize(FV1) - 1);
  63.     Read(FV1, ActorsBP);
  64.     ActorsBP.ID_A := ActorsBP.ID_A + 1;
  65.   end
  66.   else ActorsBP.ID_A := 0;
  67.  
  68.   repeat
  69.     Write('Имя актера: ');
  70.     Readln(input);
  71.     until (input.Length <= 18) and (input <> ''.ToString());
  72.     ActorsBP.Name_A := input;
  73.    
  74.   repeat
  75.     Write('Фамилия актера: ');
  76.     Readln(input);
  77.     until (input.Length <= 18) and (input <> ''.ToString());
  78.     ActorsBP.Fam_A := input;
  79.    
  80.   repeat
  81.     Write('Дата рождения: ');
  82.     Readln(input);
  83.     input.Replace('.', '')
  84.     until (input.Length = 8) and longword.TryParse(input, temp);
  85.     ActorsBP.DofB := input;
  86.    
  87.    repeat
  88.      Write('Роль: (1 - главная; 2 - второстепенная; 3 - массовка)');
  89.      Readln(input);
  90.      TryStrToInt(input, role);
  91.      until (input.Length = 1) and (input <> ''.ToString()) and (role > 0) and (role < 4); {нужно сравнить, равен ли инпут 1/2/3}
  92.      ActorsBP.Roles := role;
  93.      
  94.    repeat
  95.      Write('Пол мужской?: (Y of N)');
  96.      Readln(input);
  97.      until (Yes.Contains(input)) or (No.Contains(input));
  98.      ActorsBP.Gender := Yes.Contains(input) ? true : false;
  99.      
  100.      
  101.      end;
  102.     Write(FV1, ActorsBP);
  103. end;
  104.  
  105.  
  106.  
  107. procedure List;
  108. begin
  109.   {из файла с самой 1 поз вытаскивать записи в буфер переменную и потом выводить для каждой записи значение её полей в консоль}
  110.   Seek(FV1, 0);
  111.   while not Eof(FV1) do begin
  112.     Read(FV1, ActorsBP);
  113.     var Role : string;
  114.     var Gender : string;
  115.    
  116.     {if ActorsBP.Roles = 1 then
  117.       Role := 'главная';
  118.     else if ActorsBP.Roles = 2 then
  119.       Role := 'второстепенная';
  120.     else if ActorsBP.Roles = 3 then
  121.       Role := 'массовка';}
  122.    
  123.     if ActorsBP.Gender = True then
  124.       Gender := 'мужской'
  125.     else
  126.       Gender := 'женский';
  127.    
  128.     case ActorsBP.Roles of
  129.       1 : Role := 'главная';
  130.       2 : Role :='второстепенная';
  131.       3 : Role :='массовка';
  132.       end;
  133.     WriteLn(' дата рождения: ' + ActorsBP.DofB + '  ' + ActorsBP.Fam_A + '  ' + Gender + '  ' + ActorsBP.ID_A + '  ' + ActorsBP.Name_A + '  ' + Role);
  134.   end;
  135. end;
  136.  
  137. procedure Menu;
  138. var
  139.   input: string;
  140. begin
  141.   while input<>'1' do
  142.   begin
  143.     Write('Введите "help" для списка команд. Введите команду: ');
  144.     ReadLn(input);
  145.     case input of
  146.       'help':
  147.         WriteLn('1 - выйти' + NewLine + '2 - добавить данные в таблицу'
  148.                     + NewLine + '3 - вывести таблицу Актеров');
  149.       '2': Add;
  150.       '3': List;
  151.     end;
  152.   end;
  153.  
  154. end;
  155.  
  156. begin
  157.   Open;
  158.   Menu;
  159.   Close;
  160. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement