请用C++代码实现*题目描述:地铁是当今城市较为流行的一种铁路运输的形式,地铁能避免城市地面拥挤,充分利用空间,具有运量大、准时、正点率较其他公交高、速度快等优点。请设计一个简易的地铁自动售票机系统。 功能需求:(1) 设计一个地铁路线类Router,包含路线编号,途中的各个站点。 (2) 设计一个地图类Map,可以显示所有可以乘坐的地铁站名,以及线路信息。 (3) 根据用户输入的起点和终点和人次信息,可以自动计算应付金额;根据用户输入的金额,计算找零信息;*/
时间: 2024-02-25 21:54:17 浏览: 86
以下是一个简单的地铁自动售票机系统的C++代码实现:
```
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
// 地铁路线类
class Router {
public:
Router(int id, vector<string> stations): id(id), stations(stations) {}
int getId() const { return id; }
vector<string> getStations() const { return stations; }
private:
int id; // 路线编号
vector<string> stations; // 途中的各个站点
};
// 地图类
class Map {
public:
void addRouter(Router r) { routers[r.getId()] = r; }
void showStations() const {
cout << "可乘坐的地铁站名:" << endl;
for (auto& p : stations) {
cout << p << endl;
}
}
void showRouters() const {
cout << "地铁线路信息:" << endl;
for (auto& p : routers) {
cout << "路线编号:" << p.first << ",站点列表:";
for (auto& station : p.second.getStations()) {
cout << station << " ";
}
cout << endl;
}
}
int calculatePrice(string start, string end, int people) const {
// 假设每个站点之间的票价相同为2元
int price = (getDistance(start, end) + 1) * 2 * people;
return price;
}
int calculateChange(int money, int price) const {
return money - price;
}
private:
// 假设以下是所有的地铁站名和线路信息
vector<string> stations = { "A", "B", "C", "D", "E", "F", "G", "H", "I" };
map<int, Router> routers = {
{ 1, Router(1, { "A", "B", "C", "D" }) },
{ 2, Router(2, { "B", "E", "F", "G" }) },
{ 3, Router(3, { "C", "H", "I" }) }
};
int getDistance(string start, string end) const {
// 假设以下是从start到end的距离(站点数)
map<string, int> distances = {
{ "AB", 3 },
{ "AC", 2 },
{ "AD", 1 },
{ "BC", 1 },
{ "BD", 2 },
{ "BE", 1 },
{ "BF", 2 },
{ "BG", 3 },
{ "CE", 3 },
{ "CF", 2 },
{ "CG", 1 },
{ "DH", 1 },
{ "DI", 2 },
{ "EH", 2 },
{ "EI", 3 },
{ "FG", 1 },
{ "HI", 1 }
};
string key1 = start + end;
string key2 = end + start;
if (distances.count(key1)) {
return distances[key1];
} else {
return distances[key2];
}
}
};
int main() {
Map map;
map.showStations();
map.showRouters();
string start, end;
int people, money;
cout << "请输入起点站、终点站和人数:" << endl;
cin >> start >> end >> people;
int price = map.calculatePrice(start, end, people);
cout << "应付金额为:" << price << "元" << endl;
cout << "请输入付款金额:" << endl;
cin >> money;
int change = map.calculateChange(money, price);
if (change >= 0) {
cout << "找零为:" << change << "元" << endl;
} else {
cout << "付款金额不足,请重新输入" << endl;
}
return 0;
}
```
以上代码实现了一个简单的地铁自动售票机系统,包括地铁路线类和地图类,可以显示所有可以乘坐的地铁站名和线路信息,根据用户输入的起点和终点和人次信息,自动计算应付金额,根据用户输入的金额,计算找零信息。
阅读全文