class Station { public: string name; // 站点名称 double distance; // 距离上一个站点的距离 Station* next; // 下一个站点指针 }; // 公交线路类 class BusRoute { public: BusRoute(); // 构造函数 void addStation(string name, double distance); // 添加站点 void modifyStation(string name, double distance); // 修改站点信息 void deleteStation(string name); // 删除站点 void searchStation(string name); // 查找站点信息 private: Station* head; // 首站指针 };用c++实现以上以上内容中的函数,并添加将内容保存到text文件中的函数以及调用text文件内容的函数
时间: 2023-07-16 11:14:21 浏览: 125
以下是C++实现:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 站点类
class Station {
public:
string name; // 站点名称
double distance; // 距离上一个站点的距离
Station* next; // 下一个站点指针
Station(string n="", double d=0.0) : name(n), distance(d), next(nullptr) {}
};
// 公交线路类
class BusRoute {
public:
BusRoute() : head(nullptr) {} // 构造函数
// 添加站点
void addStation(string name, double distance) {
Station* newStation = new Station(name, distance);
if (head == nullptr) {
head = newStation;
} else {
Station* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newStation;
}
cout << "站点 " << name << " 添加成功!" << endl;
}
// 修改站点信息
void modifyStation(string name, double distance) {
Station* temp = head;
bool found = false;
while (temp != nullptr) {
if (temp->name == name) {
temp->distance = distance;
found = true;
break;
}
temp = temp->next;
}
if (found) {
cout << "站点 " << name << " 修改成功!" << endl;
} else {
cout << "未找到站点 " << name << "!" << endl;
}
}
// 删除站点
void deleteStation(string name) {
Station* temp = head;
Station* prev = nullptr;
bool found = false;
while (temp != nullptr) {
if (temp->name == name) {
found = true;
break;
}
prev = temp;
temp = temp->next;
}
if (found) {
if (prev == nullptr) {
head = temp->next;
} else {
prev->next = temp->next;
}
delete temp;
cout << "站点 " << name << " 删除成功!" << endl;
} else {
cout << "未找到站点 " << name << "!" << endl;
}
}
// 查找站点信息
void searchStation(string name) {
Station* temp = head;
bool found = false;
while (temp != nullptr) {
if (temp->name == name) {
found = true;
break;
}
temp = temp->next;
}
if (found) {
cout << "站点名称:" << temp->name << endl;
cout << "距离上一个站点的距离:" << temp->distance << endl;
} else {
cout << "未找到站点 " << name << "!" << endl;
}
}
// 将内容保存到text文件中
void saveToFile(string fileName) {
ofstream outfile(fileName);
if (outfile.is_open()) {
Station* temp = head;
while (temp != nullptr) {
outfile << temp->name << " " << temp->distance << endl;
temp = temp->next;
}
outfile.close();
cout << "内容已保存到 " << fileName << " 文件中!" << endl;
} else {
cout << "无法打开文件 " << fileName << "!" << endl;
}
}
// 调用text文件内容的函数
void readFromFile(string fileName) {
ifstream infile(fileName);
if (infile.is_open()) {
string line;
while (getline(infile, line)) {
string name;
double distance;
int pos = line.find(" ");
name = line.substr(0, pos);
distance = stod(line.substr(pos+1));
addStation(name, distance);
}
infile.close();
cout << "内容已从 " << fileName << " 文件中读取!" << endl;
} else {
cout << "无法打开文件 " << fileName << "!" << endl;
}
}
private:
Station* head; // 首站指针
};
int main() {
BusRoute bus;
// 添加站点
bus.addStation("站点1", 1.0);
bus.addStation("站点2", 2.0);
bus.addStation("站点3", 3.0);
// 修改站点信息
bus.modifyStation("站点2", 2.5);
// 删除站点
bus.deleteStation("站点3");
// 查找站点信息
bus.searchStation("站点1");
// 将内容保存到text文件中
bus.saveToFile("bus.txt");
// 调用text文件内容的函数
bus.readFromFile("bus.txt");
return 0;
}
```
以上代码实现了添加站点、修改站点信息、删除站点、查找站点信息、将内容保存到text文件中和调用text文件内容的函数。
阅读全文