0% found this document useful (0 votes)
11 views

System

Uploaded by

aethramay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

System

Uploaded by

aethramay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

import java.util.

*;
import java.time.LocalDate;
import java.time.LocalTime;
import java.text.DecimalFormat;

// Movie Class to represent movie details


class Movie {
private String movieId;
private String title;
private String genre;
private double price;

public Movie(String movieId, String title, String genre, double price) {


this.movieId = movieId;
this.title = title;
this.genre = genre;
this.price = price;
}

// Getters and toString


public String getMovieId() { return movieId; }
public String getTitle() { return title; }
public String getGenre() { return genre; }
public double getPrice() { return price; }

@Override
public String toString() {
return "Movie{" +
"ID='" + movieId + '\'' +
", Title='" + title + '\'' +
", Genre='" + genre + '\'' +
", Price=$" + price +
'}';
}
}

// Showtime Class to represent movie showtimes


class Showtime {
private String showtimeId;
private Movie movie;
private LocalDate date;
private LocalTime time;

public Showtime(String showtimeId, Movie movie, LocalDate date, LocalTime time)


{
this.showtimeId = showtimeId;
this.movie = movie;
this.date = date;
this.time = time;
}

// Getters and toString


public String getShowtimeId() { return showtimeId; }
public Movie getMovie() { return movie; }
public LocalDate getDate() { return date; }
public LocalTime getTime() { return time; }

@Override
public String toString() {
return "Showtime{" +
"ID='" + showtimeId + '\'' +
", Movie=" + movie.getTitle() +
", Date=" + date +
", Time=" + time +
'}';
}
}

// Seat Class to represent seat details


class Seat {
private String seatId;
private Showtime showtime;
private boolean isAvailable;

public Seat(String seatId, Showtime showtime) {


this.seatId = seatId;
this.showtime = showtime;
this.isAvailable = true;
}

// Getters and setters


public String getSeatId() { return seatId; }
public Showtime getShowtime() { return showtime; }
public boolean isAvailable() { return isAvailable; }
public void setAvailable(boolean available) { isAvailable = available; }

@Override
public String toString() {
return "Seat{" +
"ID='" + seatId + '\'' +
", Showtime=" + showtime.getShowtimeId() +
", Available=" + isAvailable +
'}';
}
}

// Receipt Class to generate ticket receipts


class Receipt {
private Movie movie;
private Showtime showtime;
private Seat seat;
private double totalPayment;
private LocalDate purchaseDate;

public Receipt(Movie movie, Showtime showtime, Seat seat) {


this.movie = movie;
this.showtime = showtime;
this.seat = seat;
this.totalPayment = movie.getPrice();
this.purchaseDate = LocalDate.now();
}

public double getTotalPayment() { return totalPayment; }


public LocalDate getPurchaseDate() { return purchaseDate; }

@Override
public String toString() {
DecimalFormat df = new DecimalFormat("#.00");
return "--- MOVIE TICKET RECEIPT ---\n" +
"Movie: " + movie.getTitle() + "\n" +
"Showtime: " + showtime.getDate() + " at " + showtime.getTime() +
"\n" +
"Seat: " + seat.getSeatId() + "\n" +
"Total Payment: $" + df.format(totalPayment) + "\n" +
"Purchase Date: " + purchaseDate;
}
}

// Main Ticketing System Class


public class MovieTicketingSystem {
private static Scanner scanner = new Scanner(System.in);

// ArrayLists to store system data


private static ArrayList<Movie> movies = new ArrayList<>();
private static ArrayList<Showtime> showtimes = new ArrayList<>();
private static ArrayList<Seat> seats = new ArrayList<>();
private static ArrayList<Receipt> receipts = new ArrayList<>();

public static void main(String[] args) {


boolean exit = false;
while (!exit) {
System.out.println("\n--- MOVIE TICKETING SYSTEM ---");
System.out.println("1. Admin Login");
System.out.println("2. Staff Login");
System.out.println("3. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
adminMenu();
break;
case 2:
staffMenu();
break;
case 3:
exit = true;
System.out.println("Thank you for using the Movie Ticketing
System!");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Admin Menu Methods


private static void adminMenu() {
System.out.print("Enter Admin Password: ");
String password = scanner.nextLine();

// Simple password check (in a real system, use secure authentication)


if (!"admin123".equals(password)) {
System.out.println("Incorrect Password!");
return;
}

boolean adminExit = false;


while (!adminExit) {
System.out.println("\n--- ADMIN MENU ---");
System.out.println("1. Movie Management");
System.out.println("2. Showtime Management");
System.out.println("3. Seat Management");
System.out.println("4. Income Report");
System.out.println("5. Logout");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
movieManagement();
break;
case 2:
showtimeManagement();
break;
case 3:
seatManagement();
break;
case 4:
incomeReportManagement();
break;
case 5:
adminExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Movie Management Submenu


private static void movieManagement() {
boolean movieExit = false;
while (!movieExit) {
System.out.println("\n--- MOVIE MANAGEMENT ---");
System.out.println("1. Add Movie");
System.out.println("2. Delete Movie");
System.out.println("3. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
addMovie();
break;
case 2:
deleteMovie();
break;
case 3:
movieExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Add Movie Method


private static void addMovie() {
System.out.print("Enter Movie ID: ");
String movieId = scanner.nextLine();
System.out.print("Enter Movie Title: ");
String title = scanner.nextLine();
System.out.print("Enter Movie Genre: ");
String genre = scanner.nextLine();
System.out.print("Enter Movie Price: $");
double price = scanner.nextDouble();
scanner.nextLine(); // Consume newline

Movie newMovie = new Movie(movieId, title, genre, price);


movies.add(newMovie);
System.out.println("Movie added successfully!");
}

// Delete Movie Method


private static void deleteMovie() {
System.out.print("Enter Movie ID to delete: ");
String movieId = scanner.nextLine();

movies.removeIf(movie -> movie.getMovieId().equals(movieId));


System.out.println("Movie deleted successfully!");
}

// Showtime Management Submenu


private static void showtimeManagement() {
boolean showtimeExit = false;
while (!showtimeExit) {
System.out.println("\n--- SHOWTIME MANAGEMENT ---");
System.out.println("1. Add Showtime");
System.out.println("2. Delete Showtime");
System.out.println("3. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
addShowtime();
break;
case 2:
deleteShowtime();
break;
case 3:
showtimeExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Add Showtime Method


private static void addShowtime() {
// Display available movies
System.out.println("Available Movies:");
for (Movie movie : movies) {
System.out.println(movie);
}

System.out.print("Enter Movie ID for Showtime: ");


String movieId = scanner.nextLine();

// Find selected movie


Movie selectedMovie = movies.stream()
.filter(m -> m.getMovieId().equals(movieId))
.findFirst()
.orElse(null);

if (selectedMovie == null) {
System.out.println("Movie not found!");
return;
}

System.out.print("Enter Showtime ID: ");


String showtimeId = scanner.nextLine();
System.out.print("Enter Date (YYYY-MM-DD): ");
LocalDate date = LocalDate.parse(scanner.nextLine());
System.out.print("Enter Time (HH:MM): ");
LocalTime time = LocalTime.parse(scanner.nextLine());

Showtime newShowtime = new Showtime(showtimeId, selectedMovie, date, time);


showtimes.add(newShowtime);
System.out.println("Showtime added successfully!");
}

// Delete Showtime Method


private static void deleteShowtime() {
System.out.print("Enter Showtime ID to delete: ");
String showtimeId = scanner.nextLine();

showtimes.removeIf(showtime ->
showtime.getShowtimeId().equals(showtimeId));
System.out.println("Showtime deleted successfully!");
}

// Seat Management Submenu


private static void seatManagement() {
boolean seatExit = false;
while (!seatExit) {
System.out.println("\n--- SEAT MANAGEMENT ---");
System.out.println("1. Add Seat");
System.out.println("2. Delete Seat");
System.out.println("3. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
addSeat();
break;
case 2:
deleteSeat();
break;
case 3:
seatExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Add Seat Method


private static void addSeat() {
// Display available showtimes
System.out.println("Available Showtimes:");
for (Showtime showtime : showtimes) {
System.out.println(showtime);
}

System.out.print("Enter Showtime ID for Seat: ");


String showtimeId = scanner.nextLine();

// Find selected showtime


Showtime selectedShowtime = showtimes.stream()
.filter(s -> s.getShowtimeId().equals(showtimeId))
.findFirst()
.orElse(null);

if (selectedShowtime == null) {
System.out.println("Showtime not found!");
return;
}

System.out.print("Enter Seat ID: ");


String seatId = scanner.nextLine();

Seat newSeat = new Seat(seatId, selectedShowtime);


seats.add(newSeat);
System.out.println("Seat added successfully!");
}

// Delete Seat Method


private static void deleteSeat() {
System.out.print("Enter Seat ID to delete: ");
String seatId = scanner.nextLine();

seats.removeIf(seat -> seat.getSeatId().equals(seatId));


System.out.println("Seat deleted successfully!");
}

// Income Report Management


private static void incomeReportManagement() {
boolean reportExit = false;
while (!reportExit) {
System.out.println("\n--- INCOME REPORT ---");
System.out.println("1. Daily Report");
System.out.println("2. Weekly Report");
System.out.println("3. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
generateDailyReport();
break;
case 2:
generateWeeklyReport();
break;
case 3:
reportExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Daily Income Report


private static void generateDailyReport() {
LocalDate today = LocalDate.now();
double dailyIncome = receipts.stream()
.filter(r -> r.getPurchaseDate().equals(today))
.mapToDouble(Receipt::getTotalPayment)
.sum();

System.out.println("Daily Income Report - " + today);


System.out.printf("Total Daily Income: $%.2f%n", dailyIncome);
}

// Weekly Income Report


private static void generateWeeklyReport() {
LocalDate today = LocalDate.now();
LocalDate weekAgo = today.minusWeeks(1);

double weeklyIncome = receipts.stream()


.filter(r -> !r.getPurchaseDate().isBefore(weekAgo) &&
!r.getPurchaseDate().isAfter(today))
.mapToDouble(Receipt::getTotalPayment)
.sum();

System.out.println("Weekly Income Report - " + weekAgo + " to " + today);


System.out.printf("Total Weekly Income: $%.2f%n", weeklyIncome);
}

// Continuation of the previous MovieTicketingSystem class...

// Staff Login Method


private static void staffMenu() {
System.out.print("Enter Staff Password: ");
String password = scanner.nextLine();
// Simple password check (in a real system, use secure authentication)
if (!"staff123".equals(password)) {
System.out.println("Incorrect Password!");
return;
}

boolean staffExit = false;


while (!staffExit) {
System.out.println("\n--- STAFF MENU ---");
System.out.println("1. Movies");
System.out.println("2. Showtimes");
System.out.println("3. Seats");
System.out.println("4. Receipt");
System.out.println("5. Logout");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
staffMovieMenu();
break;
case 2:
staffShowtimeMenu();
break;
case 3:
staffSeatMenu();
break;
case 4:
generateReceipt();
break;
case 5:
staffExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// Staff Movie Menu


private static void staffMovieMenu() {
boolean movieExit = false;
while (!movieExit) {
System.out.println("\n--- MOVIES ---");
System.out.println("1. View Movie List");
System.out.println("2. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
viewMovieList();
break;
case 2:
movieExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// View Movie List Method


private static void viewMovieList() {
if (movies.isEmpty()) {
System.out.println("No movies available.");
return;
}

System.out.println("--- AVAILABLE MOVIES ---");


for (Movie movie : movies) {
System.out.println(movie);
}
}

// Staff Showtime Menu


private static void staffShowtimeMenu() {
boolean showtimeExit = false;
while (!showtimeExit) {
System.out.println("\n--- SHOWTIMES ---");
System.out.println("1. View Available Showtimes");
System.out.println("2. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
viewShowtimeList();
break;
case 2:
showtimeExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// View Showtime List Method


private static void viewShowtimeList() {
if (showtimes.isEmpty()) {
System.out.println("No showtimes available.");
return;
}

System.out.println("--- AVAILABLE SHOWTIMES ---");


for (Showtime showtime : showtimes) {
System.out.println(showtime);
}
}
// Staff Seat Menu
private static void staffSeatMenu() {
boolean seatExit = false;
while (!seatExit) {
System.out.println("\n--- SEATS ---");
System.out.println("1. View Available Seats");
System.out.println("2. Exit");
System.out.print("Enter your choice: ");

int choice = scanner.nextInt();


scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
viewAvailableSeats();
break;
case 2:
seatExit = true;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}

// View Available Seats Method


private static void viewAvailableSeats() {
if (seats.isEmpty()) {
System.out.println("No seats available.");
return;
}

System.out.println("--- AVAILABLE SEATS ---");


for (Seat seat : seats) {
System.out.println("Seat ID: " + seat.getSeatId() +
" | Showtime: " + seat.getShowtime().getShowtimeId()
+
" | Status: " + (seat.isAvailable() ? "Available" :
"Unavailable"));
}
}

// Generate Receipt Method


private static void generateReceipt() {
// Check if movies, showtimes, and seats are available
if (movies.isEmpty() || showtimes.isEmpty() || seats.isEmpty()) {
System.out.println("Cannot generate receipt. Ensure movies, showtimes,
and seats are available.");
return;
}

// Select Movie
viewMovieList();
System.out.print("Enter Movie ID: ");
String movieId = scanner.nextLine();
Movie selectedMovie = movies.stream()
.filter(m -> m.getMovieId().equals(movieId))
.findFirst()
.orElse(null);
if (selectedMovie == null) {
System.out.println("Movie not found!");
return;
}

// Select Showtime
viewShowtimeList();
System.out.print("Enter Showtime ID: ");
String showtimeId = scanner.nextLine();
Showtime selectedShowtime = showtimes.stream()
.filter(s -> s.getShowtimeId().equals(showtimeId))
.findFirst()
.orElse(null);

if (selectedShowtime == null) {
System.out.println("Showtime not found!");
return;
}

// Select Seat
viewAvailableSeats();
System.out.print("Enter Seat ID: ");
String seatId = scanner.nextLine();
Seat selectedSeat = seats.stream()
.filter(s -> s.getSeatId().equals(seatId) && s.isAvailable() &&
s.getShowtime().getShowtimeId().equals(showtimeId))
.findFirst()
.orElse(null);

if (selectedSeat == null) {
System.out.println("Seat not available or not found!");
return;
}

// Create Receipt
Receipt receipt = new Receipt(selectedMovie, selectedShowtime,
selectedSeat);

// Mark seat as unavailable


selectedSeat.setAvailable(false);

// Add receipt to list


receipts.add(receipt);

// Display Receipt
System.out.println("\n" + receipt);
System.out.println("Receipt generated successfully!");
}
}

You might also like