600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++面向对象程序设计:地铁自动售票系统

C++面向对象程序设计:地铁自动售票系统

时间:2019-12-17 11:56:17

相关推荐

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 vreturn ((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;}

程序运行演示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。