酒店管理系统小程序(包含源码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 类交互。

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

相关推荐
shinelord明9 分钟前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
Monly2115 分钟前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
boligongzhu16 分钟前
DALSA工业相机SDK二次开发(图像采集及保存)C#版
开发语言·c#·dalsa
Eric.Lee202116 分钟前
moviepy将图片序列制作成视频并加载字幕 - python 实现
开发语言·python·音视频·moviepy·字幕视频合成·图像制作为视频
小俊俊的博客17 分钟前
海康RGBD相机使用C++和Opencv采集图像记录
c++·opencv·海康·rgbd相机
7yewh19 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
长风清留扬21 分钟前
小程序毕业设计-音乐播放器+源码(可播放)下载即用
javascript·小程序·毕业设计·课程设计·毕设·音乐播放器
waicsdn_haha30 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
_WndProc32 分钟前
C++ 日志输出
开发语言·c++·算法
薄荷故人_34 分钟前
从零开始的C++之旅——红黑树及其实现
数据结构·c++