程序介绍
使用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