#include #include #include #include #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 trainTickets;

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;
    }
}
火车票管理系统c++:要求用面向对象的方法实现火车票管理系统车票信息包括车次号、发车时间、到站时间、出发地、到达地、行车时间、剩余车票数、票价等如:车次 发车时间 到站时间 出发地 到达地 行车时间 剩余车票数 票价G6714 640 830 石家庄站 北京西站 1时50分 9 129Z50 728 1005 石家庄站 北京西站 2时37分 18 435T146 748 1118 石家庄站 北京西

原文地址: https://www.cveoy.top/t/topic/iNTX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录