JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
11 days ago13 views
👨‍💻Programming
import java.util.Random;

public class Customer {
    private String userId;
    private String userName;
    private String email;
    private String password;
    private String address;
    private String contactNumber;

    public Customer(String userName, String email, String password, String address, String contactNumber) {
        this.userId = generateUserId();
        this.userName = userName;
        this.email = email;
        this.password = password;
        this.address = address;
        this.contactNumber = contactNumber;
    }

    private String generateUserId() {
        Random random = new Random();
        int id = 10000 + random.nextInt(90000); // 5-digit random number
        return String.valueOf(id);
    }

    // ── Validation helpers ──────────────────────────────────────────

    public static String validateUserName(String name) {
        if (name == null || name.trim().isEmpty()) return "User name cannot be empty.";
        if (name.length() > 50) return "User name cannot exceed 50 characters.";
        return null;
    }

    public static String validateEmail(String email) {
        if (email == null || email.trim().isEmpty()) return "Email cannot be empty.";
        if (!email.matches("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"))
            return "Invalid email format.";
        return null;
    }

    public static String validatePassword(String password) {
        if (password == null || password.trim().isEmpty()) return "Password cannot be empty.";
        if (password.length() < 6) return "Password must be at least 6 characters.";
        if (password.length() > 12) return "Password cannot exceed 12 characters.";
        return null;
    }

    public static String validateAddress(String address) {
        if (address != null && address.length() > 100)
            return "Address cannot exceed 100 characters.";
        return null;
    }

    public static String validateContactNumber(String contact) {
        if (contact == null || contact.trim().isEmpty()) return "Contact number cannot be empty.";
        if (contact.length() != 10 || !contact.matches("\\d{10}"))
            return "Contact number must be exactly 10 digits.";
        return null;
    }

    // ── Getters & Setters ───────────────────────────────────────────

    public String getUserId()        { return userId; }
    public String getUserName()      { return userName; }
    public String getEmail()         { return email; }
    public String getPassword()      { return password; }
    public String getAddress()       { return address; }
    public String getContactNumber() { return contactNumber; }

    public void setUserName(String userName)           { this.userName = userName; }
    public void setEmail(String email)                 { this.email = email; }
    public void setPassword(String password)           { this.password = password; }
    public void setAddress(String address)             { this.address = address; }
    public void setContactNumber(String contactNumber) { this.contactNumber = contactNumber; }

    @Override
    public String toString() {
        return String.format(
            "┌──────────────────────────────────────┐%n" +
            "│          CUSTOMER DETAILS            │%n" +
            "├──────────────────────────────────────┤%n" +
            "│ User ID    : %-23s│%n" +
            "│ Name       : %-23s│%n" +
            "│ Email      : %-23s│%n" +
            "│ Address    : %-23s│%n" +
            "│ Contact    : %-23s│%n" +
            "└──────────────────────────────────────┘",
            userId, userName, email, address, contactNumber
        );
    }
}

public class Train {
    private String trainNumber;
    private String trainName;
    private String originStation;
    private String destinationStation;
    private String departureTime;
    private String arrivalTime;
    private int numberOfSeats;
    private boolean[] seatAvailability; // true = available

    public Train(String trainNumber, String trainName, String originStation,
                 String destinationStation, String departureTime, String arrivalTime,
                 int numberOfSeats) {
        this.trainNumber = trainNumber;
        this.trainName = trainName;
        this.originStation = originStation;
        this.destinationStation = destinationStation;
        this.departureTime = departureTime;
        this.arrivalTime = arrivalTime;
        this.numberOfSeats = numberOfSeats;
        this.seatAvailability = new boolean[numberOfSeats];
        for (int i = 0; i < numberOfSeats; i++) {
            seatAvailability[i] = true; // all seats initially available
        }
    }

    // ── Seat management ─────────────────────────────────────────────

    public boolean isSeatAvailable(int seatNumber) {
        if (seatNumber < 1 || seatNumber > numberOfSeats) return false;
        return seatAvailability[seatNumber - 1];
    }

    public boolean bookSeat(int seatNumber) {
        if (!isSeatAvailable(seatNumber)) return false;
        seatAvailability[seatNumber - 1] = false;
        return true;
    }

    public void releaseSeat(int seatNumber) {
        if (seatNumber >= 1 && seatNumber <= numberOfSeats) {
            seatAvailability[seatNumber - 1] = true;
        }
    }

