Создать файл, содержащий сведения о наличии билетов и рейсов самолетов Аэрофлота - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Создать файл,содержащий сведения о наличии билетов и рейсов самолетов Аэрофлота.Каждая запись содержит поля:номер рейса,пункт назначения,время вылета,время прибытия,количество свободных мест. Написать программу для формирования и вывода следующих сведений: -времени отправления самолетов в город X; -наличия свободных мест на рейс в город Y со временем отправления Z; Значения вводятся с X,Y,Z клавиатуры. Смогла написать обычную программу на Паскале,но как все это связать с файлом,как создать сначала меню...(продолжать или не продолжать запись в файл)ничего не выходит толком.

Решение задачи: «Создать файл, содержащий сведения о наличии билетов и рейсов самолетов Аэрофлота»

textual
Листинг программы
uses CRT;
  
type
  tTrip = record // рейс
    theNumber       : Integer;    // номер рейса
    theDestination  : String[20]; // пункт назначения
    timeOfDeparture : String[5];  // время вылета
    timeOfArrival   : String[5];  // время прилёта
    Available       : Integer;    // свободных мест
  end;
 
const
  fName = 'Trip.dat';
  
function SelectMenu(Menu : array of String) : Integer;
begin
  TextBackground(1); ClrScr;
  
  GotoXY(10, 11 + Menu.Length); WriteLn('Выберите требуемое действие и нажмите ENTER.');
  GotoXY(10, 10); WriteLn(Menu[0]);
  
  Result := Menu.Length - 1;
  var Ch : Char;
  repeat
    for var L := 1 to Menu.Length - 1 do
      begin
        GotoXY(12, 10 + L);
        if L = Result then
          TextBackground(9)
        else
          TextBackground(1);
        WriteLn(Menu[L]);
      end;
    Ch := ReadKey;
    case Ch of
      #38 : Result := Max(Result - 1, 1);
      #40 : Result := Min(Result + 1, Menu.Length - 1);
    end;
  until Ch = #13;
end;
 
procedure AnyKey;
begin
  TextBackground(9); GotoXY(10, 1);
  WriteLn('Нажмите любую клавишу для выхода в основное меню.');
  var Ch := ReadKey;
end;
 
procedure OutTrips(Trip : array of tTrip);
begin
  TextBackground(1);
  WriteLn('| № п/п | № рейса |   пункт назначения   |время отпр.|время приб.|св.мест|');
 
  var N := 0;
  foreach var T : tTrip in Trip do
    begin
      N += 1;
      WriteLnFormat('| {0,5} | {1,7} | {2,-20} |   {3,5}   |   {4,5}   | {5,5} |',
      N, T.theNumber, T.theDestination, T.timeOfDeparture, T.timeOfArrival, T.Available);
    end;
end;
 
procedure See;
begin
  TextBackground(0); ClrScr;
 
  var F : File of tTrip;
  Assign(F, fName);
  try
    Reset(F);
  except
    TextBackground(9); 
    GotoXY(10, 10); WriteLn('Не удалось открыть файл с данными о рейсах.');
    AnyKey;
    Exit;
  end;
  
  var Trip : array of tTrip;
  SetLength(Trip, FileSize(F));
  for var N := 0 to Trip.Length - 1 do
    Read(F, Trip[N]);
  Close(F);
  
  GoToXY(1, 2); OutTrips(Trip);
  AnyKey;
end;
  
procedure Add;
begin
  TextBackground(1); ClrScr;
  GotoXY(10, 10); WriteLn('Введите информацию о добавляемом рейсе:');
  
  var Trip : tTrip;
  TextBackground(9); GotoXY(10, 12); Write('            Номер рейса: '); TextBackground(14); Trip.theNumber       := ReadLnInteger;
  TextBackground(9); GotoXY(10, 13); Write('       Пункт назначения: '); TextBackground(14); Trip.theDestination  := ReadLnString;
  TextBackground(9); GotoXY(10, 14); Write('  Время вылета (ЧЧ:ММ) : '); TextBackground(14); Trip.timeOfDeparture := ReadLnString;
  TextBackground(9); GotoXY(10, 15); Write('Время прибытия (ЧЧ:ММ) : '); TextBackground(14); Trip.timeOfArrival   := ReadLnString;
  TextBackground(9); GotoXY(10, 16); Write('         Свободных мест: '); TextBackground(14); Trip.Available       := ReadLnInteger;
  
  var F : File of tTrip;
  Assign(F, fName);
  try
    Reset(F);
    var Tmp : tTrip;
    while Not EOF(F) do
      Read(F, Tmp);
  except
    Rewrite(F);
  end;
  Write(F, Trip);
  Close(F);
