编写一个C++代码车票管理系统:编程实现车票管理系统车票信息包括车次号、发车时间、起始站、终点站、行车时间、载客量、已售票等如:班次号 发车时间 起始站 终点站 行车时间 载客量 已售票1 800 郫县 广汉 2 45 302 630 郫县 成都 05 40 403 700 郫县 成都 05 40 204 1000 郫县 成都 05 40 2 具体实现的管理功能如下:1录入车次信息文本文
以下是一个简单的实现车票管理系统的C++代码示例:
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
// 车票车次类
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:
system.browseTicketInfo();
break;
case 3:
{
int queryChoice;
cout << "请选择查询方式:" << endl;
cout << "1. 按车次号查询" << endl;
cout << "2. 按终点站查询" << endl;
cout << "请选择:";
cin >> queryChoice;
if (queryChoice == 1) {
int ticketNo;
cout << "请输入车次号:";
cin >> ticketNo;
system.queryByTicketNo(ticketNo);
} else if (queryChoice == 2) {
string endStation;
cout << "请输入终点站:";
cin >> endStation;
system.queryByEndStation(endStation);
} else {
cout << "无效的选择!" << endl;
}
break;
}
case 4:
{
int ticketNo;
cout << "请输入车次号:";
cin >> ticketNo;
system.sellTicket(ticketNo);
break;
}
case 5:
{
int ticketNo;
cout << "请输入车次号:";
cin >> ticketNo;
system.returnTicket(ticketNo);
break;
}
case 6:
system.saveToFile();
break;
default:
cout << "无效的选择!" << endl;
break;
}
cout << endl;
} while (choice != 6);
return 0;
}
该代码实现了一个简单的车票管理系统,提供了录入车票信息、浏览车票信息、查询车票信息、售票、退票和退出系统等功能。车票信息通过文本文件进行保存和加载。用户可以根据菜单提示选择不同的操作
原文地址: https://www.cveoy.top/t/topic/iIOE 著作权归作者所有。请勿转载和采集!