酒店預訂管理系統是一個用于管理酒店房間預訂、客戶信息、房間狀態等的軟件系統。通過該系統,酒店可以高效地管理房間資源,客戶可以方便地進行預訂和查詢。本文將介紹如何使用C語言實現一個簡單的酒店預訂管理系統。
在開始編寫代碼之前,我們需要明確系統的基本功能需求:
為了實現上述功能,我們需要設計合適的數據結構來存儲房間和客戶信息。
typedef struct {
int room_id; // 房間編號
char type[50]; // 房間類型
float price; // 房間價格
int is_booked; // 是否被預訂 (0: 未預訂, 1: 已預訂)
} Room;
typedef struct {
int customer_id; // 客戶編號
char name[100]; // 客戶姓名
char phone[20]; // 客戶電話
int room_id; // 預訂的房間編號
} Customer;
void add_room(Room rooms[], int *room_count) {
Room new_room;
printf("輸入房間編號: ");
scanf("%d", &new_room.room_id);
printf("輸入房間類型: ");
scanf("%s", new_room.type);
printf("輸入房間價格: ");
scanf("%f", &new_room.price);
new_room.is_booked = 0; // 默認未預訂
rooms[*room_count] = new_room;
(*room_count)++;
printf("房間添加成功!\n");
}
void delete_room(Room rooms[], int *room_count, int room_id) {
int index = -1;
for (int i = 0; i < *room_count; i++) {
if (rooms[i].room_id == room_id) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < *room_count - 1; i++) {
rooms[i] = rooms[i + 1];
}
(*room_count)--;
printf("房間刪除成功!\n");
} else {
printf("未找到該房間!\n");
}
}
void add_customer(Customer customers[], int *customer_count) {
Customer new_customer;
printf("輸入客戶編號: ");
scanf("%d", &new_customer.customer_id);
printf("輸入客戶姓名: ");
scanf("%s", new_customer.name);
printf("輸入客戶電話: ");
scanf("%s", new_customer.phone);
printf("輸入預訂的房間編號: ");
scanf("%d", &new_customer.room_id);
customers[*customer_count] = new_customer;
(*customer_count)++;
printf("客戶添加成功!\n");
}
void delete_customer(Customer customers[], int *customer_count, int customer_id) {
int index = -1;
for (int i = 0; i < *customer_count; i++) {
if (customers[i].customer_id == customer_id) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < *customer_count - 1; i++) {
customers[i] = customers[i + 1];
}
(*customer_count)--;
printf("客戶刪除成功!\n");
} else {
printf("未找到該客戶!\n");
}
}
void book_room(Room rooms[], int room_count, Customer customers[], int customer_count) {
int room_id, customer_id;
printf("輸入要預訂的房間編號: ");
scanf("%d", &room_id);
printf("輸入客戶編號: ");
scanf("%d", &customer_id);
int room_index = -1, customer_index = -1;
for (int i = 0; i < room_count; i++) {
if (rooms[i].room_id == room_id) {
room_index = i;
break;
}
}
for (int i = 0; i < customer_count; i++) {
if (customers[i].customer_id == customer_id) {
customer_index = i;
break;
}
}
if (room_index != -1 && customer_index != -1) {
if (rooms[room_index].is_booked == 0) {
rooms[room_index].is_booked = 1;
customers[customer_index].room_id = room_id;
printf("房間預訂成功!\n");
} else {
printf("該房間已被預訂!\n");
}
} else {
printf("房間或客戶不存在!\n");
}
}
void cancel_booking(Room rooms[], int room_count, Customer customers[], int customer_count) {
int room_id, customer_id;
printf("輸入要取消預訂的房間編號: ");
scanf("%d", &room_id);
printf("輸入客戶編號: ");
scanf("%d", &customer_id);
int room_index = -1, customer_index = -1;
for (int i = 0; i < room_count; i++) {
if (rooms[i].room_id == room_id) {
room_index = i;
break;
}
}
for (int i = 0; i < customer_count; i++) {
if (customers[i].customer_id == customer_id) {
customer_index = i;
break;
}
}
if (room_index != -1 && customer_index != -1) {
if (rooms[room_index].is_booked == 1 && customers[customer_index].room_id == room_id) {
rooms[room_index].is_booked = 0;
customers[customer_index].room_id = -1;
printf("預訂取消成功!\n");
} else {
printf("該房間未被該客戶預訂!\n");
}
} else {
printf("房間或客戶不存在!\n");
}
}
void generate_room_report(Room rooms[], int room_count) {
printf("房間狀態報表:\n");
printf("房間編號\t房間類型\t價格\t狀態\n");
for (int i = 0; i < room_count; i++) {
printf("%d\t\t%s\t\t%.2f\t%s\n", rooms[i].room_id, rooms[i].type, rooms[i].price, rooms[i].is_booked ? "已預訂" : "未預訂");
}
}
void generate_customer_report(Customer customers[], int customer_count) {
printf("客戶預訂報表:\n");
printf("客戶編號\t客戶姓名\t電話\t預訂房間編號\n");
for (int i = 0; i < customer_count; i++) {
printf("%d\t\t%s\t\t%s\t%d\n", customers[i].customer_id, customers[i].name, customers[i].phone, customers[i].room_id);
}
}
為了方便用戶操作,我們可以設計一個主菜單,用戶可以通過選擇不同的選項來執行相應的功能。
void display_menu() {
printf("\n酒店預訂管理系統\n");
printf("1. 添加房間\n");
printf("2. 刪除房間\n");
printf("3. 添加客戶\n");
printf("4. 刪除客戶\n");
printf("5. 預訂房間\n");
printf("6. 取消預訂\n");
printf("7. 生成房間狀態報表\n");
printf("8. 生成客戶預訂報表\n");
printf("0. 退出\n");
printf("請選擇操作: ");
}
最后,我們將所有功能整合到主函數中,通過循環和條件判斷來實現用戶交互。
int main() {
Room rooms[100];
Customer customers[100];
int room_count = 0, customer_count = 0;
int choice;
while (1) {
display_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_room(rooms, &room_count);
break;
case 2:
printf("輸入要刪除的房間編號: ");
int room_id;
scanf("%d", &room_id);
delete_room(rooms, &room_count, room_id);
break;
case 3:
add_customer(customers, &customer_count);
break;
case 4:
printf("輸入要刪除的客戶編號: ");
int customer_id;
scanf("%d", &customer_id);
delete_customer(customers, &customer_count, customer_id);
break;
case 5:
book_room(rooms, room_count, customers, customer_count);
break;
case 6:
cancel_booking(rooms, room_count, customers, customer_count);
break;
case 7:
generate_room_report(rooms, room_count);
break;
case 8:
generate_customer_report(customers, customer_count);
break;
case 0:
printf("退出系統。\n");
return 0;
default:
printf("無效的選擇,請重新輸入。\n");
}
}
return 0;
}
通過上述代碼,我們實現了一個簡單的酒店預訂管理系統。該系統具備基本的房間管理、客戶管理、預訂管理以及報表生成功能。雖然這個系統相對簡單,但它展示了如何使用C語言來實現一個實際應用系統的基本框架。未來可以根據需求進一步擴展和優化系統功能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。