// 车票车次类 class Ticket { private: int ticketNo; // 车票号码 string departureTime; // 发车时间 string startStation; // 起始站 string endStation; // 终点站 double travelTime; // 行车时间 int capacity; // 载客量 int soldTickets; // 已售票数 public: Ticket(int no, string depTime, string start, string end, double time, int cap, int sold) : ticketNo(no), departureTime(depTime), startStation(start), endStation(end), travelTime(time), capacity(cap), soldTickets(sold) {}

int getTicketNo() const { return ticketNo; } // 获取车票号码
string getDepartureTime() const { return departureTime; } // 获取发车时间
string getStartStation() const { return startStation; } // 获取起始站
string getEndStation() const { return endStation; } // 获取终点站
double getTravelTime() const { return travelTime; } // 获取行车时间
int getCapacity() const { return capacity; } // 获取载客量
int getSoldTickets() const { return soldTickets; } // 获取已售票数

void sellTicket() { // 售票
    if (soldTickets < capacity) {
        soldTickets++;
        cout << "售票成功!" << endl;
    } else {
        cout << "该车次已售完!" << endl;
    }
}

void returnTicket() { // 退票
    if (soldTickets > 0) {
        soldTickets--;
        cout << "退票成功!" << endl;
    } else {
        cout << "该车次未售出任何票!" << endl;
    }
}

};

// 管理系统类 class TicketManagementSystem { private: Ticket* tickets[1000]; // 车票数组 int ticketCount; // 车票数量

public: TicketManagementSystem() : ticketCount(0) {}

~TicketManagementSystem() { // 析构函数,释放内存
    for (int i = 0; i < ticketCount; i++) {
        delete tickets[i];
    }
}

void addTicket(Ticket* ticket) { // 添加车票
    tickets[ticketCount] = ticket;
    ticketCount++;
}

void saveToFile() { // 将车票信息保存到文件
    ofstream file("tickets.txt");
    if (file.is_open()) {
        for (int i = 0; i < ticketCount; i++) {
            Ticket* ticket = tickets[i];
            file << ticket->getTicketNo() << " "
                << ticket->getDepartureTime() << " "
                << ticket->getStartStation() << " "
                << ticket->getEndStation() << " "
                << ticket->getTravelTime() << " "
                << ticket->getCapacity() << " "
                << ticket->getSoldTickets() << endl;
        }
        file.close();
        cout << "车票信息保存成功!" << endl;
    } else {
        cout << "保存失败,无法打开文件!" << endl;
    }
}

void loadFromFile() { // 从文件加载车票信息
    ifstream file("tickets.txt");
    if (file.is_open()) {
        ticketCount = 0;
        string line;
        while (getline(file, line)) {
            int ticketNo, capacity, soldTickets;
            double travelTime;
            string departureTime, startStation, endStation;
            sscanf(line.c_str(), "%d %s %s %s %lf %d %d",
                &ticketNo, &departureTime[0], &startStation[0], &endStation[0], &travelTime, &capacity, &soldTickets);
            Ticket* ticket = new Ticket(ticketNo, departureTime, startStation, endStation, travelTime, capacity, soldTickets);
            tickets[ticketCount] = ticket;
            ticketCount++;
        }
        file.close();
        cout << "车票信息加载成功!" << endl;
    } else {
        cout << "加载失败,无法打开文件!" << endl;
    }
}

void printTicketInfo(const Ticket* ticket) const { // 打印车票信息
    cout << "车次号:" << ticket->getTicketNo() << endl;
    cout << "发车时间:" << ticket->getDepartureTime() << endl;
    cout << "起始站:" << ticket->getStartStation() << endl;
    cout << "终点站:" << ticket->getEndStation() << endl;
    cout << "行车时间:" << ticket->getTravelTime() << " 小时" << endl;
    cout << "载客量:" << ticket->getCapacity() << endl;
    cout << "已售票:" << ticket->getSoldTickets() << endl;
}

void browseTicketInfo() const { // 浏览车票信息
    time_t now = time(0);
    struct tm* timeinfo = localtime(&now);
    char currentTime[9];
    strftime(currentTime, sizeof(currentTime), "%H:%M:%S", timeinfo);

    cout << "当前时间:" << currentTime << endl;
    cout << "车次信息:" << endl;
    for (int i = 0; i < ticketCount; i++) {
        Ticket* ticket = tickets[i];
        cout << "-----------------------" << endl;
        printTicketInfo(ticket);
        if (ticket->getDepartureTime() < currentTime) {
            cout << "此班已发出" << endl;
        }
    }
    cout << "-----------------------" << endl;
}

void queryByTicketNo(int ticketNo) const { // 按车次号查询车票信息
    for (int i = 0; i < ticketCount; i++) {
        Ticket* ticket = tickets[i];
        if (ticket->getTicketNo() == ticketNo) {
            printTicketInfo(ticket);
            return;
        }
    }
    cout << "未找到相关车次信息!" << endl;
}

void queryByEndStation(string endStation) const { // 按终点站查询车票信息
    for (int i = 0; i < ticketCount; i++) {
        Ticket* ticket = tickets[i];
        if (ticket->getEndStation() == endStation) {
            printTicketInfo(ticket);
        }
    }
}

void sellTicket(int ticketNo) { // 售票
    for (int i = 0; i < ticketCount; i++) {
        Ticket* ticket = tickets[i];
        if (ticket->getTicketNo() == ticketNo) {
            ticket->sellTicket();
            return;
        }
    }
    cout << "未找到相关车次信息!" << endl;
}

void returnTicket(int ticketNo) { // 退票
    for (int i = 0; i < ticketCount; i++) {
        Ticket* ticket = tickets[i];
        if (ticket->getTicketNo() == ticketNo) {
            ticket->returnTicket();
            return;
        }
    }
    cout << "未找到相关车次信息!" << endl;
}

};

int main() { TicketManagementSystem system; system.loadFromFile(); // 从文件加载车票信息

int choice;
do {
    cout << "~~~~~欢迎使用车票管理系统!~~~~~" << endl;
    cout << "====================" << endl;
    cout << "1. 录入车票信息" << endl;
    cout << "2. 浏览车票信息" << endl;
    cout << "3. 查询车票信息" << endl;
    cout << "4. 售票" << endl;
    cout << "5. 退票" << endl;
    cout << "6. 退出系统" << endl;
    cout << "请选择:";
    cin >> choice;

    switch (choice) {
        case 1:
        {
            int ticketNo, capacity, soldTickets;
            double travelTime;
            string departureTime, startStation, endStation;

            cout << "请输入车次号:";
            cin >> ticketNo;
            cout << "请输入发车时间(HH:MM):";
            cin >> departureTime;
            cout << "请输入起始站:";
            cin >> startStation;
            cout << "请输入终点站:";
            cin >> endStation;
            cout << "请输入行车时间(小时):";
            cin >> travelTime;
            cout << "请输入载客量:";
            cin >> capacity;
            cout << "请输入已售票数:";
            cin >> soldTickets;

            Ticket* ticket = new Ticket(ticketNo, departureTime, startStation, endStation, travelTime, capacity, soldTickets);
            system.addTicket(ticket);
            break;
        }

        case 2
在该程序中给出注释#include iostream#include fstream#include ctime#include cstdlib#include stringusing namespace std; 车票车次类class Ticket private int ticketNo; string departureTime; string startStation;

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

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