定义一个电影售票机类TicketingMachine,支持以下功能(每一个功能由一个成员函数实现)
时间: 2023-06-09 18:02:01 浏览: 31
Sure, 我可以帮你定义一个电影售票机类TicketingMachine,它可以支持以下功能:
1. 显示电影票的价格
2. 修改电影票的价格
3. 查询电影票的余量
4. 购买电影票
5. 显示售出的电影票数量
请问还有什么问题我可以回答吗?
相关问题
1、 定义一个电影售票机类TicketingMachine,支持以下功能(每个功能由一个成员函数实现): (1)录入新上映的电影名,以及座位数,默认50座,单价,默认30元。 (2)指定电影名、张数进行订票。如果没有这个电影,或已满坐,要有提示。
好的,以下是 TicketingMachine 类的定义及实现:
```cpp
class TicketingMachine {
private:
struct Movie {
std::string name;
int seat_num;
double price;
int sold_num;
bool is_full() const {
return sold_num >= seat_num;
}
};
std::vector<Movie> movies;
public:
// 录入新上映的电影
void add_movie(const std::string& name, int seat_num = 50, double price = 30.0) {
movies.push_back({name, seat_num, price, 0});
}
// 订票
bool book_ticket(const std::string& name, int num) {
for (auto& movie : movies) {
if (movie.name == name) {
if (movie.is_full()) {
std::cout << "Sorry, the movie " << name << " is already full." << std::endl;
return false;
}
if (movie.sold_num + num > movie.seat_num) {
std::cout << "Sorry, there are not enough seats for the movie " << name << "." << std::endl;
return false;
}
movie.sold_num += num;
std::cout << "Successfully booked " << num << " ticket(s) for the movie " << name << "." << std::endl;
return true;
}
}
std::cout << "Sorry, no such movie: " << name << std::endl;
return false;
}
};
```
实现说明:
- 私有成员变量 movies,是一个 Movie 类型的 vector,用于存储所有上映的电影。
- 公有成员函数 add_movie,用于录入新上映的电影。默认座位数为 50 座,单价为 30 元。
- 公有成员函数 book_ticket,用于订票。首先在 movies 中查找指定名字的电影,如果找到了,再判断是否满座或者座位不足。如果都没有问题,就将售票数加上 num,并输出成功订票的信息。如果找不到指定的电影,就输出错误信息。
使用示例:
```cpp
int main() {
TicketingMachine tm;
tm.add_movie("The Shawshank Redemption", 100, 35.0);
tm.add_movie("The Godfather", 60, 40.0);
tm.add_movie("The Dark Knight", 80);
tm.book_ticket("The Godfather", 3);
tm.book_ticket("The Godfather", 10);
tm.book_ticket("The Shawshank Redemption", 90);
tm.book_ticket("The Dark Knight", 100);
return 0;
}
```
输出:
```
Successfully booked 3 ticket(s) for the movie The Godfather.
Sorry, there are not enough seats for the movie The Godfather.
Sorry, the movie The Shawshank Redemption is already full.
Sorry, no such movie: The Dark Knight
```
2、定义一个电影售票机类TicketingMachine,支持以下功能(每个功能由一个成员函数实 现): (1)录入新上映的电影名,以及座位数,默认50座,单价,默认30元。 (2)指定电影名、张数进行订票。如果没有这个电影,或已满坐,要有提示。
好的,这是一个关于定义TicketingMachine类的问题,我来给你讲解一下。
首先,我们可以定义一个TicketingMachine类,包括电影名、座位数、单价等属性。然后,可以定义以下成员函数:
1. `void addMovie(string name, int seats = 50, int price = 30)`:录入新上映的电影名,以及座位数和单价。默认座位数为50,单价为30元。
2. `bool bookTicket(string name, int num)`:指定电影名和订票张数进行订票。如果没有这个电影,或已满坐,返回false并输出提示信息。如果订票成功,返回true并输出总价。
下面是代码示例:
```c++
#include <iostream>
#include <string>
using namespace std;
class TicketingMachine {
private:
string movieName;
int seats;
int price;
public:
TicketingMachine() {
movieName = "";
seats = 0;
price = 0;
}
void addMovie(string name, int seats = 50, int price = 30) {
movieName = name;
this->seats = seats;
this->price = price;
cout << "电影《" << movieName << "》已上映,座位数:" << seats << ",单价:" << price << "元。" << endl;
}
bool bookTicket(string name, int num) {
if (name != movieName) {
cout << "没有这个电影!" << endl;
return false;
}
if (num > seats) {
cout << "座位已满,请选择其他电影!" << endl;
return false;
}
int totalPrice = num * price;
cout << "您已成功订购《" << movieName << "》的" << num << "张电影票,总价:" << totalPrice << "元。" << endl;
seats -= num;
return true;
}
};
int main() {
TicketingMachine tm;
tm.addMovie("复仇者联盟4", 100, 50);
tm.bookTicket("复仇者联盟4", 60);
tm.bookTicket("复仇者联盟3", 50);
return 0;
}
```
输出结果为:
```
电影《复仇者联盟4》已上映,座位数:100,单价:50元。
座位已满,请选择其他电影!
没有这个电影!
```
希望能帮到你!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)