用c++写一个民航订票系统,使用文件储存数据,不使用链表、容器,包含用户和管理两个类,实现订票、改签、退票、查询航班、支付、增加航班、删除航班、修改航班、显示航班等功能。并写为多文件形式
时间: 2023-10-20 14:25:52 浏览: 81
好的,我可以为您提供一个大致的框架,您可以根据自己的需求进行修改和完善。
首先,我们需要定义一些基本的数据结构,比如航班信息、用户信息等。这里以航班信息为例:
```cpp
struct Flight {
string flight_num; // 航班号
string departure; // 出发地
string destination; // 目的地
string departure_time; // 出发时间
int price; // 票价
int num_seats; // 座位数
int num_sold; // 已售座位数
};
```
接下来,我们定义用户类和管理类。用户类中包含用户的基本信息,如用户名、密码、已购买的机票等。管理类中包含了对航班信息进行增删改查的方法。
```cpp
class User {
public:
User(string name, string password); // 构造函数
void purchaseTicket(Flight flight); // 购买机票
void changeTicket(Flight oldFlight, Flight newFlight); // 改签
void refundTicket(Flight flight); // 退票
void queryFlight(string departure, string destination); // 查询航班
void payForTicket(int amount); // 支付机票费用
private:
string name; // 用户名
string password; // 密码
vector<Flight> tickets; // 已购买的机票
};
class Manager {
public:
void addFlight(Flight flight); // 增加航班信息
void deleteFlight(string flight_num); // 删除航班信息
void modifyFlight(string flight_num, Flight flight); // 修改航班信息
void showFlights(); // 显示所有航班信息
private:
vector<Flight> flights; // 所有航班信息
};
```
在主函数中,我们可以先读取文件中的航班信息,并创建一个管理对象和一个用户对象。然后根据用户输入的指令,调用对应的方法进行处理,最后将修改后的航班信息写回文件中。
```cpp
int main() {
// 读取航班信息
vector<Flight> flights;
readFlightsFromFile("flights.txt", flights);
// 创建管理对象和用户对象
Manager manager(flights);
User user("Alice", "123456");
// 处理用户指令
string command;
while (true) {
cout << "请输入指令:";
cin >> command;
if (command == "订票") {
// ...
} else if (command == "改签") {
// ...
} else if (command == "退票") {
// ...
} else if (command == "查询航班") {
// ...
} else if (command == "支付") {
// ...
} else if (command == "增加航班") {
// ...
} else if (command == "删除航班") {
// ...
} else if (command == "修改航班") {
// ...
} else if (command == "显示航班") {
// ...
} else {
cout << "无效指令!" << endl;
}
// 将修改后的航班信息写回文件
writeFlightsToFile("flights.txt", manager.getFlights());
}
return 0;
}
```
最后,我们还需要实现读取和写入航班信息的函数。这里可以使用文件流来实现。
```cpp
void readFlightsFromFile(string filename, vector<Flight>& flights) {
ifstream infile(filename);
if (!infile) {
cerr << "无法打开文件!" << endl;
exit(1);
}
Flight flight;
while (infile >> flight.flight_num >> flight.departure >> flight.destination
>> flight.departure_time >> flight.price >> flight.num_seats >> flight.num_sold) {
flights.push_back(flight);
}
infile.close();
}
void writeFlightsToFile(string filename, const vector<Flight>& flights) {
ofstream outfile(filename);
if (!outfile) {
cerr << "无法打开文件!" << endl;
exit(1);
}
for (const Flight& flight : flights) {
outfile << flight.flight_num << " " << flight.departure << " " << flight.destination
<< " " << flight.departure_time << " " << flight.price << " "
<< flight.num_seats << " " << flight.num_sold << endl;
}
outfile.close();
}
```
以上就是一个大致的框架,您可以根据自己的需求进行修改和完善。
阅读全文