A desktop venue booking application built with Python and CustomTkinter. It supports club registration, role-based login, venue booking, date filtering, booking cancellation, administrator approval, and password changes.
- Admin and club user login
- Club registration
- Create and view venue bookings
- Date-based booking filters
- Booking conflict detection
- Cancel bookings
- Admin approval, pending, or decline status updates
- Change passwords
- Dark-themed graphical interface
- Python 3.11+
- MySQL Server
- The following Python packages:
pip install customtkinter mysql-connector-python tkcalendar tktimepicker PillowCreate a MySQL database named Venue_Booking_System, then create the required tables:
CREATE DATABASE Venue_Booking_System;
USE Venue_Booking_System;
CREATE TABLE users (
userid VARCHAR(50) PRIMARY KEY,
username VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
type ENUM('ADMIN', 'CLUB') NOT NULL
);
CREATE TABLE venue (
bookingid INT AUTO_INCREMENT PRIMARY KEY,
venue VARCHAR(100) NOT NULL,
bookedby VARCHAR(50),
from_date DATE NOT NULL,
to_date DATE NOT NULL,
from_time VARCHAR(10) NOT NULL,
to_time VARCHAR(10) NOT NULL,
status VARCHAR(20) NOT NULL,
FOREIGN KEY (bookedby) REFERENCES users(userid)
);Update the MySQL connection settings in dbms.py before running the application.
From the project directory, run:
python main.pyThe application opens on the login screen. Club users can register through the REGISTER CLUB option. An administrator account must be added directly to the users table with type set to ADMIN.
.
├── main.py # Application entry point
├── pages.py # Graphical interface and application pages
├── dbms.py # MySQL database operations
└── Images/ # Password visibility icons