    public int getAvailableSeatCount() {
        int count = 0;
        for (boolean available : seatAvailability) {
            if (available) count++;
        }
        return count;
    }

    // ── Getters & Setters ───────────────────────────────────────────

    public String getTrainNumber()        { return trainNumber; }
    public String getTrainName()          { return trainName; }
    public String getOriginStation()      { return originStation; }
    public String getDestinationStation() { return destinationStation; }
    public String getDepartureTime()      { return departureTime; }
    public String getArrivalTime()        { return arrivalTime; }
    public int getNumberOfSeats()         { return numberOfSeats; }

    public void setTrainName(String trainName)                   { this.trainName = trainName; }
    public void setOriginStation(String originStation)           { this.originStation = originStation; }
    public void setDestinationStation(String destinationStation) { this.destinationStation = destinationStation; }
    public void setDepartureTime(String departureTime)           { this.departureTime = departureTime; }
    public void setArrivalTime(String arrivalTime)               { this.arrivalTime = arrivalTime; }

    /** Summary row for search results */
    public String toSummary() {
        return String.format("│ %-10s │ %-20s │ %-10s │ %-10s │ %3d avail │",
                trainNumber, trainName, departureTime, arrivalTime, getAvailableSeatCount());
    }

    /** Detailed view */
    @Override
    public String toString() {
        return String.format(
            "┌──────────────────────────────────────────┐%n" +
            "│            TRAIN DETAILS                 │%n" +
            "├──────────────────────────────────────────┤%n" +
            "│ Train No.   : %-26s│%n" +
            "│ Train Name  : %-26s│%n" +
            "│ Origin      : %-26s│%n" +
            "│ Destination : %-26s│%n" +
            "│ Departure   : %-26s│%n" +
            "│ Arrival     : %-26s│%n" +
            "│ Total Seats : %-26d│%n" +
            "│ Available   : %-26d│%n" +
            "└──────────────────────────────────────────┘",
            trainNumber, trainName, originStation, destinationStation,
            departureTime, arrivalTime, numberOfSeats, getAvailableSeatCount()
        );
    }
}

import java.time.LocalDate;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

public class Booking {
    public enum Status { CONFIRMED, CANCELLED }

    private String bookingId;
    private String customerId;
    private String trainNumber;
    private List<Integer> seatNumbers;
    private LocalDate bookingDate;
    private double fare;
    private Status bookingStatus;

    public Booking(String customerId, String trainNumber, List<Integer> seatNumbers, double fare) {
        this.bookingId = generateBookingId();
        this.customerId = customerId;
        this.trainNumber = trainNumber;
        this.seatNumbers = seatNumbers;
        this.bookingDate = LocalDate.now();
        this.fare = fare;
        this.bookingStatus = Status.CONFIRMED;
    }

    private String generateBookingId() {
        Random random = new Random();
        return "BKG" + (10000 + random.nextInt(90000));
    }

    // ── Getters ─────────────────────────────────────────────────────

    public String getBookingId()        { return bookingId; }
    public String getCustomerId()       { return customerId; }
    public String getTrainNumber()      { return trainNumber; }
    public List<Integer> getSeatNumbers(){ return seatNumbers; }
    public LocalDate getBookingDate()   { return bookingDate; }
    public double getFare()             { return fare; }
    public Status getBookingStatus()    { return bookingStatus; }

    public void cancel() { this.bookingStatus = Status.CANCELLED; }

    @Override
    public String toString() {
        String seats = seatNumbers.stream()
                .map(String::valueOf)
                .collect(Collectors.joining(", "));
        return String.format(
            "┌──────────────────────────────────────────┐%n" +
            "│         BOOKING CONFIRMATION             │%n" +
            "├──────────────────────────────────────────┤%n" +
            "│ Booking ID  : %-26s│%n" +
            "│ Customer ID : %-26s│%n" +
            "│ Train No.   : %-26s│%n" +
            "│ Seat(s)     : %-26s│%n" +
            "│ Booking Date: %-26s│%n" +
            "│ Fare        : ₹ %-24.2f│%n" +
            "│ Status      : %-26s│%n" +
            "└──────────────────────────────────────────┘",
            bookingId, customerId, trainNumber, seats,
            bookingDate, fare, bookingStatus
        );
    }
}

← Back to timeline