用c++写一个民航订票系统,要求使用文件储存数据,不使用链表、容器、数据库,有管理员类,实现查询航班、增加航班、删除航班、修改航班、显示航班等功能。
时间: 2023-06-14 15:08:25 浏览: 104
好的,以下是一个简单的民航订票系统的实现,希望能够帮到你。
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
class Flight {
private:
string flightNo; // 航班号
string departure; // 出发地
string destination; // 目的地
string departureTime; // 出发时间
int seats; // 座位数
int bookedSeats; // 已订座位数
public:
Flight(string no, string dep, string des, string depTime, int s, int b) {
flightNo = no;
departure = dep;
destination = des;
departureTime = depTime;
seats = s;
bookedSeats = b;
}
// 获取航班号
string getFlightNo() {
return flightNo;
}
// 获取出发地
string getDeparture() {
return departure;
}
// 获取目的地
string getDestination() {
return destination;
}
// 获取出发时间
string getDepartureTime() {
return departureTime;
}
// 获取座位数
int getSeats() {
return seats;
}
// 获取已订座位数
int getBookedSeats() {
return bookedSeats;
}
// 增加已订座位数
void addBookedSeats(int num) {
bookedSeats += num;
}
// 显示航班信息
void display() {
cout << "航班号:" << flightNo << endl;
cout << "出发地:" << departure << endl;
cout << "目的地:" << destination << endl;
cout << "出发时间:" << departureTime << endl;
cout << "座位数:" << seats << endl;
cout << "已订座位数:" << bookedSeats << endl;
}
};
class Admin {
private:
string username; // 用户名
string password; // 密码
public:
Admin(string u, string p) {
username = u;
password = p;
}
// 验证用户名和密码是否正确
bool authenticate(string u, string p) {
return (username == u && password == p);
}
// 查询航班
void searchFlight(vector<Flight>& flights, string flightNo) {
bool found = false;
for (Flight& flight : flights) {
if (flight.getFlightNo() == flightNo) {
flight.display();
found = true;
break;
}
}
if (!found) {
cout << "未找到航班号为 " << flightNo << " 的航班!" << endl;
}
}
// 增加航班
void addFlight(vector<Flight>& flights, Flight flight) {
flights.push_back(flight);
cout << "航班添加成功!" << endl;
}
// 删除航班
void deleteFlight(vector<Flight>& flights, string flightNo) {
for (auto itr = flights.begin(); itr != flights.end(); ++itr) {
if (itr->getFlightNo() == flightNo) {
flights.erase(itr);
cout << "航班删除成功!" << endl;
return;
}
}
cout << "未找到航班号为 " << flightNo << " 的航班!" << endl;
}
// 修改航班
void modifyFlight(vector<Flight>& flights, string flightNo) {
for (Flight& flight : flights) {
if (flight.getFlightNo() == flightNo) {
cout << "请输入修改后的航班信息:" << endl;
string dep, des, depTime;
int seats, bookedSeats;
cout << "出发地:";
cin >> dep;
cout << "目的地:";
cin >> des;
cout << "出发时间:";
cin >> depTime;
cout << "座位数:";
cin >> seats;
cout << "已订座位数:";
cin >> bookedSeats;
flight = Flight(flightNo, dep, des, depTime, seats, bookedSeats);
cout << "航班修改成功!" << endl;
return;
}
}
cout << "未找到航班号为 " << flightNo << " 的航班!" << endl;
}
// 显示所有航班
void displayAllFlights(vector<Flight>& flights) {
for (Flight& flight : flights) {
flight.display();
cout << endl;
}
}
};
// 读取航班信息文件
void readFlightsFile(vector<Flight>& flights) {
ifstream infile("flights.txt");
string no, dep, des, depTime;
int seats, bookedSeats;
while (infile >> no >> dep >> des >> depTime >> seats >> bookedSeats) {
flights.push_back(Flight(no, dep, des, depTime, seats, bookedSeats));
}
}
// 写入航班信息文件
void writeFlightsFile(vector<Flight>& flights) {
ofstream outfile("flights.txt");
for (Flight& flight : flights) {
outfile << flight.getFlightNo() << " " << flight.getDeparture() << " " << flight.getDestination() << " " << flight.getDepartureTime() << " " << flight.getSeats() << " " << flight.getBookedSeats() << endl;
}
}
int main() {
// 读取航班信息文件
vector<Flight> flights;
readFlightsFile(flights);
// 创建管理员账户
Admin admin("admin", "123456");
cout << "欢迎使用民航订票系统!" << endl;
while (true) {
cout << "请输入用户名:";
string username;
cin >> username;
cout << "请输入密码:";
string password;
cin >> password;
if (admin.authenticate(username, password)) {
cout << "登录成功!" << endl;
break;
} else {
cout << "用户名或密码错误,请重新输入!" << endl;
}
}
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: {
cout << "请输入要查询的航班号:";
string flightNo;
cin >> flightNo;
admin.searchFlight(flights, flightNo);
break;
}
case 2: {
cout << "请输入航班信息:" << endl;
string no, dep, des, depTime;
int seats, bookedSeats;
cout << "航班号:";
cin >> no;
cout << "出发地:";
cin >> dep;
cout << "目的地:";
cin >> des;
cout << "出发时间:";
cin >> depTime;
cout << "座位数:";
cin >> seats;
cout << "已订座位数:";
cin >> bookedSeats;
admin.addFlight(flights, Flight(no, dep, des, depTime, seats, bookedSeats));
break;
}
case 3: {
cout << "请输入要删除的航班号:";
string flightNo;
cin >> flightNo;
admin.deleteFlight(flights, flightNo);
break;
}
case 4: {
cout << "请输入要修改的航班号:";
string flightNo;
cin >> flightNo;
admin.modifyFlight(flights, flightNo);
break;
}
case 5: {
admin.displayAllFlights(flights);
break;
}
case 6: {
// 写入航班信息文件
writeFlightsFile(flights);
cout << "感谢使用民航订票系统,再见!" << endl;
return 0;
}
default: {
cout << "输入有误,请重新输入!" << endl;
break;
}
}
}
return 0;
}
```
上述代码中,我们使用了 `vector` 来存储航班信息,使用了文件来储存数据。管理员类中实现了查询航班、增加航班、删除航班、修改航班、显示航班等功能。在 `main` 函数中,我们首先读取航班信息文件,然后创建管理员账户并进行登录验证,最后根据用户的选择来执行相应的操作,并在退出系统时将最新的航班信息写入文件中。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![csv](https://img-home.csdnimg.cn/images/20210720083646.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)