c++宾馆客房管理系统,程序设计

宾馆客房管理系统(必须用类)
题目描述:设计一个宾馆客房管理系统,以菜单方式工作。
功能需求:
(1) 设计一个房间类Room, 记录的客房信息包括客房号、客房类型、客房价格、空闲情况、客人姓名、客人身份证号、入住时间、退房时间,预付费用等信息。
(2)客房信息的录入功能。
(3) 客人入住登记。
(4)客房信息浏览功能,浏览全部客房的信息。 支持按照空房、姓名、身份证号、 房间号查询。
(5) 客人退房结算。
(6)使用外部文件存储相关数据。

写注释!
要符合提干要求,外部文件

客房管理系统,现写的代码,运行结果如下:(有的截图中没有回车的地方,代码中已经修改了)

img

img

img

img

img

代码:

//酒店管理系统
/*
(1) 设计一个房间类Room, 记录的客房信息包括客房号、客房类型、客房价格、空闲情况、客人姓名、客人身份证号、入住时间、退房时间,预付费用等信息。
(2) 客房信息的录入功能。
(3) 客人入住登记。
(4) 客房信息浏览功能,浏览全部客房的信息。 支持按照空房、姓名、身份证号、 房间号查询。
(5) 客人退房结算。
(6) 使用外部文件存储相关数据。
*/

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

//定义客房类型
enum eRomeType 
{
    e_rome_bj,  //标准间
    e_rome_dcf, //大床房
    e_rome_scf, //双床房
    e_rome_hhdcf, //豪华大床房
    e_rome_hhscf, //豪华双床房
    e_rome_swdcf, //商务大床房
    e_rome_zttf //总统套房
};

//定义客房状态
enum eRomeState //在低版本vs中,可以直接写成 enum eRomeState
{
    e_state_using, //再用
    e_state_preshoping, //已预定(尚未入住)
    e_state_free //空闲
};


//定义顾客信息
class Guest
{
private:
    string mName; //姓名
    string mCard; //身份证号
    string mPhoneNmb; //手机号
    int mPrePay; //剩余预付费金额
public:
    Guest(string name="", string id = "", string phone = "", int prepay = 0)
    {
        mName = name;
        mCard = id;
        mPhoneNmb = phone;
        mPrePay = prepay;
    }
    /*getter and setter functions*/
    string getName() { return mName; }
    string getId() { return mCard; }
    string getPhoneNmb() { return mPhoneNmb; }
    int getPrePay() { return mPrePay; }

    void setName(string name) { mName = name; }
    void setId(string id) { mCard = id; }
    void setPhoneNmb(string nmb) { mPhoneNmb = nmb; }
    void setPrePay(int p) { mPrePay = p; }

    /*输入输出运算符重载*/
    //friend ostream& operator << (ostream& os, Guest& p);
    //friend istream& operator >> (istream& is, Guest& p);
};

//定义日期类
struct MyDate
{
    int year, mon, day;
    MyDate()
    {
        year = 0;
        mon = 0;
        day = 0;
    }
};

class Rome
{
private:
    string mRomeId;  //房间号
    eRomeType mRomeType; //客房类型
    int mPrice; //房价
    eRomeState mRomeState; //客房状态
    Guest mGuest; //客户信息
    MyDate mStart; //入住日期
    MyDate mEnd; //退房日期

public:
    Rome()
    {
        mRomeId = "";
        mRomeType = e_rome_bj;
        mPrice = 0;
        mRomeState = e_state_free;
        mStart.year = 0;
        mStart.mon = 0;
        mStart.day = 0;
        mEnd.year = 0;
        mEnd.mon = 0;
        mEnd.day = 0;
    }
    Rome(string id, eRomeType type, int price, eRomeState state = e_state_free)
    {
        mRomeId = id;
        mRomeType = type;
        mPrice = price;
        mRomeState = state;
    }

    /*getter and setter functions*/
    string getRomeId() { return mRomeId; }
    eRomeType getRomeType() { return mRomeType; }
    int getPrice() { return mPrice; }
    eRomeState getRomeState() { return mRomeState; }
    Guest getGuest() { return mGuest; }
    MyDate getStartDate() { return mStart; }
    MyDate getEndDate() { return mEnd; }

