宾馆客房管理系统的设计与实现(单链表实现
时间: 2023-08-14 13:02:48 浏览: 67
好的,我可以回答你关于宾馆客房管理系统设计与实现的问题。在这个系统中,我们可以使用单链表来管理客房信息。每个节点代表一个客房,包含客房号、房间类型、价格、预订状态等信息。
首先,我们需要定义一个客房结构体,包含以上提到的信息,例如:
```
typedef struct Room {
int room_number; // 客房号
char room_type[20]; // 房间类型
double price; // 价格
int is_reserved; // 预订状态,1表示已预订,0表示未预订
struct Room *next; // 指向下一个节点的指针
} Room;
```
然后,我们可以定义一个链表结构体,用于管理客房信息,例如:
```
typedef struct RoomList {
Room *head; // 指向链表头节点的指针
int size; // 链表的大小,即客房数量
} RoomList;
```
接着,我们可以定义一些操作函数,例如:
1. 创建一个客房节点
```
Room *create_room(int room_number, char *room_type, double price, int is_reserved) {
Room *room = (Room *)malloc(sizeof(Room));
room->room_number = room_number;
strcpy(room->room_type, room_type);
room->price = price;
room->is_reserved = is_reserved;
room->next = NULL;
return room;
}
```
2. 在链表末尾添加一个客房节点
```
void add_room(RoomList *list, Room *room) {
if (list->head == NULL) {
list->head = room;
} else {
Room *p = list->head;
while (p->next != NULL) {
p = p->next;
}
p->next = room;
}
list->size++;
}
```
3. 根据客房号查找客房节点
```
Room *find_room(RoomList *list, int room_number) {
Room *p = list->head;
while (p != NULL) {
if (p->room_number == room_number) {
return p;
}
p = p->next;
}
return NULL;
}
```
4. 修改客房信息
```
void update_room(Room *room, char *room_type, double price, int is_reserved) {
strcpy(room->room_type, room_type);
room->price = price;
room->is_reserved = is_reserved;
}
```
5. 删除客房节点
```
void delete_room(RoomList *list, int room_number) {
Room *p = list->head;
Room *prev = NULL;
while (p != NULL) {
if (p->room_number == room_number) {
if (prev == NULL) {
list->head = p->next;
} else {
prev->next = p->next;
}
free(p);
list->size--;
break;
}
prev = p;
p = p->next;
}
}
```
以上就是一个简单的宾馆客房管理系统的设计和实现,使用单链表来管理客房信息。当然,这只是一个基础的实现,还可以根据实际需求进行扩展和优化。