Dhanush.A.
R
202217B2120
Railway ticket reservation system using UML and Java
import [Link].*;
class Ticket {
private int ticketNumber;
private String passengerName;
private int seatNumber;
private String ticketClass;
public Ticket(int ticketNumber, String passengerName, int seatNumber, String ticketClass) {
[Link] = ticketNumber;
[Link] = passengerName;
[Link] = seatNumber;
[Link] = ticketClass;
public void displayTicketDetails() {
[Link]("Ticket Details:");
[Link]("Ticket Number: " + ticketNumber);
[Link]("Passenger Name: " + passengerName);
[Link]("Seat Number: " + seatNumber);
[Link]("Class: " + ticketClass);
public int getTicketNumber() {
return ticketNumber;
public String getPassengerName() {
return passengerName;
Dhanush.A.R
202217B2120
class Train {
private int trainNumber;
private String trainName;
private String departureTime;
private String route;
public Train(int trainNumber, String trainName, String departureTime, String route) {
[Link] = trainNumber;
[Link] = trainName;
[Link] = departureTime;
[Link] = route;
public void displayTrainDetails() {
[Link]("Train Details:");
[Link]("Train Number: " + trainNumber);
[Link]("Train Name: " + trainName);
[Link]("Departure Time: " + departureTime);
[Link]("Route: " + route);
public int getTrainNumber() {
return trainNumber;
class ReservationSystem {
private static int totalTicketsBooked = 0;
Dhanush.A.R
202217B2120
private static List<Ticket> bookedTickets = new ArrayList<>();
private static List<Train> availableTrains = new ArrayList<>();
private static final List<String> validTicketClasses = [Link]("1A", "2A", "3A", "SL");
static {
// Initialize some dummy trains
[Link](new Train(12007, "Shatabdi Express", "06: 00", "Chennai to Mysore"));
[Link](new Train(12759, "Charminar Express", "18: 10", "Chennai to
Hyderabad"));
public static boolean bookTicket(String passengerName, int numberOfSeats, String
ticketClass) {
if () {
[Link]("Invalid ticket class.");
return false;
if (numberOfSeats > 0) {
for (int i = 0; i < numberOfSeats; i++) {
int ticketNumber = totalTicketsBooked + 1;
int seatNumber = totalTicketsBooked + 1; // Assuming seat number assignment
Ticket ticket = new Ticket(ticketNumber, passengerName, seatNumber, ticketClass);
[Link](ticket);
totalTicketsBooked++;
return true;
} else {
return false;
}
Dhanush.A.R
202217B2120
public static boolean cancelTicket(int ticketNumber) {
Iterator<Ticket> iterator = [Link]();
while ([Link]()) {
Ticket ticket = [Link]();
if ([Link]() == ticketNumber) {
[Link]();
[Link]("Ticket cancelled successfully.");
return true;
[Link]("Ticket not found.");
return false;
public static void viewTicketDetails() {
for (Ticket ticket : bookedTickets) {
[Link]();
[Link]("-------------------------");
public static void viewTrainDetails() {
for (Train train : availableTrains) {
[Link]();
[Link]("-------------------------");
public static void addTrain(int trainNumber, String trainName, String departureTime, String
route) {
Dhanush.A.R
202217B2120
[Link](new Train(trainNumber, trainName, departureTime, route));
[Link]("Train added successfully.");
public static void removeTrain(int trainNumber) {
Iterator<Train> iterator = [Link]();
while ([Link]()) {
Train train = [Link]();
if ([Link]() == trainNumber) {
[Link]();
[Link]("Train removed successfully.");
return;
[Link]("Train not found.");
public static int getTotalTicketsBooked() {
return totalTicketsBooked;
public static List<Train> getAvailableTrains() {
return availableTrains;
class Payment {
public static boolean processPayment(double amount) {
// Simulate payment processing
Scanner scanner = new Scanner([Link]);
[Link]("Payment processing...");
Dhanush.A.R
202217B2120
[Link]("Enter payment amount: " + amount);
double enteredAmount = [Link]();
[Link](); // Consume newline
if (enteredAmount >= amount) {
[Link]("Payment successful.");
return true;
} else {
[Link]("Payment failed. Insufficient amount.");
return false;
public class RailwayTicketReservationSystem {
private static Scanner scanner = new Scanner([Link]);
private static boolean loggedIn = false;
public static void main(String[] args) {
int choice;
do {
[Link]("1. User Login");
[Link]("2. View Ticket Details");
[Link]("3. View Train Details");
[Link]("4. Admin Login");
[Link]("5. Exit");
[Link]("Enter your choice: ");
choice = [Link]();
[Link](); // Consume newline
switch (choice) {
Dhanush.A.R
202217B2120
case 1:
if (login()) {
userMenu();
} else {
[Link]("Login failed. Please try again.");
break;
case 2:
[Link]();
break;
case 3:
[Link]();
break;
case 4:
if (adminLogin()) {
adminMenu();
} else {
[Link]("Admin login failed. Please try again.");
break;
case 5:
[Link]("Exiting...");
break;
default:
[Link]("Invalid choice. Please enter again.");
} while (choice != 5);
[Link]();
}
Dhanush.A.R
202217B2120
private static boolean login() {
// Simulated user login
[Link]("Enter username: ");
String username = [Link]();
[Link]("Enter password: ");
String password = [Link]();
// Simulate authentication
if ("user".equals(username) && "password".equals(password)) {
loggedIn = true;
[Link]("Login successful.");
return true;
} else {
return false;
private static void userMenu() {
int choice;
do {
[Link]("User Menu:");
[Link]("1. Book Ticket");
[Link]("2. Cancel Ticket");
[Link]("3. View Ticket Details");
[Link]("4. View Train Details");
[Link]("5. Logout");
[Link]("Enter your choice: ");
choice = [Link]();
[Link](); // Consume newline
switch (choice) {
case 1:
Dhanush.A.R
202217B2120
bookTicket();
break;
case 2:
cancelTicket();
break;
case 3:
[Link]();
break;
case 4:
[Link]();
break;
case 5:
loggedIn = false;
[Link]("Logged out.");
break;
default:
[Link]("Invalid choice. Please enter again.");
} while (choice != 5);
private static void bookTicket() {
[Link]("Enter passenger name: ");
String passengerName = [Link]();
[Link]("Enter number of seats: ");
int numberOfSeats = [Link]();
[Link](); // Consume newline
[Link]("Enter ticket class (1A, 2A, 3A, SL): ");
String ticketClass = [Link]();
Dhanush.A.R
202217B2120
boolean booked = [Link](passengerName, numberOfSeats,
ticketClass);
if (booked) {
double amount = calculateAmount(ticketClass, numberOfSeats);
if ([Link](amount)) {
[Link]("Your ticket(s) have been booked.");
[Link]("Total tickets booked so far: " +
[Link]());
} else {
[Link]("Payment failed. Ticket booking cancelled.");
} else {
[Link]("Tickets not available in " + ticketClass);
private static void cancelTicket() {
[Link]("Enter ticket number to cancel: ");
int ticketNumber = [Link]();
[Link](); // Consume newline
boolean cancelled = [Link](ticketNumber);
if (cancelled) {
[Link]("Ticket cancellation successful.");
} else {
[Link]("Ticket cancellation failed.");
private static double calculateAmount(String ticketClass, int numberOfSeats) {
double rate;
Dhanush.A.R
202217B2120
switch (ticketClass) {
case "1A":
rate = 2000.0;
break;
case "2A":
rate = 1500.0;
break;
case "3A":
rate = 1000.0;
break;
case "SL":
rate = 500.0;
break;
default:
throw new IllegalArgumentException("Invalid ticket class");
return rate * numberOfSeats;
private static boolean adminLogin() {
// Simulated admin login
[Link]("Enter admin username: ");
String username = [Link]();
[Link]("Enter admin password: ");
String password = [Link]();
// Simulate authentication
if ("admin".equals(username) && "adminpassword".equals(password)) {
loggedIn = true;
[Link]("Admin login successful.");
return true;
} else {
Dhanush.A.R
202217B2120
return false;
private static void adminMenu() {
int choice;
do {
[Link]("Admin Menu:");
[Link]("1. Add Train");
[Link]("2. Remove Train");
[Link]("3. Logout");
[Link]("Enter your choice: ");
choice = [Link]();
[Link](); // Consume newline
switch (choice) {
case 1:
addTrain();
break;
case 2:
removeTrain();
break;
case 3:
loggedIn = false;
[Link]("Logged out.");
break;
default:
[Link]("Invalid choice. Please enter again.");
} while (choice != 3);
}
Dhanush.A.R
202217B2120
private static void addTrain() {
[Link]("Enter train number: ");
int trainNumber = [Link]();
[Link](); // Consume newline
[Link]("Enter train name: ");
String trainName = [Link]();
[Link]("Enter departure time: ");
String departureTime = [Link]();
[Link]("Enter route: ");
String route = [Link]();
[Link](trainNumber, trainName, departureTime, route);
private static void removeTrain() {
[Link]("Enter train number to remove: ");
int trainNumber = [Link]();
[Link](); // Consume newline
[Link](trainNumber);