    void setRomeId(string id) { mRomeId = id; }
    void setRomeType(eRomeType t) { mRomeType = t; }
    void setRomePrice(int p) { mPrice = p; }
    void setRomeState(eRomeState s) { mRomeState = s; }
    void setGuest(Guest g) { mGuest = g; }
    void setStartDate(MyDate d) { mStart = d; }
    void setEndDate(MyDate d) { mEnd = d; }

    /*输入输出运算符重载*/
    friend ostream& operator << (ostream& os, Rome& p);
    friend istream& operator >> (istream& is, Rome& p);
};

ostream& operator << (ostream& os, Rome& p)
{
    os << p.mRomeId << " ";
    switch (p.mRomeType)
    {
    case e_rome_bj:
        os << "1 "; break;
    case e_rome_dcf:
        os << "2 "; break;
    case e_rome_scf: //双床房
        os << "3 "; break;
    case e_rome_hhdcf: //豪华大床房
        os << "4 "; break;
    case e_rome_hhscf: //豪华双床房
        os << "5 "; break;
    case e_rome_swdcf: //商务大床房
        os << "6 "; break;
    case e_rome_zttf: //总统套房
        os << "7 "; break;
    }
    os << p.mPrice << " ";

    switch (p.mRomeState)
    {
    case e_state_using:
        os << "1 ";    break;
    case e_state_preshoping:
        os << "2 "; break;
    case e_state_free:
        os << "3 "; break;
    }

    if (p.mRomeState == e_state_using)
        os << p.mGuest.getName() << " " << p.mGuest.getId() << " " << p.mGuest.getPhoneNmb() << " " << p.mGuest.getPrePay() << " ";
    else
        os << "0 0 0 0 ";

    os << p.mStart.year<<"-" << p.mStart.mon<<"-" << p.mStart.day << " ";
    os << p.mEnd.year << "-" << p.mEnd.mon << "-" << p.mEnd.day << endl;

    return os;
}

istream& operator >> (istream& is, Rome& p)
{
    int tmp;
    char ch;
    string str;
    is >> p.mRomeId;
    is >> tmp;
    switch (tmp)
    {
    case 1:
        p.mRomeType = e_rome_bj;
        break;
    case 2:
        p.mRomeType = e_rome_dcf;
        break;
    case 3:
        p.mRomeType = e_rome_scf; //双床房
        break;
    case 4:
        p.mRomeType = e_rome_hhdcf; //豪华大床房
        break;
    case 5:
        p.mRomeType = e_rome_hhscf; //豪华双床房
        break;
    case 6:
        p.mRomeType = e_rome_swdcf; //商务大床房
        break;
    case 7:
        p.mRomeType = e_rome_zttf; //总统套房
        break;
    }
    is >> p.mPrice;

    is >> tmp;
    switch (tmp)
    {
    case 1:
        p.mRomeState = e_state_using;
        break;
    case 2:
        p.mRomeState = e_state_preshoping;
        break;
    case 3:
        p.mRomeState = e_state_free;
        break;
    }
    is >> str;
    p.mGuest.setName(str);
    is >> str;
    p.mGuest.setId(str);
    is >> str;
    p.mGuest.setPhoneNmb(str);
    is >> tmp;
    p.mGuest.setPrePay(tmp);

    is >> p.mStart.year >> ch >> p.mStart.mon >> ch >> p.mStart.day;
    is >> p.mEnd.year >> ch >> p.mEnd.mon >> ch >> p.mEnd.day;

    return is;
}

//显示住房信息
void showSingleInfo(Rome p)
{
    cout << p.getRomeId() << " ";
    switch (p.getRomeType())
    {
    case e_rome_bj:
        cout << "标准间 "; break;
    case e_rome_dcf:
        cout << "大床房 "; break;
    case e_rome_scf: //双床房
        cout << "双床房 "; break;
    case e_rome_hhdcf: //豪华大床房
        cout << "豪华大床房 "; break;
    case e_rome_hhscf: //豪华双床房
        cout << "豪华双床房 "; break;
    case e_rome_swdcf: //商务大床房
        cout << "商务大床房 "; break;
    case e_rome_zttf: //总统套房
        cout << "总统套房 "; break;
    }
    cout << p.getPrice() << " ";

    switch (p.getRomeState())
    {
    case e_state_using:
        cout << "已入住 ";    break;
    case e_state_preshoping:
        cout << "已预定 "; break;
    case e_state_free:
        cout << "空闲 "; break;
    }

    if (p.getRomeState() == e_state_using)
    {
        cout << p.getGuest().getName() << " " << p.getGuest().getId() << " " << p.getGuest().getPhoneNmb() << " " << p.getGuest().getPrePay() << " ";

        cout << p.getStartDate().year << "-" << p.getStartDate().mon << "-" << p.getStartDate().day << " ";
        cout << p.getEndDate().year << "-" << p.getEndDate().mon << "-" << p.getEndDate().day << endl;
    }
    else
        cout << endl;

}

//录入客房信息
void addRome(Rome romes[], int &n)
{
    int flag = 1;
    while (1)
    {
        system("cls");
        Rome r;
        string str;
        cout << "请输入房间号:";
        cin >> str;
        r.setRomeId(str);
        cout << "请选择房间类型:" << endl;
        cout << "\t1.标准间\n";
        cout << "\t2.大床房\n";
        cout << "\t3.双床房\n";
        cout << "\t4.豪华大床房\n";
        cout << "\t5.豪华双床房\n";
        cout << "\t6.商务大床房\n";
        cout << "\t7.总统套房\n";
        int type;
        cin >> type;
        switch (type)
        {
        case 1: r.setRomeType(e_rome_bj); break;
        case 2: r.setRomeType(e_rome_dcf); break;
        case 3: r.setRomeType(e_rome_scf); break;
        case 4: r.setRomeType(e_rome_hhdcf); break;
        case 5: r.setRomeType(e_rome_hhscf); break;
        case 6: r.setRomeType(e_rome_swdcf); break;
        case 7: r.setRomeType(e_rome_zttf); break;
        }
        int price;
        cout << "请输入价格:";
        cin >> price;
        r.setRomePrice(price);

        romes[n] = r;
        n++;

        cout << "添加成功,是否继续添加(1.继续 2.结束):";
        cin >> flag;
        if (flag == 2)
            break;
    }
    system("pause");
}

//入住
void homeIn(Rome romes[], int n)
{
    system("cls");
    while (1)
    {
        cout << "请输入入住房间类型:\n";
        int type;
        cout << "\t1.标准间\n";
        cout << "\t2.大床房\n";
        cout << "\t3.双床房\n";
        cout << "\t4.豪华大床房\n";
        cout << "\t5.豪华双床房\n";
        cout << "\t6.商务大床房\n";
        cout << "\t7.总统套房\n";

        eRomeType e = e_rome_bj;
        while (1)
        {
            cin >> type;
            if (type >= 1 && type <= 7)
                break;
            else
                cout << "请输入1-7之间的数字:";
        }

        switch (type)
        {
        case 1: e = e_rome_bj; break;
        case 2: e = e_rome_dcf; break;
        case 3: e = e_rome_scf; break;
        case 4: e = e_rome_hhdcf; break;
        case 5: e = e_rome_hhscf; break;
        case 6: e = e_rome_swdcf; break;
        case 7: e = e_rome_zttf; break;
        }

        //查找符合条件的房间
        int flag = 0;
        for (int i = 0; i < n; i++)
        {
            if (romes[i].getRomeState() == e_state_free && romes[i].getRomeType() == e)
            {
                cout << romes[i].getRomeId() << "   " << romes[i].getPrice() << endl;
                flag = 1;
            }
        }
        if (flag == 0)
        {
            cout << "目前没有该类型的房间,请重新选择\n";
            continue;
        }
        else
        {
            string romeid;
            cout << "请输入房间号:";
            cin >> romeid;
            for (int i = 0; i < n; i++)
            {
                if (romes[i].getRomeId().compare(romeid) == 0)
                {
                    string name, id, phone;
                    int prepay;
                    cout << "请输入用户名:";
                    cin >> name;
                    cout << "请输入身份证号:";
                    cin >> id;
                    cout << "请输入手机号:";
                    cin >> phone;
                    cout << "请输入预付金额:";
                    cin >> prepay;

                    Guest g(name, id, phone, prepay);
                    romes[i].setGuest(g);
                    romes[i].setRomeState( e_state_using);

                    cout << "请输入入住日期:";
                    MyDate start, end;
                    cin >> start.year >> start.mon >> start.day;

                    cout << "请输入退房日期:";
                    cin >> end.year >> end.mon >> end.day;
                    romes[i].setStartDate(start);
                    romes[i].setEndDate(end);


                    cout << "入住办理成功\n";
                    system("pause");
                    return;
                }
            }
        }
    }
}

