This is a console-based Art Gallery Management System written in C++. It allows users to manage and interact with an art gallery, including user registration, login, artwork management, artist applications, auction management, bidding, and bookings. The system supports three main user roles: Visitor, Artist, and Admin, each with their own set of features and menus.
- Signup & Login: New users can register as Visitors. Existing users can log in with their credentials.
- Role-based Access: Users are assigned roles (Visitor, Artist, Admin) that determine their available actions.
- User Data Storage: User information is stored in
data/usersInfo.txtwith unique IDs and timestamps.
- Browse Artworks: View available artworks in the gallery.
- Book Visits: Book a visit to the gallery.
- Apply as Artist: Submit an application to become an artist.
- Browse & Join Auctions: View ongoing auctions and place bids (bidding is disabled after auction end time).
- View Won Auctions: See auctions won and instructions for artwork retrieval.
- Submit Artwork: Add new artworks to the gallery.
- Apply for Auction: Request to auction an artwork.
- View Application Status: Track the status of auction and artist applications.
- Auction Management: Start auctions for approved applications.
- User Management: View and manage all users.
- Artist Application Review: Approve or reject artist applications.
- Auction Application Review: Approve or reject auction requests.
- Auction Management: Open, monitor, and close auctions. Update winners automatically after auction end.
- Auction Creation: Artists and admins can create and manage auctions for artworks.
- Bidding: Visitors can place bids on live auctions. Bidding is prevented after auction end time.
- Winner Determination: System automatically updates and displays auction winners after auction end.
- Bid Data Storage: All bids are stored in
data/bidsData.txt.
- Book Gallery Visits: Visitors can book visits, and bookings are stored in
data/BookingsInfo.txt.
-
main.cpp:
- Entry point. Handles main menu, user signup, login, and session management.
- Uses colorized, centered, and bordered console output for a professional UI.
- Delegates role-specific menus to
Visitor,Artist, orAdminclasses.
-
model/User.h:
- Base class for all users. Stores user info and provides a virtual interface for menus.
-
model/Visitor.h:
- Inherits from
User. Implements visitor-specific features: browsing, booking, bidding, and artist application.
- Inherits from
-
model/Artist.h:
- Inherits from
User. Implements artist-specific features: artwork submission, auction application, and auction management.
- Inherits from
-
model/Admin.h:
- Inherits from
User. Implements admin-specific features: user management, application review, and auction control.
- Inherits from
-
model/Artwork.h:
- Represents an artwork in the gallery. Handles display and info formatting.
-
model/ArtistApplicationRequest.h:
- Handles artist application logic, file storage, and status tracking.
-
model/AuctionApplicationRequest.h:
- Handles auction application logic, file storage, and status tracking.
-
model/AuctionSystem.h:
- Manages auction lifecycle, status, and winner updates.
-
model/Bid.h:
- Represents a bid in an auction. Handles bid data and formatting.
-
model/BookingSystem.h:
- Manages gallery visit bookings.
-
model/Gallery.h:
- Represents the gallery and its artworks.
-
model/utils.h:
- Utility functions (e.g.,
clearScreen(), formatting helpers).
- Utility functions (e.g.,
data/usersInfo.txt— User recordsdata/artistApplications.txt— Artist applicationsdata/auctionApplications.txt— Auction applicationsdata/auctionsInfo.txt— Auction detailsdata/bidsData.txt— Bids for auctionsdata/auctionWinners.txt— Auction winnersdata/BookingsInfo.txt— Gallery bookingsdata/artworksInfo.txt— Artwork records
- All menus, submenus, and info blocks use consistent color, centering, and 100-character borders.
- Info displays use a left-label/right-value block style for clarity.
- Confirmation and error messages are visually consistent and professional.
- All runtime and formatting issues have been addressed for a robust user experience.
- Build the project using a C++ compiler (e.g., g++, MinGW).
- Run the generated executable (
main.exe). - Follow the on-screen instructions to interact with the system.
- All code comments have been removed for production deployment.
- The system is robust against malformed data and prevents post-end-time bidding.
- Winners are updated automatically after auction end.
- by Abdul Hannan Qureshi
- Developed as an Object-Oriented Programming project.