Создать файл, содержащий сведения о наличии билетов и рейсов самолетов Аэрофлота - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д