C++ TGV Ticket Reservation System

Job ID: 38805850

Budget: €30 – €250 EUR

I am looking for a skilled C++ developer to create a command-line interface (CLI) application for a TGV ticket reservation system. The application must strictly adhere to object-oriented programming principles, with classes and methods well-organized across .h and .cppfiles. The project must implement all functionalities described below, without omitting any requirements.

Key Features and Requirements:

1. Train Management:
• Manage train details including train number, departure city, arrival city, departure time, arrival time, total capacity, and available seats.
• Methods to verify seat availability, reserve a seat, cancel a reservation, and display train details (routes, schedules, and seat availability).
2. Ticket Management:
• Generate unique tickets with attributes such as ticket number, class type (first or second class), price (calculated based on class and distance), train number, and travel date.
• Methods to calculate ticket prices and display ticket details.
• Manage ticket cancellations and update train seat availability accordingly.
3. Passenger Management:
• Create and manage passenger profiles with attributes like name, surname, unique identifier, and a list of reserved tickets.
• Methods to add a ticket to a passenger’s reservation list, cancel reservations, and display current reservations.
4. Reservation Management:
• Handle reservations with unique reservation numbers, linked to specific passengers and tickets.
• Methods to confirm or cancel reservations while updating train seat availability and managing passenger ticket lists.
5. Calendar Management:
• Display a train schedule calendar for a specific period or date.
• Methods to add schedules to the calendar and filter available trains by date, departure, and arrival cities.
6. Ticket History Management:
• Maintain a history of all tickets, including past trips and canceled reservations.
• Methods to add tickets to the history, display ticket history with details (date, route, price, class, status), and filter history based on criteria such as time period, departure city, or class type.
7. Data Persistence:
• Store all data in text or JSON files, including trains, passengers, tickets, reservations, and ticket history.
• Ensure data is loaded into memory upon application startup and saved back to files after each operation.
• Include methods for exporting passenger ticket history in text or CSV format.
8. Error Handling:
• Validate user input to ensure completeness and correct formats (e.g., non-empty fields, valid dates, and times).
• Handle conflicts, such as attempting to book a full train or cancel a non-existent reservation.
• Manage file-related issues by creating default files when missing and displaying clear error messages for read/write failures.
9. Scenarios of Interaction:
• Train selection and reservation, including ticket type selection, passenger detail entry, and reservation confirmation.
• Reservation cancellation and seat availability updates.
• Displaying current reservations and detailed ticket information.
• Filtering and displaying the train schedule calendar.
• Viewing and filtering passenger ticket history.

Deliverables:

1. Complete C++ source code organized into .h and .cpp files, ensuring proper modularity and readability.
2. A comprehensive PDF report documenting the implemented functionalities and their usage.
3. Instructions for compiling and running the application on a macOS environment.

Ideal Skills:
• Advanced proficiency in C++ and object-oriented programming.
• Experience in building robust CLI applications.
• Expertise in file handling and data persistence.
• Familiarity with structuring .h and .cpp files.

I look forward to receiving your proposals to implement this complete system as described.

Additional Note:
All instructions and requirements for this project are detailed in a PDF document that I will provide. It is imperative that the developer thoroughly reads and adheres to the PDF in its entirety. Every feature, class, and functionality outlined in the document must be implemented exactly as described, without omission or deviation. Please ensure that the final application strictly follows the specifications provided.

Variable Naming:
I will provide an English-translated version of the original PDF, which is in French. Consequently, the variable names in the document are translated into English. While it is acceptable to use these English variable names in the implementation, please ensure that all functionalities strictly follow the instructions in the document. If needed, variables can later be retranslated into French.