weixin_74408150 2023-11-26 18:07 采纳率: 75%
浏览 24
已结题

地铁自动机售票系统C++

地铁自动售票机系统
题目描述:地铁是当今城市较为流行的一种铁路运输的形式,地铁能避免城市地面拥挤,充分利用空间,具有运量大、准时、正点率较其他公交高、速度快等优点。请设计一个简易的地铁自动售票机系统。
功能需求:
(1) 设计一个地铁路线类 Router,包含路线编号,途中的各个站点。可以新增、删除、查询路线,可以根据线路名称,显示线路图片。
(2) 设计一个地图类 Map,可以显示所有可以乘坐的地铁站名,以及线路信息。
(3) 根据用户选择起点和终点和人次信息,可以自动计算应付金额;根据用户输入的金额,计算找零信息;
(4) 使用外部文件存储路线相关信息。
进阶:增设换乘推荐功能。

  • 写回答

13条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-11-26 18:08
    关注

    引自强大而免费的微信小程序:皆我百晓生

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月26日