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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTk0LTIzNzc2ZGY1LWU2NTYtNGYzYS1iMDU2LWRkNGNmYjUzZGYzZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02MTJjMmJiYWE1N2M5MzU4YmIxODFmYzUwOTEzZjI0YTg3NGEwMTk2NzlhYTgxNmI5ZjRiNjhjNTE4NDg2ZmM4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.P_WlG7hpLT4r-dyNVDIcHtSXwGNVdpg1dl4Iev41GK0)
![QS-5](https://private-user-images.githubusercontent.com/127849324/367881989-0e77a4ba-7d64-4b07-8219-bf8b33a3e8e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTg5LTBlNzdhNGJhLTdkNjQtNGIwNy04MjE5LWJmOGIzM2EzZThlNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03OWQ5YTJjYTJmMWYyMzMzNTk4NGJiYThlMGNkZGU0NzI4OTNjYzg5YzE5ZTFjODlmN2FmOTQ0MDE5NTYyZDM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.OhErlBKiQXpSrG-jAt2acdafCluCsU-fA7YQfe4baWY)
![QS-4](https://private-user-images.githubusercontent.com/127849324/367881987-91ae63d7-aff2-437e-bf3e-d137d2d0d2e2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTg3LTkxYWU2M2Q3LWFmZjItNDM3ZS1iZjNlLWQxMzdkMmQwZDJlMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xYTM5NTU1Mzg1ZGFlN2Y3MzYxYjFhZDk5OTUwMmNhMDVjZTdiODY5YzJkNDQwNTRmMDNlOTZiMjJmYjM4YjUxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.a8DoaFYQ84fSv_oNcWztKFshv3jEgz9htIlJSYLxuzM)
![QS-3](https://private-user-images.githubusercontent.com/127849324/367881982-42d83795-2bc1-4884-954b-2e833e046a27.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTgyLTQyZDgzNzk1LTJiYzEtNDg4NC05NTRiLTJlODMzZTA0NmEyNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZGIxZjBiYjljN2Y1OGUzNzUwNjEwZWU4Y2RkMGIxNDhmMTgyNjQ2N2ZlNmEwY2JkNDEzYWI3MmVjMDNkOWVlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.2CmaJf3kzCKUoyIf7kmMCsP5voI4eSaUn7Kbvny9Vek)
![QS-2](https://private-user-images.githubusercontent.com/127849324/367881980-a25af537-eac6-4572-a54b-7834150a1559.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTgwLWEyNWFmNTM3LWVhYzYtNDU3Mi1hNTRiLTc4MzQxNTBhMTU1OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MTI0YzlmNDYyZDA3ZTFhMzJkNzUxYmQxZjVhNmE2Yjk5NGJlZTU0NGQ1MTQ5NGViYmViOTRmOWI3MGIyYjZlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.baZ5i1G9qmUhGgR7w0F3nosPbauwhsRd8voDdQzhIig)
![QS-1](https://private-user-images.githubusercontent.com/127849324/367881972-3633e4e3-61e8-4195-ac96-4de829db327c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMDQwNjYsIm5iZiI6MTczOTEwMzc2NiwicGF0aCI6Ii8xMjc4NDkzMjQvMzY3ODgxOTcyLTM2MzNlNGUzLTYxZTgtNDE5NS1hYzk2LTRkZTgyOWRiMzI3Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxMjIyNDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03ZGQ5NTRmYzBkNDA5NmNkYTk5NDk1NjM4YWJhNmQwMzMzNDgxNGI4MDI2MWNjMDg3ZGYxODgyOWFhMmY5NDQxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.HWc415ynzchs_Ocs0UfPgROCveMDjjrSGOZSa550-jI)
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