用C++写一段代码:答答租车系统(多重继承)
时间: 2024-01-13 14:02:57 浏览: 27
为了方便,我将答答租车系统分为三个类:租车公司、客户和车辆。
首先,我们需要定义一个车辆类,包括车辆的基本信息和一些操作,例如出租、还车等等。
```
class Vehicle {
protected:
string brand; // 品牌
string model; // 型号
int year; // 出厂年份
double price; // 租金
public:
Vehicle(string b, string m, int y, double p) : brand(b), model(m), year(y), price(p) {}
virtual ~Vehicle() {}
virtual void rent() = 0; // 出租
virtual void returnVehicle() = 0; // 还车
virtual void displayInfo() = 0; // 显示车辆信息
};
```
接下来,我们需要定义一个客户类,包括客户的基本信息和一些操作,例如租车、还车等等。
```
class Customer {
protected:
string name; // 姓名
string id; // 身份证号
string phone; // 电话号码
int rentedVehicleNum; // 租借车辆数量
public:
Customer(string n, string i, string p) : name(n), id(i), phone(p), rentedVehicleNum(0) {}
virtual ~Customer() {}
virtual void rentVehicle() = 0; // 租车
virtual void returnVehicle() = 0; // 还车
virtual void displayInfo() = 0; // 显示客户信息
};
```
最后,我们需要定义一个租车公司类,继承上述两个类,并实现它们的操作。
```
class RentalCompany : public Vehicle, public Customer {
private:
vector<Vehicle*> vehicles; // 车辆列表
vector<Customer*> customers; // 客户列表
public:
RentalCompany() : Vehicle("", "", 0, 0), Customer("", "", "") {}
~RentalCompany() {
for (Vehicle* v : vehicles) {
delete v;
}
for (Customer* c : customers) {
delete c;
}
}
void addVehicle(Vehicle* v) { // 添加车辆
vehicles.push_back(v);
}
void addCustomer(Customer* c) { // 添加客户
customers.push_back(c);
}
void rentVehicle(string cid, int vid) { // 租车
Customer* c = nullptr;
for (Customer* cust : customers) {
if (cust->id == cid) {
c = cust;
break;
}
}
if (!c) {
cout << "No such customer" << endl;
return;
}
Vehicle* v = vehicles[vid];
if (v == nullptr) {
cout << "No such vehicle" << endl;
return;
}
c->rentVehicle();
v->rent();
c->rentedVehicleNum++;
}
void returnVehicle(string cid, int vid) { // 还车
Customer* c = nullptr;
for (Customer* cust : customers) {
if (cust->id == cid) {
c = cust;
break;
}
}
if (!c) {
cout << "No such customer" << endl;
return;
}
if (c->rentedVehicleNum == 0) {
cout << "This customer has not rented any vehicle" << endl;
return;
}
Vehicle* v = vehicles[vid];
if (v == nullptr) {
cout << "No such vehicle" << endl;
return;
}
c->returnVehicle();
v->returnVehicle();
c->rentedVehicleNum--;
}
void displayVehicles() { // 显示车辆信息
cout << "Vehicle List:" << endl;
for (int i = 0; i < vehicles.size(); i++) {
cout << i << ". ";
vehicles[i]->displayInfo();
}
}
void displayCustomers() { // 显示客户信息
cout << "Customer List:" << endl;
for (int i = 0; i < customers.size(); i++) {
cout << i << ". ";
customers[i]->displayInfo();
}
}
};
```
这就是答答租车系统的代码,包括三个类:车辆、客户和租车公司。租车公司类继承了车辆和客户两个类,并实现了它们的操作。