georgeB96

Untitled

Apr 15th, 2022
1,612
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.67 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Scanner;
  8.  
  9. public class BoardingSysWaitingList {
  10.    
  11.     //declaring scanner to take input
  12.     static Scanner kb = new Scanner(System.in);
  13.  //    Passenger[] waitingPassengers = new Passenger[5]; //max 5 passengers on the waiting list
  14. //    https://stackoverflow.com/questions/2843366/how-to-add-new-elements-to-an-array - example issue
  15. //    https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html - we use array lists so we can grow and shrink the array the way we want to without any constraints
  16.     static List<Passenger> waitingPassengers = new ArrayList<Passenger>();
  17.    
  18.     public static void main(String[] args) throws Exception {
  19.        
  20.        
  21.        
  22.        
  23.        
  24.        
  25.         //declaring the cabins array
  26.         Cabin[] cabins = new Cabin[12];
  27.        
  28.         for(int i=0;i<cabins.length;i++) {
  29.             cabins[i] = new Cabin();
  30.         }
  31.        
  32.        
  33.        
  34.        
  35.         while(true) {
  36.             System.out.println("Enter option: "
  37.                     + "\nA - to add cabin crew, "
  38.                     + "\nV - to view all cabins,"
  39.                     + "\nE - print empty cabins,"
  40.                     + "\nD - delete customer from cabin,"
  41.                     + "\nF - find cabin using Customer name,"
  42.                     + "\nS - store program data into file,"
  43.                     + "\nL - load program data from the file,"
  44.                     + "\nT - show expenses per passenger and calculate total,"
  45.                     + "\nO - view passengers in alphabetical order");
  46.            
  47.             char option = kb.next().charAt(0); // reads char from keyboard and save it into option
  48.             System.out.println("You selected option: " + option);
  49.             kb.nextLine(); //fixes issues with nextLine()
  50.             //code for option A
  51.            
  52.             switch (option) {
  53.                 case 'A':
  54.                     cabins = addCustomer(cabins);
  55.                     break;
  56.                 case 'V':
  57.                     printCabins(cabins);
  58.                     break;
  59.                 case 'E':
  60.                     printEmptyCabins(cabins);
  61.                     break;
  62.                 case 'D':
  63.                     cabins = deleteCustomerFromCabin(cabins);
  64.                     break;
  65.                 case 'F':
  66.                     findCabinWithCusName(cabins);
  67.                     break;
  68.                 case 'S':
  69.                     storeDataInFile(cabins);
  70.                     break;
  71.                 case 'L':
  72.                     cabins = loadProgramData();
  73.                     break;
  74. //                case 'O':
  75. //                    viewPassengerInOrder(cabins);
  76. //                    break;
  77.                 case 'T':
  78.                     viewExpenses(cabins);
  79.                   break;
  80.                 default:
  81.                     System.out.println("Invalid option");
  82.                     break;
  83.             }  
  84.         }
  85.     }
  86.    
  87. private static void viewExpenses(Cabin[] cabins) {
  88.     double totalExpenses = 0;
  89.     for (int i=0; i<cabins.length;i++) {
  90.         Passenger[] passengers = cabins[i].getPassengers();
  91.         for(int j=0;j<passengers.length; j++) {
  92.             if(passengers[j] != null) {
  93.             System.out.println("Expenses of passenger " + passengers[j].getFirstName() +  " is " + passengers[j].getExpenses());
  94.             totalExpenses   = totalExpenses + passengers[j].getExpenses();
  95.             }
  96.         }
  97.     }
  98.     System.out.println("Total Expenses: " + totalExpenses  );
  99. }
  100.    
  101.        
  102. //  https://www.tutorialspoint.com/how-to-sort-a-string-in-java-alphabetically-in-java
  103. //    private static void viewPassengerInOrder(String[] cabins) {
  104. //        
  105. //        String[] cabinsSorted = new String[12];
  106. //        
  107. //        for(int i =0; i<cabins.length;i++) {
  108. //            if(!(cabins[i]== null)) {
  109. //                for(int j=i+1; j<cabins.length; j++) {
  110. //                    //compares each elements of the array to all the remaining elements
  111. //                    if(!(cabins[j]==null)) {
  112. //                        if(cabins[i].compareTo(cabins[j])>0) {
  113. //                            
  114. //                            //swap elements with each other
  115. //                            String temp = cabins[i];
  116. //                            cabins[i] = cabins[j];
  117. //                            cabins[j] = temp;
  118. //                        }
  119. //                    }
  120. //                    
  121. //                }
  122. //            }
  123. //            
  124. //        }
  125. //        
  126. //        System.out.println("Viewing all cabins: ");
  127. //        for(int i=0;i<cabins.length;i++) {
  128. //            if(!(cabins[i] == null)) {
  129. //                System.out.println(cabins[i]);
  130. //            }
  131. //        }
  132. //        
  133. //        
  134. //    }
  135.  
  136.  
  137.     private static Cabin[] loadProgramData() throws Exception {
  138.        
  139.         System.out.println("Loading data from CabinDataObject.txt");
  140.         BufferedReader reader = new BufferedReader(new FileReader("CabinDataObject.txt"));
  141.        
  142.         Cabin[] cabins = new Cabin[12];
  143.        
  144.         for(int i=0;i<cabins.length;i++) {
  145.             cabins[i] = new Cabin();
  146.         }
  147.        
  148.         for (int i=0; i<cabins.length;i++) {
  149.             Passenger[] passengers = cabins[i].getPassengers();
  150.             for(int j=0;j<passengers.length; j++) {
  151.                 String cabinPassenger = reader.readLine();
  152.                 if(cabinPassenger.equals("null")) { //if empty cabin
  153.                     passengers[j] = null;
  154.                 } else {
  155.                     Passenger p = new Passenger();
  156.                     String[] readData = cabinPassenger.split(" ");
  157.                     p.setFirstName(readData[0]);
  158.                     p.setSurName(readData[1]);
  159.                     p.setExpenses(Double.parseDouble(readData[2]));
  160.                     passengers[j] = p;
  161.                 }
  162.            
  163.                
  164.             }
  165.         }
  166.         reader.close();
  167.         return cabins;
  168.     }
  169.     private static void storeDataInFile(Cabin[] cabins) throws Exception {
  170.         System.out.println("Saving data in CabinData.txt");
  171.         BufferedWriter writer = new BufferedWriter(new FileWriter("CabinDataObject.txt", false));
  172.         for(int i=0;i<cabins.length;i++) {
  173.             Passenger[] passengers = cabins[i].getPassengers();
  174.             for(int j=0;j<passengers.length;j++) {
  175.                 if(passengers[j] != null) {
  176.                     String message = passengers[j].getFirstName() + " " + passengers[j].getSurName() + " " +  passengers[j].getExpenses();
  177.                     writer.write(message);
  178.                     writer.newLine();
  179.                 } else {
  180.                     String message = "null";
  181.                     writer.write(message);
  182.                     writer.newLine();
  183.                 }
  184.                
  185.             }
  186.            
  187.         }
  188.         writer.flush();
  189.         System.out.println("Data successfully saved");
  190.        
  191.     }
  192.     private static void findCabinWithCusName(Cabin[] cabins) {
  193.        
  194.         System.out.println("Enter passenger First Name name:");
  195.         String firstName = kb.nextLine();
  196.         boolean found = false;
  197.         for(int i=0; i<cabins.length;i++) {
  198.            
  199.             Passenger[] passengers = cabins[i].getPassengers();
  200.             for(int j=0;j<passengers.length;j++) {
  201.                 if(passengers[j] != null) {
  202.                     if(passengers[j].getFirstName().equals(firstName)) {
  203.                         System.out.println("Passenger " + passengers[j].getFirstName() + " has been found in cabin: " + (i+1));
  204.                         found = true;
  205.                         break;
  206.                     }
  207.                 }
  208.                
  209.             }
  210.             if(found) {
  211.                 break;
  212.             }
  213.         }
  214.            
  215.            
  216.         if(!found) {
  217.             System.out.println("Customer " + firstName + " is not on the ship.");
  218.         }
  219.        
  220.        
  221.     }
  222.  
  223.     private static Cabin[] deleteCustomerFromCabin(Cabin[] cabins) {
  224.        
  225.        
  226.         boolean deleted = false;
  227.         System.out.println("Inser the First Name of the passenger you want to delete:");
  228.         String firstName = kb.nextLine();
  229.         for(int i=0;i<cabins.length;i++) {
  230.             Passenger[] passengers = cabins[i].getPassengers();
  231.             for(int j=0;j<passengers.length;j++) {
  232.                 if(passengers[j] != null) {
  233.                     if(passengers[j].getFirstName().equals(firstName)) {
  234.                         System.out.println("Passenger " + passengers[j].getFirstName() + " has been deleted." );
  235.                         passengers[j] = null;
  236.                         if(!waitingPassengers.isEmpty()) {
  237.                             passengers[j] = waitingPassengers.get(0);
  238.                             waitingPassengers.remove(0);
  239.                             System.out.println("Passenger from waiting list added to cabin");
  240.                         }
  241.                         deleted = true;
  242.                         break;
  243.                     }
  244.                 }
  245.             }
  246.             if(deleted) {
  247.                 break;
  248.             }
  249.         }
  250.         if(!deleted) {
  251.             System.out.println("There are no users with this name");
  252.         }
  253.        
  254.         return cabins;
  255.     }
  256.    
  257.    
  258.     private static void printEmptyCabins(Cabin[] cabins) {
  259.         System.out.println("Viewing all empty cabins: ");
  260.         for(int i=0;i<cabins.length;i++) {
  261.             Passenger[] passengers = cabins[i].getPassengers();
  262.             for(int j=0;j<passengers.length;j++) {
  263.                 if(passengers[j] != null) {
  264.                     break;
  265.                 }
  266.                 if(j == passengers.length-1) {
  267.                     System.out.println("Cabin number: " + (i+1) + " is empty.");
  268.                 }
  269.                 //magic numbers; works if there are few passengers as it doesn't require much code to write
  270. ////            if(passengers[0] == null && passengers[1] == null && passengers[2] == null) {
  271. //               System.out.println("Cabin number: " + (i+1) + " is empty.");
  272.             }
  273.         }
  274.     }
  275.     private static void printCabins(Cabin[] cabins) {
  276.         System.out.println("Viewing all cabins: ");
  277.         for(int i=0;i<cabins.length;i++) {
  278.             Passenger[] passengers = cabins[i].getPassengers();
  279.             System.out.println("Passengers in cabin: " + (i+1));
  280.             for(int j=0; j<passengers.length;j++) {
  281.                 if(!(passengers[j] == null)) {
  282.                     System.out.print(passengers[j].toString());
  283.                     System.out.println();
  284.                 }
  285.             }
  286.         }
  287.        
  288.     }
  289.     //add customer method that takes the old cabins array and returns the new cabins array
  290.     private static Cabin[] addCustomer(Cabin[] cabins) {
  291.        
  292.         boolean entered = false;
  293.         for(int i=0;i<cabins.length;i++) {
  294.             Passenger[] passengers = cabins[i].getPassengers();
  295.             for(int j=0;j<passengers.length;j++) {
  296.                 if(passengers[j] == null) {
  297.                     Passenger p = new Passenger();
  298.                     //read from keyboard passenger details
  299.                     System.out.println("Insert First Name: ");
  300.                     p.setFirstName(kb.nextLine());
  301.                     System.out.println("Insert Sur Name: ");
  302.                     p.setSurName(kb.nextLine());
  303.                     System.out.println("Inser Expenses: ");
  304.                     //thorws error in case the value is not Double/Long
  305.                     p.setExpenses(kb.nextDouble());
  306.                    
  307.                     //add passenger to array of first cabin
  308.                     passengers[j] = p;
  309.                     entered = true;
  310.                     System.out.println("Passenger "+ p.getFirstName() +" is added to the cabin: " + (i+1));
  311.                     break;
  312.                 }
  313.             }
  314.             if(entered) {
  315.                 break;
  316.             }
  317.           }
  318.         if(!entered) {
  319.             Passenger p = new Passenger();
  320.             //read from keyboard passenger details
  321.             System.out.println("Insert First Name: ");
  322.             p.setFirstName(kb.nextLine());
  323.             System.out.println("Insert Sur Name: ");
  324.             p.setSurName(kb.nextLine());
  325.             System.out.println("Inser Expenses: ");
  326.             //thorws error in case the value is not Double/Long
  327.             p.setExpenses(kb.nextDouble());
  328.            
  329. //          https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E) - to add to array list
  330.             waitingPassengers.add(p);
  331.             System.out.println("No available places; the passenger  has been added to the queue.");
  332.  
  333.            
  334.         }
  335.         return cabins;
  336.     }
  337.  
  338.  
  339. }
  340.  
Advertisement
Add Comment
Please, Sign In to add comment