Advertisement
Guest User

Katya project v0.2

a guest
Jan 16th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.57 KB | None | 0 0
  1. program n_1;
  2.  
  3. uses crt;
  4.  
  5. type
  6.   Tour = record
  7.     id: integer;
  8.     country: string[20];
  9.     cost: integer;
  10.     days: integer;
  11.   end;
  12.  
  13. var
  14.   f, tempf: file of Tour;
  15.   o: integer;
  16.  
  17. procedure openFileByName();
  18. var
  19.   fileName: string = 'new_file.txt';
  20. begin
  21.   Readln();
  22.   Write('Имя файла: ');
  23.   read(fileName);
  24.  
  25.   Assign(f, fileName);
  26.   Rewrite(f);
  27.   Close(f);
  28.  
  29.   fileName := Concat('temp_', fileName);
  30.  
  31.   Assign(tempf, fileName);
  32.   Rewrite(tempf);
  33.   Close(tempf);
  34. end;
  35.  
  36. procedure selectAll();
  37. var
  38.   elem: Tour;
  39. begin
  40.   Writeln('------------------------------------');
  41.   Writeln('ID  |  Город  | Цена | Кол-во дней |');
  42.   Writeln('------------------------------------');
  43.   Reset(f);
  44.   while not eof(f) do
  45.   begin
  46.     Read(f, elem);
  47.     WriteFormat(
  48.       '{0, 3} | {1, 7} | {2, 4} | {3, 11} |',
  49.       elem.id, elem.country, elem.cost, elem.days);
  50.     Writeln();
  51.   end;
  52.   Close(f);
  53. end;
  54.  
  55. procedure insert();
  56. var
  57.   elem: Tour;
  58.   counter: integer = 0;
  59. begin
  60.   reset(f);
  61.   Rewrite(tempf);
  62.   while not Eof(f) do begin
  63.       Read(f, elem);
  64.       Write(tempf, elem);
  65.       Inc(counter);
  66.   end;
  67.   Readln();
  68.   elem.id := counter;
  69.   Write('Введите город: ');
  70.   Readln(elem.country);
  71.   Write('Введите цену: ');
  72.   Readln(elem.cost);
  73.   Write('Введите количество дней: ');
  74.   Readln(elem.days);
  75.   Write(tempf, elem);
  76.   Close(tempf);
  77.   Close(f);
  78.   Reset(tempf);
  79.   Rewrite(f);
  80.   while not Eof(tempf) do begin
  81.       Read(tempf, elem);
  82.       Write(f, elem);
  83.   end;
  84.   Close(f);
  85.   Close(tempf);
  86. end;
  87.  
  88. procedure update();
  89. var
  90.   id: integer;
  91.   elem: Tour;
  92. begin
  93.   Write('ID обновляемой записи: ');
  94.   Read(id);
  95.   Reset(f);
  96.   Rewrite(tempf);
  97.   while not Eof(f) do begin
  98.       Read(f, elem);
  99.       if (elem.id = id) then begin
  100.           readln();
  101.           Writeln('Введите новые данные');
  102.           Write('  Введите город: ');
  103.           Readln(elem.country);
  104.           Write('  Введите цену: ');
  105.           Readln(elem.cost);
  106.           Write('  Введите количество дней: ');
  107.           Readln(elem.days);
  108.       end;
  109.       Write(tempf, elem);
  110.   end;  
  111.   Close(tempf);
  112.   Close(f);
  113.   Reset(tempf);
  114.   Rewrite(f);
  115.   while not Eof(tempf) do begin
  116.       Read(tempf, elem);
  117.       Write(f, elem);
  118.   end;  
  119.   Close(f);
  120. end;
  121.  
  122. procedure delete();
  123. var
  124.   elem: Tour;
  125.   id: integer;
  126.   flag_after_del: boolean = false;
  127. begin
  128.   Write('ID удаляемой записи: ');
  129.   Read(id);
  130.   Reset(f);
  131.   Rewrite(tempf);
  132.   while not Eof(f) do begin
  133.       Read(f, elem);
  134.       if (elem.id = id) then begin
  135.         flag_after_del := true;
  136.         continue;
  137.       end;
  138.       if flag_after_del then Dec(elem.id);
  139.       Write(tempf, elem);
  140.   end;  
  141.   Close(f);
  142.   Close(tempf);
  143.   Reset(tempf);
  144.   Rewrite(f);
  145.   while not Eof(tempf) do begin
  146.       Read(tempf, elem);
  147.       Write(f, elem);
  148.   end;  
  149.   Close(tempf);
  150.   Close(f);
  151. end;
  152.  
  153. procedure select();
  154. var
  155.   elem: Tour;
  156.   id: integer;
  157. begin
  158.   Write('ID искомой записи: ');
  159.   Read(id);
  160.   Reset(f);
  161.   Rewrite(tempf);
  162.   while not Eof(tempf) do begin
  163.       Read(tempf, elem);
  164.       if (elem.id = id) then begin
  165.         Writeln('Элемент: ', elem.id);
  166.         Writeln('Город: ', elem.country);
  167.         Writeln('Цена: ', elem.cost);
  168.         Writeln('Кол-во дней: ', elem.days);
  169.       end;
  170.       Write(f, elem);
  171.   end;  
  172.  
  173.   Close(f);
  174.   Close(tempf);
  175.   Reset(tempf);
  176.   Rewrite(f);
  177.   while not Eof(tempf) do begin
  178.       Read(tempf, elem);
  179.       Write(f, elem);
  180.   end;  
  181.   Close(tempf);
  182.   Close(f);
  183. end;
  184.  
  185. procedure sort();
  186. var
  187.   elems: array of Tour;
  188.   elem: Tour;
  189.   temp: integer;
  190.   counter: integer = 0;
  191. begin
  192.  
  193.   Reset(f);
  194.   while not Eof(f) do begin
  195.      Inc(counter);
  196.      SetLength(elems, counter);
  197.      Read(f, elem);
  198.      elems[counter-1] := elem;
  199.   end;
  200.   Close(f);
  201.  
  202.   for var i:= 0 to counter-1 do begin
  203.     for var j:= 0 to counter-1-i do begin
  204.       if (CompareStr(elems[i].country, elems[j].country) > 0) then begin
  205.         elem := elems[i];
  206.         elems[i] := elems[j];
  207.         elems[j] := elem;
  208.         temp := elems[i].id;
  209.         elems[i].id := elems[j].id;
  210.         elems[j].id := temp;
  211.       end;
  212.     end;
  213.   end;
  214.  
  215.  
  216.   Rewrite(f);
  217.   for var i:=counter-1 downto 0 do begin
  218.      Write(f, elems[i]);
  219.      Dec(counter);
  220.      SetLength(elems, counter);
  221.   end;
  222.   Close(f);
  223. end;
  224.  
  225. begin
  226.   Writeln('Меню: ');
  227.   Writeln('1) открыть файл ');
  228.   Writeln('2) просмотреть файл ');
  229.   Writeln('3) добавить строку в файл ');
  230.   Writeln('4) заменить строку файла');
  231.   Writeln('5) удалить строку файла');
  232.   Writeln('6) отсортировать таблицу по городам');
  233.  
  234.   Writeln('def) выход из программы');
  235.   while (true) do
  236.   begin
  237.     Write('*****   Введите операцию >> ');
  238.     Read(o);
  239.     case (o) of
  240.       1:
  241.         begin
  242.           openFileByName();
  243.           continue;
  244.         end;
  245.       2:
  246.         begin
  247.           selectAll();
  248.           continue;
  249.         end;
  250.       3:
  251.         begin
  252.           insert();
  253.           continue;
  254.         end;
  255.       4:
  256.         begin
  257.           update();
  258.           continue;
  259.         end;
  260.       5:
  261.         begin
  262.           delete();
  263.           continue;
  264.         end;
  265.       6:
  266.         begin
  267.           sort();
  268.           continue;
  269.         end;
  270.     else exit;
  271.     end;
  272.   end;
  273. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement