Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

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.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , , , ,

Dodaj komentarz

Komentarze (5)

  • zzzz pisze:

    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ść?

    • lukas124 pisze:

      Mógłbyś wkleić fragment kodu z którym masz problem?

      Pozdrawiam,
      Łukasz

      • zzzz pisze:

        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 :)

      • Krzysiek Krzysiek pisze:

        W jaki sposób to przerobiłeś?

  • Krzysiek Krzysiek pisze:

    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;
    }

Odpowiedz

Twój adres e-mail nie zostanie opublikowany.

Pin It on Pinterest