用c++写一个民航订票系统文件,使用文件储存数据,不使用链表、容器和数据库,包含用户和管理两个类,实现预订机票、退票、查询航班、增加航班、删除航班、修改航班、显示航班等功能
时间: 2024-01-27 22:06:17 浏览: 107
好的,我可以给您提供一个简单的实现,但需要注意的是,这只是一个基本框架,您可以根据自己的需求进行修改和完善。
首先,我们需要定义一些数据结构来存储航班信息和用户信息,例如:
```c++
struct Flight {
string flightNo; // 航班号
string startCity; // 起始城市
string endCity; // 目的城市
string departureTime; // 出发时间
int numOfSeats; // 座位数量
int numOfBookedSeats; // 已预订座位数量
double price; // 票价
};
struct User {
string userName; // 用户名
string password; // 密码
string name; // 姓名
string phoneNumber; // 手机号码
};
```
接下来,我们可以定义一个文件管理类,用于读写数据文件,例如:
```c++
class FileManager {
public:
FileManager(const string& flightFile, const string& userFile);
bool loadFlightData(); // 加载航班数据
bool saveFlightData(); // 保存航班数据
bool loadUserData(); // 加载用户数据
bool saveUserData(); // 保存用户数据
vector<Flight>& getFlights(); // 获取航班数据
vector<User>& getUsers(); // 获取用户数据
private:
string m_flightFile; // 航班数据文件名
string m_userFile; // 用户数据文件名
vector<Flight> m_flights; // 存储航班数据
vector<User> m_users; // 存储用户数据
};
```
在文件管理类中,我们可以使用vector来存储航班数据和用户数据,然后通过load和save函数来读写数据文件。
接下来,我们可以定义一个基类,包含一些公共的方法和属性,例如:
```c++
class Base {
public:
virtual bool login() = 0; // 登录
virtual void menu() = 0; // 菜单
protected:
FileManager m_fileManager; // 文件管理器
User m_user; // 当前用户
};
```
在这个基类中,我们定义了一个虚函数login(),用于用户登录,以及一个虚函数menu(),用于显示菜单。同时,我们在基类中定义了一个文件管理器对象和一个当前用户对象。
接下来,我们可以定义一个用户类,继承自基类,实现用户相关的功能,例如:
```c++
class UserSystem : public Base {
public:
UserSystem(const string& flightFile, const string& userFile);
bool login() override; // 登录
void menu() override; // 菜单
void bookTicket(); // 预订机票
void cancelTicket(); // 退票
void queryFlight(); // 查询航班
};
```
在用户类中,我们实现了基类中的虚函数,并且增加了预订机票、退票和查询航班等功能。
最后,我们可以定义一个管理类,也继承自基类,实现管理员相关的功能,例如:
```c++
class AdminSystem : public Base {
public:
AdminSystem(const string& flightFile, const string& userFile);
bool login() override; // 登录
void menu() override; // 菜单
void addFlight(); // 增加航班
void deleteFlight(); // 删除航班
void modifyFlight(); // 修改航班
void showFlight(); // 显示航班
};
```
在管理员类中,我们同样实现了基类中的虚函数,并且增加了增加航班、删除航班、修改航班和显示航班等功能。
最后,我们可以在main函数中实例化用户类和管理员类,然后根据用户输入的选项,调用相应的功能函数即可。
这里给出一个简单的main函数作为参考:
```c++
int main() {
const string flightFile = "flight.dat";
const string userFile = "user.dat";
UserSystem userSystem(flightFile, userFile);
AdminSystem adminSystem(flightFile, userFile);
cout << "1. 用户登录" << endl;
cout << "2. 管理员登录" << endl;
cout << "请选择登录类型:";
int type = 0;
cin >> type;
if (type == 1) {
if (userSystem.login()) {
userSystem.menu();
}
} else if (type == 2) {
if (adminSystem.login()) {
adminSystem.menu();
}
}
return 0;
}
```
以上就是一个简单的民航订票系统文件的实现,希望能够对您有所帮助。
阅读全文