C语言酒店管理系统项目源代码

程序介绍

使用C语言开发的一个简单的酒店管理项目,下面代码中定义了一个 Room 结构体表示酒店的每个房间信息,包括房间号、房间状态、租客姓名和租住天数。定义了一个长度为 ROOM_COUNT 的数组表示所有房间的信息。通过 initRooms 函数将所有房间初始化为空房间。

使用一个 while 循环不断显示菜单并等待用户输入选项,根据用户选择的选项执行对应的操作。

其中, showRoomList 函数用于显示当前的房间列表; findEmptyRoom 函数用于查找空房间的索引位置; bookRoom 函数用于进行订房操作,并将租客姓名、租住天数和房间状态保存在相应的房间信息中; checkout 函数用于进行退房操作,并计算租金并输出。

你可以根据需要修改和扩展此代码,例如增加保存信息到文件、从文件读取信息等功能。

源代码

#include <stdio.h>

#define ROOM_COUNT 10 // 房间数量

typedef struct {
    int id; // 房间号
    int status; // 房间状态:0 - 空房间,1 - 住人
    char name[20]; // 租客姓名
    int days; // 租住天数
} Room;

// 初始化所有房间为空房间
void initRooms(Room rooms[]) {
    for (int i = 0; i < ROOM_COUNT; i++) {
        rooms[i].id = i + 1;
        rooms[i].status = 0;
        rooms[i].name[0] = '\0'; // 姓名字段初始化为空字符串
        rooms[i].days = 0;
    }
}

// 显示菜单
void showMenu() {
    printf("******************************************\n");
    printf("***********欢迎使用酒店管理系统***********\n");
    printf("***********1.查看房间列表********************\n");
    printf("***********2.订房********************\n");
    printf("***********3.退房********************\n");
    printf("***********4.退出系统********************\n");
    printf("请选择对应的菜单选项:\n");
}

// 显示房间列表
void showRoomList(Room rooms[]) {
    printf("当前房间列表如下:\n");
    printf("---------------------------\n");
    printf("| 房间号 | 状态 | 租客姓名 | 租住天数 |\n");
    printf("---------------------------\n");
    for (int i = 0; i < ROOM_COUNT; i++) {
        char *statusMsg = rooms[i].status == 0 ? "空房间" : "住人";
        printf("| %2d     | %s | %-8s | %-6d |\n",
            rooms[i].id, statusMsg, rooms[i].name, rooms[i].days);
    }
    printf("---------------------------\n");
}

// 查找某个空闲房间的索引位置,如果没有空房间则返回 -1
int findEmptyRoom(Room rooms[]) {
    for (int i = 0; i < ROOM_COUNT; i++) {
        if (rooms[i].status == 0) {
            return i;
        }
    }
    return -1;
}

// 订房
void bookRoom(Room rooms[]) {
    int roomIndex = findEmptyRoom(rooms);
    if (roomIndex == -1) {
        printf("没有可用的房间,请稍后再试!\n");
        return;
    }

    printf("请输入租客姓名:\n");
    scanf("%s", rooms[roomIndex].name);

    printf("请输入租住天数:\n");
    int days;
    while (scanf("%d", &days) != 1 || days <= 0) {
        printf("输入无效,请重新输入:\n");
        fflush(stdin);
    };
    rooms[roomIndex].days = days;

    rooms[roomIndex].status = 1;

    printf("租房成功!\n");
}

// 退房
void checkout(Room rooms[]) {
    printf("请输入要退房的房间号:\n");
    int roomId;
    while (scanf("%d", &roomId) != 1 || roomId <= 0 ||
        roomId > ROOM_COUNT || rooms[roomId - 1].status == 0) {
        printf("输入无效,请重新输入:\n");
        fflush(stdin);
    }

    Room *room = &rooms[roomId - 1];

    // 计算租金
    int price = room->days * 100;

    printf("房间号:%d\n", room->id);
    printf("租客姓名:%s\n", room->name);
    printf("住店天数:%d\n", room->days);
    printf("总价:%d 元\n", price);

    // 退房操作
    room->status = 0;
    room->name[0] = '\0';
    room->days = 0;

    printf("退房成功!\n");
}

int main() {
    Room rooms[ROOM_COUNT];
    initRooms(rooms);

    while (1) {
        showMenu();

        int choice;
        while (scanf("%d", &choice) != 1 || choice < 1 || choice > 4) {
            printf("输入无效,请重新输入:\n");
            fflush(stdin);
        }

        switch (choice) {
            case 1:
                showRoomList(rooms);
                break;
            case 2:
                bookRoom(rooms);
                break;
            case 3:
                checkout(rooms);
                break;
            case 4:
                printf("谢谢使用,欢迎下次再来!\n");
                return 0;
            default:
                break;
        }
    }
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享