#include <stdio.h>
#include <stdlib.h>
typedef struct Room {
int roomNumber;
int capacity;
int isAvailable;
struct Room* next;
} Room;
Room* head = NULL;
Room* createRoom(int roomNumber, int capacity, int isAvailable) {
Room* newRoom = (Room*)malloc(sizeof(Room));
if (newRoom == NULL) {
printf("内存分配失败。房间未创建。\n");
return NULL;
}
newRoom->roomNumber = roomNumber;
newRoom->capacity = capacity;
newRoom->isAvailable = isAvailable;
newRoom->next = NULL;
return newRoom;
}
void addRoom(int roomNumber, int capacity, int isAvailable) {
Room* newRoom = createRoom(roomNumber, capacity, isAvailable);
if (newRoom == NULL) {
return;
}
newRoom->next = head;
head = newRoom;
}
void deleteRoom(int roomNumber) {
Room* temp = head, * prev = NULL;
if (temp != NULL && temp->roomNumber == roomNumber) {
head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->roomNumber != roomNumber) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
void updateRoom(int roomNumber, int capacity, int isAvailable) {
Room* temp = head;
while (temp != NULL) {
if (temp->roomNumber == roomNumber) {
temp->capacity = capacity;
temp->isAvailable = isAvailable;
return;
}
temp = temp->next;
}
}
void printRooms() {
Room* temp = head;
while (temp != NULL) {
printf("Room Number: %d\n", temp->roomNumber);
printf("Capacity: %d\n", temp->capacity);
printf("Availability: %d\n", temp->isAvailable);
temp = temp->next;
}
}
int main() {
int choice, roomNumber, capacity, isAvailable;
while (1) {
printf("**********************\n");
printf("* ");printf("1. 添加房间信息 "); printf("*\n");
printf("* ");printf("2. 删除房间信息 "); printf("*\n");
printf("* ");printf("3. 更新房间信息 "); printf("*\n");
printf("* ");printf("4. 打印房间信息 "); printf("*\n");
printf("* ");printf("5. 退出酒店管理系统"); printf("*\n");
printf("**********************\n");
printf("请输入选择: \0\0");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入房间号,容量,是否可用(可用1不可用0): ");
scanf("%d %d %d", &roomNumber, &capacity, &isAvailable);
addRoom(roomNumber, capacity, isAvailable);
break;
case 2:
printf("输入要删除的房间号: ");
scanf("%d", &roomNumber);
deleteRoom(roomNumber);
break;
case 3:
printf("输入要更新的房间号: ");
scanf("%d", &roomNumber);
printf("输入新的房间信息: ");
scanf("%d %d", &capacity, &isAvailable);
updateRoom(roomNumber, capacity, isAvailable);
break;
case 4:
printRooms();
break;
case 5:
exit(0);
default:
printf("选择无效\n");
}
}
return 0;
}