// 查询
void Search(Rome romes[], int n)
{
    int op;
    int type;
    int i;
    eRomeType e;
    string str;
    while (1)
    {
        system("cls");
        cout << "1.显示所有客房信息\n";
        cout << "2.按照客房类型查询\n";
        cout << "3.显示所有空闲客房\n";
        cout << "4.根据用户名查询\n";
        cout << "5.根据房间号查询\n";
        cout << "6.根据身份证号查询\n";
        cout << "0.结束查询\n";
        cin >> op;

        switch (op)
        {
        case 0:
            return;
        case 1:
            for (i = 0; i < n; i++)
                showSingleInfo(romes[i]);
            break;
        case 2:
            cout << "请选择房间类型:\n";
            cout << "\t1.标准间\n";
            cout << "\t2.大床房\n";
            cout << "\t3.双床房\n";
            cout << "\t4.豪华大床房\n";
            cout << "\t5.豪华双床房\n";
            cout << "\t6.商务大床房\n";
            cout << "\t7.总统套房\n";
            while (1)
            {
                cin >> type;
                if (type >= 1 && type <= 7)
                    break;
                else
                    cout << "请输入1-7之间的数字:";
            }

            switch (type)
            {
            case 1: e = e_rome_bj; break;
            case 2: e = e_rome_dcf; break;
            case 3: e = e_rome_scf; break;
            case 4: e = e_rome_hhdcf; break;
            case 5: e = e_rome_hhscf; break;
            case 6: e = e_rome_swdcf; break;
            case 7: e = e_rome_zttf; break;
            }
            for (i = 0; i < n; i++)
            {
                if (romes[i].getRomeType() == e)
                    cout << romes[i];
            }
            break;
        case 3:
            for (i = 0; i < n; i++)
            {
                if (romes[i].getRomeState() == e_state_free)
                    showSingleInfo(romes[i]);
            }
            break;
        case 4:
            cout << "请输入用户名:";
            cin >> str;
            for (i = 0; i < n; i++)
            {
                if (romes[i].getGuest().getName().compare(str) == 0)
                    showSingleInfo(romes[i]);
            }
            break;
        case 5:
            cout << "请输入房间号:";
            cin >> str;
            for (i = 0; i < n; i++)
            {
                if (romes[i].getRomeId().compare(str) == 0)
                    showSingleInfo(romes[i]);
            }
            break;
        case 6:
            cout << "请输入身份证号:";
            cin >> str;
            for (i = 0; i < n; i++)
            {
                if (romes[i].getGuest().getId().compare(str) == 0)
                    showSingleInfo(romes[i]);
            }
            break;

        }
        system("pause");
    }
}




//退房结算
void Tuifang(Rome romes[], int n)
{
    string romeid;
    int i = 0;
    system("cls");
    cout << "请输入房间号:";
    cin >> romeid;
    for ( i = 0; i < n; i++)
    {
        if (romes[i].getRomeId().compare(romeid) == 0 )
        {
            if (romes[i].getRomeState() != e_state_using)
            {
                cout << "此房间尚未有客人入住" << endl;
                break;
            }


            //居住天数(为了简便,这里让用户输入吧,否则计算比较麻烦)
            int days = 1;
            cout << "请输入实际居住天数:";
            cin >> days;


            int p, pre;
            p = romes[i].getPrice();
            pre = romes[i].getGuest().getPrePay();
            cout << "房间价格:" << p << endl;
            cout << "房客预付:" << pre << endl;
            if (pre > p*days)
                cout << "找零:" << pre - p << endl;
            else if (pre == p*days)
                cout << "预付刚好" << endl;
            else
                cout << "房客仍需支付" << p*days - pre << endl;

            //设置客房状态
            romes[i].setRomeState(e_state_free);

            cout << "退房成功!" << endl;
            break;
        }
    }
    if (i == n)
        cout << "查无此房" << endl;
    system("pause");
}


//保存文件
void SaveFile(Rome romes[], int n)
{
    ofstream os;
    os.open("./Hotel.txt", ios::out);
    for (int i = 0; i < n; i++)
        os << romes[i];
    os.close();
    cout << "保存成功\n";
    system("pause");
}

int main()
{
    int op; 
    int romNmb = 0;
    Rome romes[100];

    int flag = 1;
    while (1)
    {
        system("cls");
        cout << "1.录入客房信息" << endl;
        cout << "2.客人入住" << endl;
        cout << "3.查询" << endl;
        cout << "4.退房结算" << endl;
        cout << "5.保存到文件" << endl;
        cout << "0.退出系统" << endl;
        cin >> op;
        switch (op)
        {
        case 0: return 0;
        case 1: addRome(romes, romNmb); break;
        case 2: homeIn(romes, romNmb); break;
        case 3: Search(romes, romNmb); break;
        case 4: Tuifang(romes, romNmb); break;
        case 5: SaveFile(romes,romNmb); break;
        }

    }



    return 0;
}

作业,急

你运行一下,外部存储

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include<windows.h> 
#include<conio.h>
#define Max 100 
using namespace std;
class Data//日期类,记录交易时间 
{
    public:
        Data(){}//缺省构造函数
        ~Data(){}//析构函数
        void SetDate(int year,int month,int day)//接收输入的日期 
        {
            this->year=year;
            this->month=month;
            this->day=day;
         } 
         int getyear(){
             return year;
         }
        int getmonth(){
             return month;
         }
        int getday(){
             return day;
         }
    private:
        int year; 
        int month;
        int day; 
}; 
class Room
{
    public:
        Room *r[Max];//房间对象指针数组                                    
        int Room_count;    //记录房间数量    
        Room(int Number,string Type,double Price,string Whether)//构造函数 
        {
            this->Number=Number;
            this->Type=Type;
            this->Whether=Whether;
            this->Price=Price;
                    }
        int InputNumber()    {return Number;}
        string InputType(){return Type;}
        string InputWhether(){return Whether;}
        double InputPrice(){return Price;}
        void SetWether(string _state)    {Whether=_state;} 
        void show()    {cout<<"房号:  "<<Number<<"\t"<<"房间类型:  "<<Type<<"\t"<<"房间状态:  "<<Whether<<"\t"<<"价格:   "<<Price<<endl;}    
    protected:
        int Number; //房号 
        string Type;//类型 
        string Whether;//是否有客人 
        double Price;//价格 
            
};
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;
        }
        int InputNumber(){return number;}
        string InputName(){return Name;}
        string InputSex(){return sex;}
        int InputDays(){return days;}
        string InputIntime(){return Intime;}
        int InputId(){return Id;}
        void show() 
        {
            cout<<"顾客姓名:  "<<Name<<"\t 身份证号:  "<<Id<<"\t性别:  "<<sex<<"\t入住时间:  "<<Intime<<"\t入住天数:  "<<days<<endl;
        }
    protected:
        int number;//房号 
        string Name;//顾客姓名 
        int Id;//身份证号 
        string sex;//性别 
        string Intime;//入住时间 
        int days; //入住天数
};
class Manage 
{
    public:    
        Guest *g[Max];    //客人对象指针数组                                
        int Guest_count;    //记录客人数量        
        Room *r[Max];//房间对象指针数组                                    
        int Room_count;    //记录房间数量
    /*操作函数*/
        void IncreaseRoom();//添加客房信息 
        void Check_In();    //删除客房信息,办理入住
        void Check_Out();    //退房    
        int Payment();//结账 
        void Display(int n);//浏览所有信息(1浏览房间,2浏览顾客)                 
        void ReadData();  //从文件中获取房间和顾客的信息
        void WriteData(int n);//向文件中写入所有的信息
        void WriteRoom(Room *r);//客房信息写入 
        void WriteGuest(Guest *g);//顾客信息写入 
    /*查询菜单 */ 
        void SearchMenu();//查询主菜单 
        void SearchType();//查询所有空房间; 
        void SearchNumber();//按房间号查询        
}; 
static int i=0; 
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;
    cout<<"请输入房号: ";    cin>>number;
    cout<<"请输入房间类型: ";    cin>>type;
    cout<<"请输入价格: ";    cin>>price;
    cout<<"请输入房间状态: ";    cin>>Whether;
    WriteRoom(new Room(number,type,price,Whether));
}
void Manage::Check_In()//删除房间信息,即入房登记
{
    ReadData();
    SearchType();
    string name,intime,sex,type;
    int days,number;
    int id;
    cout<<"请输入房号: ";    cin>>number;
    cout<<"请输入顾客的姓名: "; cin>>name;
    cout<<"请输入顾客的身份证号: ";    cin>>id;
    cout<<"请输入顾客的性别: "; cin>>sex;
    cout<<"请输入入住日期: ";    cin>>intime;
    cout<<"请输入入住天数: "; cin>>days;
    for(i=0;i<Room_count;i++)
    {
        if(number==r[i]->InputNumber())
        {
            WriteGuest(new Guest(number,name,id,sex,intime,days));
            r[i]->SetWether("有");
            WriteData(1);
            cout<<"住房登记成功!"<<endl; 
        }
     } 
} 
int Manage::Payment()//退房结账 
{
    ReadData();
    Display(2);
    int number;
    cout<<"请输入房号: ";        cin>>number;
    for(i=0;i<Guest_count;i++)
    {
        if(number==g[i]->InputNumber())
        {
            return i;
        }
     } 
} 
void Manage::Check_Out()
{
    int x=Payment();
    ReadData();
    for(i=0;i<Room_count;i++)
    {
        if(g[x]->InputNumber()==r[i]->InputNumber())
        {
            r[i]->SetWether("无");
            cout<<"退房成功,您一共消费了 "<<g[x]->InputDays() *r[i]->InputPrice()<<" 元"<<endl; 
            WriteData(1);
        }    
     } 
    g[x]=NULL;
    WriteData(2);
}
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()
{
    fstream Rin,Gin;
    Rin.open("room.txt",ios::in);//打开文件 
    if(!Rin)
    {
        cout<<"未找到room文件,请先建立文件!"<<endl;
        return;
    }
    Room_count=0;
    while(!Rin.eof()){
        string type,Whether;
        double price;
        int number;
        Rin>>number>>type>>price>>Whether;
        r[Room_count++]=new Room(number,type,price,Whether);
    }
    Rin.close();//关闭文件 
    Gin.open("guest.txt",ios::in);
    if(!Gin)
    {
        cout<<"未找到guest文件,请先建立文件!"<<endl;
        return;    
    }
    Guest_count=0;
    while(!Gin.eof()){
        string name,intime,sex;
        int days,number;
        int id;
        Gin>>number>>name>>id>>sex>>intime>>days;
        g[Guest_count++]=new Guest(number,name,id,sex,intime,days);
    }
    Gin.close();
}
void Manage::WriteData(int n)
{
    switch(n)
    {
        case 1:
        {
        ofstream Rout("room.txt",ios::trunc); //用二进制的方法打开顾客文件 ,覆盖掉之前的所有信息重新写入 
        for(i=0; i<Room_count-1; i++) //根据顾客数量判断输入几组信息 
        {
            if(r[i]!=NULL)
            {
                WriteRoom(r[i]);//调用构造函数来创建顾客信息 
            }
        }
        Rout.close(); break;}
        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);//打开房间文件,追加读写,不会覆盖掉之前的所有信息 
    Rout<<r->InputNumber()<<"\t"<<r->InputType()<<"\t"<<r->InputPrice()<<"\t"<<r->InputWhether()<<endl;
    Rout.close();
}
void Manage::WriteGuest(Guest *g)//储存单个信息 
{
    ofstream Gout("guest.txt",ios::app);//打开顾客文件,追加读写,不会覆盖掉之前的所有信息 
    Gout<<g->InputNumber()<<"\t"<<g->InputName()<<"\t"<<g->InputId()<<"\t"<<g->InputSex()<<"\t"<<g->InputIntime()<<"\t"<<g->InputDays()<<endl;
    Gout.close();
}
void Manage::SearchType()
{
    ReadData();
    for(i=0;i<Room_count;i++)
    {
        if(r[i]->InputWhether()=="无")
            { 
            r[i]->show();}
        }    
}
void Manage::SearchNumber()
{
    ReadData();
    int number,n;
    cout<<"请输出要查询的房间号: "; cin>>number;
    for(i=0;i<Room_count-1;i++)
    {
        if(number==r[i]->InputNumber())
            r[i]->show();
        }
    for(i=0;i<Guest_count-1;i++)
    {
        if(g[i]->InputNumber()==number)
            g[i]->show();
        }    
}
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)
        {
            case 1:M.IncreaseRoom();getch();break;
            case 2:M.Check_In();getch();break;
            case 3:M.Check_Out();getch();break;
            case 4:M.Display(1);getch();break;
            case 5:M.Display(2);getch();break;
            case 6: M.SearchType();getch();break;
            case 7: M.SearchNumber();getch();break;    
            case 8:exit(0);    
        }         
    }
    return 0;
 } 


项目做好了没