Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program n_1;
- uses crt;
- type
- Tour = record
- id: integer;
- country: string[20];
- cost: integer;
- days: integer;
- end;
- var
- f, tempf: file of Tour;
- o: integer;
- procedure openFileByName();
- var
- fileName: string = 'new_file.txt';
- begin
- Readln();
- Write('Имя файла: ');
- read(fileName);
- Assign(f, fileName);
- Rewrite(f);
- Close(f);
- fileName := Concat('temp_', fileName);
- Assign(tempf, fileName);
- Rewrite(tempf);
- Close(tempf);
- end;
- procedure selectAll();
- var
- elem: Tour;
- begin
- Writeln('------------------------------------');
- Writeln('ID | Город | Цена | Кол-во дней |');
- Writeln('------------------------------------');
- Reset(f);
- while not eof(f) do
- begin
- Read(f, elem);
- WriteFormat(
- '{0, 3} | {1, 7} | {2, 4} | {3, 11} |',
- elem.id, elem.country, elem.cost, elem.days);
- Writeln();
- end;
- Close(f);
- end;
- procedure insert();
- var
- elem: Tour;
- counter: integer = 0;
- begin
- reset(f);
- Rewrite(tempf);
- while not Eof(f) do begin
- Read(f, elem);
- Write(tempf, elem);
- Inc(counter);
- end;
- Readln();
- elem.id := counter;
- Write('Введите город: ');
- Readln(elem.country);
- Write('Введите цену: ');
- Readln(elem.cost);
- Write('Введите количество дней: ');
- Readln(elem.days);
- Write(tempf, elem);
- Close(tempf);
- Close(f);
- Reset(tempf);
- Rewrite(f);
- while not Eof(tempf) do begin
- Read(tempf, elem);
- Write(f, elem);
- end;
- Close(f);
- Close(tempf);
- end;
- procedure update();
- var
- id: integer;
- elem: Tour;
- begin
- Write('ID обновляемой записи: ');
- Read(id);
- Reset(f);
- Rewrite(tempf);
- while not Eof(f) do begin
- Read(f, elem);
- if (elem.id = id) then begin
- readln();
- Writeln('Введите новые данные');
- Write(' Введите город: ');
- Readln(elem.country);
- Write(' Введите цену: ');
- Readln(elem.cost);
- Write(' Введите количество дней: ');
- Readln(elem.days);
- end;
- Write(tempf, elem);
- end;
- Close(tempf);
- Close(f);
- Reset(tempf);
- Rewrite(f);
- while not Eof(tempf) do begin
- Read(tempf, elem);
- Write(f, elem);
- end;
- Close(f);
- end;
- procedure delete();
- var
- elem: Tour;
- id: integer;
- flag_after_del: boolean = false;
- begin
- Write('ID удаляемой записи: ');
- Read(id);
- Reset(f);
- Rewrite(tempf);
- while not Eof(f) do begin
- Read(f, elem);
- if (elem.id = id) then begin
- flag_after_del := true;
- continue;
- end;
- if flag_after_del then Dec(elem.id);
- Write(tempf, elem);
- end;
- Close(f);
- Close(tempf);
- Reset(tempf);
- Rewrite(f);
- while not Eof(tempf) do begin
- Read(tempf, elem);
- Write(f, elem);
- end;
- Close(tempf);
- Close(f);
- end;
- procedure select();
- var
- elem: Tour;
- id: integer;
- begin
- Write('ID искомой записи: ');
- Read(id);
- Reset(f);
- Rewrite(tempf);
- while not Eof(tempf) do begin
- Read(tempf, elem);
- if (elem.id = id) then begin
- Writeln('Элемент: ', elem.id);
- Writeln('Город: ', elem.country);
- Writeln('Цена: ', elem.cost);
- Writeln('Кол-во дней: ', elem.days);
- end;
- Write(f, elem);
- end;
- Close(f);
- Close(tempf);
- Reset(tempf);
- Rewrite(f);
- while not Eof(tempf) do begin
- Read(tempf, elem);
- Write(f, elem);
- end;
- Close(tempf);
- Close(f);
- end;
- procedure sort();
- var
- elems: array of Tour;
- elem: Tour;
- temp: integer;
- counter: integer = 0;
- begin
- Reset(f);
- while not Eof(f) do begin
- Inc(counter);
- SetLength(elems, counter);
- Read(f, elem);
- elems[counter-1] := elem;
- end;
- Close(f);
- for var i:= 0 to counter-1 do begin
- for var j:= 0 to counter-1-i do begin
- if (CompareStr(elems[i].country, elems[j].country) > 0) then begin
- elem := elems[i];
- elems[i] := elems[j];
- elems[j] := elem;
- temp := elems[i].id;
- elems[i].id := elems[j].id;
- elems[j].id := temp;
- end;
- end;
- end;
- Rewrite(f);
- for var i:=counter-1 downto 0 do begin
- Write(f, elems[i]);
- Dec(counter);
- SetLength(elems, counter);
- end;
- Close(f);
- end;
- begin
- Writeln('Меню: ');
- Writeln('1) открыть файл ');
- Writeln('2) просмотреть файл ');
- Writeln('3) добавить строку в файл ');
- Writeln('4) заменить строку файла');
- Writeln('5) удалить строку файла');
- Writeln('6) отсортировать таблицу по городам');
- Writeln('def) выход из программы');
- while (true) do
- begin
- Write('***** Введите операцию >> ');
- Read(o);
- case (o) of
- 1:
- begin
- openFileByName();
- continue;
- end;
- 2:
- begin
- selectAll();
- continue;
- end;
- 3:
- begin
- insert();
- continue;
- end;
- 4:
- begin
- update();
- continue;
- end;
- 5:
- begin
- delete();
- continue;
- end;
- 6:
- begin
- sort();
- continue;
- end;
- else exit;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement