亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++如何實現旅館住宿管理系統

發布時間:2022-05-30 10:56:04 來源:億速云 閱讀:139 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“C++如何實現旅館住宿管理系統”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++如何實現旅館住宿管理系統”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一:課程設計要實現的目的
1.預定房間:輸入顧客的姓名和身份證號碼,然后有單人間/天/100元、雙人間/天/200元、標準間/天/300元 三種房間類型可以選擇。最后=輸入預定天數,從而系統計算出房費與預定的房間號。
2.入住功能:分該顧客已訂和未訂房間的兩種情況。對于已經預定的顧客,通過輸入姓名與身份證號碼從而入住預定的房間;對于沒有預定的顧客,執行入住功能,過程與預定房間類似。
3.退房功能:輸入要退房的顧客姓名與身份證號碼來查找該顧客,然后輸入該顧客實際所住的天數,計算出實際應付的房費與多支付或少支付的費用。
4.查詢功能:分為房間信息查詢與顧客了信息查詢兩種查詢方式。
   房間信息查詢可以顯示出空房間、已預定房間和已入住房間的房間號和房間數量。
   顧客信息查詢分為按姓名或按身份證號查找。兩種方式都是查詢出該顧客的預付費用和房間信息。
5.退出功能:退出系統。

二:總體設計
一個旅館管理系統,必然涉及到房間對象,顧客對象等實體。這個系統初始化了60個房間,其中房間分三個等級,每個等級的價格不一樣,可以通過房間編號得到房間的等級。然后就是房間的分配問題,當有顧客要求預定或入住時,系統能夠根據用戶要求入住的等級到相應等級的房間中去查找一個還沒有預定的房間和一個沒有入住的空閑房間。
當啟動程序后,從Main函數開始運行,程序首先調用initial_room函數初始化60個房間的信息,包括房間編號,房間等級,房間價格,房間狀態。其中房間編號和房間等級有直接聯系,只要知道了房間編號就可以通過計算得到該房間的等級,房間狀態初始化時都等于0,表示該房間既沒有被預定,也沒有被入住,為空房間。然后調用welcome函數,考慮到作為一個賓館管理系統的安全性,在本函數中要求只有通過輸入了正確的用戶名和密碼才能操作系統。此處賬號密碼都是123。當通過登陸認證后,就進入賓館管理系統了,在這里,系統給操作者顯示一個操作菜單:1.預定  2.入住  3.退房  4.查詢  5.退出,選擇不同的數字時就實現不同的功能。

三:詳細設計過程
1.    預定:作為一個旅館管理系統,顧客可以提前進行房間的預定,操作者能根據用戶的需求查詢到適合顧客的房間。在這個系統中,這個功能是在Book_Room函數中實現的。首先,構造一個顧客對象,輸入顧客的信息,然后設置該顧客預定客房的天數,設置顧客預定客房類型,根據用戶需要的客放標準到相應的類型客房去查找一個一個既沒有被預定也沒有入住的房間,然后把該房間對象結構體的狀態修改為已預定狀態,同時將顧客對象的預定房間號屬性和住房費用計算出來并顯示到界面上,最后將住房顧客數加1。

2.   入住:這個功能是在go_in函數中實現的,程序首先判斷顧客是否訂房了,如果預定了房間,則要求輸入顧客姓名和身份證號碼,然后在所有的顧客中去查找此姓名和身份證號碼的顧客,如果匹配了就取得其房間號,然后根據房間號計算出該房間的類型,再根據該顧客要求預定住房的天數和該房間類型的價格計算出該顧客要繳納的費用,同時顯示到界面上,這時操作者對顧客進行收費,同時將該住房的狀態修改為已入住狀態(State=2);如果顧客沒有先預定房間,在這里可以實現先查找空房再入住的功能,同預定房間功能一樣,先建立一個顧客對象,然后設置入住天數,選擇住房類型,根據房間類型查詢到一個空房,同時修改該房間的狀態為已入住狀態,計算房費直接執行收費,同時將顧客數加1。

3.    退房:此函數是再go_out函數中實現的。首先,輸入要退房的顧客的姓名和身份證號碼,再輸入該顧客的實際住的天數,系統計算出顧客的費用。用switch函數根據房間等級和所住天數來判斷是要給顧客退費用還是顧客需要補交費用。

4.    查詢:此功能在inquire函數中實現。信息查詢分為房間信息查詢和顧客信息查詢。對顧客信息查詢,有兩種方式:按姓名查詢;按身份證號查詢。通過查詢可以得知每個房間的信息和每個顧客的房間信息與預付費用。

四:課設實現
1.登陸
//登陸
void function::welcome() {
    system("color 3E");
    char name[4],pass[7];
    cout<<"請輸入用戶名和密碼:"<<endl;
    cin>>name;
    cin>>pass;
    while((strcmp(name,"123")!=0)||(strcmp(pass,"123")!=0)) {
        cout<<"用戶名或密碼輸入有誤,請重新輸入!"<<endl;
        cin>>name;
        cin>>pass;
    }
    cout<<endl;
    cout<<endl;
    cout<<"                     ---------------------------"<<endl;
    cout<<"                      歡迎使用旅館住宿管理系統!"<<endl;
    cout<<"                     ---------------------------"<<endl;
    cout<<endl;
    system("pause");
    system("cls");
}


 2.初始化房間
//初始化
void function::initial_room() {
    int j;
    int k=101;
    for(j=0; j<20; j++) {
        room[j].number=k++;
        room[j].rad=1;
        room[j].price=100;
        room[j].state=0;
    }
    k=201;
    for(j=20; j<40; j++) {
        room[j].number=k++;
        room[j].rad=2;
        room[j].price=200;
        room[j].state=0;
    }
    k=301;
    for(j=40; j<60; j++) {
        room[j].number=k++;
        room[j].rad=3;
        room[j].price=300;
        room[j].state=0;
    }
}
int main() {
    char choice='1';
    function m;
    m.initial_room();    //初始化60個房間
    m.welcome();    
            //驗證
    while(choice=='1') {
        m.menu();//功能
        cout<<endl;
        cout<<"1. 繼續使用   2. 退出 "<<endl;
        cin>>choice;
        cout<<endl;
    }
}
3.訂房
//訂房
void function::book_room() {
    customer[i]=new Customer;
    int room_kind,day;
    cout<<"請您選擇預定房間類型:\n";
    cout<<"1.單人間/天/100元\n2.雙人間/天/200元\n3.標準間/天/300元"<<endl;
    cin>>room_kind;
    cout<<"請輸入預定天數"<<endl;
    cin>>day;
    customer[i]->set_day(day);
    switch(room_kind) {
            int n;
        case 1:
            cout<<"住房費用總共為: "<<day*100<<"元"<<endl;
            for(n=0; n<20; n++) {                                //從第一個級別的房間中查找一個空閑的房間
                if(room[n].state==0) {                            //state=0表示該住房沒有被預定的
                    cout<<"預定成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        case 2:
            cout<<"住房費用總共為: "<<day*200<<" 元"<<endl;
            for(n=20; n<40; n++) {
                if(room[n].state==0) {
                    cout<<"預定成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        case 3: {
            cout<<"住房費用總共為: "<<day*300<<" 元"<<endl;
            for(n=40; n<60; n++) {
                if(room[n].state==0) {
                    cout<<"預訂成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        }
        default:
            cout<<"選擇有誤"<<endl;
            break;
    }
    i++;  //住房的顧客數加1
}


 4.入住
//入住
void function::go_in() {
    char name1[10],id1[19];
    int q,prepaid;
    cout<<"該顧客是否已訂房 (1. 已訂   2. 沒訂) "<<endl;
    cin>>q;
    if(q==1) {
        cout<<"請輸入顧客的姓名:"<<endl;
        cin>>name1;
        cout<<"請輸入顧客的身份證號碼:"<<endl;
        cin>>id1;
        //i:顧客人數
        for(int j=0; j<=i; j++) {
            if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0)) {
                int num=customer[j]->get_room_number();
                cout<<"顧客"<<name1<<"入住  房間號碼為: "<<num<<endl;
                switch(num/100) {
                    case 6:
                        prepaid=customer[j]->get_day()*100;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[num%100-1].state=2;                  //修改房間狀態為入住狀態
                        break;
                    case 7:
                        prepaid=customer[j]->get_day()*200;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[19+num%100].state=2;
                        break;
                    case 8:
                        prepaid=customer[j]->get_day()*300;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[39+num%100].state=2;
                        break;
                }
                break;
            }
        }
    } else {
        customer[i]=new Customer;
        int roomkind;
        int day;
        cout<<"請輸入要預定的天數:"<<endl;
        cout<<"1.單人間/天/100元\n2.雙人間/天/200元\n3.標準間/天/300元"<<endl;
        cin>>roomkind;
        cout<<"請輸入住宿天數:"<<endl;
        cin>>day;
        customer[i]->set_day(day);
        switch(roomkind) {
                int n;
            case 1:
                prepaid=day*100;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=0; n<20; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號碼為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
            case 2:
                prepaid=day*200;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=20; n<40; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
            case 3:
                prepaid=day*300;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=40; n<60; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
        }
        i++;
    }
}


 5.退房
//退房
void function::go_out() {
    char name2[10],id2[19];
    int room_number;
    int day;//多或少天數
    cout<<"請輸入要退房的顧客姓名和身份證號碼:"<<endl;
    cin>>name2;
    cin>>id2;
    cout<<"請輸入該顧客實際所住天數:"<<endl;
    int day2;
    cin>>day2;
    int j;
    for(j=0; j<i; j++) {
        if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0)) {
            room_number=customer[j]->get_room_number();
            int w;
            w=room_number/100;
            int day1;
            day1=customer[j]->get_day();
            day=day1-day2;
            switch(w) {
                case 1:
                    cout<<"顧客的房間號是"<<room_number<<" :為單人間,每天100元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*100<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*100<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*100<<" 元"<<endl;
                    break;
                case 2:
                    cout<<"顧客的房間號是"<<room_number<<" :為雙人間,每天200元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*200<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*200<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*200<<" 元"<<endl;
                    break;
                case 3:
                    cout<<"顧客的房間號是"<<room_number<<"   :為標準間,每天300元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*300<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*300<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*300<<" 元"<<endl;
                    break;
            }
            cout<<endl;
            cout<<"確認退房,請按1: "<<endl;
            char v;
            cin>>v;
            if(v=='1') {
                for(int k=0; k<60; k++) {
                    if(room[k].number==customer[j]->get_room_number())
                        room[k].state=0;
                }
                i--;
                for(; j<i; j++) {
                    customer[j]=customer[j+1];
                }
                delete customer[i];
            }
        }
        else
        {
            cout<<"無此顧客信息"<<endl;
            break;
        }
    }
}


 6.查詢
//查詢
void function::inquire() {
    char option;
    cout<<"1.房間信息查詢, 2.顧客信息查詢: "<<endl;
    cin>>option;
    if(option=='1') {
        int j;
        int k=0;
        cout<<endl;
        cout<<"空房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==0) {
                if(k%10==0) cout<<endl;//一行十個
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        cout<<endl;
        cout<<endl;
        k=0;
        cout<<"已預訂房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==1) {
                if(k%10==0) cout<<endl;
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        k=0;
        cout<<endl;
        cout<<endl;
        cout<<"已入住房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==2) {
                if(k%10==0) cout<<endl;
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        cout<<endl;
        cout<<endl;
    } else if(option=='2') {
        cout<<"1.按姓名查詢, 2.按身份證查詢: "<<endl;
        char option;
        cin>>option;
        if(option=='1') {
            char name3[10];
            cout<<"請輸入顧客的姓名: ";
            cin>>name3;
            for(int j=0; j<=i; j++) {
                if(strcmp(customer[j]->get_name(),name3)==0) {
                    cout<<name3<<"的信息如下:"<<endl;
                    cout<<"\t"<<"房間號: "<<customer[j]->get_room_number()<<endl;
                    cout<<"\t"<<"預付費用: "<<customer[j]->get_prepaid()<<endl;
                    break; 
                }
                else
                {
                    cout<<"無此顧客信息"<<endl;
                    break;
                }
            }
        }
        if(option=='2') {
            char id3[10];
            cout<<"請輸入顧客的身份證號碼: "<<endl;
            cin>>id3;
            for(int j=0; j<=i; j++) {
                if(strcmp(customer[j]->get_ID(),id3)==0) {
                    cout<<customer[j]->get_name()<<"的房間信息:"<<endl;
                    cout<<"\t"<<"房間號: "<<customer[j]->get_room_number()<<endl;
                    cout<<"\t"<<"預付房費: "<<customer[j]->get_prepaid()<<endl;
                    break;
                }
                else
                {
                    cout<<"無此顧客信息"<<endl;
                    break;
                }
            }
        }
    }
}
(1)房間信息查詢


 (2)顧客信息查詢


完整的放這嘍

//賬號為123 
//密碼為123 
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
int i=0;
struct Room {
    int number;
    int rad; 
    int price;
    int state;
};
class Customer {
    public:
        Customer();
        void set_name(char *n) {
            strcpy(name,n);
        }
        void set_ID(char *p) {
            strcpy(ID,p);
        }
        void set_room_number(int n) {
            room_number=n;
        }
        void set_day(int d) {
            day=d;
        }
        void set_prepaid(int p) {
            prepaid=p;
        }
        char *get_name() {
            return name;
        }
        char *get_ID() {
            return ID;
        }
        int  get_room_number() {
            return room_number;
        }
        int  get_day() {
            return day;
        }
        int  get_prepaid() {
            return prepaid;
        }
        virtual ~Customer();
    private:
        char name[10],ID[19];
        int  room_number;
        int  prepaid;
        int  change;
        int  day;
};
Customer::Customer() {//構造函數
    cout<<"請您輸入顧客的姓名"<<endl;
    cin>>name;
    cout<<"請您輸入顧客的身份證號碼"<<endl;
    cin>>ID;
    prepaid=day=0;
}
Customer::~Customer() {//析構函數
    cout<<"該顧客退房成功!"<<endl;
}
Room room[60];
Customer *customer[60];
 
class function
{
    public:
    void initial_room();
    void welcome();
    void menu();
    void book_room();
    void go_in();
    void go_out();
    void inquire();
    void out();    
};
int main() {
    char choice='1';
    function m;
    m.initial_room();    //初始化60個房間
    m.welcome();    
            //驗證
    while(choice=='1') {
        m.menu();//功能
        cout<<endl;
        cout<<"1. 繼續使用   2. 退出 "<<endl;
        cin>>choice;
        cout<<endl;
    }
}
//登陸
void function::welcome() {
    system("color 3E");
    char name[4],pass[7];
    cout<<"請輸入用戶名和密碼:"<<endl;
    cin>>name;
    cin>>pass;
    while((strcmp(name,"123")!=0)||(strcmp(pass,"123")!=0)) {
        cout<<"用戶名或密碼輸入有誤,請重新輸入!"<<endl;
        cin>>name;
        cin>>pass;
    }
    cout<<endl;
    cout<<endl;
    cout<<"                     ---------------------------"<<endl;
    cout<<"                      歡迎使用旅館住宿管理系統!"<<endl;
    cout<<"                     ---------------------------"<<endl;
    cout<<endl;
    system("pause");
    system("cls");
}
void function::menu() {
    function n;
    char x;
    cout<<"\t\t請選擇功能: "<<endl;
    cout<<" \t   1.預定  \t2.入住  "<<endl;
    cout<<" \t   3.退房  \t4.查詢"<<endl;
    cout<<"    \t   5.退出  \t"<<endl;
    cin>>x;
    switch(x) {
        case '1':
            n.book_room();
            system("pause");
            system("cls");
            break;
        case '2':
            n.go_in();
            system("pause");
            system("cls");
            break;
        case '3':
            n.go_out();
            system("pause");
            system("cls");
            break;
        case '4':
            n.inquire();
            system("pause");
            system("cls");
            break;
        case '5':
            n.out();
            break;
        default:
            cout<<"輸入有誤,請重新輸入"<<endl;
            cin>>x;
    }
}
//訂房
void function::book_room() {
    customer[i]=new Customer;
    int room_kind,day;
    cout<<"請您選擇預定房間類型:\n";
    cout<<"1.單人間/天/100元\n2.雙人間/天/200元\n3.標準間/天/300元"<<endl;
    cin>>room_kind;
    cout<<"請輸入預定天數"<<endl;
    cin>>day;
    customer[i]->set_day(day);
    switch(room_kind) {
            int n;
        case 1:
            cout<<"住房費用總共為: "<<day*100<<"元"<<endl;
            for(n=0; n<20; n++) {                                //從第一個級別的房間中查找一個空閑的房間
                if(room[n].state==0) {                            //state=0表示該住房沒有被預定的
                    cout<<"預定成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        case 2:
            cout<<"住房費用總共為: "<<day*200<<" 元"<<endl;
            for(n=20; n<40; n++) {
                if(room[n].state==0) {
                    cout<<"預定成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        case 3: {
            cout<<"住房費用總共為: "<<day*300<<" 元"<<endl;
            for(n=40; n<60; n++) {
                if(room[n].state==0) {
                    cout<<"預訂成功   房間號碼為: "<<room[n].number<<endl;
                    room[n].state=1;
                    customer[i]->set_room_number(room[n].number);
                    break;
                }
            }
            break;
        }
        default:
            cout<<"選擇有誤"<<endl;
            break;
    }
    i++;  //住房的顧客數加1
}
//入住
void function::go_in() {
    char name1[10],id1[19];
    int q,prepaid;
    cout<<"該顧客是否已訂房 (1. 已訂   2. 沒訂) "<<endl;
    cin>>q;
    if(q==1) {
        cout<<"請輸入顧客的姓名:"<<endl;
        cin>>name1;
        cout<<"請輸入顧客的身份證號碼:"<<endl;
        cin>>id1;
        //i:顧客人數
        for(int j=0; j<=i; j++) {
            if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0)) {
                int num=customer[j]->get_room_number();
                cout<<"顧客"<<name1<<"入住  房間號碼為: "<<num<<endl;
                switch(num/100) {
                    case 6:
                        prepaid=customer[j]->get_day()*100;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[num%100-1].state=2;                  //修改房間狀態為入住狀態
                        break;
                    case 7:
                        prepaid=customer[j]->get_day()*200;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[19+num%100].state=2;
                        break;
                    case 8:
                        prepaid=customer[j]->get_day()*300;
                        customer[j]->set_prepaid(prepaid);
                        cout<<"請收費用 "<<prepaid<<"元"<<endl;
                        room[39+num%100].state=2;
                        break;
                }
                break;
            }
        }
    } else {
        customer[i]=new Customer;
        int roomkind;
        int day;
        cout<<"請輸入要預定的天數:"<<endl;
        cout<<"1.單人間/天/100元\n2.雙人間/天/200元\n3.標準間/天/300元"<<endl;
        cin>>roomkind;
        cout<<"請輸入住宿天數:"<<endl;
        cin>>day;
        customer[i]->set_day(day);
        switch(roomkind) {
                int n;
            case 1:
                prepaid=day*100;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=0; n<20; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號碼為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
            case 2:
                prepaid=day*200;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=20; n<40; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
            case 3:
                prepaid=day*300;
                customer[i]->set_prepaid(prepaid);
                cout<<"請收費用 "<<prepaid<<"元"<<endl;
                for(n=40; n<60; n++) {
                    if(room[n].state==0) {
                        cout<<"入住房間號為: "<<room[n].number<<endl;
                        room[n].state=2;
                        customer[i]->set_room_number(room[n].number);
                        break;
                    }
                }
                break;
        }
        i++;
    }
}
//退房
void function::go_out() {
    char name2[10],id2[19];
    int room_number;
    int day;//多或少天數
    cout<<"請輸入要退房的顧客姓名和身份證號碼:"<<endl;
    cin>>name2;
    cin>>id2;
    cout<<"請輸入該顧客實際所住天數:"<<endl;
    int day2;
    cin>>day2;
    int j;
    for(j=0; j<i; j++) {
        if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0)) {
            room_number=customer[j]->get_room_number();
            int w;
            w=room_number/100;
            int day1;
            day1=customer[j]->get_day();
            day=day1-day2;
            switch(w) {
                case 1:
                    cout<<"顧客的房間號是"<<room_number<<" :為單人間,每天100元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*100<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*100<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*100<<" 元"<<endl;
                    break;
                case 2:
                    cout<<"顧客的房間號是"<<room_number<<" :為雙人間,每天200元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*200<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*200<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*200<<" 元"<<endl;
                    break;
                case 3:
                    cout<<"顧客的房間號是"<<room_number<<"   :為標準間,每天300元"<<endl;
                    cout<<"該顧客預付了房費 "<<customer[j]->get_prepaid()<<"元, 實際消費 "<<day2*300<<"元"<<endl;
                    cout<<endl;
                    if(day>0)
                        cout<<"請退給該顧客 "<<day*300<<" 元"<<endl;
                    if(day<0)
                        cout<<"請補收該顧客住房費 "<<-day*300<<" 元"<<endl;
                    break;
            }
            cout<<endl;
            cout<<"確認退房,請按1: "<<endl;
            char v;
            cin>>v;
            if(v=='1') {
                for(int k=0; k<60; k++) {
                    if(room[k].number==customer[j]->get_room_number())
                        room[k].state=0;
                }
                i--;
                for(; j<i; j++) {
                    customer[j]=customer[j+1];
                }
                delete customer[i];
            }
        }
        else
        {
            cout<<"無此顧客信息"<<endl;
            break;
        }
    }
}
//查詢
void function::inquire() {
    char option;
    cout<<"1.房間信息查詢, 2.顧客信息查詢: "<<endl;
    cin>>option;
    if(option=='1') {
        int j;
        int k=0;
        cout<<endl;
        cout<<"空房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==0) {
                if(k%10==0) cout<<endl;//一行十個
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        cout<<endl;
        cout<<endl;
        k=0;
        cout<<"已預訂房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==1) {
                if(k%10==0) cout<<endl;
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        k=0;
        cout<<endl;
        cout<<endl;
        cout<<"已入住房間:"<<endl;
        for(j=0; j<60; j++) {
            if(room[j].state==2) {
                if(k%10==0) cout<<endl;
                cout<<room[j].number<<'\t';
                k++;
            }
        }
        cout<<endl;
        cout<<endl;
    } else if(option=='2') {
        cout<<"1.按姓名查詢, 2.按身份證查詢: "<<endl;
        char option;
        cin>>option;
        if(option=='1') {
            char name3[10];
            cout<<"請輸入顧客的姓名: ";
            cin>>name3;
            for(int j=0; j<=i; j++) {
                if(strcmp(customer[j]->get_name(),name3)==0) {
                    cout<<name3<<"的信息如下:"<<endl;
                    cout<<"\t"<<"房間號: "<<customer[j]->get_room_number()<<endl;
                    cout<<"\t"<<"預付費用: "<<customer[j]->get_prepaid()<<endl;
                    break; 
                }
                else
                {
                    cout<<"無此顧客信息"<<endl;
                    break;
                }
            }
        }
        if(option=='2') {
            char id3[10];
            cout<<"請輸入顧客的身份證號碼: "<<endl;
            cin>>id3;
            for(int j=0; j<=i; j++) {
                if(strcmp(customer[j]->get_ID(),id3)==0) {
                    cout<<customer[j]->get_name()<<"的房間信息:"<<endl;
                    cout<<"\t"<<"房間號: "<<customer[j]->get_room_number()<<endl;
                    cout<<"\t"<<"預付房費: "<<customer[j]->get_prepaid()<<endl;
                    break;
                }
                else
                {
                    cout<<"無此顧客信息"<<endl;
                    break;
                }
            }
        }
    }
}
//初始化
void function::initial_room() {
    int j;
    int k=101;
    for(j=0; j<20; j++) {
        room[j].number=k++;
        room[j].rad=1;
        room[j].price=100;
        room[j].state=0;
    }
    k=201;
    for(j=20; j<40; j++) {
        room[j].number=k++;
        room[j].rad=2;
        room[j].price=200;
        room[j].state=0;
    }
    k=301;
    for(j=40; j<60; j++) {
        room[j].number=k++;
        room[j].rad=3;
        room[j].price=300;
        room[j].state=0;
    }
}
void function::out()
{
    return;
}

讀到這里,這篇“C++如何實現旅館住宿管理系統”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

宁陵县| 武穴市| 兰西县| 昔阳县| 淮南市| 铅山县| 宁海县| 定襄县| 湖州市| 深水埗区| 武隆县| 丘北县| 南澳县| 望都县| 清远市| 明水县| 大英县| 永和县| 长乐市| 绥阳县| 汶上县| 崇左市| 贵德县| 潞城市| 浦东新区| 常宁市| 黎平县| 思茅市| 三门峡市| 彰化县| 元朗区| 康马县| 临夏市| 岚皋县| 蒙山县| 明水县| 伊宁县| 雅安市| 定陶县| 玉屏| 台州市|