Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class BoardingSysWaitingList {
- //declaring scanner to take input
- static Scanner kb = new Scanner(System.in);
- // Passenger[] waitingPassengers = new Passenger[5]; //max 5 passengers on the waiting list
- // https://stackoverflow.com/questions/2843366/how-to-add-new-elements-to-an-array - example issue
- // 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
- static List<Passenger> waitingPassengers = new ArrayList<Passenger>();
- public static void main(String[] args) throws Exception {
- //declaring the cabins array
- Cabin[] cabins = new Cabin[12];
- for(int i=0;i<cabins.length;i++) {
- cabins[i] = new Cabin();
- }
- while(true) {
- System.out.println("Enter option: "
- + "\nA - to add cabin crew, "
- + "\nV - to view all cabins,"
- + "\nE - print empty cabins,"
- + "\nD - delete customer from cabin,"
- + "\nF - find cabin using Customer name,"
- + "\nS - store program data into file,"
- + "\nL - load program data from the file,"
- + "\nT - show expenses per passenger and calculate total,"
- + "\nO - view passengers in alphabetical order");
- char option = kb.next().charAt(0); // reads char from keyboard and save it into option
- System.out.println("You selected option: " + option);
- kb.nextLine(); //fixes issues with nextLine()
- //code for option A
- switch (option) {
- case 'A':
- cabins = addCustomer(cabins);
- break;
- case 'V':
- printCabins(cabins);
- break;
- case 'E':
- printEmptyCabins(cabins);
- break;
- case 'D':
- cabins = deleteCustomerFromCabin(cabins);
- break;
- case 'F':
- findCabinWithCusName(cabins);
- break;
- case 'S':
- storeDataInFile(cabins);
- break;
- case 'L':
- cabins = loadProgramData();
- break;
- // case 'O':
- // viewPassengerInOrder(cabins);
- // break;
- case 'T':
- viewExpenses(cabins);
- break;
- default:
- System.out.println("Invalid option");
- break;
- }
- }
- }
- private static void viewExpenses(Cabin[] cabins) {
- double totalExpenses = 0;
- for (int i=0; i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length; j++) {
- if(passengers[j] != null) {
- System.out.println("Expenses of passenger " + passengers[j].getFirstName() + " is " + passengers[j].getExpenses());
- totalExpenses = totalExpenses + passengers[j].getExpenses();
- }
- }
- }
- System.out.println("Total Expenses: " + totalExpenses );
- }
- // https://www.tutorialspoint.com/how-to-sort-a-string-in-java-alphabetically-in-java
- // private static void viewPassengerInOrder(String[] cabins) {
- //
- // String[] cabinsSorted = new String[12];
- //
- // for(int i =0; i<cabins.length;i++) {
- // if(!(cabins[i]== null)) {
- // for(int j=i+1; j<cabins.length; j++) {
- // //compares each elements of the array to all the remaining elements
- // if(!(cabins[j]==null)) {
- // if(cabins[i].compareTo(cabins[j])>0) {
- //
- // //swap elements with each other
- // String temp = cabins[i];
- // cabins[i] = cabins[j];
- // cabins[j] = temp;
- // }
- // }
- //
- // }
- // }
- //
- // }
- //
- // System.out.println("Viewing all cabins: ");
- // for(int i=0;i<cabins.length;i++) {
- // if(!(cabins[i] == null)) {
- // System.out.println(cabins[i]);
- // }
- // }
- //
- //
- // }
- private static Cabin[] loadProgramData() throws Exception {
- System.out.println("Loading data from CabinDataObject.txt");
- BufferedReader reader = new BufferedReader(new FileReader("CabinDataObject.txt"));
- Cabin[] cabins = new Cabin[12];
- for(int i=0;i<cabins.length;i++) {
- cabins[i] = new Cabin();
- }
- for (int i=0; i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length; j++) {
- String cabinPassenger = reader.readLine();
- if(cabinPassenger.equals("null")) { //if empty cabin
- passengers[j] = null;
- } else {
- Passenger p = new Passenger();
- String[] readData = cabinPassenger.split(" ");
- p.setFirstName(readData[0]);
- p.setSurName(readData[1]);
- p.setExpenses(Double.parseDouble(readData[2]));
- passengers[j] = p;
- }
- }
- }
- reader.close();
- return cabins;
- }
- private static void storeDataInFile(Cabin[] cabins) throws Exception {
- System.out.println("Saving data in CabinData.txt");
- BufferedWriter writer = new BufferedWriter(new FileWriter("CabinDataObject.txt", false));
- for(int i=0;i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length;j++) {
- if(passengers[j] != null) {
- String message = passengers[j].getFirstName() + " " + passengers[j].getSurName() + " " + passengers[j].getExpenses();
- writer.write(message);
- writer.newLine();
- } else {
- String message = "null";
- writer.write(message);
- writer.newLine();
- }
- }
- }
- writer.flush();
- System.out.println("Data successfully saved");
- }
- private static void findCabinWithCusName(Cabin[] cabins) {
- System.out.println("Enter passenger First Name name:");
- String firstName = kb.nextLine();
- boolean found = false;
- for(int i=0; i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length;j++) {
- if(passengers[j] != null) {
- if(passengers[j].getFirstName().equals(firstName)) {
- System.out.println("Passenger " + passengers[j].getFirstName() + " has been found in cabin: " + (i+1));
- found = true;
- break;
- }
- }
- }
- if(found) {
- break;
- }
- }
- if(!found) {
- System.out.println("Customer " + firstName + " is not on the ship.");
- }
- }
- private static Cabin[] deleteCustomerFromCabin(Cabin[] cabins) {
- boolean deleted = false;
- System.out.println("Inser the First Name of the passenger you want to delete:");
- String firstName = kb.nextLine();
- for(int i=0;i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length;j++) {
- if(passengers[j] != null) {
- if(passengers[j].getFirstName().equals(firstName)) {
- System.out.println("Passenger " + passengers[j].getFirstName() + " has been deleted." );
- passengers[j] = null;
- if(!waitingPassengers.isEmpty()) {
- passengers[j] = waitingPassengers.get(0);
- waitingPassengers.remove(0);
- System.out.println("Passenger from waiting list added to cabin");
- }
- deleted = true;
- break;
- }
- }
- }
- if(deleted) {
- break;
- }
- }
- if(!deleted) {
- System.out.println("There are no users with this name");
- }
- return cabins;
- }
- private static void printEmptyCabins(Cabin[] cabins) {
- System.out.println("Viewing all empty cabins: ");
- for(int i=0;i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length;j++) {
- if(passengers[j] != null) {
- break;
- }
- if(j == passengers.length-1) {
- System.out.println("Cabin number: " + (i+1) + " is empty.");
- }
- //magic numbers; works if there are few passengers as it doesn't require much code to write
- //// if(passengers[0] == null && passengers[1] == null && passengers[2] == null) {
- // System.out.println("Cabin number: " + (i+1) + " is empty.");
- }
- }
- }
- private static void printCabins(Cabin[] cabins) {
- System.out.println("Viewing all cabins: ");
- for(int i=0;i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- System.out.println("Passengers in cabin: " + (i+1));
- for(int j=0; j<passengers.length;j++) {
- if(!(passengers[j] == null)) {
- System.out.print(passengers[j].toString());
- System.out.println();
- }
- }
- }
- }
- //add customer method that takes the old cabins array and returns the new cabins array
- private static Cabin[] addCustomer(Cabin[] cabins) {
- boolean entered = false;
- for(int i=0;i<cabins.length;i++) {
- Passenger[] passengers = cabins[i].getPassengers();
- for(int j=0;j<passengers.length;j++) {
- if(passengers[j] == null) {
- Passenger p = new Passenger();
- //read from keyboard passenger details
- System.out.println("Insert First Name: ");
- p.setFirstName(kb.nextLine());
- System.out.println("Insert Sur Name: ");
- p.setSurName(kb.nextLine());
- System.out.println("Inser Expenses: ");
- //thorws error in case the value is not Double/Long
- p.setExpenses(kb.nextDouble());
- //add passenger to array of first cabin
- passengers[j] = p;
- entered = true;
- System.out.println("Passenger "+ p.getFirstName() +" is added to the cabin: " + (i+1));
- break;
- }
- }
- if(entered) {
- break;
- }
- }
- if(!entered) {
- Passenger p = new Passenger();
- //read from keyboard passenger details
- System.out.println("Insert First Name: ");
- p.setFirstName(kb.nextLine());
- System.out.println("Insert Sur Name: ");
- p.setSurName(kb.nextLine());
- System.out.println("Inser Expenses: ");
- //thorws error in case the value is not Double/Long
- p.setExpenses(kb.nextDouble());
- // https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E) - to add to array list
- waitingPassengers.add(p);
- System.out.println("No available places; the passenger has been added to the queue.");
- }
- return cabins;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment