A console-driven application that allows users to interact with a rescue shelter.
The enhanced version of the application with a graphical user interface (GUI) built using Qt. This version also uses PostgreSQL as the database management system.
This is a software application designed to assist in managing the adoption process of animals in a shelter. It offers functionalities in two modes: administrator
and user
. Administrators can manage the animal database, while users can browse, select, and adopt animals.
- C++ 20
- Qt 6.4.2
- PostgreSQL 15.2
- Administrator Mode:
- Manage database: Add, delete, and update information.
- View all animals in the shelter.
- User Mode:
- Browse animals one by one with options to adopt.
- Filter animals by age or other criteria.
- View and manage the personal adoption list.
- Additional Features:
- Use STL algorithms and C++11's ranged-based for loop.
- Error handling using custom exceptions.
- Adoption list saved in CSV or HTML format.
- UML class diagram of the application.
- Sort function using Comparator class template.
- GUI without Qt Designer, including a gradient effect.
- Multiple undo and redo functionality.
- Qt View/Model components and custom Qt delegates.
- Database-backed repository (PostgreSQL).
- Custom SQL queries and prepared statements to prevent SQL injection.
See the console version's REQUIREMENTS.md file and the Qt version's REQUIREMENTS.md file for more details.
- Visual Studio 2022 with the
Desktop development with C++
workload - Qt 6.4.2, alongside PostgreSQL 15.2
-
Clone the repository.
-
Restore the database using the
main.sql
file found in thePostgreSQL
directory. -
Create a
Config.h
file using the template and update the database connection details. -
Build and run the application.
-
Choose the desired mode at the start of the application:
admin
oruser
. -
Follow the on-screen instructions to manage or adopt animals.
-
Use the
Undo
andRedo
buttons to revert or redo changes. -
View and manage the personal
Adoption List
in the designated tab.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.