Advertisement
AIwinter

🦴🦴 тСория систСм 1 Π»Π°Π±Π°

Dec 5th, 2022
1,324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.04 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.   DelID: array of word;
  30.  
  31. const
  32.   ActorsName = 'Actors.uwu';
  33.   FilmsName = 'Films.uwu';
  34.   BackupActors = 'BackupA.uwu';
  35.   Yes = 'YyΠ£Ρƒ';
  36.   No = 'NnНн';
  37.  
  38. procedure Open;
  39. begin
  40.   Assign(FV1, ActorsName);
  41.   Assign(FV2, FilmsName);
  42.  
  43.   if not FileExists(ActorsName) then ReWrite(FV1)
  44.   else ReSet(FV1);
  45.  
  46.   if not FileExists(FilmsName) then ReWrite(FV2)
  47.   else ReSet(FV2);
  48. end;
  49.  
  50. procedure Close;
  51. begin
  52.   Close(FV1);
  53.   Close(FV2);
  54. end;
  55.  
  56. procedure AddActors;
  57. var
  58.   input: string;
  59.   role: integer;
  60. begin
  61.   begin
  62.     if (FileSize(FV1) > 0) then
  63.    
  64.     begin
  65.       Seek(FV1, FileSize(FV1) - 1);
  66.       Read(FV1, ActorsBP);
  67.       ActorsBP.ID_A := ActorsBP.ID_A + 1;
  68.     end
  69.     else ActorsBP.ID_A := 0;
  70.    
  71.     repeat
  72.       Write('Имя Π°ΠΊΡ‚Π΅Ρ€Π°: ');
  73.       Readln(input);
  74.     until (input.Length <= 18) and (input <> ''.ToString());
  75.     ActorsBP.Name_A := input;
  76.    
  77.     repeat
  78.       Write('Ѐамилия Π°ΠΊΡ‚Π΅Ρ€Π°: ');
  79.       Readln(input);
  80.     until (input.Length <= 18) and (input <> ''.ToString());
  81.     ActorsBP.Fam_A := input;
  82.    
  83.     repeat
  84.       Write('Π”Π°Ρ‚Π° роТдСния: ');
  85.       Readln(input);
  86.       input.Replace('.', '')
  87.     until (input.Length = 8) and longword.TryParse(input, temp);
  88.     ActorsBP.DofB := input;
  89.    
  90.     repeat
  91.       Write('Роль (1 - главная; 2 - второстСпСнная; 3 - массовка) : ');
  92.       Readln(input);
  93.       TryStrToInt(input, role);
  94.     until (input.Length = 1) and (input <> ''.ToString()) and (role > 0) and (role < 4); {Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ, Ρ€Π°Π²Π΅Π½ Π»ΠΈ ΠΈΠ½ΠΏΡƒΡ‚ 1/2/3}
  95.     ActorsBP.Roles := role;
  96.    
  97.     repeat
  98.       Write('Пол муТской? (Y of N) : ');
  99.       Readln(input);
  100.     until (Yes.Contains(input)) or (No.Contains(input));
  101.     ActorsBP.Gender := Yes.Contains(input) ? true : false;
  102.    
  103.    
  104.   end;
  105.   Write(FV1, ActorsBP);
  106. end;
  107.  
  108. procedure AddFilms;
  109. begin
  110.   var input: string;
  111.   begin
  112.     if FileSize(FV2) > 0 then
  113.     begin
  114.       Seek(FV2, FileSize(FV2) - 1);
  115.       Read(FV2, FilmsBP);
  116.       FilmsBP.ID_F := FilmsBP.ID_F + 1;
  117.     end
  118.     else FilmsBP.ID_F := 0;
  119.    
  120.     repeat
  121.       Write('НазваниС Ρ„ΠΈΠ»ΡŒΠΌΠ°: ');
  122.       Readln(input);
  123.     until (input.Length <= 20) and (input <> ''.ToString());
  124.     FilmsBP.Name_F := input;
  125.    
  126.     repeat
  127.       Write('ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ');
  128.       Readln(input);
  129.       input.Replace(':', '')
  130.     until (input.Length = 6) and longword.TryParse(input, temp);
  131.     FilmsBP.Duration := input;
  132.    
  133.     repeat
  134.       Write('Π”Π°Ρ‚Π° Π²Ρ‹Ρ…ΠΎΠ΄Π°: ');
  135.       Readln(input);
  136.       input.Replace('.', '')
  137.     until (input.Length = 8) and longword.TryParse(input, temp);
  138.     FilmsBP.Date := input;
  139.   end;
  140.   Write(FV2, FilmsBP);
  141. end;
  142.  
  143. procedure ListActors;
  144. begin
  145.   Seek(FV1, 0);
  146.   while not Eof(FV1) do
  147.   begin
  148.     Read(FV1, ActorsBP);
  149.     var Role: string;
  150.     var Gender: string;
  151.    
  152.     if ActorsBP.Gender = True then
  153.       Gender := 'муТской'
  154.     else
  155.       Gender := 'ТСнский';
  156.    
  157.     case ActorsBP.Roles of
  158.       1: Role := 'главная';
  159.       2: Role := 'второстСпСнная';
  160.       3: Role := 'массовка';
  161.     end;
  162.     WriteLn(' ID: ' + ActorsBP.ID_A + '  |   Имя: ' + ActorsBP.Name_A + '  |  Π€Π°ΠΌΠΈΠ»ΠΈΡ: ' + ActorsBP.Fam_A + '  |  Π”Π°Ρ‚Π° роТдСния: ' + ActorsBP.DofB + '  |  ΠŸΠΎΠ»: ' + Gender + '  |  Π ΠΎΠ»ΡŒ: ' + Role);
  163.   end;
  164. end;
  165.  
  166. procedure ListFilms;
  167. begin
  168.   Seek(FV2, 0);
  169.   while not Eof(FV2) do
  170.   begin
  171.     Read(FV2, FilmsBP);
  172.     WriteLn(' ID: ' + FilmsBP.ID_F + '  |   НазваниС: ' + FilmsBP.Name_F + '  |   ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ' + FilmsBP.Duration + '  |   Π”Π°Ρ‚Π° Π²Ρ‹Ρ…ΠΎΠ΄Π°: ' + FilmsBP.Date);
  173.   end;
  174. end;
  175.  
  176. function SearchByID(ID: word; var FoundActor: Actors): boolean;
  177. begin
  178.   result := False;
  179.   Seek(FV1, 0); //ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° 0 запись
  180.   while (not Eof(FV1)) and (not result) do //ΠΏΠΎΠΊΠ° это Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π΅ Ρ‚Ρ€Ρƒ
  181.   begin
  182.     Read(FV1, ActorsBP); //Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ 1 записи ΠΈΠ· fv1 Π² акторсбп
  183.     if ID = ActorsBP.ID_A then //Ссли Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ id имССтся Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ записи
  184.     begin
  185.       FoundActor := ActorsBP; //присваиваСм Ρ„Π° эту запись
  186.       result := True; {Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция, T or F} //ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ‚Ρ€Ρƒ
  187.     end;
  188.   end;
  189. end;
  190.  
  191. procedure Delete;{ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΠ΅Ρ‚ записи}
  192. var
  193.   input: string;
  194.   ID: word;
  195.  
  196. begin
  197.   repeat
  198.     Write('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ID записи, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ: ');
  199.     ReadLn(input);
  200.   until (word.TryParse(input, ID)); {ΠΈΠ½ΠΏΡƒΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚. Π² word ΠΈ присваиваСм это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ID // true or false Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² until}
  201.   if SearchByID(ID, ActorsBP) then
  202.   begin
  203.      SetLength(DelID, DelID.Length +1); //ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρƒ массива
  204.      DelID[DelID.Length - 1] := ID;
  205.      WriteLn('Π—Π°ΠΏΠΈΡΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° для удалСния ');
  206.      foreach var i in DelID do
  207.      begin
  208.       WriteLn(i.ToString());
  209.      end;
  210.   end
  211.   else
  212.     WriteLn('НС нашСлся Π°ΠΊΡ‚Π΅Ρ€ ');
  213. end;
  214.  
  215. procedure Zap;{удаляСт записи}
  216. var FV3: file of Actors;
  217. begin
  218.   Assign(FV3, BackupActors);
  219.   ReWrite(FV3);
  220.   Seek(FV1,0);
  221.   while not Eof(FV1) do
  222.   begin
  223.     Read(FV1, ActorsBP);
  224.     if (DelID <> nil) and (not DelID.Contains(ActorsBP.ID_A)) then
  225.       Write(FV3, ActorsBP);
  226.   end;
  227.   Close(FV1);
  228.   Erase(FV1);
  229.   Close(FV3);
  230.   Rename(FV3, ActorsName);
  231.   ReSet(FV1);
  232.   DelID := nil; //new word[1];
  233. end;
  234.  
  235. procedure Menu;
  236. var
  237.   input: string;
  238. begin
  239.   while input <> '1' do
  240.   begin
  241.     Write('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ "help" для списка ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ');
  242.     ReadLn(input);
  243.     case input of
  244.       'help':
  245.         WriteLn('1 - Π²Ρ‹ΠΉΡ‚ΠΈ' + NewLine + '2 - Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ²'
  246.                     + NewLine + '3 - вывСсти Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ²' + NewLine + '4 - Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²' + NewLine + '5 - вывСсти Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²' + NewLine + '6 - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ1' + NewLine + '7 - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ2');
  247.       '2': AddActors;
  248.       '3': ListActors;
  249.       '4': AddFilms;
  250.       '5': ListFilms;
  251.       '6': Delete;
  252.       '7': Zap;
  253.       //'8': SearchByName (поиск ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ)
  254.       //'9': Edit (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅)
  255.     end;
  256.   end;
  257.  
  258. end;
  259.  
  260. begin
  261.   Open;
  262.   Menu;
  263.   Close;
  264. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement