Programowanie obiektowe w C++ – System rezerwacji biletów w kinie cz. II
Gościnie autorem wpisu jest Adam Sawicki.
Zgodnie z obietnicą przystępujemy do budowy klasy Kino, trzymającej pieczę nad obiektami klasy Miejsce.
Zróbmy małe założenie. Wcześniej ustaliliśmy, że liczba miejsc w kinie jest stała. Przyjmijmy, że jest ich 30. Tablica będzie doskonałą strukturą, przechowującą te obiekty. Przeistoczmy w kod to, co do tej pory powiedzieliśmy:
class Kino {
private: // te składniki klasy będą prywatne
static const int ilosc_miejsc = 30; // przyjęta ilość miejsc
Miejsce wszystkie_miejsca[ilosc_miejsc]; // tablica przechowująca obiekty Miejsce
public: // te składniki klasy będą publiczne
Kino() // konstruktor domyślny
{
// co powinno się tutaj znaleźć?
}
};Umieśćmy powyższy kod pod kodem klasy Miejsce.
Ilość miejsc została zdefiniowana i zainicjalizowana jako stała statyczna klasy, aby umożliwić definicję tablicy wszystkie_miejsca.
Konstruktor domyślny powinien utworzyć 30 niezarezerwowanych miejsc z odpowiednio przypisanymi numerami.
Kino()
{
int i = 0;
for(i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i] = miejsce("","",i+1,false); // utwórz obiekt miejsce o numerze i+1
}
}Od teraz każdy obiekt Kino będzie zawierał 30 obiektów Miejsce ponumerowanych od 1 do 30. Przekonajmy się o tym na własne oczy :-) Uzupełnijmy klasę Kino o metodę wyswietl_wszystkie_miejca:
void wyswietl_wszystkie_miejsca()
{
int i = 0;
for(i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i].wypisz();
}
cout << endl << "Wszystkich miejsc: " << ilosc_miejsc << endl;
}W funkcji głównej zadeklarujmy obiekt klasy Kino:
Kino kino;
i zobaczmy jak wygląda stan miejsc:
kino.wyswietl_wszystkie_miejsca();
Kod możemy umieścić tuż przed wyświetleniem menu głównego. Po skompilowaniu i uruchomieniu programu widzimy, że w kinie dostępnych jest 30 wolnych miejsc. Oczywiście podczas rozbudowy programu wyświetlenie miejsc można usunąć. Była to tylko dla nas tymczasowa informacja.
Mamy ładne menu, klasę Miejsce i klasę Kino. Nic nie stoi już na przeszkodzie, aby zacząć uzupełniać nasze menu, obecnie wyglądające tak:
switch(znak) //operator sterujący
{
case '1':
cout << "Dodaj rezerwacje" << endl;
break;
case '2':
cout << "Anuluj rezerwacje" << endl;
break;
case '3':
cout << "Sprawdz miejsce" << endl;
break;
case '4':
cout << "Wyswietl wszystkie miejsca" << endl;
break;
case '5':
cout << "Wyswietl wolne miejsca" << endl;
break;
case '6':
cout << "Wyswietl zarezerwowane miejsca" << endl;
break;
}Opcja numer 4 jest idealnym miejscem na wywołanie metody wyswietl_wszystkie_miejsca. Po modyfikacji wygląda ona następująco:
case '4':
kino.wyswietl_wszystkie_miejsca();
break;Jednak nie zadziała to zgodnie z naszymi założeniami. Po wywołaniu metody wyswietl_wszystkie_miejsca() obiektu kino program wykona:
system("cls");
wyswietl_menu_glowne();Tym samym z powrotem powrócimy do menu głównego. W związku z tym proponuję napisanie dodatkowej funkcji
void czekaj_na_klawisz()
{
cout << endl << "(Wcisnij dowolny przycisk, aby wyjsc)" << endl;
getchar();
}Kod umieśćmy na samym początku, pod using namespace std;.
Wstawienie jej dowolnym miejscu kodu spowoduje jego zatrzymanie, umożliwiając mam przeczytanie informacji podanej przez program.
Teraz opcja numer 4:
case '4'
kino.wyswietl_wszystkie_miejsca();
czekaj_na_klawisz()
break;daje nam mozliwość szybkiego podglądu stanu rezerwacji.
W bardzo podobny sposób zmodyfikujemy opcje 5 i 6. Wystarczy niewielki if dodany do metody wyswietl_wszystkie_miejsca i po robocie.
void wyswietl_wolne_miejsca()
{
int i = 0;
int wolne = 0; // dodajmy informację o ilości wolnych miejsc
for(i = i; i < ilosc_miejsc; i++) // sprawdźmy wszystkie 30 miejsc
{
if(!wszystkie_miejsca[i].jestZarezerwowane()) // sprawdżmy czy miejsce jest wolne
{
wszystkie_miejsca[i].wypisz();
wolne++;
}
}
cout << endl << "Wolnych miejsc: " << wolne << endl;
}
void wyswietl_zarezerwowane_miejsca()
{
int i = 0;
int zarezerwowane = 0; // dodajmy informację o ilości zarezerwowanych miejsc
for(i = i; i < ilosc_miejsc; i++)
{
if(wszystkie_miejsca[i].jestZarezerwowane()) // sprawdzamy czy miejsce jest zarezerwowane
{
wszystkie_miejsca[i].wypisz();
zarezerwowane++;
}
}
cout << endl << "Zarezerwowanych miejsc: " << zarezerwowane << endl;
}Ale cóż to za metoda jestZarezerwowane()? Zdziwienie jest uzasadnione ponieważ jeszcze jej nie napisaliśmy a już chcemy użyć. Dlatego jak najszybciej uzupełnijmy klasę Miejsce o brakujące linijki aby nie narazić się naszemu kompilatorowi :-)
bool jestZarezerwowane()
{
return zarezerwowane;
}Po uzupełnieniu funkcji switch nasz program coraz bardziej nabiera charakteru ;-)
switch(znak) //operator sterujący
{
case '1':
cout << "Dodaj rezerwacje" << endl;
break;
case '2':
cout << "Anuluj rezerwacje" << endl;
break;
case '3’:
cout << "Sprawdz miejsce" << endl;
break;
case '4':
kino.wyswietl_wszystkie_miejsca();
czekaj_na_klawisz();
break;
case '5':
kino.wyswietl_wolne_miejsca();
czekaj_na_klawisz();
break;
case '6':
kino.wyswietl_zarezerwowane_miejsca();
czekaj_na_klawisz();
break;
}Pora na dokonanie pierwszej rezerwacji w systemie. Jej etapy będą następujące:
- wybór miejsca
- sprawdzenie czy miejsce istnieje
- jeżeli tak, sprawdzenie czy miejsce jest wolne
- pobranie imienia
- pobranie nazwiska
Dodajmy do klasy Kino metodę dodaj_rezerwacje oraz wybierz_miejsce:
void dodaj_rezerwacje()
{
cout << "Dodaj rezerwacje:" << endl << endl << endl; // informacja, co będziemy robić
wyswietl_wolne_miejsca(); // skorzystajmy z gotowej funkcji aby zobaczyć jakie miejsca są dostępne
wybierz_miejsce(); // tej funkcji jeszcze nie mamy. Tutaj wybierzemy i sprawdzimy miejsce.
if(wybrane_miejsce != 0){ // jeżeli wybrane miejsce istnieje
wszystkie_miejsca[wybrane_miejsce-1].rezerwuj(); // dokonajmy rezerwacji
}
czekaj_na_klawisz();
}
//Jako że funkcja wybierz_miejsce jest niezdefiniowana, dodajmy ją jako metodę klasy Kino:
void wybierz_miejsce()
{
cout << "Wybierz numer miejsca (lub 0 aby wyjsc):" << endl << endl; // informacja dla użytkownika
cin >> wybrane_miejsce; // prośba o podanie numeru miejsca
if(wybrane_miejsce < 0 || wybrane_miejsce > ilosc_miejsc) // sprawdzamy czy miejsce istnieje
{
// jeżeli podany numer miejsca leży poza dostępnym zakresem
if(wybrane_miejsce != 0) // jeżeli wybrany numer jest różny od 0
{
wybrane_miejsce = 0; // informacja, że nie wybrano miejsca
cout<<"Nie ma takiego miejsca"<<endl<<endl; // informacja dla użytkownika
}
}
}Kod ten pobiera numer miejsca od użytkownika. Jeżeli nie należy on do zakresu dostępnych miejsc i jest różny od 0, podawany jest odpowiedni komunikat. Numer 0 będzie informacją, ze żadne z miejsc nie zostało wybrane.
Uzupełnijmy funkcję switch:
case '1':
kino.dodaj_rezerwacje();
break;Od teraz kino może obsługiwać klientów bez obawy o brak wolnych miejsc. Dodatkowym ułatwieniem będzie możliwość sprawdzenia stanu wybranego miejsca. Przyda się to w przypadku rozbudowy kina, kiedy ogarnięcie wzrokiem listy wszystkich rezerwacji nie będzie już tak wygodne. Wzbogaćmy klasę Kino o odpowiednią metodę:
void sprawdz_miejsce()
{
cout << "Sprawdz rezerwacje:" << endl << endl << endl; // informacja dla użytkownik
wybierz_miejsce(); // wybieramy miejsce
if(wybrane_miejsce != 0) // jeżeli wybrany numer jest OK
{
wszystkie_miejsca[wybrane_miejsce-1].wypisz(); // wypiszmy informację o wybranym miejscu
}
czekaj_na_klawisz(); // pozwól przeczytać informację
}Funkcja po prostu wypisuje informację o wybranym przez nas miejscu.
Dobrze, miejsca zarezerwowane, obsługa kina kończy przygotowania do seansu a w powietrzu już unosi się zapach popcornu. Pech chciał, że panu Jankowi zepsuł się samochód i niestety nie dotrze na seans na czas. Jedyne co pozostaje to anulować rezerwację. Ehh…tej opcji jeszcze nie mamy. Ale to kwestia chwili. Napisanie metody anuluj_rezerwacje dla klasy Kino będzie bardzo proste. Tym bardziej, że klasa Miejsce już takową posiada. Wystarczy tylko wybrać odpowiednią metodę:
void anuluj_rezerwacje()
{
cout << "Anuluj rezerwacje:" << endl << endl << endl; // informacja dla użytkownika
wyswietl_zarezerwowane_miejsca(); // pokaż listę zajętych miejsc
wybierz_miejsce(); // wybierzmy jedno z nich
if(wybrane_miejsce != 0) // jeżeli wybór jest OK
{
wszystkie_miejsca[wybrane_miejsce-1].anuluj_rezerwacje(); // anulujemy rezerwację
}
czekaj_na_klawisz(); // pozwólmy przeczytać informację
}Opcje wyboru są kompletne:
switch(znak) //operator sterujący czyli jakaś zmienna zawierająca liczbę np. typu int
{
case '1':
kino.dodaj_rezerwacje();
break;
case '2':
kino.anuluj_rezerwacje();
break;
case '3':
kino.sprawdz_miejsce();
break;
case '4':
kino.wyswietl_wszystkie_miejsca();
czekaj_na_klawisz();
break;
case '5':
kino.wyswietl_wolne_miejsca();
czekaj_na_klawisz();
break;
case '6':
kino.wyswietl_zarezerwowane_miejsca();
czekaj_na_klawisz();
break;
}Teraz kino może przyjąć dodatkową osobę na miejsce pana Janka :-)
Oto nasz system w całości:
#include <iostream>
#include <stdio.h>
using namespace std;
void wyswietl_menu_glowne() // funkcja bez argumentów
{
cout << "System rezerwacji miejsc - Singlekino.pl" << endl << endl; // tworzymy menu
cout << "Wybierz opcje:" << endl << endl;
cout << "1 - Dodaj rezerwacje" << endl;
cout << "2 - Usun rezerwacje" << endl;
cout << "3 - Sprawdz miejsce" << endl;
cout << "4 - Wyswietl wszystkie rezerwacje" << endl;
cout << "5 - Wyswietl wolne miejsca" << endl;
cout << "6 - Wyswietl zarezerwowane miejsca" << endl;
cout << "7 - Zamknij system" << endl;
}
void czekaj_na_klawisz()
{
cout << endl << "(Wcisnij dowolny przycisk, aby wyjsc)" << endl;
getchar();
}
class Miejsce // słowo class i nazwa klasy, w tym przypadku data
{ // otwieramy nawias klamrowy
public: // składniki klasy będą publiczbe
char imie[20]; // składniki klasy
char nazwisko[20];
int numer;
bool zarezerwowane;
Miejsce()
{
strcpy(imie, "");
strcpy(nazwisko, "");
numer = 0;
zarezerwowane = false;
}
Miejsce(char t_imie[], char t_nazwisko[], int t_numer, bool t_zarezerwowane)
{
strcpy(imie, t_imie);
strcpy(nazwisko, t_nazwisko);
numer = t_numer;
zarezerwowane = t_zarezerwowane;
}
void rezerwuj()
{
if(zarezerwowane)
{
cout << "Miejsce jest juz zarezerwowane.";
}
else
{
cout << "Podaj imie: ";
cin >> imie;
cout << "Podaj nazwisko: ";
cin >> nazwisko;
zarezerwowane = true;
cout << endl << "Miejsce " << numer << " zostalo zarezerwowane dla: " << imie << " " << nazwisko << ".";
}
}
void anuluj_rezerwacje()
{
if(zarezerwowane)
{
strcpy(imie, "");
strcpy(nazwisko, "");
zarezerwowane = false;
cout << "Rezerwacja anulowana." << endl;
}
else
{
cout << "Nie ma takiej rezerwacji." << endl;
}
}
void wypisz() // funkcja wypisująca
{
if(zarezerwowane)
{
cout << "Numer: " << numer << ", " << imie << " " << nazwisko << endl;
}
else
{
cout << "Numer: " << numer << " - miejsce wolne" << endl;
}
}
bool jestZarezerwowane()
{
return zarezerwowane;
}
}; // zamykamy nawias klamrowy i dajemy ŚREDNIK !
class Kino // słowo class i nazwa klasy, w tym przypadku Kino
{
private: //składniki klasy będą prywatne
static const int ilosc_miejsc = 30; //stała
int wybrane_miejsce;
Miejsce wszystkie_miejsca[ilosc_miejsc];
public: // składniki klasy będą publiczbe
Kino() // konstruktor domyślny
{
wybrane_miejsce = 0;
int i = 0;
for(i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i] = Miejsce("", "", i+1, false);
}
}
void wybierz_miejsce()
{
cout << "Wybierz numer miejsca (lub 0 aby wyjsc):" << endl << endl;
cin >> wybrane_miejsce;
if(wybrane_miejsce < 0 || wybrane_miejsce > ilosc_miejsc)
{
if(wybrane_miejsce != 0) {
wybrane_miejsce = 0;
cout << "Nie ma takiego miejsca" << endl << endl;
}
}
}
void wyczysc_miejsce()
{
wybrane_miejsce = 0;
}
void wyswietl_wszystkie_miejsca()
{
int i = 0;
for(i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i].wypisz();
}
cout << endl << "Wszystkich miejsc: " << ilosc_miejsc << endl;
}
void wyswietl_wolne_miejsca()
{
int i = 0;
int wolne = 0;
for(i = i; i < ilosc_miejsc; i++)
{
if(!wszystkie_miejsca[i].jestZarezerwowane())
{
wszystkie_miejsca[i].wypisz();
wolne++;
}
}
cout << endl << "Wolnych miejsc: " << wolne << endl;
}
void wyswietl_zarezerwowane_miejsca()
{
int i = 0;
int zarezerwowane = 0;
for(i = i; i < ilosc_miejsc; i++)
{
if(wszystkie_miejsca[i].jestZarezerwowane())
{
wszystkie_miejsca[i].wypisz();
zarezerwowane++;
}
}
cout << endl << "Zarezerwowanych miejsc: " << zarezerwowane << endl;
}
void dodaj_rezerwacje()
{
cout << "Dodaj rezerwacje:" << endl << endl << endl;
wyswietl_wolne_miejsca();
wybierz_miejsce();
if(wybrane_miejsce != 0){
wszystkie_miejsca[wybrane_miejsce-1].rezerwuj();
}
czekaj_na_klawisz();
}
void anuluj_rezerwacje()
{
cout << "Anuluj rezerwacje:" << endl << endl << endl;
wyswietl_zarezerwowane_miejsca();
wybierz_miejsce();
if(wybrane_miejsce != 0) {
wszystkie_miejsca[wybrane_miejsce-1].anuluj_rezerwacje();
}
czekaj_na_klawisz();
}
void sprawdz_miejsce()
{
cout << "Sprawdz rezerwacje:" << endl << endl << endl;
wybierz_miejsce();
if(wybrane_miejsce != 0) {
wszystkie_miejsca[wybrane_miejsce-1].wypisz();
wyczysc_miejsce();
}
czekaj_na_klawisz();
}
}; // zamykamy nawias klamrowy i dajemy ŚREDNIK !
int main()
{
Kino kino; // obiekt typu Kino
char znak; // tu zapiszemy wciśnięty klawisz
//kino.wyswietl_wszystkie_miejsca();
wyswietl_menu_glowne();
znak =getchar(); // program pobiera znak
while(znak!='7') //jeśli nie wybraliśmy 3, czyli nie chcemy kończyć to:
{
switch(znak) //operator sterujący czyli jakaś zmienna zawierająca liczbę np. typu int
{
case '1':
kino.dodaj_rezerwacje();
break;
case '2':
kino.anuluj_rezerwacje();
break;
case '3':
kino.sprawdz_miejsce();
break;
case '4':
kino.wyswietl_wszystkie_miejsca();
czekaj_na_klawisz();
break;
case '5':
kino.wyswietl_wolne_miejsca();
czekaj_na_klawisz();
break;
case '6':
kino.wyswietl_zarezerwowane_miejsca();
czekaj_na_klawisz();
break;
}
wyswietl_menu_glowne();
znak = getchar();// jeszcze raz dokonujemy wyboru
} // tutaj pętla zawraca i jeszcze raz sprawdza warunek
return 0;
}Właściciel kina już planuje budowę kolejnych sal :-)
Adam Sawicki – programista aplikacji internetowych, obserwator nowych trendów w świecie startup’ów i technologii webowych. Autor kursu C++ dla początkujących www.cpp.jcom.pl.
Przy wywoływaniu tego konstruktora w pętli :
wszystkie_miejsca[i] = miejsce(„”,””,i+1,false);
kompilator zgłasza błąd, że w deklaracji konstruktora jest (char _[], char _[], int, bool) a przy wywoływaniu char jest bez kwadratowych nawiasów [ ] , jak to obejść?
Mógłbyś wkleić fragment kodu z którym masz problem?
Pozdrawiam,
Łukasz
Kino()
{
int i = 0;
for(i = i; i < ilosc_miejsc; i++) { wszystkie_miejsca[i] = miejsce("","",i+1,false); // utwórz obiekt miejsce o numerze i+1 } }Ten fragment : miejsce("","",i+1,false) nie działa dla deklaracji konstruktora :Miejsce(char t_imie[], char t_nazwisko[], int t_numer, bool t_zarezerwowane) { strcpy(imie, t_imie); strcpy(nazwisko, t_nazwisko); numer = t_numer; zarezerwowane = t_zarezerwowane; }ale po przerobieniu kodu tak aby pracował na typie string imie zamiast na typie char imie[30] itd wszystko działa jak należy :)
W jaki sposób to przerobiłeś?
Kod na stronie nie kompiluje się poprawnie, dla przyszłych osób, poniżej kody po kilku poprawkach który się kompiluje:
#include
#include
#include
using namespace std;
void wyswietl_menu_glowne() // funkcja bez argumentów
{
cout << "System rezerwacji miejsc – Singlekino.pl" << endl << endl; // tworzymy menu
cout << "Wybierz opcje:" << endl << endl;
cout << "1 – Dodaj rezerwacje" << endl;
cout << "2 – Usun rezerwacje" << endl;
cout << "3 – Sprawdz miejsce" << endl;
cout << "4 – Wyswietl wszystkie rezerwacje" << endl;
cout << "5 – Wyswietl wolne miejsca" << endl;
cout << "6 – Wyswietl zarezerwowane miejsca" << endl;
cout << "7 – Zamknij system" << endl;
}
void czekaj_na_klawisz()
{
cout << endl << "(Wcisnij dowolny przycisk, aby wyjsc)" <imie = t_imie;
this->nazwisko = t_nazwisko;
numer = t_numer;
zarezerwowane = t_zarezerwowane;
}
void rezerwuj()
{
if (zarezerwowane)
{
cout << "Miejsce jest juz zarezerwowane.";
}
else
{
cout <> imie;
cout <> nazwisko;
zarezerwowane = true;
cout << endl << "Miejsce " << numer << " zostalo zarezerwowane dla: " << imie << " " << nazwisko << ".";
}
}
void anuluj_rezerwacje()
{
if (zarezerwowane)
{
imie = "-";
nazwisko = "-";
zarezerwowane = false;
cout << "Rezerwacja anulowana." << endl;
}
else
{
cout << "Nie ma takiej rezerwacji." << endl;
}
}
void wypisz() // funkcja wypisująca
{
if (zarezerwowane)
{
cout << "Numer: " << numer << ", " << imie << " " << nazwisko << endl;
}
else
{
cout << "Numer: " << numer << " – miejsce wolne" << endl;
}
}
bool jestZarezerwowane()
{
return zarezerwowane;
}
}; // zamykamy nawias klamrowy i dajemy ŚREDNIK !
class Kino // słowo class i nazwa klasy, w tym przypadku Kino
{
private: //składniki klasy będą prywatne
static const int ilosc_miejsc = 30; //stała
int wybrane_miejsce;
Miejsce wszystkie_miejsca[ilosc_miejsc];
public: // składniki klasy będą publiczbe
Kino() // konstruktor domyślny
{
wybrane_miejsce = 0;
int i = 0;
for (i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i] = Miejsce("", "", i + 1, false);
}
}
void wybierz_miejsce()
{
cout << "Wybierz numer miejsca (lub 0 aby wyjsc):" << endl <> wybrane_miejsce;
if (wybrane_miejsce ilosc_miejsc)
{
if (wybrane_miejsce != 0) {
wybrane_miejsce = 0;
cout << "Nie ma takiego miejsca" << endl << endl;
}
}
}
void wyczysc_miejsce()
{
wybrane_miejsce = 0;
}
void wyswietl_wszystkie_miejsca()
{
int i = 0;
for (i = i; i < ilosc_miejsc; i++)
{
wszystkie_miejsca[i].wypisz();
}
cout << endl << "Wszystkich miejsc: " << ilosc_miejsc << endl;
}
void wyswietl_wolne_miejsca()
{
int i = 0;
int wolne = 0;
for (i = i; i < ilosc_miejsc; i++)
{
if (!wszystkie_miejsca[i].jestZarezerwowane())
{
wszystkie_miejsca[i].wypisz();
wolne++;
}
}
cout << endl << "Wolnych miejsc: " << wolne << endl;
}
void wyswietl_zarezerwowane_miejsca()
{
int i = 0;
int zarezerwowane = 0;
for (i = i; i < ilosc_miejsc; i++)
{
if (wszystkie_miejsca[i].jestZarezerwowane())
{
wszystkie_miejsca[i].wypisz();
zarezerwowane++;
}
}
cout << endl << "Zarezerwowanych miejsc: " << zarezerwowane << endl;
}
void dodaj_rezerwacje()
{
cout << "Dodaj rezerwacje:" << endl << endl << endl;
wyswietl_wolne_miejsca();
wybierz_miejsce();
if (wybrane_miejsce != 0) {
wszystkie_miejsca[wybrane_miejsce – 1].rezerwuj();
}
czekaj_na_klawisz();
}
void anuluj_rezerwacje()
{
cout << "Anuluj rezerwacje:" << endl << endl << endl;
wyswietl_zarezerwowane_miejsca();
wybierz_miejsce();
if (wybrane_miejsce != 0) {
wszystkie_miejsca[wybrane_miejsce – 1].anuluj_rezerwacje();
}
czekaj_na_klawisz();
}
void sprawdz_miejsce()
{
cout << "Sprawdz rezerwacje:" << endl << endl << endl;
wybierz_miejsce();
if (wybrane_miejsce != 0) {
wszystkie_miejsca[wybrane_miejsce – 1].wypisz();
wyczysc_miejsce();
}
czekaj_na_klawisz();
}
}; // zamykamy nawias klamrowy i dajemy ŚREDNIK !
int main()
{
Kino kino; // obiekt typu Kino
char znak; // tu zapiszemy wciśnięty klawisz
//kino.wyswietl_wszystkie_miejsca();
wyswietl_menu_glowne();
znak = getchar(); // program pobiera znak
while (znak != '7') //jeśli nie wybraliśmy 3, czyli nie chcemy kończyć to:
{
switch (znak) //operator sterujący czyli jakaś zmienna zawierająca liczbę np. typu int
{
case '1':
kino.dodaj_rezerwacje();
break;
case '2':
kino.anuluj_rezerwacje();
break;
case '3':
kino.sprawdz_miejsce();
break;
case '4':
kino.wyswietl_wszystkie_miejsca();
czekaj_na_klawisz();
break;
case '5':
kino.wyswietl_wolne_miejsca();
czekaj_na_klawisz();
break;
case '6':
kino.wyswietl_zarezerwowane_miejsca();
czekaj_na_klawisz();
break;
}
wyswietl_menu_glowne();
znak = getchar();// jeszcze raz dokonujemy wyboru
} // tutaj pętla zawraca i jeszcze raz sprawdza warunek
return 0;
}