The following is a Pascal old program. Goal: reservation for a two-class flight. Other programs will be added in the future.

program  ass2;{$i+}

uses crt,printer,dos;

label

    99;

type

   str=string[30];

   str1=string[10];

   rec1=record

          name:str;

          pass:str1;

          ticket:integer;

          seat:integer;

          k:char;

        end;

   fil=file of rec1;

var

  v,r,n1,n2,c,r5,i,o1,k,m1,m2,b,y1,y2:integer;

  ch,class,g,ansewer,wanted:str;

  rr:rec1;

  hh:char;

  tt,yy:boolean;

  file1,file2:fil;

  fil11,fil22:str1;

  dirinfo:searchrec;

 

{========================================}

{this is a program for an airline trip,it reserves,cancels,modifies}

{========================================}

procedure outline;       {outline for the program}

var

  i:integer;

begin

  textbackground(white);clrscr;textcolor(blue);clrscr;

  for  i:=1 to 4 do   writeln;for i:=1 to 10 do   write(' ');

  writeln('This  is  a program  for  an  airpline   trip .');

  for i:=1 to 5 do  writeln;for i:=1 to 10  do   write(' ');

  writeln('It  contains  two  classes  : first , second . ');

  for i:=1 to 5 do writeln;for i:=1 to 10 do write(' ');

  writeln('You  can  choose  the  number  of  seats  for   each  class .');

  for i:=1 to 5 do  writeln;for i:=1 to 10 do write(' ');

  writeln('You  can  create  new  binary  files  or  use  old  ones .');

  readln;

end;

{==========================================================================}

procedure  file51(var n:integer;

                  var filea:fil);   {initialiazing file for class 1}

var

   i:integer;

begin

  i:=0;

  rr.name:='p';rr.ticket:=0;rr.pass:='0';rr.seat:=n+1;rr.k:='p';

  seek(filea,i);write(filea,rr);i:=1;

  while i<=n do

            begin

              rr.name:='$';rr.pass:='-1';rr.seat:=-1;seek(filea,i);

              rr.k:='n';

              write(filea,rr);i:=i+1;

            end;

end;

{=========================================}

procedure file52(var  n5:integer;var fileb:fil);

var                       {initiliazing file for class 2}

  i:integer;

begin

 

  i:=0;

  rr.name:='p';rr.ticket:=0;rr.pass:='0';rr.seat:=n5+1;rr.k:='p';

  seek(fileb,i);write(fileb,rr);i:=1;

  while i <= n5 do

              begin

                rr.name:='$';rr.pass:='-1';rr.seat:=-1;seek(fileb,i);

                rr.k:='n';

                write(fileb,rr);i:=i+1;

              end;

end;

{=====================================================================}

procedure number1(var n11:integer;var file11:fil;var  sum:integer);

