Program do rezerwacji miejsc w kinie

Hatehatehateho

Instrukcja obsługi
Po otwarciu programu wyświetla nam się menu w którym mamy do wyboru: Rezerwacja miejsca, zwolnienie miejsca, obłożenie kina i koniec.

http://zapodaj.net/596b9bcef1e4a.png.html

Opcja „Rezerwacja miejsca” jak sama nazwa wskazuje służy do zarezerwowania miejsca w kinie. Po wybraniu tej opcji wyświetla nam się mapa sali kinowej.

http://zapodaj.net/dd25cf877d5c3.png.html

Miejsce wolne jest oznaczone znakiem „0”, a zajęte czerwonym znakiem „X”.
Pod mapą sali program prosi nas o wybranie numeru rzędu. Wpisujemy liczbę od 1 do 10 i zatwierdzamy klawiszem ENTER. Następnie jesteśmy proszeni o wybranie miejsca w wybranym rzędzie robimy to samo co poprzednio i miejsce jest zarezerwowane.
UWAGA!!! Jeżeli wpiszemy miejsce powyżej liczby 10 program wyświetli nam, że miejsce jest zajęte! Oznacza to, że nie ma takiego miejsca w sali kinowej.

http://zapodaj.net/d1869343686a9.png.html

Jeżeli wpiszemy zamiast liczby literę program zakończy działanie i się wyłączy.

Opcja Zwolnij miejsce usuwa zarezerwowane miejsce w kinie. Gdy wybierzemy tą opcję z menu zostanie wyświetlona mapa z zajętymi miejscami oznaczonymi znakiem „X”.

http://zapodaj.net/cbdcf27de63b6.png.html

Dalej musimy zrobić to co przy pierwszej opcji menu, czyli rezerwacji, wybrać miejsce i rząd.
Opcja obłożenie kina pokazuje zajęte miejsca w kinie i wyświetla procent w jakim kino jest przepełnione.

Ostatnia opcja menu- "Koniec" służy do zakończenia pracy programu. Rezerwacje nie zostaną zapisane jeśli zamkniemy program!

program szkielet;
uses crt;
type kino = array[1..10,1..10] of char;
var wybor : byte;
        a : kino;
        i,j : byte;
procedure Cursoroff;assembler;
asm
   mov ah,01h
   mov ch,10h
   mov cl,00h
   int 10h
end;
procedure Cursoron;assembler;
asm
   mov ah,01h
   mov ch,06h
   mov cl,07h
   int 10h
end;

procedure piszmenu(ktory:byte);

begin
  textbackground(black);
  textcolor(white);
  gotoxy(1,1); write('┌────── MENU ──────┐');
  gotoxy(1,2); write('│                               │'); {1} komentarz: ta tabelka musi się trzymać kupy. 
  gotoxy(1,3); write('│                               │'); {2}
  gotoxy(1,4); write('│                               │'); {3}
  gotoxy(1,5); write('│                               │'); {4}
  gotoxy(1,6); write('│                               │'); {5}
  gotoxy(1,7); write('└─────────────────┘');
  gotoxy(2,2);
  if ktory=1 then begin
                    textbackground(white);
                    textcolor(black);
                    write('Rezerwuj miejsce ');
                    textbackground(black);
                    textcolor(white);
                  end
             else begin
                    write('Rezerwuj miejsce ');
                  end;
  gotoxy(2,3);
  if ktory=2 then begin
                    textbackground(white);
                    textcolor(black);
                    write('Zwolnij miejsce  ');
                    textbackground(black);
                    textcolor(white);
                  end
             else begin
                    write('Zwolnij miejsce  ');
                  end;
  gotoxy(2,4);
  if ktory=3 then begin
                    textbackground(white);
                    textcolor(black);
                    write('Oblozenie kina   ');
                    textbackground(black);
                    textcolor(white);
                  end
             else begin
                    write('Oblozenie kina   ');
                  end;
  gotoxy(2,5);
  if ktory=4 then begin
                    textbackground(white);
                    textcolor(black);
                    write('Koniec           ');
                    textbackground(black);
                    textcolor(white);
                  end
             else begin
                    write('Koniec           ');
                  end;

end;
Function menu: byte;
var i : integer;
    z : char;
begin
  i:=1;
  repeat
    piszmenu(i);
    z:=readkey;
    if ord(z)=0 then begin
                       z:=readkey;
                       case ord(z) of
                       72: if i-1<1 then i:=4
                                    else i:=i-1; {swg}
                       80: if i+1>4 then i:=1
                                    else i:=i+1; {swd}
                       71: i:=1; {home}
                       79: i:=4; {end}
                       end;
                     end;
  until ord(z)=13;
  menu:=i;
end;
procedure wys_kino;
begin
  window(40,1,79,20);
  clrscr;
  gotoxy(1,1);
  write('  1 2 3 4 5 6 7 8 9 10');
  for i:=1 to 10 do
  begin
    gotoxy(1,1+i);
    write(i,' ');
    for j:=1 to 10 do
    if a[i,j]='X' then begin
                         textcolor(red);
                         write(a[i,j]);
                         normvideo;
                         write(' ');
                       end
                   else write(a[i,j],' ');

  end;
end;
procedure rezerwacja;
var r,m : byte;
begin
  wys_kino;
  gotoxy(1,13);
  write('Nr rzedu: ');
  readln(r);
  write('Nr miejsca: ');
  readln(m);
  if a[r,m]='0' then a[r,m]:='X'
                else begin
                       writeln('Miejsce jest zajete');
                       readkey;
                     end;




end;
procedure anulujrez;
var r,m : byte;
begin
  wys_kino;
  gotoxy(1,13);
  write('Nr rzedu: ');
  readln(r);
  write('Nr miejsca: ');
  readln(m);
  if a[r,m]='X' then a[r,m]:='0'
                else begin
                       writeln('Miejsce jest wolne');
                       readkey;
                     end;





end;
procedure oblozenie;
var i,j,ile : word;
begin
  wys_kino;
  ile:=0;
  for i:=1 to 10 do
    for j:=1 to 10 do
    if a[i,j]='X' then ile:=ile+1;
  gotoxy(1,13);
  writeln('Oblozenie kina: ',ile,'%');
  readkey;

end;
begin
  for i:=1 to 10 do
    for j:=1 to 10 do
        a[i,j]:='0';
  repeat

      window(1,1,79,24);
      clrscr;
      cursoroff;
      wybor:=menu;
      cursoron;
      gotoxy(1,23);
      case wybor of
      1: begin
           rezerwacja;
         end;
      2: begin
           anulujrez;
         end;
      3: begin
           oblozenie;
         end;
      end;
   until wybor=4;
end.

Dodaje załącznik. Kod w pliku .pas i plik .exe

KINO.rar

4 komentarzy

@Satanistyczny Awatar: serio komentujesz kod gościa, który ostatni raz logował się 5 lat temu?

Assembler do włączania/wyłączania kursora? Serio? Sekwencje sterujące ukradli? Działa i pod DOS i pod Unixowe TTY. Do tego ify z który powinny być zamienione na case'y i zmiany kolorów parami można dać do osobnej procedury. Wtedy to będzie 10 razy przyjemniejsze w lekturze.

Postaraj się umieścić screeny na naszym serwerze i wyświetlić je jako obrazki. Fotki z innych serwerów z czasem znikają i potem artykuł jest dziurawy.