Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2018, 10:09   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

чуть-чуть причесал. Запускается. функционал в работе не проверял.

код целиком - pasajiri_2.rar



начало кода теперь выглядит так:
Код:
program Passajiri;

uses crt;

const
  NameOfDataFile = 'd:\passajir.dat';

type
  passajir = record
    fam: string[10];
    im: string[8];
    otchestvo: string[10];
    nom_reys: integer;
    kol_bag: integer;
    obshiy_ves: integer;
    KDP: integer;
  end;

var
  i, k, n: integer;
  f: file of passajir;
  a: passajir;
  q: char;


function isNotFileExist(fn: string): boolean;
begin
  isNotFileExist := false;
  if not FileExists(fn) then begin
    isNotFileExist := true;
    textcolor(LightRed);WriteLn('Файл ' + fn + ' не создан. Сначала создайте файл!');
    WriteLn;textcolor(LightGreen);
    writeln('Нажмите любую клавишу для возврата в меню');
    readkey;
  end;
end;

procedure vvod;
begin
  clrscr;
  assign(f, NameOfDataFile);
  rewrite(f);
  repeat
    textcolor(11);
    writeln('|Введите данные пасажира:  ');
    with a do
    begin
      textcolor(12);
      write('|Введите фамилию ............................|');readln(fam);
      write('|Введите имя .................................|');readln(im);
      write('|Введите отчество ............................|');readln(otchestvo);
      write('|Введите номер рейса ........................|');readln(nom_reys);
      write('|Введите Количество багажных мест ...........|');readln(kol_bag);
      write('|Введите общий вес багажа*....................|');readln(obshiy_ves);
    end;
    write(f, a);
    textcolor(14);
    writeln('  ');
    write('Для продолжения Ввода данных нежмите ENTER, Для завершения нажмите - 0:', ' ', q);
    readln(q);
  until q = '0';
  close(f);
end;

procedure vyvod;
var
  i: integer;
begin
  if isNotFileExist(NameOfDataFile ) then Exit;  
  assign(f, NameOfDataFile);
  reset(f);
  clrscr;
  textcolor(10);
  writeln('________________________________________________________________________________');
  textcolor(11);
  writeln('| Фамилия |  Имя  | Отчество | Номер рейса* | Кол.баг.мест | Общий вес |');
  textcolor(10);
  writeln('________________________________________________________________________________');
  for i := 1 to filesize(f) do
  begin
    textcolor(10);
    read(f, a);
    writeln('|', a.fam:9, '|', a.im:7, '|', a.otchestvo:10, '|', a.nom_reys:13, '|', a.kol_bag:16, '|', a.obshiy_ves:11, '|');
    textcolor(10);
    writeln('________________________________________________________________________________');
  end;
  close(f);
  textcolor(14);
  writeln('Нажмите ENTER для выхода из просмотра файла...*');
  readln;
end;

procedure dobavit;
begin
  clrscr;
  if isNotFileExist(NameOfDataFile ) then Exit;  
  assign(f, NameOfDataFile);
  reset(f);
  seek(f, filesize(f));
  repeat
    textcolor(11);
    writeln('Введите данные багажа*¦*');
    with a do
    begin
      textcolor(12);
      write('Введите фамилию ............................|');readln(fam);
      write('Введите имя ................................|');readln(im);
      write('Введите отчество ...........................|');readln(otchestvo);
      write('Введите номер рейса ........................|');readln(nom_reys);
      write('Введите колочество багажных мест ...........|');readln(kol_bag);
      write('Введите общий вес ..........................|');readln(obshiy_ves);
    end;
    write(f, a);
    textcolor(14);
    writeln('  ');
    write('Для продолжения Ввода данных нажмите ENTER, Для завершения  - 0:', ' ', q);
    readln(q);
  until q = '0';
  close(f);
end;

procedure udalenie;
var
  w, i: integer;
begin
  if isNotFileExist(NameOfDataFile ) then Exit;  
  assign(f, NameOfDataFile );
  reset(f);
  clrscr;
  textcolor(11);
  writeln('________________________________________________________________________________');
  textcolor(10);
  writeln('| Фамилия  |  Имя  | Отчество | Номер рейса* | Кол.баг.мест | Общий вес |');
  textcolor(11);
  writeln('________________________________________________________________________________');
  for i := 1 to filesize(f) do
  begin
    textcolor(10);
    read(f, a);
    writeln('|', a.fam:9, '|', a.im:7, '|', a.otchestvo:10, '|', a.nom_reys:13, '|', a.kol_bag:16, '|', a.obshiy_ves:12, '|');
    textcolor(11);
    writeln('________________________________________________________________________________');
  end;
  reset(f);
  textcolor(14);
  write('Ввести номер записи для удаления - ');
  readln(w);
  seek(f, filesize(f) - 1);
  read(f, a);
  seek(f, w - 1);
  write(f, a);
  seek(f, filesize(f) - 1);
  truncate(f);
  close(f);
  begin
    assign(f, NameOfDataFile);
    reset(f);
    clrscr;
    textcolor(11);
    writeln('________________________________________________________________________________');
    textcolor(10);
    writeln('| Фамилия  |  Имя  | Отчество | Номер рейса* | Кол.баг.мест | Общий вес |');
    textcolor(11);
    writeln('________________________________________________________________________________');
    for i := 1 to filesize(f) do
    begin
      textcolor(10);
      read(f, a);
      writeln('|', a.fam:9, '|', a.im:7, '|', a.otchestvo:10, '|', a.nom_reys:13, '|', a.kol_bag:16, '|', a.obshiy_ves:11, '|');
      textcolor(11);
      writeln('________________________________________________________________________________');
    end;
    close(f);
    textcolor(14);
    writeln('                        ');
    writeln('Нажмите  ENTER для выхода...*');
    readkey;
  end;
end;

......

p.s. в типе "passajir" я оставил описание поля
Цитата:
Код:
    KDP: integer;
хотя оно нигде не используется. Подозреваю, что это какой-то рудимент, оставшийся от предыдущего кода.
И это поле желательно удалить целиком.

Последний раз редактировалось Serge_Bliznykov; 18.04.2018 в 10:12.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать файл "Багаж", включающий в себя информацию:фамилия пассажира, количество и общий вес вещей, место следования. Регааа Паскаль, Turbo Pascal, PascalABC.NET 0 26.11.2014 16:23
Сформировать текстовый файл, содержащий сведения о сотрудниках предприятия (фамилия, имя, отчество, общий стаж...) (Delphi) Kat9 Помощь студентам 2 03.03.2014 14:51
Структура элемента массива «пассажир»: фамилия, номер рейса, багаж - количество вещей, общий вес. Определить число пассажиров, кол Masha Koks Помощь студентам 3 26.11.2013 19:00