CineManagerDB
CineManagerDB copied to clipboard
A comprehensive theatre management and ticket booking system built with Flask for Python and MySQL, presented via a web based UI.
CineManagerDB
A comprehensive theatre management and ticket booking system
Written during my 5th semester BE for a course specified mini project in Database Management Systems (DBMS).
The system follows a 3-tier architecture, with a web based front end, Python + Flask as the HTTP server and router, and MySQL server for the database. JavaScript is used to build AJAX requests from the front end, which are served by a Python server running Flask as the application framework. MySQL's Python connector is used to query the MySQL server, which executes the queries on a relational database in 3rd Normal Form.
The system is built to serve as an onsite booking and management system for a theatre (franchise). Two actors are considered, one being the cashier at the booking kiosk, who books tickets in exchange for payment, and the other being the manager who views statistics, alters pricing structures, schedules showings of movies, and adds new movies that are to be premiered.
All HTTP requests to Flask are made via encrypted POST messages. The system is designed to be secure, robust and flexible. The requirements mandated the use of a stored procedure and a trigger in MySQL. An ER to schema mapping was to be performed and the schema was required to be normalised to 3NF.
![](https://github.com/GokulVSD/CineManagerDB/raw/master/art/1.gif?raw=true)
![](https://github.com/GokulVSD/CineManagerDB/raw/master/art/2.gif?raw=true)
![](https://github.com/GokulVSD/CineManagerDB/raw/master/art/3.gif?raw=true)
Documentation
Project report and manual
Entity Relationship Diagram
Database Schema
Functional Dependencies
Dependencies
Flask Python HTTP router
MySQL Database server
External Libraries
Bootstrap CSS structure
JQuery AJAX requests, and general JS functionality
pickadate.js Date and time picker
# MySQL server must have an account with username ‘root’ and password ‘root123’
# (changeable within the runQuery function in app.py)
# This account needs read/write access to all tables in the db_theatre database (or root privileges)
# Initialise MySQL:
source /path/to/CineManagerDB/initialise.sql
# Use pip to install mysql-connector and flask, use python 3.6 to run app.py
# Visit the website by vising http://localhost:5000
Login as "manager" (password "manager"), to add new movies, schedule shows, alter ticket prices, and view bookings.
Login as "cashier (password "cashier"), to book seats for scheduled shows.
Usernames and passwords can be changed in app.py
Please do not plagiarise.