在该程序中给出注释#include iostream#include fstream#include ctime#include cstdlib#include stringusing namespace std; 车票车次类class Ticket private int ticketNo; string departureTime; string startStation;
// 车票车次类 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
原文地址: https://www.cveoy.top/t/topic/iIPw 著作权归作者所有。请勿转载和采集!