The QS Ranking Project is a C++ program designed to manage and sort a list of universities based on specific criteria such as name and rank. This project showcases sorting algorithms, user management, and a simple user interface, providing an interactive way to explore university rankings.
- ✨ Features
- 🛠️ Installation
- 🚀 Usage
- 🧩 Code Structure
- 👥 User Roles
- 🔍 Sorting Algorithms
- 🔮 Future Enhancements
- 🤝 Contributing
- 📜 License
- 🏫 University Management: Store and manage a list of universities with attributes like name and rank.
- 📊 Sorting Algorithms: Implement Bubble Sort and Insertion Sort to order universities by name or rank.
- 👥 User Roles: Manage different user roles (Admin and Registered Users) with role-based access control.
- 🖥️ Console Interface: Interact with the system using a simple text-based menu interface.
To set up and run the project on your local machine, follow these steps:
- Open Visual Studio and create a new project.
- Import the source files into the project.
- Build and Run the project using Visual Studio's build tools.
- Clone the repository:
git clone https://github.com/Hamada-khairi/QS-RANKING-PROJECT.git
- Navigate to the project directory:
cd qs-ranking-project
- Compile the project using a C++ compiler:
g++ -o QSRanking Main.cpp University.cpp UserInterface.cpp UserManager.cpp SortAndSearch.cpp BaseUser.cpp RegisteredUser.cpp AdminUser.cpp DataSeeder.cpp
- Run the executable:
./QSRanking
- Launch the program to access the main menu.
- Choose to sort universities by name or rank using Bubble Sort or Insertion Sort.
- View the sorted list of universities displayed in the console.
- Admin users may have access to additional functionalities like adding or removing universities (if implemented).
- Main.cpp: Entry point of the program, handles initialization and user interface.
- University.cpp & University.h: Define the
University
class and its attributes. - SortAndSearch.cpp & SortAndSearch.h: Implement sorting algorithms (Bubble Sort and Insertion Sort).
- UserInterface.cpp & UserInterface.h: Manage user interaction and menu display.
- UserManager.cpp & UserManager.h: Handle user authentication and role management.
- BaseUser, RegisteredUser, AdminUser: Define different user roles with varying permissions.
- DataSeeder.cpp & DataSeeder.h: Populate the initial list of universities for sorting and display.
- Admin User: 🛡️ Has full control over the system, including adding or removing universities.
- Registered User: 🔑 Can view and sort the list of universities.
- Base User: ⚙️ A base class for common user functionalities.
- Bubble Sort: Simple comparison-based algorithm with O(n^2) complexity. Suitable for small datasets.
- Insertion Sort: Builds the final sorted array one item at a time, with O(n^2) complexity in the average and worst case.
- 🚀 Implement more efficient sorting algorithms like Quick Sort or Merge Sort.
- 🎨 Develop a graphical user interface (GUI) for a more user-friendly experience.
- 🛡️ Add error handling and input validation to enhance system robustness.
- 📝 Implement additional user management features, such as registration and profile management.
![QS-6](https://private-user-images.githubusercontent.com/127849324/367881994-23776df5-e656-4f3a-b056-dd4cfb53df3f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTk0LTIzNzc2ZGY1LWU2NTYtNGYzYS1iMDU2LWRkNGNmYjUzZGYzZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03Y2FhMGI3MGUyYTgwNTQ4NjUyMjMwMWYwNzBiZTBmNDQxOGU1NDI5YzY1ODE3OWJmYTdmZTc5M2EzZDI1MThkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.WAdY_wmypcdk-RB5nyhec2Ti8HBbGFdNs3OnkY69RUI)
![QS-5](https://private-user-images.githubusercontent.com/127849324/367881989-0e77a4ba-7d64-4b07-8219-bf8b33a3e8e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTg5LTBlNzdhNGJhLTdkNjQtNGIwNy04MjE5LWJmOGIzM2EzZThlNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00OTU3NTZhMTk1YzhiMTQ3MzEyNDNlM2U3M2E4NGUxNzAxNmYyNmVhNGI1YWYyMWZmYTY0YTNhZTJiMWFlMDMzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ESqz9BEiZ4pK0rr4eMr4VHsFo1ozPfv33MbMPP8NdF8)
![QS-4](https://private-user-images.githubusercontent.com/127849324/367881987-91ae63d7-aff2-437e-bf3e-d137d2d0d2e2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTg3LTkxYWU2M2Q3LWFmZjItNDM3ZS1iZjNlLWQxMzdkMmQwZDJlMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xMjYxM2Y1YmRlMjliNDQxMzc5YzU5NDIwMjcwY2U2ZjkxNDU1ZGJmZjM2MTNiMzYyZGE5NmQ0MTNkZGNlMGMzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.m01YHlVPo8-NM5bI2V-xPg9BUZQkraTGAm6KQ01_HaE)
![QS-3](https://private-user-images.githubusercontent.com/127849324/367881982-42d83795-2bc1-4884-954b-2e833e046a27.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTgyLTQyZDgzNzk1LTJiYzEtNDg4NC05NTRiLTJlODMzZTA0NmEyNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMDRhMGQ0YzdhZDVmN2NhMmY0NzQ5MzQyZmQ4ZjRlMGJiYWJhMWEyMzU1NWVlZTBiNDM3NTJlMzZiMDBmOTM5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.an8s3Hf1LmEHGi_Fv0LwpGw9gw77ParjsFMilGMxyXo)
![QS-2](https://private-user-images.githubusercontent.com/127849324/367881980-a25af537-eac6-4572-a54b-7834150a1559.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTgwLWEyNWFmNTM3LWVhYzYtNDU3Mi1hNTRiLTc4MzQxNTBhMTU1OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wMTYzNmM0NjY0NWEwNGI2MjQzN2JmNmRkNjhjNDVjZDI5ZTc2MTdkYWU2YWI5NGYyZTE4YjdlNjllY2QxYjQ5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.O2ufwpNejN0jMhELqQXtgtzRQs5o21pb1lzS4--noOc)
![QS-1](https://private-user-images.githubusercontent.com/127849324/367881972-3633e4e3-61e8-4195-ac96-4de829db327c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNjEyMjcsIm5iZiI6MTczOTE2MDkyNywicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTcyLTM2MzNlNGUzLTYxZTgtNDE5NS1hYzk2LTRkZTgyOWRiMzI3Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwNDE1MjdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDA3NWYzNDYzOGExMDM0M2RmNmZkYTk3NzhkYjI4M2MzOTU4YWEyYWRiNTBjMTU1MjY2NTJkODk0MThmNDI2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.i2MI1kKROw52ui1fZ7VEslAVGB8SqpgpgvSUJsx5R6Q)
Contributions are welcome! Please fork the repository and create a pull request with your proposed changes.
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Commit your changes (
git commit -am 'Add new feature'
). - Push to the branch (
git push origin feature-branch
). - Create a new Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- QS Ranking Project C++
- University Ranking Management System
- C++ Sorting Algorithms
- User Role Management in C++
- University Data Sorting Program