var               {counts # of full seats for class 1}

   i:integer;

   pp:rec1;

begin

   sum:=0;reset(file11);

   for i:=1 to n11 do

                   begin

                      seek(file11,i);

                      read(file11,pp);

                      if pp.name <> '$' then sum:=sum+1;

                   end;

end;

{===============================================================}

procedure  number2(var n22:integer;var file22 :fil ; var sum2:integer);

var                {counts # of full seats for class 2}

  j:integer;

  ff:rec1;

begin

   sum2:=0;reset(file22);

   for j:=1 to n22 do

                       begin

                         seek(file22,j);

                         read(file22,ff);

                         if ff.name <> '$' then sum2:=sum2+1;

                       end;

end;

{===============================================================}

procedure  ticket1(var s:integer;var filea:fil;var b:integer);

var                   {gives tickets in class 1}

  i:integer;

  j:boolean;

  f:str;

  rr1:rec1;

begin

  j:=false;i:=1;reset(filea);

  while (i <= s) and (not (j) ) do

                   begin

                     seek(filea,i);

                     read(filea,rr1);

                     if rr1.name='$' then

                                       begin

                                         {$i-}

                                          repeat

                                             writeln('enter name');

                                             readln(rr1.name);

                                           until ioresult=0;

                                           {$i+}

                                           writeln('enter # of pass p');

                                           readln(rr1.pass);

                                           rr1.seat:=i;textcolor(blue);

                                           write('you have got the');

                                           writeln(' seat (',i,')');

                                           rr1.ticket:=b;

                                           seek(filea,i);textcolor(blue);

                                           write(filea,rr1);rr1.name:='p';

                                           rr1.ticket:=b;rr1.pass:='0';

                                           rr1.seat:=s+1;rr1.k:='p';

                                           seek(filea,0);write(filea,rr1);

                                           j:=true;

                                       end;i:=i+1;

                   end;

end;

{===============================================================}

procedure ticket2(var s:integer; var fileb:fil;var b:integer);

var                 {gives tickets in class 2}

  rr2:rec1;

  i:integer;

  j:boolean;

begin

  j:=false;i:=1;reset(file2);

  while (i <= s) and (not(j)) do

                 begin

                   seek(fileb,i);

                   read(fileb,rr2);

                   if rr2.name='$' then begin

                                          {$i-}

                                          repeat

                                            writeln('enter name');

                                            readln(rr2.name);

                                          until ioresult =0;

                                          {$i+}

                                          writeln('enter # of pass p');

                                          readln(rr2.pass);

                                          rr2.seat:=i;textcolor(blue);

                                          write('you have got the ');

                                          writeln('seat(',i,')');

                                          rr2.ticket:=b;

                                          seek(fileb,i);textcolor(blue);

                                          write(fileb,rr2);rr2.ticket:=b;

                                          rr2.name:='p';rr2.seat:=s+1;

                                          rr2.pass:='0';rr2.k:='p';

                                          j:=true;

                                        end;i:=i+1;

                 end;

end;

{==========================================================================}

procedure cancel1(var n:integer;var filea:fil);

var                 {cancels in class 1 }

  i:integer;

  rr:rec1;

  t1:str;

  m:boolean;

begin

  writeln('enter  your  name');readln(t1);

  reset(filea);

  m:=true;i:=1;

  while (i <= n) and m do

                     begin

                       seek(filea,i);read(filea,rr);

                       if rr.name=t1 then begin

                                            rr.name:='$';rr.seat:=-1;

                                            rr.pass:='-1';

                                            rr.ticket:=-1;

                                            seek(filea,i);rr.k:='n';

                                            write(filea,rr);

                                            m:=false;textcolor(blue);

                                            writeln('your place is deleted');

                                          end

                                          else i:=i+1;

                     end;

  if (m=true) and (i>n) then writeln('name not found');textcolor(blue);

end;

{==========================================================================}

procedure cancel2(var n:integer;var fileb:fil);

var                   {cancels in class 2}

  i:integer;

  rr:rec1;

  t1:str;

  m:boolean;

begin

  writeln('enter  your name');readln(t1);m:=true;i:=1;reset(fileb);

  while (i<=n) and m do

                    begin

                      seek(fileb,i);read(fileb,rr);

                      if rr.name=t1 then begin

                                           rr.name:='$';rr.seat:=-1;

                                           rr.pass:='-1';rr.k:='n';

                                           rr.ticket:=-1;

                                           seek(fileb,i);

                                           write(fileb,rr);m:=false;

                                           textcolor(blue);

                                           writeln('your place is deleted');

                                         end

                                         else i:=i+1;

                    end;

  if (m=true) and (i > n) then writeln('name not found');textcolor(blue);

end;

{=========================================================================}

procedure change(var n:integer;var file1:fil;var b:integer);

var                    {changes mistakes}

  f:boolean;

  i:integer;

  ticket:str1;

  rr:rec1;

  ch:char;

  name,wanted:str;

begin

 writeln('enter old name');readln(wanted);

 f:=false;i:=1;reset(file1);

 while (i<=n) and (not(f)) do

                          begin

                           seek(file1,i);

                           read(file1,rr);

                           if rr.name=wanted then

                                             begin

                                              repeat

                                               write('is there a new ');

                                               writeln('name (y,n)');

                                               readln(ch);

                                              until (ch='y') or (ch='n');

                                              if (ch='y') then begin

                                              writeln('enter new name');

                                              readln(name);rr.name:=name;

                                                               end;

                                              repeat

                                               write('is there a new ');

                                               writeln('pass p # (y,n)');

                                               readln(ch);

                                              until (ch='y') or (ch='n');

                                              if (ch='y') then begin

                                              writeln('enter new pass p. #');

                                              readln(ticket);

                                              rr.pass:=ticket;

                                                                end;

                                              b:=b+1;

                                              rr.k:='n';rr.ticket:=b;

                                              seek(file1,i);

                                              write(file1,rr);

                                              f:=true;

                                             end

                                             else i:=i+1;

                          end;

 if (f=false) and (i>n) then writeln('name not found');

end;

{=========================================================================}

procedure tickets1(var n1:integer;fil11:str1;var file1:fil);

var            {gives a ticket for a person in class 1}

 t1:str;

 i:integer;

 rr:rec1;

 m:boolean;

begin

 writeln('enter name');readln(t1);m:=true;i:=1;reset(file1);

 while (i<=n1) and m do

                   begin

                    seek(file1,i);read(file1,rr);

                    if rr.name=t1 then

                                  begin

                                   if rr.k='n' then

                                               begin

                              writeln('====================================');

                              write(lst,'*** This is job ');

                              writeln(lst,'of: ',fil11,'***');

                              write(lst,'*** first class');

                              writeln(lst,' tick.#:',rr.ticket,' ***');

                              write(lst,'*** Name is:');

                              write(lst,rr.name);

                              write(lst,'.  Pass p is: ');

                              writeln(lst,rr.pass,' ***');

                              writeln('====================================');

                                                rr.k:='y';seek(file1,i);

                                                write(file1,rr);m:=false;

                                               end;

                                    if rr.k='y' then

                                                begin

                                                 write('ticket had been ');

                                                 writeln('given before');

                                                 m:=false;

                                                end;

 

                                  end

                                  else i:=i+1;

                   end;

   if (m=true) and (i>n1) then writeln('name not found');

end;

{======================================================================}

procedure tickets2(var n1:integer;fil11:str1;var file1:fil);

var        {gives tickets for all in class 1}

 i:integer;

 rr:rec1;

begin

 i:=1;reset(file1);

 while (i<=n1) do

              begin

               seek(file1,i);read(file1,rr);

               if rr.k='n' then

                           begin

                            writeln(lst,'Name of job is : *** ',fil11,'***');

                            writeln(lst,'=================================');

                            write(lst,'*** First class ***','.Ticket # is:');

                            writeln(lst,'***',rr.ticket,'***');

                            write(lst,'*** Name is: ',rr.name);

                            writeln(lst,'*** Pass p:',rr.pass,' ***');

                            writeln('==================================');

                            writeln(lst,' ');writeln(lst,' ');

                            rr.k:='y';seek(file1,i);write(file1,rr);

                           end;

               if rr.k='y' then writeln('Ticket had been given');i:=i+1;

              end;

end;

{====================================================================}

procedure tickets3(var n2:integer;fil11:str1;var file2:fil);

var        {gives a ticket  for a person in class 2}

 t1:str;

 i:integer;

 rr:rec1;

 m:boolean;

begin

 writeln('enter name');readln(t1);m:=true;i:=1;reset(file2);

 while (i<=n2) and m do

                    begin

                     seek(file2,i);read(file2,rr);

                     if rr.name=t1 then

                                   begin

                                    if rr.k='n' then

                                                begin

                                    write(lst,'*** This is job ');

                                    writeln(lst,'of:',fil11,'s ***');

                                    write(lst,'*** Second class. ');

                                    write(lst,'.Ticket # is : ');

                                    writeln(lst,rr.ticket,' ***');

                                    write(lst,'*** Name is: ');

                                    write(lst,rr.name);

                                    write(lst,'. Pass p');

                                    writeln(lst,rr.pass,' ***');

                                                 rr.k:='y';seek(file2,i);

                                                 write(file2,rr);m:=false;

                                                end;

                                       if rr.k='y'then begin

                                                        write('ticket had');

                                                       writeln('been given');

                                                        m:=false;

                                                       end;

                                    end

                                    else i:=i+1;

 

                              end;

 if (m=true) and (i>n2) then writeln('name not found');

end;

{=====================================================================}

procedure tickets4(var n2:integer;fil11:str1;var file2:fil);

var         {gives tickets for all in class 2}

 i:integer;

 rr:rec1;

begin

 i:=1;reset(file2);

 while (i<=n2) do

  begin

   seek(file2,i);read(file2,rr);

   if rr.k='n' then

               begin

                writeln(lst,'Name of job : ***',fil11,'s ***');

                writeln(lst,'=============================');

                writeln(lst,'* Second class','. Ticket # : ',rr.ticket,' *');

                writeln(lst,'** Name : ',rr.name,'. Pass p : ',rr.pass,'**');

                writeln(lst,'============================');writeln(lst,' ');

                writeln(lst,' ');

                rr.k:='y';seek(file2,i);write(file2,rr);

               end;

   if rr.k='y' then writeln('ticket had been given before');

   i:=i+1;

  end;

end;

{=============================================}

procedure results(t:integer;var n1:integer;filkk:str1;var file1:fil);

var                 {gives outputs of the two files}

  i,m1:integer;

  rr:rec1;

  ch:char;

begin

 if t=1 then number1(n1,file1,m1);

 if t=2 then number2(n1,file1,m1);writeln;

 write('this is file ',t,' of (',filkk,').# of full seats= ',m1);

 writeln('.# of empty = ',n1-m1,'.');textcolor(blue);

 writeln('this file contains a list of names,seats number,tickets numbers.');

 {assign(file1,filkk)};reset(file1);textcolor(blue);

 writeln('this class contains places for ',n1,' persons');

 for i:=1 to n1 do

                  begin

                   seek(file1,i);read(file1,rr);

                   write('name : ','(',rr.name,')');

                   write(' . pass p # : ','(',rr.pass,')');

                   write(' . ticket number : ','(',rr.ticket,').');

                   writeln('given a ticket: (',rr.k,')');

                   write('                  ');

                   writeln('seat # is : ',rr.seat);

                  end;

 readln;

 {close(file1);}

end;

{========================}

procedure major(var n1,n2:integer;var file1,file2:fil;var b:integer);

 var          {It do all the main process and calls all procedures}

  ansewer,ch:string;

  rr:rec1;

  wanted:str;

  m1,m2,k,i,g,k1:integer;

  hh:char;

 begin

  repeat

   textcolor(blue);clrscr;

   gotoxy(22,2);writeln('1:cancel in class 1');

   gotoxy(22,5);writeln('2:cancel in class 2');

   gotoxy(22,8);writeln('3:reserve in class 1');

   gotoxy(22,11);writeln('4:reserve in class 2');

   gotoxy(22,14);writeln('5:list of information in each class');

   gotoxy(22,17);writeln('6:tickets for persons in the job');

   gotoxy(22,20);writeln('7:changing any mistake');

   gotoxy(22,23);writeln('8:changing file sizes');

   hh:=readkey;

   case hh of

    '1':begin  clrscr;cancel1(n1,file1);      end;

    '2':begin  clrscr;cancel2(n2,file2);      end;

    '3':begin

         clrscr;

         number1(n1,file1,m1);

         writeln('first class:full seats(',m1,'),empty seats(',n1-m1,')');

         if m1<n1 then begin  b:=b+1;ticket1(n1,file1,b)  end;

         if m1>=n1 then begin

                         writeln('class 1 is full');number2(n2,file2,m2);

                         if m2<n2 then writeln('4:if class 2 is desired');

                        end;

        end;

    '4':begin

         clrscr;

         number2(n2,file2,m2);

         writeln('second class:full seats (',m2,'),empty seats (',n2-m2,')');

         if m2<n2 then begin b:=b+1;ticket2(n2,file2,b) end;

         if m2>=n2 then begin

                          writeln('class 2 is full ');

                          number1(n1,file1,m1);

                          if m1<n1 then writeln('3:if class 1 is desired');

                        end;

         end;

    '5':begin

           clrscr;results(1,n1,fil11,file1);

           writeln('///////////////////////////////////////////');writeln;

           results(2,n2,fil22,file2)

        end;

    '6':begin

         clrscr;

         gotoxy(20,5);writeln('a:ticket for any one in class 1');

         gotoxy(20,10);writeln('b:tickets for all in class 1');

         gotoxy(20,15);writeln('c:tickets for any one in class 2');

         gotoxy(20,20);writeln('d:tickets for all in class 2');

         hh:=readkey;

         case hh of

          'a':begin clrscr; tickets1(n1,fil11,file1);      end;

          'b':begin clrscr;tickets2(n1,fil11,file1);       end;

          'c':begin clrscr;tickets3(n2,fil11,file2);       end;

          'd':begin clrscr;tickets4(n2,fil11,file2);       end;

          else writeln('wrong key');

         end;

        end;

    '7':begin

         clrscr;

         gotoxy(20,10);

         writeln('g:for changing name or pass p in class 1');gotoxy(20,20);

         writeln('h:for changing name or pass p in class 2');{clrscr};

         hh:=readkey;

         case hh of

           'g':begin clrscr;change(n1,file1,b);  end;

           'h':begin clrscr;change(n2,file2,b);  end;

           else writeln('wrong key');

         end;

        end;

    '8':begin

          clrscr;gotoxy(27,10);writeln('o:changing size of class 1');

          gotoxy(27,20);writeln('p:changing size of class 2');

          hh:=readkey;

          case   hh of

            'o':begin

                  clrscr;

                  repeat

                   writeln('enter new size');readln(k1);

                   if k1<=n1 then writeln('new size must be bigger than old');

                  until k1>n1;

                  g:=n1;n1:=k1;

                  for i:=g+1 to n1 do

                              begin

                               rr.name:='$';rr.seat:=-1;rr.pass:='-1';

                               rr.ticket:=0;rr.k:='n';seek(file1,i);

                               write(file1,rr);

                              end;

                 end;

           'p':begin

                clrscr;

                repeat

                  writeln('enter new size');readln(k1);

                  if k1<=n2 then writeln('new size must be bigger than old');

                until k1>n2;

                g:=n2;n2:=k1;

                for i:=g+1 to n2 do

                             begin

                              rr.name:='$';rr.seat:=-1;rr.pass:='-1';

                              rr.ticket:=0;rr.k:='n';seek(file2,i);

                              write(file2,rr);

                             end;

                end;

            end;

      end;

      else writeln('wrong key');

   end;

   writeln('continue......if no press (n) , else press any other key');

   hh:=readkey;

  until hh='n';

 end;

{========================================================================}

begin  {main program}

 outline;clrscr;

 repeat

  writeln;

99:  writeln('open  files(o)...................creat new files(c)');

     readln(ch);writeln;

     until (ch='c') or (ch='o');

     if ch='c' then hh:='c';if ch='o' then hh:='o';

     case hh of

     'c':begin

          writeln('enter name for file 1');readln(fil11);

          findfirst(fil11,archive,dirinfo);

          if doserror=0 then begin writeln('file exists');delay(2000);

                                   goto 99;

                             end;

          fil22:=fil11+'s';

          {$i-}

          repeat

           writeln('enter # of seats available for first class');readln(n1);

          until ioresult=0;b:=0;

          {$i+}

          {$i-}

          repeat

           writeln('enter # of seats available for second class');readln(n2);

          until ioresult=0;

          {$i+}

          assign(file1,fil11);rewrite(file1);file51(n1,file1);

          assign(file2,fil22);rewrite(file2);file52(n2,file2);

          major(n1,n2,file1,file2,b);rr.ticket:=b;seek(file1,0);

          write(file1,rr);

          close(file1);close(file2);

         end;

 'o':    begin

          writeln('enter name for file 1');readln(fil11);

          findfirst(fil11,archive,dirinfo);

          if doserror <> 0 then begin   writeln('file not found');

                                        delay(2000);goto 99;

                                end;

          fil22:=fil11+'s';

          assign(file1,fil11);reset(file1);n1:=(filesize(file1))-1;

          assign(file2,fil22);reset(file2);n2:=(filesize(file2))-1;

          seek(file1,0);read(file1,rr);y1:=rr.ticket;b:=y1;

          seek(file2,0);read(file2,rr);y2:=rr.ticket;

          { if y1>y2 then b:=y1 else if y2>y1 then b:=y2};

          major(n1,n2,file1,file2,b);rr.ticket:=b;seek(file1,0);

          write(file1,rr);

          close(file1);close(file2);

         end

 end;

 end.