Encapsulation in C++ classes allows objects to communicate with each other while hiding implementation details. Inheritance allows a subclass to take on all attributes and functions of its parent superclass. Polymorphism allows the same function to be called on different objects and produce different outcomes. Feedback on a system design praised its simplicity but noted it could use more visual appeal and a welcome page. Usability testing found the bottom menu location confusing and information on the admin page too cluttered. A product search bug caused looping errors. Overall, addressing these issues could improve the user experience.