【C++】C++旅游管理系统(源码+论文)【独一无二】

简介: 【C++】C++旅游管理系统(源码+论文)【独一无二】

一、设计要求

某旅馆有n个等级的房间,第I等级有a个房间,每个等级的房间有b个床位(1<i<n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。


旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床。位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束;

旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈


二、设计思路

这段代码实现了一个宾馆房间管理系统,包含房间和顾客的信息管理,提供房间录入、入住登记、退房结账、信息显示和查询等功能。以下是对各个代码块的实现思路分析:


日期类 Data

class Data {
public:
    Data() {}
    ~Data() {}
    void SetDate(int year, int month, int day) {
        this->year = year;
        this->month = month;
        this->day = day;
    }
      // 略....(至少10行代码)
        // 略....(至少10行代码)
};


  • 这是一个日期类,用于记录交易时间。包含年、月、日属性和相应的设置和获取函数。


房间类 Room

class Room {
public:
    Room* r[Max];
    int Room_count;

      // 略....(至少10行代码)
        // 略....(至少10行代码)
protected:
    int Number;
    string Type;
    string Whether;
    double Price;
};


  • 这个类用于存储房间信息,包含房间号、类型、状态(是否有客人)和价格等属性。提供了信息输入、状态设置和显示函数。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈


顾客类 Guest

class Guest {
public:
    Guest* g[Max];
    int Guest_count;

    Guest(int number, string Name, int Id, string sex, string Intime, int days) {
        this->Name = Name;
        this->Id = Id;
        this->sex = sex;
        this->number = number;
        this->Intime = Intime;
        this->days = days;
    }

      // 略....(至少10行代码)
        // 略....(至少10行代码)

protected:
    int number;
    string Name;
    int Id;
    string sex;
    string Intime;
    int days;
};


  • 这个类用于存储顾客信息,包含房号、姓名、身份证号、性别、入住时间和天数等属性。提供了信息输入和显示函数。


管理类 Manage

class Manage {
public:
    Guest* g[Max];
    int Guest_count;
    Room* r[Max];
    int Room_count;

      // 略....(至少10行代码)
        // 略....(至少10行代码)
    void SearchType();
    void SearchNumber();
};


  • 这个类负责管理所有的房间和顾客信息,包含增删改查等功能。它使用房间和顾客的指针数组来存储对象,并提供相关操作函数。

功能实现

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈


查询菜单
void Manage::SearchMenu() {
    int n;
    system("cls");
    cout << "====================================" << endl;
    cout << "=         查   询   菜   单        =" << endl;
    cout << "====================================" << endl;
    cout << "=========  1、查 询 空 房    =======" << endl;
    cout << "=========  2、按房间号查询   =======" << endl;
    cout << "====================================" << endl;
    cout << endl << "请选择: ";
    cin >> n;
    switch (n) {
        case 1: SearchType(); break;
        case 2: SearchNumber(); break;
    }
}


  • 查询菜单提供了查询空房和按房间号查询的选项。


增加房间
void Manage::IncreaseRoom() {
    string type, Whether;
    double price;
    int number;
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}


  • 该函数用于增加房间信息,输入房号、类型、价格和状态,并将其写入文件。


入住登记
void Manage::Check_In() {
    ReadData();
    SearchType();
    string name, intime, sex, type;
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}


  • 入住登记功能,输入顾客信息并将其写入文件,同时更新房间状态。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈


退房结账
int Manage::Payment() {
    ReadData();
    Display(2);
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}

void Manage::Check_Out() {
    int x = Payment();
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}


  • 退房结账功能,计算顾客消费金额并更新房间状态。


显示信息
void Manage::Display(int n) {
    ReadData();
    switch (n) {
        case 1:
            for (i = 0; i < Room_count - 1; i++) {
                cout << "房号:" << r[i]->InputNumber() << "\t房间类型: " << r[i]->InputType() << "\t房间价格: " << r[i]->InputPrice() << "\t房间状态: " << r[i]->InputWhether() << endl << endl;
            }
            break;
        case 2:
            for (i = 0; i < Guest_count - 1; i++) {
                cout << "房间号: " << g[i]->InputNumber() << "\t顾客姓名: " << g[i]->InputName() << "\t身份证号: " << g[i]->InputId() << "\t顾客性别:" << g[i]->InputSex() << "\t入住时间: " << g[i]->InputIntime() << "\t入住天数: " << g[i]->InputDays() << endl << endl;
            }
            break;
    }
}


  • 显示所有房间或顾客信息。


数据读写
void Manage::ReadData() {
      // 略....(至少10行代码)
        // 略....(至少10行代码)
    Rin.close();

    Gin.open("guest.txt", ios::in);
    if (!Gin

) {
        cout << "未找到guest文件,请先建立文件!" << endl;
        return;
    }
    Guest_count = 0;
      // 略....(至少10行代码)
        // 略....(至少10行代码)
    Gin.close();
}

void Manage::WriteData(int n) {
    switch (n) {
        case 1: {
      // 略....(至少10行代码)
        // 略....(至少10行代码)
        }
        case 2: {
            ofstream Gout("guest.txt", ios::trunc);
            for (i = 0; i < Guest_count - 1; i++) {
                if (g[i] != NULL) {
                    WriteGuest(g[i]);
                }
            }
            Gout.close();
            break;
        }
    }
}

void Manage::WriteRoom(Room* r) {
    ofstream Rout("room.txt", ios::app);
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}

void Manage::WriteGuest(Guest* g) {
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}


  • 从文件中读取房间和顾客信息,写入房间和顾客信息到文件。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈


查询功能
void Manage::SearchType() {
    ReadData();
    for (i = 0; i < Room_count; i++) {
        if (r[i]->InputWhether() == "无") {
            r[i]->show();
        }
    }
}

void Manage::SearchNumber() {
    ReadData();
    int number;
    cout << "请输出要查询的房间号: "; cin >> number;
      // 略....(至少10行代码)
        // 略....(至少10行代码)
}


  • 查询所有空房间和按房间号查询,显示对应的房间和顾客信息。


主程序入口

int main() {
    Manage M;
    int n;
    while (1) {
        system("cls");
        cout << endl << endl << endl << "\t\t\t宾 馆 房 间 管 理 系 统     " << endl << endl;
        cout << "\t\t\t1、房 间 信 息 的 录 入" << endl << endl;
        cout << "\t\t\t2、顾 客 入 住 房 间 登 记" << endl << endl;
        cout << "\t\t\t3、顾 客 退 房 结 账" << endl << endl;
        cout << "\t\t\t4、所 有 房 间 信 息 显 示" << endl << endl;
        cout << "\t\t\t5、所 有 顧 客 的 显 示" << endl << endl;
        cout << "\t\t\t6、查 询 所 有 空 房 间" << endl << endl;
        cout << "\t\t\t7、查 询 指 定 的 房 间 号" << endl << endl;
        cout << "\t\t\t8、退 出 系 统" << endl << endl;
        cout << endl << "请选择:  ";
        cin >> n;
        cout << endl << endl;
        switch (n) {
        
      // 略....(至少10行代码)
        // 略....(至少10行代码)
    }
    return 0;
}


  • 主程序提供一个菜单系统,用户可以选择不同的功能来管理房间和顾客信息。根据用户选择,调用相应的管理函数。

三、可视化分析





👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈





👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 旅游 ” 获取,拿来即用。👈👈👈

相关文章
|
3月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
79 0
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
53 2
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
42 3
|
3月前
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
61 1
|
3月前
|
存储 数据可视化 C++
【C++】C++ 职工信息管理系统(源码)【独一无二】
【C++】C++ 职工信息管理系统(源码)【独一无二】
|
3月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
26 0
|
3月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
56 0
|
3月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
120 0
|
3月前
|
算法 数据可视化 C++
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
|
6天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
29 4