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

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

相关推荐
Sapphire~13 分钟前
odoo-095 视图的重写规则(全部重写还是部分改写)
开发语言·javascript·ecmascript
利威尔xu14 分钟前
Go GMP 调度器 10 个高频追问:3 个线上故障让 P99 从 80ms 飙到 2s、10 万 goroutine 泄漏
开发语言·后端·面试·性能优化·golang
中电金信21 分钟前
从业务调优到分层缓存:DeepSeek V4 Flash的PPU实践
java·开发语言
梦影_23 分钟前
MySQL进阶教程(二)—— 储存过程与触发器(下)
开发语言·数据库·后端·sql·mysql·oracle·数据库开发
lg_cool_29 分钟前
Python 代码打包
开发语言·python
木雷坞33 分钟前
PHP两项9.2分漏洞:Docker容器更新与版本核验教程
开发语言·docker·php
2601_9628857241 分钟前
如何用 Python 做 MACD 金叉全市场选股?
开发语言·python
FfHUCisI42 分钟前
无锁 Reactor 网络模型与 gnet / evio 架构拆解
服务器·开发语言·后端·golang
笨笨饿44 分钟前
#145 _Codex 三层故障详细排查与修复步骤
开发语言·人工智能·stm32·单片机·嵌入式硬件
心中有你02141 小时前
C 语言文件操作详解:从写入、追加到读取与定位的完整 实战
c语言·开发语言