OneCompiler

q3

757

import java.util.HashMap;
import java.util.Scanner;

public class LoginConsole {

// Simulated database for storing user credentials
static HashMap<String, String> userDatabase = new HashMap<>();

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    // Pre-register a user for testing login
    userDatabase.put("user2024", "Secure@123");

    System.out.println("Welcome to the Login Console");

    // Input for User ID
    System.out.print("Enter User ID (5-20 characters): ");
    String userID = scanner.nextLine();
    if (userID.length() < 5 || userID.length() > 20) {
        System.out.println("Error: User ID must be between 5 and 20 characters.");
        return;
    }

    // Input for Password
    System.out.print("Enter Password (Max 30 characters, include upper case, lower case, and special character): ");
    String password = scanner.nextLine();

    if (password.length() > 30 || !isValidPassword(password)) {
        System.out.println("Error: Password must be max 30 characters and include at least one uppercase letter, one lowercase letter, and one special character.");
        return;
    }

    // Check credentials
    if (userDatabase.containsKey(userID) && userDatabase.get(userID).equals(password)) {
        System.out.println("Login Successful!");
        showDashboard(userID);
    } else {
        System.out.println("Error: Invalid User ID or Password.");
    }

    scanner.close();
}

// Validate password requirements
private static boolean isValidPassword(String password) {
    boolean hasUppercase = false;
    boolean hasLowercase = false;
    boolean hasSpecialChar = false;

    for (char c : password.toCharArray()) {
        if (Character.isUpperCase(c)) {
            hasUppercase = true;
        } else if (Character.isLowerCase(c)) {
            hasLowercase = true;
        } else if (!Character.isLetterOrDigit(c)) {
            hasSpecialChar = true;
        }
    }
    return hasUppercase && hasLowercase && hasSpecialChar;
}

// Simulate a dashboard
private static void showDashboard(String userID) {
    System.out.println("\nWelcome to the Dashboard, " + userID + "!");
    System.out.println("Role-Specific Options:");
    System.out.println("1. View Profile");
    System.out.println("2. Settings");
    System.out.println("3. Logout");
}

}