Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <iomanip>
- using namespace std;
- // Глобальная константа и переменная:
- // Объявите (не определяйте!) Пять классов с именем Bill, Customer, Date, Order и Room.
- // Определите постоянный переменный отель как строку с именем «Duisburg Happy Sleeping»,
- // постоянное переменное numberOfRooms как натуральное число со значением 4,
- // поле с именем комнаты с номеромOfRooms Указатели типа Room, указатели клиентов,
- // инициализированные нулем типа Customer и указатель инициализирует порядки с NULL типа Order.
- string Hotelname = "Duisburg Happy Sleeping";
- int const numberOfRooms = 4;
- // Класс Customer :
- // Определить класс с именем Customer with
- // Два частных атрибута с именем для имени и телефона для номера телефона как типа строки.
- // частный атрибут с именем следующего указателя типа для клиента.
- // публичный конструктор с двумя строковыми параметрами и указатель типа Customer для инициализации трех атрибутов.
- // Имя всегда должно быть указано, вторым параметром для номера телефона должна быть пустая строка «» в качестве
- // параметра по умолчанию, третий параметр по умолчанию должен иметь нулевое значение NULL в качестве значения по
- // умолчанию и служить для создания списка любого числа клиентов.
- // два общедоступных метода с именем get_name и get_next, которые возвращают соответствующие значения частных
- // атрибутов в качестве значения функции.
- // дружественный перегруженный оператор << для вывода ссылки на объект класса в качестве второго параметра,
- // в теле которого имя, за которым следуют «, телефон:» и номер телефона клиента, записываются в выходной поток данных,
- // переданный в качестве первого параметра ( см. примеры ниже).
- class Customer{
- private:
- string name;
- string phone;
- Customer *next;
- vector<Customer*> clist = {};
- public:
- Customer(string name,string phone = " ",Customer *next = nullptr):
- name(name),phone(phone),next(next){
- }
- string get_name()const{return this->name;}
- string get_phone()const{return this->phone;}
- Customer get_next(){return this->next;}
- void add_customer(){
- cout<<"\nname of customer\t: ";cin >>name;cin.ignore(32000, '\n');
- cout<<"\nphone number: ";cin >>phone;cin.ignore(32000, '\n');
- Customer * c = new Customer{name,phone};
- clist.push_back(c);
- }
- friend ostream& operator<<(ostream &os, const Customer &c);
- };
- // Класс Дата:
- // Определите класс с именем Date с:
- // три частных атрибута с естественным номером, день, месяц и год.
- // перегруженный публичный (по умолчанию) конструктор с тремя параметрами по умолчанию для даты 09.01.2015, который инициализирует три атрибута.
- // дружественный перегруженный оператор >> для ввода даты из входного потока.
- // дружественный перегруженный оператор << для вывода даты в выходной поток. Дата должна всегда указываться в двух цифрах за день, месяц и четыре цифры за год, как в следующих примерах: 08.02.2015, 13.02.2015, 01.11.2015, 31.12.2015).
- // дружественный перегруженный оператор == для сравнения двух объектов этого класса с возвращаемым значением Boolean.
- class Date{
- private:
- int tag;
- int monat;
- int jahr;
- public:
- Date(int tag,int monat, int jahr ):tag(tag), monat(monat), jahr(jahr){}
- void showDate(){
- cout << setfill('0');
- cout << setw(2) << tag << '.'
- << setw(2) << monat << '.'
- << setw(4) << jahr << endl;
- }
- };
- ostream& operator<<(ostream &os, const Customer &c){
- os<< "Name of Customer:"<<c.name<<endl;
- os<<"Phone of Customer:"<<c.phone<<endl;
- return os;
- }
- // Класс Room :
- // Определите класс с именем Room с:
- // два частных атрибута с натуральным номером, обозначенные номером номера и кроватями для номера кроватей.
- // частный логический атрибут с именем балкон, который указывает, есть ли в номере балкон.
- // публичный конструктор с тремя параметрами для инициализации трех атрибутов объекта.
- // открытый метод get_beds, который возвращает количество кроватей в качестве значения функции.
- // публичный метод с именем print, в котором строка «номер комнаты», номер комнаты с запятой отделяет
- // количество кроватей и «кровати (кровати)», а дополнительно «балкон» проводится,
- // если в номере есть балкон (см. примеры ниже).
- // class Room{
- // int no;
- // int beds;
- // bool balcony;
- // public:
- // Room *numberOfRooms;
- // Room(int no,int beds,bool balcony = false): no(no), beds(beds), balcony(balcony){
- // }
- // int get_beds() const{return this->beds;}
- // void print(){
- // cout<<"Room no:"<<no<<", "<<beds<<"bed(s)";
- // if(balcony){
- // cout<<",balcony";
- // }
- // cout<<"\n";
- // }
- // };
- // Класс подзадачи Breakfast :
- // Определите класс с именем Breakfast , полученный из класса Order
- // публичный конструктор с датой и указателем на клиента в качестве параметра
- // и третьим параметром по умолчанию указателем типа заказа со значением по умолчанию NULL
- // (завтрак является дополнительным дополнительным бронированием в списке всех заказов).
- // публичный виртуальный метод get_price, который возвращает 9,90 $ за завтрак (см. Пример ниже).
- // публичный виртуальный метод с именем print, который печатает дату завтрака,
- // правомерное исправление в 10 символов с 2 десятичными знаками, цена,
- // вызванная с помощью вышеуказанной функции, и «EUR: завтрак» за ней (см. Пример ниже).
- // class Breakfast{
- // };
- // Класс подзадачи Order
- // Определите абстрактный класс с именем Order with
- // частный атрибут с именем bookedFor типа Date.
- // частный счет на счете типа Bill.
- // частный указатель с именем клиента типа Customer.
- // частный указатель, названный следующим типом Order.
- // публичный конструктор с тремя параметрами. Первым параметром должен быть объект типа Date,
- // второй - указатель на клиента, третий - параметр по умолчанию со значением NULL при бронировании типа Order
- // для создания списка любого количества сообщений. Связанные три атрибута должны быть инициализированы значениями,
- // связанными векселями счета с NULL.
- // два общедоступных метода с именем get_bookedFor и get_customer, которые возвращают соответствующие значения
- // частных атрибутов в качестве значения функции.
- // Открытый метод с именем invoiced, который должен возвращать true, если это бронирование уже выставлено,
- // поэтому счет указателя указывает на объект типа Bill, иначе false.
- // открытый метод с именем set_bill с параметром указателя на счет-фактуру, который устанавливает значение атрибута
- // с тем же именем и ссылки на эту запись на счет-фактуру.
- // Открытый виртуальный метод с именем get_room без параметров, который всегда возвращает NULL в качестве указателя
- // на объект класса Room.
- // публичный абстрактный виртуальный метод с именем get_price без параметров и двойной как возвращаемое значение.
- // Открытый абстрактный виртуальный метод с именем print без параметров и без возвращаемого значения.
- // class Order{
- // Date bookedFor;
- //Bill *bill;
- // Customer *name;
- // Order *next;
- // public:
- //Order(Date *bookedFor,Customer *name,Bill *bill):?????????????
- // Date get_bookedFor(){}
- // Customer get_customer(){}
- // int get_next(){}
- // bool invoiced(){}
- // set_bill(){}
- // int get_room(){}
- // int get_price(){}
- // print(){}
- // };
- // Accomodation:
- // Определите абстрактный класс с именем Accomodation, полученный из абстрактного класса Order, с:
- // частный логический атрибут с именем «гараж».
- // частный указатель, названный номером комнаты.
- // публичный конструктор с пятью параметрами для инициализации атрибутов. Первые три параметра должны быть
- // датой ночного пребывания, указателем на клиента и указателем на (все еще свободную) комнату.
- // Последние два параметра должны быть параметрами по умолчанию для гаража в качестве значения
- // по умолчанию и указателем типа Order со значением по умолчанию NULL.
- // защищенный метод priceForParking без параметров, который возвращает 15,00 долларов США в случае арендованного гаража,
- // в противном случае - 0,00 доллара США в качестве двойного.
- // Открытый виртуальный метод с именем get_room без параметров, который возвращает указатель с тем же именем.
- // Открытый виртуальный метод с именем print, который печатает дату для ночлега,
- // правовое обоснование в 10 символов с 2 знаками после запятой, стоимость ночного пребывания определяется
- // функцией get_price и за ней «EUR:». После этого зарезервированное для этого место должно быть потрачено и «гараж»,
- // если гараж был забронирован (см. Пример ниже).
- // Класс подзадачи Single:
- // Определите класс с именем Single, полученный из абстрактного класса Accomodation с
- // публичный конструктор с пятью параметрами для инициализации атрибутов. Первые три параметра должны быть
- // датой ночного пребывания, указателем на клиента и указателем на (все еще свободную) комнату.
- // Последние два параметра должны быть параметрами по умолчанию для гаража в качестве значения
- // по умолчанию и указателем типа Order со значением по умолчанию NULL.
- // Открытый виртуальный метод с именем get_price, который возвращает $ 49,00 за одну ночь (см. Пример ниже).
- // Открытый виртуальный метод с именем print, который вызывает функцию печати по принципу «супер-класс» и
- // печатает строку «(как одиночную)» за ней (см. Пример ниже, двухместные номера также могут быть забронированы на одну ночь).
- // class Single:public Accomodation{
- // };
- // Класс подзадачи Double
- // Определите класс с именем Double, полученный из абстрактного класса Accomodation с
- // публичный конструктор с пятью параметрами для инициализации атрибутов. Первые три параметра
- // должны быть датой ночного пребывания, указателем на клиента и указателем на (все еще свободную) комнату.
- // Последние два параметра должны быть параметрами по умолчанию для гаража в качестве значения по умолчанию и
- // указателем типа Order со значением по умолчанию NULL. Если количество кроватей в комнате не менее 2,
- // должно быть выдано текстовое сообщение «дополнительная кровать».
- // Открытый виртуальный метод get_price, который возвращает $ 69,00 за двухдневную ночь (см. Пример ниже).
- // общедоступный виртуальный метод с именем print, который вызывает функцию печати с прямым доступом к суперклассу и
- // печатает строку «(как двойную») за ней (см. Пример ниже, отдельные комнаты можно забронировать с дополнительной кроватью
- // для двухдневного пребывания).
- // class Double: public Accomodation{
- // };
- // class Bill{
- // Bill *bill;
- // Bill *next;
- // };
- // Глобальная функция подзадачи searchFreeRoom:
- // Реализация функции
- // Room* searchFreeRoom(Date date, unsigned int beds);
- // В этом свободная комната с по крайней мере кроватями в дату даты, которую нужно искать, и указывается в качестве указателя.
- // Если в эту дату нет места с достаточным количеством кроватей, нулевой указатель должен быть возвращен.
- // Примечания: глобальный полевой номер содержит указатели numberOfRooms в номере номерной комнаты отеля
- // (всегда используйте это const Variable numberOfRooms, а не прямое значение 4) при программировании.
- // Вы можете проверить (внешний) цикл для каждой комнаты, будь то для этого
- // (простое сравнение соответствующих указателей с номерами в элементе поля и объектом бронирования)
- // в глобальных списках заказов всех заказов на ночь в эту дату (используйте оператор, указанный выше = = дата сравнения для двух объектов)
- // (для этого требуется второй внутренний цикл).
- // Основная Funktion main :
- // Напишите функцию main:
- // В первом цикле создайте numberOfRooms / 2 новых комнаты в Heap
- // номер комнаты 1, 2, ... с 1 кроватью и без балкона и
- // соответствующий указатель на них, соответственно, первые элементы numberOfRooms / 2
- // комната тоже.
- // Во втором цикле создайте numberOfRooms / 2 новых комнаты в Heap
- // с последовательным номером номера numberOfRooms / 2 + 1, numberOfRooms / 2 + 2, ... с
- // каждый 2 кровати и с балконом, и имеют соответствующий указатель на каждый
- // второе числоOfRooms / 2 элемента поля из комнаты в.
- // В третьем цикле выведите все номера номеров в отеле отеля.
- // Duisburg Happy Sleeping
- // room no. 1, 1 bed(s)
- // room no. 2, 1 bed(s)
- // room no. 3, 2 bed(s), balcony
- // room no. 4, 2 bed(s), balcony
- // void menu(){
- // int i = -1;
- // while(i){
- // c.print_menu();
- // cout << "\nyour choice: "; cin >> i; cin.ignore(32000, '\n');
- // switch(i){
- // case 1 : //add_custemer();
- // break;
- // case 2 : //c.print_all_customer();
- // break;
- // case 3 : //accomodation_booking();
- // break;
- // case 4 : //breakfast_booking();
- // break;
- // case 5 : //c.show_all_orders();
- // break;
- // default : break;
- // }
- // }
- // };
- void print_menu(){
- cout << "--------------------Welcom to " << Hotelname << " -----------------------" << endl;
- string menu[] ={
- "n new custemer\t\t1",
- "p print all customer\t2",
- "a accomodation booking\t3",
- "b breakfast booking\t4",
- "s show all orders\t5",
- "e end of programm\t0",
- "\nyour choice: "
- };
- for(int i=0;i<7;i++)
- {
- cout <<menu[i]<< endl;
- };
- }
- void menu(){
- print_menu();
- int i = -1;
- cin >> i;cin.ignore(32000, '\n');
- switch(i){
- case 1 :cout<<"\nyour choice: "<<i;
- Cuctomer.add_customer();
- break;
- case 2 : cout<<"\nyour choice: "<<i;//c.print_all_customer();
- break;
- case 3 : cout<<"\nyour choice: "<<i;//accomodation_booking();
- break;
- case 4 : cout<<"\nyour choice: "<<i;//breakfast_booking();
- break;
- case 5 : cout<<"\nyour choice: "<<i;//c.show_all_orders();
- break;
- default : break;
- }
- };
- int main(){
- menu();
- Customer c {"tom","011"};
- cout<<c<<endl;
- cout << "--------------------Welcom to " << Hotelname << " -----------------------" << endl;
- // cout<< "Name of Customer:";cin>>c.get_name();
- // cout<<"Phone of Customer:";cin>>c.get_phone();
- // cout<<c<<endl;
- // Accomodation *a = new Accomodation{};
- // a->priceForParking();
- // Datum *p = new Datum{04,12,2012};
- // p->showDate();
- // cout <<"=======" << endl;
- // Room *rb = new Room{1,2,true};
- // rb->print();
- // Room *r = new Room{2,2};
- // r->print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement