首頁 > 軟體

C++實現地鐵自動售票系統程式設計

2022-03-14 16:00:09

本文範例為大家分享了C++實現地鐵自動售票系統的具體程式碼,供大家參考,具體內容如下

題目描述:

地鐵是當今城市較為流行的一種鐵路運輸的形式,地鐵能避免城市地面擁擠,充分利用空間,具有運量大、準時、正點率較其他公交高、速度快等優點。請設計一個簡易的、帶選單的地鐵自動售票機系統。

功能需求:

(1)設計一個地鐵路線類Router,包含路線編號,途中的各個站點。

(2)設計一個地圖類Map,可以顯示所有可以乘坐的地鐵站名,以及線路資訊。

(3)根據使用者輸入的起點和終點和人次資訊,可以自動計算應付金額;根據使用者輸入的金額,計算找零資訊。

程式設計:

#include <iostream>
#include <vector>
using namespace std;
 
class Router {
 
    private:
 
        string port[100];//經過站點
        int id;//路線編號
        int count=0; //站點數目
 
    public:
 
        void setId(int i) {
            id=i;
        }
 
        void addPort(string name) {
            port[count]=name;
            count++;
        }
 
        void getPort() {
            int i=0;
            for(i=0; i<count; i++) {
                cout<<"第"<<i+1<<"站:";
                cout<<port[i];
                cout<<endl;
            }
        }
 
        int check(string u,string v) {
            int d=0;
            for(int i=0; i<count; i++) {
                if(port[i]==u) {
                    for(int j=0; j<count; j++) {
                        if(port[j]==v) {
                            // u v
                            return ((i-j)>=0)?
                                   (i-j):(j-i);
                        }
                    }
                }
            }
            return 0;
        }
};
 
 
class Map {
 
    private:
        vector<Router> r;//路線圖
 
 
    public:
        double charge=2;//每站價格
        void setCharge(double ch) {
            charge=ch;
        }
 
        void init() {
 
            Router temp1;
            temp1.setId(1);
            temp1.addPort("west");
            temp1.addPort("mid1");
            temp1.addPort("south");
            r.push_back(temp1);
 
            Router temp2;
            temp2.setId(2);
            temp2.addPort("south");
            temp2.addPort("mid2");
            temp2.addPort("east");
            r.push_back(temp2);
 
            Router temp3;
            temp3.setId(3);
            temp3.addPort("east");
            temp3.addPort("mid3");
            temp3.addPort("north");
            r.push_back(temp3);
 
            Router temp4;
            temp4.setId(4);
            temp4.addPort("north");
            temp4.addPort("mid4");
            temp4.addPort("west");
            r.push_back(temp4);
        }
 
        int buy(string start, string end) {
            int count=r.size();
            int d=0;
            for(int i=0; i<count; i++) {
                Router temp=r[i];
                d=temp.check(start,end);
                if(d>0) {
                    cout<<"您需要乘坐"<<i+1<<"號線"<<endl;
                    return d;
                }
            }
            return 0;
        }
 
        void show() {
            int count=r.size();
            cout<<"本市地鐵線路圖如下:"<<endl;
            for(int i=0; i<count; i++) {
                cout<<i+1<<"號線:"<<endl<<endl;
                Router temp=r[i];
                temp.getPort();
                cout<<endl<<endl;
            }
        }
};
 
 
void menu() {
    int m;
    Map map;
    map.init();
    while(1) {
        cout<<endl<<endl<<endl;
        cout<<"----------歡迎來到地鐵售票系統-----------"<<endl;
        cout<<"----------1、路線查詢-----------"<<endl;
        cout<<"----------2、購票-----------"<<endl;
        cin>>m;
        if(m==1) {
            map.show();
        } else if(m==2) {
            
            cout<<"請輸入起點:"<<endl;
            string s;
            cin>>s;
            cout<<"請輸入終點:"<<endl;
            string e;
            cin>>e;
            cout<<"請輸入人數:"<<endl;
            int c;
            cin>>c;
            int d=map.buy(s,e);
            if(d>0) {
                double rs=(double)c*(double)d*map.charge;
                cout<<"您需要支付的費用為:";
                cout<<rs<<endl;
                cout<<"請輸入您支付的金額:";
                double in=0;
                cin>>in;
                if(in>=rs) {
                    cout<<"購票成功!"<<endl;
                    cout<<"找零:"<<in-rs<<"元"<<endl;
                } else {
                    cout<<"金額不足,購票失敗!";
                }
            } else {
                cout<<"抱歉,請選擇其他交通!";
            }
        }
    }
}
 
int main() {
    menu();
    return 0;
}

程式執行演示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com