用c++完成火车车票系统本管理系统有以下功能: 1 班次录入 9 2 浏览班次信息3 查询火车信息购买火车票5 退订火车票6 退出系统
时间: 2024-03-11 18:49:34 浏览: 143
基于C++的火车票管理系统
5星 · 资源好评率100%
好的,我们来逐个实现这些功能。
1. 班次录入
我们可以定义一个结构体来存储每个班次的信息,包括班次号、起点站、终点站、出发时间、到达时间、票价等。然后在程序运行时,让用户输入每个班次的信息,并将其存储到一个数组中。
具体实现代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义结构体存储班次信息
struct Train {
string id; // 班次号
string start; // 起点站
string end; // 终点站
string departTime; // 出发时间
string arriveTime; // 到达时间
int price; // 票价
};
int main() {
const int MAX = 100; // 最大班次数目
Train trains[MAX]; // 存储班次信息的数组
int count = 0; // 班次数目
// 输入班次信息
while (count < MAX) {
cout << "请输入第 " << count+1 << " 个班次信息:" << endl;
cout << "班次号:";
cin >> trains[count].id;
if (trains[count].id == "0") { // 输入 0 表示班次信息录入结束
break;
}
cout << "起点站:";
cin >> trains[count].start;
cout << "终点站:";
cin >> trains[count].end;
cout << "出发时间:";
cin >> trains[count].departTime;
cout << "到达时间:";
cin >> trains[count].arriveTime;
cout << "票价:";
cin >> trains[count].price;
count++;
}
// 输出所有班次信息
cout << "所有班次信息如下:" << endl;
for (int i = 0; i < count; i++) {
cout << "班次号:" << trains[i].id << endl;
cout << "起点站:" << trains[i].start << endl;
cout << "终点站:" << trains[i].end << endl;
cout << "出发时间:" << trains[i].departTime << endl;
cout << "到达时间:" << trains[i].arriveTime << endl;
cout << "票价:" << trains[i].price << endl;
cout << endl;
}
return 0;
}
```
2. 浏览班次信息
我们可以在程序运行时,输出所有班次的信息,供用户浏览。
具体实现代码如下:
```c++
// 输出所有班次信息
cout << "所有班次信息如下:" << endl;
for (int i = 0; i < count; i++) {
cout << "班次号:" << trains[i].id << endl;
cout << "起点站:" << trains[i].start << endl;
cout << "终点站:" << trains[i].end << endl;
cout << "出发时间:" << trains[i].departTime << endl;
cout << "到达时间:" << trains[i].arriveTime << endl;
cout << "票价:" << trains[i].price << endl;
cout << endl;
}
```
3. 查询火车信息
我们可以让用户输入起点站和终点站,然后在所有班次中查找符合条件的班次,并输出它们的信息。
具体实现代码如下:
```c++
// 查询火车信息
string start, end;
cout << "请输入起点站和终点站,以空格分隔:" << endl;
cin >> start >> end;
bool flag = false; // 是否有符合条件的班次
for (int i = 0; i < count; i++) {
if (trains[i].start == start && trains[i].end == end) {
flag = true;
cout << "班次号:" << trains[i].id << endl;
cout << "起点站:" << trains[i].start << endl;
cout << "终点站:" << trains[i].end << endl;
cout << "出发时间:" << trains[i].departTime << endl;
cout << "到达时间:" << trains[i].arriveTime << endl;
cout << "票价:" << trains[i].price << endl;
cout << endl;
}
}
if (!flag) {
cout << "没有符合条件的班次。" << endl;
}
```
4. 购买火车票
我们可以让用户输入班次号、座位号、乘客姓名等信息,然后将其存储到一个文件中。购票时,还需要检查该班次是否有足够的座位,如果座位已满,则不能购买。
具体实现代码如下:
```c++
// 购买火车票
string id, name;
int seat;
cout << "请输入班次号、座位号和乘客姓名,以空格分隔:" << endl;
cin >> id >> seat >> name;
bool found = false; // 是否找到该班次
for (int i = 0; i < count; i++) {
if (trains[i].id == id) {
found = true;
if (seat <= 0 || seat > 100) { // 座位号不合法
cout << "座位号不合法。" << endl;
} else if (trains[i].price == 0) { // 该班次已停运
cout << "该班次已停运。" << endl;
} else if (seat <= 50 && trains[i].seats[seat-1] != "") { // 座位已被购买
cout << "该座位已被购买,请选择其他座位。" << endl;
} else if (seat > 50 && trains[i].seats[seat-51] != "") { // 座位已被购买
cout << "该座位已被购买,请选择其他座位。" << endl;
} else { // 购票成功
if (seat <= 50) {
trains[i].seats[seat-1] = name;
} else {
trains[i].seats[seat-51] = name;
}
cout << "购票成功!" << endl;
ofstream outfile(id + ".txt", ios::app); // 打开班次号对应的文件
outfile << seat << " " << name << endl; // 写入购票信息
outfile.close();
}
break;
}
}
if (!found) {
cout << "没有找到该班次。" << endl;
}
```
5. 退订火车票
我们可以让用户输入班次号、座位号等信息,然后我们从该班次对应的文件中删除对应的购票信息。
具体实现代码如下:
```c++
// 退订火车票
string id;
int seat;
cout << "请输入班次号和座位号,以空格分隔:" << endl;
cin >> id >> seat;
bool found = false; // 是否找到该班次
for (int i = 0; i < count; i++) {
if (trains[i].id == id) {
found = true;
if (seat <= 0 || seat > 100) { // 座位号不合法
cout << "座位号不合法。" << endl;
} else if (trains[i].price == 0) { // 该班次已停运
cout << "该班次已停运。" << endl;
} else if (seat <= 50 && trains[i].seats[seat-1] == "") { // 座位未被购买
cout << "该座位未被购买,无法退订。" << endl;
} else if (seat > 50 && trains[i].seats[seat-51] == "") { // 座位未被购买
cout << "该座位未被购买,无法退订。" << endl;
} else { // 退票成功
if (seat <= 50) {
trains[i].seats[seat-1] = "";
} else {
trains[i].seats[seat-51] = "";
}
cout << "退票成功!" << endl;
ifstream infile(id + ".txt"); // 打开班次号对应的文件
ofstream outfile(id + "_temp.txt"); // 创建临时文件
string line;
while (getline(infile, line)) {
int s;
string n;
stringstream ss(line);
ss >> s >> n;
if (s != seat) {
outfile << line << endl; // 将非该座位的购票信息写入临时文件
}
}
infile.close();
outfile.close();
remove((id + ".txt").c_str()); // 删除原文件
rename((id + "_temp.txt").c_str(), (id + ".txt").c_str()); // 将临时文件重命名为原文件
}
break;
}
}
if (!found) {
cout << "没有找到该班次。" << endl;
}
```
6. 退出系统
我们可以在程序运行时,提供一个菜单供用户选择操作,当用户选择退出系统时,程序结束运行。
具体实现代码如下:
```c++
// 提供菜单供用户选择操作
while (true) {
cout << "请选择要进行的操作:" << endl;
cout << "1. 班次录入" << endl;
cout << "2. 浏览班次信息" << endl;
cout << "3. 查询火车信息" << endl;
cout << "4. 购买火车票" << endl;
cout << "5. 退订火车票" << endl;
cout << "6. 退出系统" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
// 班次录入
// ...
break;
case 2:
// 浏览班次信息
// ...
break;
case 3:
// 查询火车信息
// ...
break;
case 4:
// 购买火车票
// ...
break;
case 5:
// 退订火车票
// ...
break;
case 6:
// 退出系统
return 0;
default:
cout << "输入不合法,请重新输入。" << endl;
break;
}
}
```
阅读全文