A public transport company provides three types of transports to its passengers to travel from city A to city B of different state. The three types of transports are train, bus and taxi. Each transport has different charges and maximum seats limit. The table below shows the detail of each transport.

The company only provides one trip per day for each transport. The company has a ticket counter to sell tickets to its passengers.
Write an application that is able to simulate the ticket counter system. In each transaction, your program should read the transport type (train, bus or taxi) and the number of passengers. Your program then calculates and displays the total charge and record down the transaction. Your system is also able to check the seat availability before allowing any transaction. Other than selling the ticket, your system is also able to show all the transactions in the day.
Design your program in object-oriented design using inheritance and polymorphism.