Georgi_Benchev

Untitled

Oct 9th, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.97 KB | None | 0 0
  1.  
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         String ANSI_RESET = "\u001B[0m";
  8.         String ANSI_BLACK = "\u001B[30m";
  9.         String ANSI_RED = "\u001B[31m";
  10.         String ANSI_GREEN = "\u001B[32m";
  11.  
  12.         Scanner scanner = new Scanner(System.in);
  13.         String command = scanner.nextLine();
  14.         String[][] usersData = new String[4][2];
  15.  
  16.         // main loop
  17.         while (!command.equals("end")) {
  18.             String[] commandArgs = command.split(" ");
  19.             switch (commandArgs[0]) {
  20.                 case "register":
  21.                     registrationProces(commandArgs, ANSI_RED, ANSI_RESET, usersData, ANSI_GREEN);
  22.                     break;
  23.                 case "delete": {
  24.                     // validate arguments
  25.                     if (validArguments(commandArgs, ANSI_RED, ANSI_RESET)) break;
  26.  
  27.                     String username = commandArgs[1];
  28.                     String password = commandArgs[2];
  29.  
  30.                     // validate username
  31.                     if (validUsername(username, ANSI_RED, ANSI_RESET)) break;
  32.  
  33.                     // validate password
  34.                     if (validPassword(password, ANSI_RED, ANSI_RESET)) break;
  35.  
  36.                     // find account to delete
  37.                     int accountIndex = -1;
  38.                     for (int i = 0; i < usersData.length; i++) {
  39.                         if (username.equals(usersData[i][0]) && password.equals(usersData[i][1])) {
  40.                             accountIndex = i;
  41.                         }
  42.                     }
  43.  
  44.                     if (accountIndex == -1) {
  45.                         System.out.println(ANSI_RED + "Invalid account/password." + ANSI_RESET);
  46.                         break;
  47.                     }
  48.  
  49.                     usersData[accountIndex][0] = null;
  50.                     usersData[accountIndex][1] = null;
  51.  
  52.                     System.out.println(ANSI_GREEN + "Deleted account." + ANSI_RESET);
  53.  
  54.                     break;
  55.                 }
  56.             }
  57.  
  58.             // read next command
  59.             command = scanner.nextLine();
  60.         }
  61.     }
  62.  
  63.     private static void registrationProces(String[] commandArgs, String ANSI_RED, String ANSI_RESET, String[][] usersData, String ANSI_GREEN) {
  64.         // validate arguments
  65.         if (validArguments(commandArgs, ANSI_RED, ANSI_RESET)) return;
  66.  
  67.         String username = commandArgs[1];
  68.         String password = commandArgs[2];
  69.  
  70.         // validate username
  71.         if (validUsername(username, ANSI_RED, ANSI_RESET)) return;
  72.  
  73.  
  74.         // validate password
  75.         if (validPassword(password, ANSI_RED, ANSI_RESET)) return;
  76.  
  77.         // check if username exists
  78.         if (usernameExists(usersData, username, ANSI_RED, ANSI_RESET)) return;
  79.  
  80.         // find free slot
  81.         int freeSlotIndex = getFreeSlotIndex(usersData);
  82.  
  83.         // no free slots
  84.         if (freeSlotIndex == -1) {
  85.             System.out.println(ANSI_RED + "The system supports a maximum number of 4 users." + ANSI_RESET);
  86.             return;
  87.         }
  88.  
  89.         // save user
  90.         usersData[freeSlotIndex][0] = username;
  91.         usersData[freeSlotIndex][1] = password;
  92.  
  93.         System.out.println(ANSI_GREEN + "Registered user." + ANSI_RESET);
  94.  
  95.         return;
  96.     }
  97.  
  98.     private static int getFreeSlotIndex(String[][] usersData) {
  99.         int freeSlotIndex = -1;
  100.         for (int i = 0; i < usersData.length; i++) {
  101.             if (usersData[i][0] == null) {
  102.                 freeSlotIndex = i;
  103.             }
  104.         }
  105.         return freeSlotIndex;
  106.     }
  107.  
  108.     private static boolean usernameExists(String[][] usersData, String username, String ANSI_RED, String ANSI_RESET) {
  109.         boolean usernameExists = false;
  110.         for (int i = 0; i < usersData.length; i++) {
  111.             if (username.equals(usersData[i][0])) {
  112.                 usernameExists = true;
  113.             }
  114.         }
  115.  
  116.         if (usernameExists) {
  117.             System.out.println(ANSI_RED + "Username already exists." + ANSI_RESET);
  118.             return true;
  119.         }
  120.         return false;
  121.     }
  122.  
  123.     private static boolean validArguments(String[] commandArgs, String ANSI_RED, String ANSI_RESET) {
  124.         if (commandArgs.length < 3) {
  125.             System.out.println(ANSI_RED + "Too few parameters." + ANSI_RESET);
  126.             return true;
  127.         }
  128.         return false;
  129.     }
  130.  
  131.     private static boolean validPassword(String password, String ANSI_RED, String ANSI_RESET) {
  132.         if (password.length() < 3) {
  133.             System.out.println(ANSI_RED + "Password must be at least 3 characters long." + ANSI_RESET);
  134.             return true;
  135.         }
  136.         return false;
  137.     }
  138.  
  139.     private static boolean validUsername(String username, String ANSI_RED, String ANSI_RESET) {
  140.         if (username.length() < 3) {
  141.             System.out.println(ANSI_RED + "Username must be at least 3 characters long" + ANSI_RESET);
  142.             return true;
  143.         }
  144.         return false;
  145.     }
  146. }
  147.  
Add Comment
Please, Sign In to add comment