酒店管理系統是一個用于管理酒店日常運營的軟件系統,涵蓋了客房管理、客戶信息管理、預訂管理、賬單管理等功能。使用C語言實現一個簡單的酒店管理系統,可以幫助我們理解基本的編程概念和數據結構。本文將介紹如何使用C語言實現一個簡單的酒店管理系統。
一個簡單的酒店管理系統通常包括以下功能:
為了實現上述功能,我們需要設計一些基本的數據結構來存儲相關信息。
struct Room {
int roomNumber; // 房間號
char type[20]; // 房間類型
float price; // 房間價格
int isOccupied; // 是否被占用
};
struct Customer {
char name[50]; // 客戶姓名
char phone[15]; // 客戶電話
int roomNumber; // 預訂的房間號
};
struct Reservation {
int reservationId; // 預訂ID
struct Customer customer; // 客戶信息
int roomNumber; // 預訂的房間號
char checkInDate[20]; // 入住日期
char checkOutDate[20]; // 退房日期
};
void addRoom(struct Room rooms[], int *roomCount) {
printf("Enter room number: ");
scanf("%d", &rooms[*roomCount].roomNumber);
printf("Enter room type: ");
scanf("%s", rooms[*roomCount].type);
printf("Enter room price: ");
scanf("%f", &rooms[*roomCount].price);
rooms[*roomCount].isOccupied = 0;
(*roomCount)++;
printf("Room added successfully!\n");
}
void deleteRoom(struct Room rooms[], int *roomCount, int roomNumber) {
for (int i = 0; i < *roomCount; i++) {
if (rooms[i].roomNumber == roomNumber) {
for (int j = i; j < *roomCount - 1; j++) {
rooms[j] = rooms[j + 1];
}
(*roomCount)--;
printf("Room deleted successfully!\n");
return;
}
}
printf("Room not found!\n");
}
void addCustomer(struct Customer customers[], int *customerCount) {
printf("Enter customer name: ");
scanf("%s", customers[*customerCount].name);
printf("Enter customer phone: ");
scanf("%s", customers[*customerCount].phone);
printf("Enter room number: ");
scanf("%d", &customers[*customerCount].roomNumber);
(*customerCount)++;
printf("Customer added successfully!\n");
}
void addReservation(struct Reservation reservations[], int *reservationCount, struct Customer customers[], int customerCount, struct Room rooms[], int roomCount) {
printf("Enter customer name: ");
char name[50];
scanf("%s", name);
for (int i = 0; i < customerCount; i++) {
if (strcmp(customers[i].name, name) == 0) {
reservations[*reservationCount].customer = customers[i];
printf("Enter room number: ");
int roomNumber;
scanf("%d", &roomNumber);
for (int j = 0; j < roomCount; j++) {
if (rooms[j].roomNumber == roomNumber && !rooms[j].isOccupied) {
reservations[*reservationCount].roomNumber = roomNumber;
rooms[j].isOccupied = 1;
printf("Enter check-in date: ");
scanf("%s", reservations[*reservationCount].checkInDate);
printf("Enter check-out date: ");
scanf("%s", reservations[*reservationCount].checkOutDate);
(*reservationCount)++;
printf("Reservation added successfully!\n");
return;
}
}
printf("Room not available!\n");
return;
}
}
printf("Customer not found!\n");
}
void generateBill(struct Reservation reservations[], int reservationCount, struct Room rooms[], int roomCount) {
printf("Enter reservation ID: ");
int reservationId;
scanf("%d", &reservationId);
for (int i = 0; i < reservationCount; i++) {
if (reservations[i].reservationId == reservationId) {
for (int j = 0; j < roomCount; j++) {
if (rooms[j].roomNumber == reservations[i].roomNumber) {
printf("Customer: %s\n", reservations[i].customer.name);
printf("Room Number: %d\n", reservations[i].roomNumber);
printf("Room Type: %s\n", rooms[j].type);
printf("Price: %.2f\n", rooms[j].price);
printf("Check-in Date: %s\n", reservations[i].checkInDate);
printf("Check-out Date: %s\n", reservations[i].checkOutDate);
return;
}
}
}
}
printf("Reservation not found!\n");
}
為了使用戶能夠方便地使用系統,我們需要設計一個主菜單。
void displayMenu() {
printf("\nHotel Management System\n");
printf("1. Add Room\n");
printf("2. Delete Room\n");
printf("3. Add Customer\n");
printf("4. Add Reservation\n");
printf("5. Generate Bill\n");
printf("6. Exit\n");
}
最后,我們需要在主函數中調用上述功能。
int main() {
struct Room rooms[100];
struct Customer customers[100];
struct Reservation reservations[100];
int roomCount = 0;
int customerCount = 0;
int reservationCount = 0;
int choice;
while (1) {
displayMenu();
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addRoom(rooms, &roomCount);
break;
case 2:
printf("Enter room number to delete: ");
int roomNumber;
scanf("%d", &roomNumber);
deleteRoom(rooms, &roomCount, roomNumber);
break;
case 3:
addCustomer(customers, &customerCount);
break;
case 4:
addReservation(reservations, &reservationCount, customers, customerCount, rooms, roomCount);
break;
case 5:
generateBill(reservations, reservationCount, rooms, roomCount);
break;
case 6:
printf("Exiting...\n");
return 0;
default:
printf("Invalid choice!\n");
}
}
return 0;
}
通過以上步驟,我們實現了一個簡單的酒店管理系統。這個系統雖然功能較為基礎,但涵蓋了C語言中的基本概念,如結構體、數組、函數等。通過進一步擴展,可以增加更多功能,如數據持久化、用戶界面優化等,使系統更加完善。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。