用c++完成火车车票系统本管理系统有以下功能要有显示界面: 1 班次录入 9 2 浏览班次信息3 查询火车信息购买火车票5 退订火车票6 退出系统
时间: 2024-03-11 09:49:41 浏览: 236
好的,这是一个比较大的项目,需要分步骤来完成。首先需要设计一个数据结构来存储班次信息,例如用一个结构体来表示一个班次:
```c++
struct Train {
string trainNumber; // 班次号
string startStation; // 始发站
string endStation; // 终点站
string departureTime; // 发车时间
int seatNum; // 座位数
int price; // 票价
};
```
然后需要实现以下功能:
1. 班次录入:让用户输入班次信息,将其存储到一个数组或链表中。可以用文件来保存班次信息,下次启动时可以读取文件中的信息。
2. 浏览班次信息:遍历数组或链表,将所有班次信息打印出来。
3. 查询火车信息:让用户输入起点站和终点站,遍历数组或链表,找到符合条件的班次并打印出来。也可以让用户输入班次号来查询班次信息。
4. 购买火车票:让用户输入班次号和座位数量,判断是否有足够的座位,如果有就将座位数减去相应数量,同时计算票价。可以用文件来保存已购买的票信息,下次启动时可以读取文件中的信息。
5. 退订火车票:让用户输入班次号和座位数量,将座位数加回去,同时将已购买的票信息从文件中删除。
6. 退出系统:结束程序运行。
以上是大致的实现思路,具体实现需要涉及到用户交互、文件读写、数据结构操作等方面。希望对你有所帮助!
相关问题
用c++完成火车车票系统本管理系统有以下功能: 1 班次录入 9 2 浏览班次信息3 查询火车信息购买火车票5 退订火车票6 退出系统
好的,我们来逐个实现这些功能。
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;
}
}
```
C++火车票管理系统
C火车票管理系统是一个大学课程设计任务,旨在通过编程实现火车票的管理和查询功能。火车票管理系统的功能要求包括录入班次信息、浏览班次信息、查询路线、售票和退票功能。班次信息包括车次号、发车时间、起始站、终点站、行车时间、额定载量和已定票人数。系统可以根据班次号或终点站进行查询,并在当前系统时间超过某班次的发车时间后显示相应的提示信息。在售票功能中,只有当已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,并且自动更新已售票人数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++ 设计 火车票管理系统](https://download.csdn.net/download/elio96/11106774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [c++实现车票管理系统](https://blog.csdn.net/djh20030101/article/details/125462266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文