program flight; uses crt; var reservation : array[1..3,1..15] of string[20]; choice : char; save : text; fexists : boolean; procedure FileExists(filename: string); begin {$I-} Assign(save, filename); Reset(save); Close(save); {$I+} fexists := (IOResult = 0) and (filename <> ''); end; procedure add; var y,z:integer; begin clrscr; writeln; writeln; write ('Add a reservation for which flight? (1,2, or 3) ---> '); readln (y); writeln; writeln; z := 0; repeat z := z + 1; until (reservation[y,z] = '') or (z = 16); if z <> 16 then begin writeln ('Reservation #',z,' on fight #',y,' : '); write ('Name : '); readln (reservation[y,z]); end else begin writeln ('This flight is full!!'); write ('Do you want to erase all of it''s reservations? (Y or N)'); repeat choice := upcase(readkey); until (choice = 'Y') or (choice = 'N'); if choice = 'Y' then for z := 1 to 15 do reservation[y,z] := ''; end; end; procedure view_all; var z,y,b : integer; begin clrscr; writeln; for y := 1 to 3 do begin b := 0; repeat b := b + 1; until (reservation[y,b] = '') or (b = 16); for z := 1 to b - 1 do writeln ('Flight #',y,', reservation #',z,' : ',reservation[y,z]); writeln; writeln ('You have ',16 - b,' reservations left open in this flight'); writeln; writeln; writeln ('--More--'); readkey; clrscr; writeln; end; end; procedure view_one; var y,z,b:integer; begin clrscr; writeln; writeln; write ('What flight do you want to look at? ---> '); readln (y); writeln; writeln; b := 0; repeat b := b + 1 until (reservation[y,b] = '') or (b = 16); for z := 1 to b - 1 do writeln ('Flight #',y,', reservation #',z,' : ',reservation[y,z]); writeln; writeln ('You have ',16 - b,' reservations left open in this flight'); readkey; end; Procedure save_data; var x,y : integer; begin clrscr; writeln; writeln; if fexists then begin writeln ('You already have a saved data file. Are you sure you want to over write it?'); write ('(Y or N)'); repeat choice := upcase(readkey); until (choice = 'Y') or (choice = 'N'); end; if (fexists = false) or (choice = 'Y') then begin rewrite(save); for x := 1 to 3 do for y := 1 to 15 do writeln (save,reservation[x,y]); close(save); fexists := true; writeln; writeln ('Data Saved'); choice := readkey; end; end; procedure load_data; var x,y : integer; begin clrscr; writeln; writeln; if fexists then begin writeln ('Are you sure you want to load your saved data? (all current data will be lost)'); write ('(Y or N)'); repeat choice := upcase(readkey); until (choice = 'Y') or (choice = 'N'); if choice = 'Y' then begin reset (save); for x := 1 to 3 do for y := 1 to 15 do readln (save,reservation[x,y]); close (save); writeln; writeln ('Data Loaded'); end; end else writeln ('You have no saved data to load'); choice := readkey; end; begin repeat fileexists('flight.$$$'); clrscr; gotoxy (25,4); writeln ('Fast-Flight Airlines reservations'); gotoxy (25,6); write ('-----------------------'); gotoxy (25,7); write ('Main Menu'); gotoxy (25,8); write ('-----------------------'); gotoxy (25,11); write ('[L]oad a set of saved data'); gotoxy (25,12); write ('[S]ave current data'); gotoxy (25,13); write ('[A]dd a reservation'); gotoxy (25,14); write ('View [O]ne reservation'); gotoxy (25,15); write ('[V]iew all reservations'); gotoxy (25,16); write ('[Q]uit'); gotoxy (25,18); write ('Please enter a letter : '); choice := upcase(readkey); case choice of 'A' : add; 'O' : view_one; 'V' : view_all; 'S' : save_data; 'L' : load_data; end; until choice = 'Q'; end.