溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言如何實現酒店預訂管理系統

發布時間:2022-06-06 09:32:26 來源:億速云 閱讀:188 作者:zzz 欄目:開發技術

C語言如何實現酒店預訂管理系統

引言

酒店預訂管理系統是一個用于管理酒店房間預訂、客戶信息、房間狀態等的軟件系統。通過該系統,酒店可以高效地管理房間資源,客戶可以方便地進行預訂和查詢。本文將介紹如何使用C語言實現一個簡單的酒店預訂管理系統。

系統功能需求

在開始編寫代碼之前,我們需要明確系統的基本功能需求:

  1. 房間管理:包括房間的添加、刪除、修改和查詢。
  2. 客戶管理:包括客戶的添加、刪除、修改和查詢。
  3. 預訂管理:包括房間的預訂、取消預訂、查詢預訂狀態。
  4. 報表生成:生成房間狀態報表、客戶預訂報表等。

數據結構設計

為了實現上述功能,我們需要設計合適的數據結構來存儲房間和客戶信息。

房間信息結構體

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;

功能實現

1. 房間管理

添加房間

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");
    }
}

2. 客戶管理

添加客戶

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");
    }
}

3. 預訂管理

預訂房間

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");
    }
}

4. 報表生成

生成房間狀態報表

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語言來實現一個實際應用系統的基本框架。未來可以根據需求進一步擴展和優化系統功能。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女