NIRCTC is a mini-mock railway reservation system, as part of an Object-Oriented System Design project. This project aims at demonstrating the simplified functionality of a railway reservation system.
- Functional Requirements
- Non-Functional Requirements
- System Architecture
- Setup Instructions
- Technologies Used
- Database Structure
- Live Demo
- How It Works
- Conclusion
-
User Registration and Authentication:
- Users can register with a valid username and password.
- Authentication is required for accessing the system.
-
Ticket Booking:
- Users can search for available trains based on source, destination, and date.
- The system displays a list of available trains matching the search criteria.
-
Ticket Cancellation:
- Users can cancel their booked tickets based on the PNR number.
-
Performance Requirements:
- Responses to user requests should be within a reasonable amount of time.
-
Reliability Requirements:
- The system must be highly reliable, avoiding crashes or data loss.
- High availability is crucial, ensuring continuous operation for extended periods.
-
Security Requirements:
- User data must be protected from unauthorized access, modification, or disclosure.
-
Usability Requirements:
- The system has an intuitive and user-friendly interface suitable for users of all technical backgrounds.
- Clear instructions and prompts guide users through various tasks.
-
Maintainability Requirements:
- The system is well-structured and documented for easy understanding and modification.
- Adherence to standard coding practices and modular design principles.
NIRCTC utilizes a server-client architecture. The entire project is implemented in Python, leveraging the customtkinter framework for handling client-side logic. SQLite3 is used as the database for storing user information, train schedules, and bookings.
-
Clone the repository:
git clone https://github.com/khairalanam/nirctc
-
Navigate to the project directory:
cd nirctc
-
Create a virtual environment and activate it.
python -m venv <your-environment-name> <your-environment-name>\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python .
- Backend: Python 3.12
- Database: SQLite3
- GUI Library: Tkinter, customtkinter
- Other Libraries: tkcalendar, time, os
The SQLite3 database includes tables for storing user information, list of trains, and bookings.
Database: NIRCTC
Table: User
username TEXT
password TEXT
Table: Booking
pnr_no TEXT PRIMARY KEY
user_name TEXT
full_name TEXT
age INT
date_of_journey DATE
Class TEXT
from_station TEXT
to_station TEXT
Table: Train
name TEXT
from_station TEXT
to_station TEXT
no_of_seats INT
Untitled.video.-.Made.with.Clipchamp.mp4
Users can register with a username and password. Authentication is required to access the system, ensuring secure user interactions.
Users can search for available trains based on source, destination, and date.
Users can cancel their booked tickets with appropriate confirmation, providing a seamless cancellation process.
The NIRCTC is a simple user-centric application designed with a focus on performance, security, and scalability. This mini project was an insightful dive into how the architecture of a reservation system works as well as how many of the real-world projects follow a similar architecture to perform the specified tasks.