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

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

相关推荐
leisoo80972 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
不会代码的小猴2 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
青瓦梦滋3 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
一只旭宝3 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
java1234_小锋4 小时前
【免费】基于Python的微信小程序网约车(打车,在线叫车,移动出行)系统(FastAPI+Vue3) 锋哥原创出品,必属精品
微信小程序·小程序·fastapi·网约车系统·在线叫车系统
coder!mq5 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding5 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
Lhan.zzZ5 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
心平气和量大福大6 小时前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
码哥DFS6 小时前
构造函数、实例对象、对象原型 ----三者关系
开发语言·javascript·原型模式