end;
 
procedure FindTime;
begin
  TextBackground(0); ClrScr;
  
  TextBackground(9); GotoXY(10, 10); Write('Введите название пункта назначения: ');
  TextBackground(14); var theDestination  : String[20] := ReadLnString;
  
  TextBackground(0); ClrScr;
 
  var F : File of tTrip;
  Assign(F, fName);
  try
    Reset(F);
  except
    TextBackground(9); 
    GotoXY(10, 10); WriteLn('Не удалось открыть файл с данными о рейсах.');
    AnyKey;
    Exit;
  end;
  
  var Tmp : tTRip;
  var Trip : array of tTrip;
  var L := 0;
  while Not EOF(F) do
    begin
      Read(F, Tmp);
      if Tmp.theDestination = theDestination then
        begin
          SetLength(Trip, L + 1);
          Trip[L] := Tmp;
          L += 1;
        end;
    end;
  Close(F);
  
  if L = 0 then
    begin
      TextBackground(9); 
      GotoXY(10, 10); WriteLn('Не удалось найти сведения о рейсах в пункт назначения ', theDestination);
    end
  else
    begin
      TextBackground(14); 
      GotoXY(1, 2); Write('Рейсы в ', theDestination, ' имеют время отправления:', NewLine, '  ');
      foreach var T : tTrip in Trip do Print(T.timeOfDeparture); WriteLn;
      OutTrips(Trip);
    end;
  AnyKey;
end;
 
procedure Available;
begin
  TextBackground(0); ClrScr;
  
  TextBackground(9); GotoXY(10, 10); Write('Введите название пункта назначения: ');
  TextBackground(14); var theDestination  : String[20] := ReadLnString;
  TextBackground(9); GotoXY(10, 11); Write('         Введите время отправления: ');
  TextBackground(14); var timeOfDeparture : String[5]  := ReadLnString;
  
  TextBackground(0); ClrScr;
 
  var F : File of tTrip;
  Assign(F, fName);
  try
    Reset(F);
  except
    TextBackground(9); 
    GotoXY(10, 10); WriteLn('Не удалось открыть файл с данными о рейсах.');
    AnyKey;
    Exit;
  end;
  
  var Tmp : tTRip;
  var Trip : array of tTrip;
  var L := 0;
  while Not EOF(F) do
    begin
      Read(F, Tmp);
      if (Tmp.theDestination = theDestination) and (Tmp.timeOfDeparture = timeOfDeparture) then
        begin
          SetLength(Trip, L + 1);
          Trip[L] := Tmp;
          L += 1;
        end;
    end;
  Close(F);
  
  if L = 0 then
    begin
      TextBackground(9); 
      GotoXY(10, 10); WriteLn('Не удалось найти сведения о рейсах в пункт назначения ', theDestination, ' со временем отправления ', timeOfDeparture);
    end
  else
    begin
      TextBackground(14); 
      GotoXY(1, 2); Write('Рейсы в ', theDestination, ' со время отправления ', timeOfDeparture, ' :', NewLine, '  ');
      foreach var T : tTrip in Trip do Print(T.theNumber); WriteLn;
      OutTrips(Trip);
    end;
  AnyKey;
end;
 
begin
  var Menu : array of String := (
    'Выберите требуемое действие с рейсами:',
    '- просмотр'  , // 1
    '- добавление', // 2
    '- время отправления самолётов в...' , // 3
    '- наличие свободных мест на рейс...', // 4
    '- выход'       // 5
  );
 
  var Select : Integer;
  repeat
    Select := SelectMenu(Menu);
    case Select of
      1 : See;
      2 : Add;
      3 : FindTime;
      4 : Available;
    end;
  until Select = 5;
 
  TextBackground(0); ClrScr;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы