酒店管理系统小程序(包含源码C++实现)

本文实现一个酒店管理系统小程序,涉及多个方面,包括用户接口、房间管理、预订系统、用户管理等。为了保持示例的简洁性,下面的实现将包括一个简单的控制台程序,演示基本的酒店管理功能。这将涵盖以下功能:

  1. 查看房间状态
  2. 预订房间
  3. 取消预订
  4. 查看预订信息

以下是一个基础的实现示例:

1. 主要文件和目录结构

hotel_management/
├── main.cpp
├── Hotel.h
├── Hotel.cpp
├── Room.h
├── Room.cpp
└── CMakeLists.txt

2. Room.h

cpp 复制代码
#ifndef ROOM_H
#define ROOM_H

#include <string>

class Room {
public:
    Room(int number, bool isAvailable = true);
    int getNumber() const;
    bool isAvailable() const;
    void book();
    void cancel();

private:
    int number;
    bool available;
};

#endif // ROOM_H

3. Room.cpp

cpp 复制代码
#include "Room.h"

Room::Room(int number, bool isAvailable) : number(number), available(isAvailable) {}

int Room::getNumber() const {
    return number;
}

bool Room::isAvailable() const {
    return available;
}

void Room::book() {
    available = false;
}

void Room::cancel() {
    available = true;
}

4. Hotel.h

cpp 复制代码
#ifndef HOTEL_H
#define HOTEL_H

#include "Room.h"
#include <vector>

class Hotel {
public:
    Hotel(int numRooms);
    void showAvailableRooms() const;
    bool bookRoom(int roomNumber);
    bool cancelBooking(int roomNumber);
    void showBookings() const;

private:
    std::vector<Room> rooms;
};

#endif // HOTEL_H

5. Hotel.cpp

cpp 复制代码
#include "Hotel.h"
#include <iostream>

Hotel::Hotel(int numRooms) {
    for (int i = 1; i <= numRooms; ++i) {
        rooms.emplace_back(i);
    }
}

void Hotel::showAvailableRooms() const {
    std::cout << "Available Rooms:\n";
    for (const auto &room : rooms) {
        if (room.isAvailable()) {
            std::cout << "Room " << room.getNumber() << "\n";
        }
    }
}

bool Hotel::bookRoom(int roomNumber) {
    for (auto &room : rooms) {
        if (room.getNumber() == roomNumber && room.isAvailable()) {
            room.book();
            return true;
        }
    }
    return false;
}

bool Hotel::cancelBooking(int roomNumber) {
    for (auto &room : rooms) {
        if (room.getNumber() == roomNumber && !room.isAvailable()) {
            room.cancel();
            return true;
        }
    }
    return false;
}

void Hotel::showBookings() const {
    std::cout << "Booked Rooms:\n";
    for (const auto &room : rooms) {
        if (!room.isAvailable()) {
            std::cout << "Room " << room.getNumber() << "\n";
        }
    }
}

6. main.cpp

cpp 复制代码
#include <iostream>
#include "Hotel.h"

void showMenu() {
    std::cout << "Hotel Management System\n";
    std::cout << "1. View Available Rooms\n";
    std::cout << "2. Book a Room\n";
    std::cout << "3. Cancel Booking\n";
    std::cout << "4. View Bookings\n";
    std::cout << "5. Exit\n";
    std::cout << "Choose an option: ";
}

int main() {
    Hotel hotel(10); // Initialize hotel with 10 rooms

    int choice;
    int roomNumber;
    while (true) {
        showMenu();
        std::cin >> choice;

        switch (choice) {
            case 1:
                hotel.showAvailableRooms();
                break;
            case 2:
                std::cout << "Enter room number to book: ";
                std::cin >> roomNumber;
                if (hotel.bookRoom(roomNumber)) {
                    std::cout << "Room " << roomNumber << " booked successfully.\n";
                } else {
                    std::cout << "Failed to book room " << roomNumber << ".\n";
                }
                break;
            case 3:
                std::cout << "Enter room number to cancel: ";
                std::cin >> roomNumber;
                if (hotel.cancelBooking(roomNumber)) {
                    std::cout << "Booking for room " << roomNumber << " canceled successfully.\n";
                } else {
                    std::cout << "Failed to cancel booking for room " << roomNumber << ".\n";
                }
                break;
            case 4:
                hotel.showBookings();
                break;
            case 5:
                return 0;
            default:
                std::cout << "Invalid option. Please try again.\n";
        }
    }

    return 0;
}

7. CMakeLists.txt

cmake 复制代码
cmake_minimum_required(VERSION 3.10)
project(HotelManagement)

set(CMAKE_CXX_STANDARD 11)

add_executable(HotelManagement main.cpp Hotel.cpp Room.cpp)

编译和运行

  1. 创建构建目录:

    bash 复制代码
    mkdir build
    cd build
  2. 生成构建文件:

    bash 复制代码
    cmake ..
  3. 编译项目:

    bash 复制代码
    make
  4. 运行程序:

    bash 复制代码
    ./HotelManagement

说明

  • Room 类: 表示酒店房间,包含房间号和是否可用的状态。
  • Hotel 类: 管理一组房间,提供查看可用房间、预订房间、取消预订和查看预订信息的功能。
  • main.cpp : 提供了一个简单的用户界面,允许用户选择不同的操作并与 Hotel 类交互。

这个示例是一个简化的酒店管理系统,适合用作学习和基础参考。如果需要更复杂的功能,如用户身份管理、详细的预订信息管理等,可以在此基础上扩展。

相关推荐
爱摸鱼的孔乙己15 分钟前
【数据结构】链表(leetcode)
c语言·数据结构·c++·链表·csdn
Dola_Pan17 分钟前
C语言:数组转换指针的时机
c语言·开发语言·算法
ExiFengs17 分钟前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj12345678919 分钟前
JDK1.8新增特性
java·开发语言
IT古董26 分钟前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
繁依Fanyi30 分钟前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
烦躁的大鼻嘎1 小时前
模拟算法实例讲解:从理论到实践的编程之旅
数据结构·c++·算法·leetcode
IU宝1 小时前
C/C++内存管理
java·c语言·c++
湫ccc1 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
fhvyxyci1 小时前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string