2013-12-06 2 views
2

Я должен разработать систему бронирования билетов для кинотеатра, в котором есть только 50 мест (5 рядов по 10 мест каждый)
Мне дали класс Cinema ниже, и это должно не быть модифицированаC++ class - Array Объекты

class Cinema{ 
    private: 
     Ticket ticket[50]; // not sure what it is going on 
    public: 
     Cinema(); //constructor 
     double purchaseTicket(int); // ticket ID as parameter, check if it is available, if so update it as unavailable. If not, return 0. 
     void listAll(); 
}; 

И это класс билет

class Ticket{ 
    private: 
     int ID[50]; //ticket ID (correct to store data in array?) 
     int price; // ticket price 
     // have to provide set and get function for ID and price, have no idea even I've googled on this topic 
     bool available[50]; // availability of ticket 
    public: 
     Ticket(); //constructor 
     bool status(int); // return availability of ticket 
     void setAvailable(int); //update status of ticket as available 
     void buy(int); //update status of ticket as unavailable 
}; 

Это основная функция (при), которая имитирует функцию покупки билетов

int main(){ 
    Cinema myCinema; 
    myCinema.listAll(); // available seats print "O", otherwise print "X" 

    //simulate to purchse ticket 15, 16, 17 
    double price = 0; 
    price += myCinema.purchaseTicket(15); 
    price += myCinema.purchaseTicket(16); 
    price += myCinema.purchaseTicket(17); 

    cout <<"\nTotal Price: $" << price << endl << endl; 

    //print the current status 
    myCinema.listAll(); 

    return 0; 
} 

может кто-нибудь сказать мне, как использовать «билет на билет [50];» ? это беспокоит меня много, и многие шаги не могут быть завершены.
и сообщите также, если есть какие-либо проблемы в классе билетов

+0

Вы утверждаете, что не можете создать массив объектов? если да, то с какой проблемой вы сталкиваетесь? –

+1

Ваш текст должен объяснить, какие массивы достаточно тщательно. – WhozCraig

+0

Я думаю, что это вопрос о дизайне, а не о массивах. – john

ответ

0

У каждого места есть билет. Поэтому есть пятьдесят билетов на покупку. Это немного странный способ взглянуть на вещи, но я думаю, что вы можете придумать «билет» как синоним «места».

Ваш билет неправильный. Помните, что объект билета представляет собой индивидуальный билет (который обозначает отдельное место). Поэтому один билет имеет один идентификатор и одну доступность. Поэтому массивы в классе билетов ошибочны.

class Ticket{ 
    private: 
     int ID; //ticket ID 
     int price; // ticket price 
     bool available; // availability of ticket 
    public: 
     ... 
}; 

Сеттеры и добытчиками являются тривиальными

int Ticket::getPrice() const { return price; } 
void Ticket::setPrice(int p) { price = p; } 

Похожие дост.

Только что заметил, что Cinema::purchaseTicket возвращает double, почему я понятия не имею.

0

Вы не можете использовать систему билетов непосредственно, так как она является частным членом Cinema. Вы можете получить доступ к нему только с помощью функции покупки, упомянутой в классе. Поскольку этот класс не следует изменять, это единственный способ. (Примечание: int array для ID-члена неверен, используйте только int).

Однако, если вы должны были изменить этот класс, чтобы сделать билет билетов [50], как общественности,

пример того, как использовать его следующим образом:

myCinema.ticket [0] .id для доступа ID первого билета (предпочтительно использовать массив символов для хранения билетов ID, иначе только INT: целочисленных массив является неправильным)

доступа м угли и хотите через оператор точки.

+0

Из метода' Cinema :: purchaseTicket' видно, что идентификатор билета является целым числом, а не массивом символов. – john

+0

Тем не менее, он спросил в комментарии рядом с идентификатором билета в своем классе, правильно ли хранить идентификатор в виде массива int, что неверно. Это должно быть просто int (в его случае) – SoulRayder

+0

Согласен, но в вашем ответе используется массив символов, который может смутить OP. – john