Built to order

Train Ticket Reservation Android App with PNR Enquiry and Running Status

This project builds a Train Ticket Reservation Android app that searches trains, books berths across 5 classes, checks a 10-digit PNR, and tracks live running status station by station. It is built in Android Studio with Java and a MySQL-backed REST API, using published timetable values for the Mumbai–Delhi corridor in its demo. The app covers the full booking flow from search to berth allotment, plus PNR enquiry and running-status tracking in one place. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and Electronics & Telecommunication.

Android GitAndroid StudioHTML5 · CSS · JavaScript demoRetrofit REST APIJava Android SDKMySQL PHP backendSQLite local cacheJSON data exchangeSoftware
Train Ticket Reservation Android App with PNR Enquiry and Running Status — project thumbnail preview
More project photos (2)

The problem

Booking a train ticket in India means juggling three separate jobs: finding the right train, checking whether a berth is available, and chasing the PNR and running status on different screens or apps. A traveller often checks the PNR in one app and live running status in another, and each hop risks a mistyped number or a stale status. For a student project, that fragmentation is the real problem to solve: one Android app must carry the whole journey — search, availability, booking, PNR enquiry and live tracking — against a single consistent data model. The Train Ticket Reservation app in this project does exactly that. It searches trains between stations, shows confirmed, RAC and waitlisted availability across 5 classes, books a berth, and then follows the same booking through its PNR record and the train's station-by-station running status. The demo uses published timetable values for the Mumbai–Delhi corridor, including the 12951 Mumbai Rajdhani Express.

SYSTEM FLOW

6 components 5 connections

Live flow
Drag to explore
100%
userPassenger

Passenger enters origin, destination, date and class.

Follow the working sequence

How it works

The app is a thin client over a booking API: every screen reads the same reservation record, so a berth booked in search is what the PNR and running-status screens read. A passenger enters origin, destination, date and class; the train service returns trains with scheduled times, distance and berth availability. Choosing a train and berth creates a reservation, and the API returns a 10-digit PNR, the single pointer to that booking. The PNR screen sends the 10-digit number back to the API and renders the stored record: train, date, route, class, chart status and each passenger's berth. Running status instead reads the published timetable and latest station events, marking each of the 8 halts departed, due or arrived with its delay. A PNR is only a pointer to a reservation record, so the app never stores the ticket itself — it only reads the record's current state, which is why one booking can show confirmed, RAC or waitlisted.

  1. The passenger opens the app and enters origin (Mumbai Central), destination (New Delhi), journey date and class.
  2. The app calls the train-search API, which returns matching trains with scheduled times, distance and berth availability in each class.
  3. The passenger picks a train and class, adds passenger names and ages, and confirms the booking.
  4. The API creates the reservation and returns a 10-digit PNR; the booking appears under My Bookings.
  5. PNR enquiry sends the 10-digit number to the same API and renders the stored record — train, chart status and each passenger's coach and berth.
  6. Running status reads the train's published timetable and station events, then renders the 8-station timeline with scheduled versus actual times and the delay at each halt.

Train app vs separate apps

Aspect This app Separate PNR and running-status apps
Booking flow Search, availability, booking and PNR in one app Search in one place, booking in another
PNR enquiry 10-digit PNR resolves to coach and berth per passenger PNR status only, with no link back to the booking
Running status Station-by-station timeline with the delay at each halt Live status only, with no booking context
Saved journeys My Bookings keeps every journey in one list Re-enter the PNR for every check
Offline demo Demo dataset works without a live connection Needs a live connection for every lookup

Tech stack:

  • Android Studio, Java
  • Android SDK (API level 33)
  • Retrofit · REST API · JSON
  • MySQL · PHP backend
  • SQLite local cache
  • HTML5 · CSS · JavaScript (working demo)
  • Git
Parameter Value
Platform Android, API level 33 (design target)
PNR format 10 digits (Indian Railways standard)
Travel classes 5 (SL, 3A, 2A, 1A, CC)
Demo trains 6 (demo dataset, verified in the demo build)
Sample PNR records 3 — confirmed, RAC and waitlisted (demo build)
Running-status stations 8 (12951 published halts)
12951 route Mumbai Central → New Delhi, 1,386 km (published timetable)
12951 schedule Departs 17:00, arrives 08:32, 15h 32m (published timetable)
12953 schedule Departs 17:10, arrives H Nizamuddin 09:43, 16h 33m, 1,377 km (published timetable)
Chart preparation Approximately 3–4 hours before departure (railway practice)
Demo screens 3 (booking, PNR enquiry, running status)
Screen response Under 2 seconds per screen (design target, local demo)

Project features

The app's strongest capabilities are its train search with live berth availability, its 10-digit PNR enquiry with per-passenger berth details, and its station-by-station running-status timeline. Train search covers 5 classes — Sleeper, AC 3 Tier, AC 2 Tier, AC First Class and Chair Car — with confirmed, RAC and waitlisted status shown per train. PNR enquiry resolves a 10-digit number to the full reservation record, including chart status and each passenger's coach and berth. Running status follows the 12951 Mumbai Rajdhani Express across its 8 published halts with scheduled and actual times and the delay at every stop. The booking flow then turns a chosen berth into a 10-digit PNR, and the saved-bookings list keeps every journey in one place. Around those capabilities, the app adds a clean Android interface built for one-handed use on a phone.

  • [Train search with berth availability] Search by origin, destination, date and class; results show departure and arrival times, journey duration, distance, fare and confirmed / RAC / waitlisted status for each train.
  • [10-digit PNR enquiry] Enter a PNR to see the train, journey date, route, class, chart status and every passenger's coach and berth, with confirmed, RAC and waitlisted shown separately.
  • [Live running-status timeline] The 12951 Mumbai Rajdhani Express is followed across its 8 published halts, each with scheduled and actual times and the delay at that stop, plus current speed and stations covered.
  • [Booking flow with passenger details] Add passenger names and ages, pick a class and berth preference, and confirm the booking; the app returns a 10-digit PNR and saves the booking.
  • [My Bookings list] Saved bookings stay in one list with their current status, so upcoming journeys are visible without re-entering a PNR.
  • [Class and fare comparison] All 5 classes are shown with per-person fares, so the traveller can compare Sleeper against AC tiers before choosing.
  • [Demo dataset included] The demo ships with 6 trains, 3 sample PNR records and the 8-station running-status timeline, so every screen works end to end without a live railway connection.

What is included

  • Complete Android app source code (Java, Android Studio project)
  • MySQL database schema with a PHP REST API for trains, bookings and PNR lookup
  • Working single-file HTML demo of the 3 screens (booking, PNR enquiry, running status)
  • Demo dataset: 6 trains, 3 sample PNR records and the 8-station running-status timeline
  • Project report PDF (background, problem statement, methodology, system working, outcomes)
  • PPT presentation for final review
  • Viva Q&A preparation document (PNR lifecycle, berth allotment, chart preparation, REST design)
  • Typical build timeline: approximately 3–4 weeks from requirements confirmation to delivery (expected)
  • To get this project, message Projectech on WhatsApp with the project name, your branch and your deadline — you receive a written quotation stating the exact scope, the price and the delivery date before any payment.

Limitations & prerequisites

  • The demo does not connect to the live railway reservation system; bookings and PNR lookups run against the bundled sample dataset.
  • Fares and availability shown in the demo are sample values; the built app needs a live or college-hosted API for real fares and berth counts.
  • The running-status timeline simulates station events from the published timetable; live GPS or railway-feed integration is future scope.
  • Only the two Rajdhani services in the demo use published timetable values; the other four demo trains carry sample times that must be replaced with timetable data before any real use.
  • Payment gateway integration is not part of the base build; booking confirmation in the demo does not take payment.
  • Real PNR data belongs to the railway system; the app can only display what the connected API returns and cannot create real reservations without authorised access.

Frequently Asked Questions

Does the app connect to the live railway booking system?

No — the demo does not connect to the live railway booking system. It runs entirely against a bundled sample dataset of 6 trains and 3 PNR records, so no real booking is created, no live railway system is touched, and every screen works offline against that dataset. The built Android app is structured around a REST API, so a college-hosted or authorised railway API can replace the sample data source without changing the screens. Real ticket booking needs authorised access to the railway reservation system, which is outside a student project.

What is a PNR and how does the enquiry work?

A PNR is the 10-digit Passenger Name Record number issued when a railway ticket is booked, and it is the single pointer to that reservation. The app sends the number to the booking API, which returns the stored record: train, journey date, route, class, chart status and each passenger's berth status. In the demo, 3 sample PNRs are included — one confirmed, one RAC and one waitlisted — so all three states can be shown and compared on the same screen.

How does running status know where the train is?

Running status compares the train's published timetable against the latest station events — each halt's scheduled time against its actual arrival or departure. The demo walks the 12951 Mumbai Rajdhani Express across its 8 published halts, marking each one departed, due or arriving, with the delay at that stop. In the built app the same screen would read a railway enquiry feed instead of the simulated events used in the demo.

Which trains and routes does the demo cover?

The demo covers 6 trains on the Mumbai–Delhi corridor, led by the 12951 Mumbai Rajdhani Express and the 12953 August Kranti Rajdhani Express. Those two use their published timetable values: 12951 departs Mumbai Central at 17:00 and reaches New Delhi at 08:32 over 1,386 km, while 12953 departs at 17:10 and reaches H Nizamuddin at 09:43 over 1,377 km. The other four demo trains carry sample times and are labelled as such in the demo, so the published values are never mixed up with the sample rows.

Can Tatkal booking or a payment gateway be added?

Yes, as optional additions. Tatkal needs a booking window and quota check in the API, and a payment gateway needs a provider account plus server-side order verification before any booking is confirmed, with the order amount verified on the server rather than trusted from the app. Neither is part of the base build, and the demo confirms bookings without taking payment. Both can be developed on request, with the timeline and scope confirmed before work starts.

Is this project suitable for a final-year project?

Yes — for Computer Science, IT and Electronics & Telecommunication programs. It demonstrates Android app development, REST API design, MySQL database modelling, JSON data handling and a complete booking workflow with PNR and running-status features, all of which give a reviewer concrete screens and a working demo to examine.

Components & software requirements
  • Android Studio, Java
  • Android SDK (API level 33)
  • Retrofit · REST API · JSON
  • MySQL · PHP backend
  • SQLite local cache
  • HTML5 · CSS · JavaScript (working demo)
  • Git
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.

Get a quotation