宾馆客房管理系统的设计与实现 c语言 单链表 源代码
时间: 2023-08-14 20:04:40 浏览: 129
C语言课程设计-宾馆客房管理系统
以下是一个用C语言实现宾馆客房管理系统的单链表源代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义客房结构体
typedef struct Room {
int roomNo; // 客房号
char roomType[20]; // 房间类型
float price; // 房间价格
int status; // 房间状态:0表示空闲,1表示已预订,2表示已入住
struct Room *next; // 指向下一个客房的指针
} Room;
// 定义客房管理系统结构体
typedef struct Hotel {
Room *head; // 指向链表头结点的指针
int count; // 客房数量
} Hotel;
// 初始化宾馆客房管理系统
void init(Hotel *hotel) {
hotel->head = NULL;
hotel->count = 0;
}
// 创建新的客房
Room *createRoom(int roomNo, char *roomType, float price, int status) {
Room *room = (Room *)malloc(sizeof(Room));
room->roomNo = roomNo;
strcpy(room->roomType, roomType);
room->price = price;
room->status = status;
room->next = NULL;
return room;
}
// 添加新的客房
void addRoom(Hotel *hotel, Room *room) {
if (hotel->head == NULL) {
hotel->head = room;
} else {
Room *p = hotel->head;
while (p->next != NULL) {
p = p->next;
}
p->next = room;
}
hotel->count++;
}
// 删除客房
void deleteRoom(Hotel *hotel, int roomNo) {
if (hotel->head == NULL) {
printf("宾馆客房管理系统为空,无法删除客房!\n");
return;
}
Room *p = hotel->head;
Room *pre = NULL;
while (p != NULL) {
if (p->roomNo == roomNo) {
break;
}
pre = p;
p = p->next;
}
if (p == NULL) {
printf("未找到客房号为%d的客房,无法删除!\n", roomNo);
return;
}
if (pre == NULL) {
hotel->head = p->next;
} else {
pre->next = p->next;
}
free(p);
hotel->count--;
}
// 修改客房信息
void updateRoom(Hotel *hotel, int roomNo, char *roomType, float price, int status) {
if (hotel->head == NULL) {
printf("宾馆客房管理系统为空,无法修改客房信息!\n");
return;
}
Room *p = hotel->head;
while (p != NULL) {
if (p->roomNo == roomNo) {
strcpy(p->roomType, roomType);
p->price = price;
p->status = status;
printf("客房信息修改成功!\n");
return;
}
p = p->next;
}
printf("未找到客房号为%d的客房,无法修改客房信息!\n", roomNo);
}
// 查询客房信息
void queryRoom(Hotel *hotel, int roomNo) {
if (hotel->head == NULL) {
printf("宾馆客房管理系统为空,无法查询客房信息!\n");
return;
}
Room *p = hotel->head;
while (p != NULL) {
if (p->roomNo == roomNo) {
printf("客房号:%d,类型:%s,价格:%.2f,状态:%d\n", p->roomNo, p->roomType, p->price, p->status);
return;
}
p = p->next;
}
printf("未找到客房号为%d的客房,无法查询客房信息!\n", roomNo);
}
// 显示所有客房信息
void showAllRooms(Hotel *hotel) {
if (hotel->head == NULL) {
printf("宾馆客房管理系统为空,无法显示客房信息!\n");
return;
}
printf("客房号\t类型\t价格\t状态\n");
Room *p = hotel->head;
while (p != NULL) {
printf("%d\t%s\t%.2f\t%d\n", p->roomNo, p->roomType, p->price, p->status);
p = p->next;
}
}
int main() {
Hotel hotel;
init(&hotel);
Room *room1 = createRoom(101, "单人间", 200.0, 0);
Room *room2 = createRoom(102, "双人间", 300.0, 0);
Room *room3 = createRoom(103, "豪华套房", 500.0, 0);
addRoom(&hotel, room1);
addRoom(&hotel, room2);
addRoom(&hotel, room3);
showAllRooms(&hotel);
deleteRoom(&hotel, 102);
updateRoom(&hotel, 103, "总统套房", 800.0, 1);
queryRoom(&hotel, 103);
showAllRooms(&hotel);
return 0;
}
```
说明:
以上代码实现了一个简单的宾馆客房管理系统,使用单链表来存储客房信息。程序中定义了客房结构体和宾馆客房管理系统结构体,并实现了添加客房、删除客房、修改客房信息、查询客房信息和显示所有客房信息等基本功能。在主函数中,先初始化宾馆客房管理系统,然后创建三个客房并添加到系统中,显示所有客房信息,删除一个客房,修改一个客房信息,查询一个客房信息,最后再次显示所有客房信息。
阅读全文