请用C语言帮我完成并设计单链表宾馆客房,管理系统
时间: 2023-08-07 10:07:30 浏览: 30
好的,以下是一个简单的单链表宾馆客房管理系统的设计:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义宾馆房间结构体
typedef struct Room {
int roomNumber; // 房间号
char roomType[20]; // 房间类型(如:标准间、豪华套房等)
int roomPrice; // 房间价格
struct Room *next; // 指向下一个房间的指针
} Room;
// 定义宾馆结构体
typedef struct Hotel {
char name[50]; // 宾馆名称
int totalRooms; // 总房间数
Room *roomsList; // 房间链表的头指针
} Hotel;
// 初始化宾馆
void initHotel(Hotel *hotel, char *name, int totalRooms) {
strcpy(hotel->name, name);
hotel->totalRooms = totalRooms;
hotel->roomsList = NULL;
}
// 添加房间
void addRoom(Hotel *hotel, int roomNumber, char *roomType, int roomPrice) {
// 创建新的房间结构体
Room *newRoom = (Room *)malloc(sizeof(Room));
newRoom->roomNumber = roomNumber;
strcpy(newRoom->roomType, roomType);
newRoom->roomPrice = roomPrice;
newRoom->next = NULL;
// 如果房间链表为空,则将新房间作为第一个房间
if (hotel->roomsList == NULL) {
hotel->roomsList = newRoom;
} else {
// 否则遍历链表,找到最后一个房间,将新房间加在最后
Room *currentRoom = hotel->roomsList;
while (currentRoom->next != NULL) {
currentRoom = currentRoom->next;
}
currentRoom->next = newRoom;
}
}
// 显示所有房间信息
void showAllRooms(Hotel *hotel) {
printf("宾馆名称:%s\n", hotel->name);
printf("总房间数:%d\n", hotel->totalRooms);
printf("房间列表:\n");
Room *currentRoom = hotel->roomsList;
while (currentRoom != NULL) {
printf("房间号:%d,类型:%s,价格:%d\n", currentRoom->roomNumber, currentRoom->roomType, currentRoom->roomPrice);
currentRoom = currentRoom->next;
}
}
int main() {
Hotel hotel;
initHotel(&hotel, "CSDN宾馆", 20);
addRoom(&hotel, 101, "标准间", 200);
addRoom(&hotel, 102, "豪华套房", 500);
addRoom(&hotel, 103, "家庭套房", 400);
showAllRooms(&hotel);
return 0;
}
```
以上代码仅为示例,还有很多功能与细节需要完善和实现,如删除房间、入住、退房等操作,欢迎进行拓展和优化。