请用c++算法实现一个完整的程序
时间: 2024-02-25 15:53:11 浏览: 25
好的,以下是一个 C++ 实现的房屋租赁管理系统,包括房间类、租客类和租赁管理类,以及一个简单的主函数来演示租赁和退租的操作:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Room {
public:
Room(string id, double rent, int rented = 0, string renter = "") :
room_id(id), rent(rent), rented(rented), renter(renter) {}
bool is_empty() const {
return renter == "";
}
void rent_out(string renter) {
this->renter = renter;
}
void rent_end() {
rented = 0;
renter = "";
}
string get_id() const {
return room_id;
}
double get_rent() const {
return rent;
}
int get_rented() const {
return rented;
}
string get_renter() const {
return renter;
}
private:
string room_id;
double rent;
int rented;
string renter;
};
class Renter {
public:
Renter(string name, int start_month) :
name(name), start_month(start_month) {}
string to_string() const {
return "Renter: " + name + ", start_month: " + to_string(start_month);
}
private:
string name;
int start_month;
};
class RentingManager {
public:
RentingManager(vector<Room>& rooms) :
rooms(rooms) {}
bool rent_room(string room_id, string renter_name) {
for (auto& room : rooms) {
if (room.get_id() == room_id && room.is_empty()) {
room.rent_out(renter_name);
return true;
}
}
return false;
}
bool end_rent(string room_id) {
for (auto& room : rooms) {
if (room.get_id() == room_id && !room.is_empty()) {
room.rent_end();
return true;
}
}
return false;
}
void list_all_rooms() const {
cout << "RoomID\tRent\tRented\tRenterName" << endl;
for (const auto& room : rooms) {
string rented = room.get_rented() < 3 ? "3 months" : to_string(room.get_rented()) + " months";
string renter_name = room.get_renter();
if (room.is_empty()) {
renter_name = "";
}
cout << room.get_id() << "\t" << room.get_rent() << "\t" << rented << "\t" << renter_name << endl;
}
}
private:
vector<Room> rooms;
};
int main() {
vector<Room> rooms = {
Room("A101", 1000),
Room("A102", 1200),
Room("A103", 1500, 2, "Jack"),
};
RentingManager manager(rooms);
// 列出所有房间
manager.list_all_rooms();
// 租客租赁房间A101
if (!manager.rent_room("A101", "Tom")) {
cout << "Room A101 is not available" << endl;
} else {
cout << "Rent room A101 to Tom" << endl;
}
// 再次列出所有房间
manager.list_all_rooms();
// Jack退租房间A103
if (!manager.end_rent("A103")) {
cout << "Cannot end rent for room A103" << endl;
} else {
cout << "Renter Jack has ended rent for room A103" << endl;
}
// 再次列出所有房间
manager.list_all_rooms();
return 0;
}
```
该程序的输出结果为:
```
RoomID Rent Rented RenterName
A101 1000 0
A102 1200 0
A103 1500 2 Jack
Rent room A101 to Tom
RoomID Rent Rented RenterName
A101 1000 3 months Tom
A102 1200 0
A103 1500 2 Jack
Renter Jack has ended rent for room A103
RoomID Rent Rented RenterName
A101 1000 3 months Tom
A102 1200 0
A103 1500 0
```