火车票管理系统c++:要求用面向对象的方法实现火车票管理系统车票信息包括车次号、发车时间、到站时间、出发地、到达地、行车时间、剩余车票数、票价等如:车次 发车时间 到站时间 出发地 到达地 行车时间 剩余车票数 票价G6714 640 830 石家庄站 北京西站 1时50分 9 129Z50 728 1005 石家庄站 北京西站 2时37分 18 435T146 748 1118 石家庄站 北京西
#include
using namespace std;
class TrainTicket { private: string trainNumber; string departureTime; string arrivalTime; string departureStation; string arrivalStation; string travelTime; int remainingTickets; double ticketPrice;
public: TrainTicket(string trainNumber, string departureTime, string arrivalTime, string departureStation, string arrivalStation, string travelTime, int remainingTickets, double ticketPrice) { this->trainNumber = trainNumber; this->departureTime = departureTime; this->arrivalTime = arrivalTime; this->departureStation = departureStation; this->arrivalStation = arrivalStation; this->travelTime = travelTime; this->remainingTickets = remainingTickets; this->ticketPrice = ticketPrice; }
string getTrainNumber() {
return trainNumber;
}
string getDepartureTime() {
return departureTime;
}
string getArrivalTime() {
return arrivalTime;
}
string getDepartureStation() {
return departureStation;
}
string getArrivalStation() {
return arrivalStation;
}
string getTravelTime() {
return travelTime;
}
int getRemainingTickets() {
return remainingTickets;
}
double getTicketPrice() {
return ticketPrice;
}
void decreaseRemainingTickets() {
remainingTickets--;
}
void printTicketInfo() {
cout << "车次:" << trainNumber << endl;
cout << "发车时间:" << departureTime << endl;
cout << "到站时间:" << arrivalTime << endl;
cout << "出发地:" << departureStation << endl;
cout << "到达地:" << arrivalStation << endl;
cout << "行车时间:" << travelTime << endl;
cout << "剩余车票数:" << remainingTickets << endl;
cout << "票价:" << ticketPrice << endl;
}
};
class TicketManagementSystem {
private:
vector
public: void readTrainTicketData() { ifstream inputFile("train_tickets.txt"); string trainNumber, departureTime, arrivalTime, departureStation, arrivalStation, travelTime; int remainingTickets; double ticketPrice;
while (inputFile >> trainNumber >> departureTime >> arrivalTime >> departureStation >> arrivalStation >> travelTime >> remainingTickets >> ticketPrice) {
TrainTicket ticket(trainNumber, departureTime, arrivalTime, departureStation, arrivalStation, travelTime, remainingTickets, ticketPrice);
trainTickets.push_back(ticket);
}
inputFile.close();
}
void writeTrainTicketData() {
ofstream outputFile("train_tickets.txt");
for (int i = 0; i < trainTickets.size(); i++) {
TrainTicket ticket = trainTickets[i];
outputFile << ticket.getTrainNumber() << " " << ticket.getDepartureTime() << " " << ticket.getArrivalTime() << " "
<< ticket.getDepartureStation() << " " << ticket.getArrivalStation() << " " << ticket.getTravelTime() << " "
<< ticket.getRemainingTickets() << " " << ticket.getTicketPrice() << endl;
}
outputFile.close();
}
void addRandomTrainTicketData() {
srand(time(NULL));
string trainNumber = "T" + to_string(rand() % 1000 + 100);
string departureTime = to_string(rand() % 24) + ":" + to_string(rand() % 60);
string arrivalTime = to_string(rand() % 24) + ":" + to_string(rand() % 60);
string departureStation = "Station" + to_string(rand() % 10);
string arrivalStation = "Station" + to_string(rand() % 10);
string travelTime = to_string(rand() % 5 + 1) + "时" + to_string(rand() % 60) + "分";
int remainingTickets = rand() % 50 + 1;
double ticketPrice = (rand() % 100 + 1) / 2.0;
TrainTicket ticket(trainNumber, departureTime, arrivalTime, departureStation, arrivalStation, travelTime, remainingTickets, ticketPrice);
trainTickets.push_back(ticket);
}
void displayTrainTicketData() {
for (int i = 0; i < trainTickets.size(); i++) {
TrainTicket ticket = trainTickets[i];
ticket.printTicketInfo();
}
}
void queryTrainTicketData(string departureStation, string arrivalStation) {
for (int i = 0; i < trainTickets.size(); i++) {
TrainTicket ticket = trainTickets[i];
if (ticket.getDepartureStation() == departureStation && ticket.getArrivalStation() == arrivalStation) {
ticket.printTicketInfo();
}
}
}
void sellTicket(string trainNumber) {
for (int i = 0; i < trainTickets.size(); i++) {
TrainTicket ticket = trainTickets[i];
if (ticket.getTrainNumber() == trainNumber) {
if (ticket.getRemainingTickets() > 0) {
ticket.decreaseRemainingTickets();
cout << "售票成功!" << endl;
} else {
cout << "剩余车票数不足,售票失败!" << endl;
}
return;
}
}
cout << "找不到指定车次,售票失败!" << endl;
}
};
int main() { TicketManagementSystem ticketManagementSystem; ticketManagementSystem.readTrainTicketData();
while (true) {
cout << "请选择下面的菜单:" << endl;
cout << "1. 录入车次信息" << endl;
cout << "2. 浏览车次信息" << endl;
cout << "3. 查询车票信息" << endl;
cout << "4. 售票" << endl;
cout << "5. 退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
ticketManagementSystem.addRandomTrainTicketData();
ticketManagementSystem.writeTrainTicketData();
cout << "成功录入车次信息!" << endl;
break;
case 2:
ticketManagementSystem.displayTrainTicketData();
break;
case 3:
string departureStation, arrivalStation;
cout << "请输入出发地:" << endl;
cin >> departureStation;
cout << "请输入到达地:" << endl;
cin >> arrivalStation;
ticketManagementSystem.queryTrainTicketData(departureStation, arrivalStation);
break;
case 4:
string trainNumber;
cout << "请输入车次号:" << endl;
cin >> trainNumber;
ticketManagementSystem.sellTicket(trainNumber);
ticketManagementSystem.writeTrainTicketData();
break;
case 5:
return 0;
default:
cout << "输入无效,请重新选择!" << endl;
break;
}
}
原文地址: https://www.cveoy.top/t/topic/iNTX 著作权归作者所有。请勿转载和采集!