客房管理系统c语言 要求开始就有20个房间供选择
时间: 2023-08-12 10:04:10 浏览: 41
好的,客房管理系统需要实现以下功能:
1. 显示所有房间的当前状态(空闲或占用)。
2. 预定房间:输入房间号和客人姓名,将房间状态设置为占用。
3. 取消预定:输入房间号,将房间状态设置为空闲。
4. 查询客房:输入客人姓名,显示该客人当前所预定的房间号。
5. 退出系统:结束程序运行。
以下是一个可能的实现:
```c
#include <stdio.h>
#include <string.h>
#define NUM_ROOMS 20
#define MAX_NAME_LENGTH 20
typedef struct {
int number;
char name[MAX_NAME_LENGTH];
int occupied;
} Room;
void init_rooms(Room rooms[NUM_ROOMS]) {
for (int i = 0; i < NUM_ROOMS; i++) {
rooms[i].number = i + 1;
strcpy(rooms[i].name, "");
rooms[i].occupied = 0;
}
}
void print_status(Room rooms[NUM_ROOMS]) {
printf("Room status:\n");
for (int i = 0; i < NUM_ROOMS; i++) {
printf("Room %d: %s\n", rooms[i].number, rooms[i].occupied ? "occupied" : "free");
}
}
void reserve_room(Room rooms[NUM_ROOMS]) {
int room_number;
char guest_name[MAX_NAME_LENGTH];
printf("Enter room number: ");
scanf("%d", &room_number);
if (room_number < 1 || room_number > NUM_ROOMS) {
printf("Invalid room number!\n");
return;
}
if (rooms[room_number - 1].occupied) {
printf("Room %d is already occupied!\n", room_number);
return;
}
printf("Enter guest name: ");
scanf("%s", guest_name);
strcpy(rooms[room_number - 1].name, guest_name);
rooms[room_number - 1].occupied = 1;
printf("Room %d has been reserved for %s.\n", room_number, guest_name);
}
void cancel_reservation(Room rooms[NUM_ROOMS]) {
int room_number;
printf("Enter room number: ");
scanf("%d", &room_number);
if (room_number < 1 || room_number > NUM_ROOMS) {
printf("Invalid room number!\n");
return;
}
if (!rooms[room_number - 1].occupied) {
printf("Room %d is not occupied!\n", room_number);
return;
}
printf("Reservation for room %d (guest %s) has been cancelled.\n", room_number, rooms[room_number - 1].name);
strcpy(rooms[room_number - 1].name, "");
rooms[room_number - 1].occupied = 0;
}
void find_guest(Room rooms[NUM_ROOMS]) {
char guest_name[MAX_NAME_LENGTH];
printf("Enter guest name: ");
scanf("%s", guest_name);
for (int i = 0; i < NUM_ROOMS; i++) {
if (strcmp(rooms[i].name, guest_name) == 0) {
printf("%s is currently occupying room %d.\n", guest_name, rooms[i].number);
return;
}
}
printf("%s does not have a current reservation.\n", guest_name);
}
int main() {
Room rooms[NUM_ROOMS];
init_rooms(rooms);
int choice = 0;
while (choice != 5) {
printf("\nMenu:\n");
printf("1. Print room status\n");
printf("2. Reserve room\n");
printf("3. Cancel reservation\n");
printf("4. Find guest\n");
printf("5. Quit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
print_status(rooms);
break;
case 2:
reserve_room(rooms);
break;
case 3:
cancel_reservation(rooms);
break;
case 4:
find_guest(rooms);
break;
case 5:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice!\n");
break;
}
}
return 0;
}
```
这个实现中,我们使用了一个 Room 结构体来表示客房信息,包括房间号、客人姓名和占用状态。在程序开始时,我们调用 init_rooms 函数来初始化所有房间为空闲状态。然后,我们提供了菜单选项来让用户进行各种操作。每个操作都对应一个函数,比如 print_status 函数用来显示当前所有房间的状态,reserve_room 函数用来预定一个房间,cancel_reservation 函数用来取消一个预定等等。在每个函数中,我们都需要从用户获取输入,并对输入进行检查以保证程序的正确性。