Airline reservation system
Two general principles I would commend to you.  One - name your relationships so you understand why one entity type connects to another.  You may find there are more than one relationships between any two, or that some you have imagined has do not represent anything concrete in the user's world.  Two - imagine some of the uses cases for this system.  Think about the queries you would need to write to fulfill each.  Walk through your data model to ensure it supports your queries and constraints.

The data model posted encodes many, many more rules than those you have listed.  It would be impossible for a third party to validate the model in its entirety without all the rules.  This is a large task which would typically take some days in a room with user representation, in my experience.